metanorma-un 0.9.8.1 → 0.9.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85830860166400cc933e9de235168b0582c931f951ca3505fd91fa5cc3fa93f6
4
- data.tar.gz: 3ca4eea4370b0cc7c1230f15dce0e69e1d849f9146ade8ae0210264cdbefb5c0
3
+ metadata.gz: 7b7eed9a4ee7a8a2f881a16841acb2d6d9310618d61b27994d70eebb9e0c2cc1
4
+ data.tar.gz: '00018c02bdbbec199661eb6e5aa43b09240a22948528a9fde135142445c82d5b'
5
5
  SHA512:
6
- metadata.gz: 6221a66550dc77932cfec10479396c6da31df610dfe7b0e9c776b42541a5611f3075296da4808ee810b55e9e496676d302afdeede6f989215ff47dc05e616185
7
- data.tar.gz: 9755fd6f9158ed152e57c8e129921e5252ca00675fa73a6c4a2a8d26fe3eb731914a54b464175ac3e71328ab06d66566ff5fdc0da1310583e091c9fd8591765a
6
+ metadata.gz: 63e67ef5e0bf08d8823bad86046701935fa38bec6e21fbdac22033903a49290dd0b854d564f8468625d9c28a3bfc217ce74b8582dfde386a689ea4c1c2dccc40
7
+ data.tar.gz: 377c2a773f8c9d230506070943113c01009a49673607c92e93a4946b9ca060cc087f1ee8909fe8e6999a19c6a46b5e31df74359899a0a0eae5d614acd96162ec
@@ -6,8 +6,8 @@ require_relative "i18n"
6
6
  module IsoDoc
7
7
  module UN
8
8
  module Init
9
- def metadata_init(lang, script, labels)
10
- @meta = Metadata.new(lang, script, labels)
9
+ def metadata_init(lang, script, locale, labels)
10
+ @meta = Metadata.new(lang, script, locale, labels)
11
11
  @meta.set(:toc, @toc)
12
12
  end
13
13
 
@@ -16,8 +16,9 @@ module IsoDoc
16
16
  @xrefs = Xref.new(lang, script, html, labels, options)
17
17
  end
18
18
 
19
- def i18n_init(lang, script, i18nyaml = nil)
20
- @i18n = I18n.new(lang, script, i18nyaml: i18nyaml || @i18nyaml)
19
+ def i18n_init(lang, script, locale, i18nyaml = nil)
20
+ @i18n = I18n.new(lang, script, locale: locale,
21
+ i18nyaml: i18nyaml || @i18nyaml)
21
22
  end
22
23
 
23
24
  def fileloc(loc)
@@ -4,9 +4,8 @@ require "iso-639"
4
4
 
5
5
  module IsoDoc
6
6
  module UN
7
-
8
7
  class Metadata < IsoDoc::Metadata
9
- def initialize(lang, script, labels)
8
+ def initialize(lang, script, locale, labels)
10
9
  super
11
10
  here = File.dirname(__FILE__)
12
11
  set(:logo, File.expand_path(File.join(here, "html", "logo.jpg")))
@@ -27,8 +26,8 @@ module IsoDoc
27
26
  def extract_languages(nodeset)
28
27
  lgs = []
29
28
  nodeset.each do |l|
30
- l && ISO_639&.find(l.text)&.english_name &&
31
- lgs << ISO_639.find(l.text).english_name
29
+ l && ISO_639.find(l.text)&.english_name and
30
+ lgs << ISO_639.find(l.text).english_name
32
31
  end
33
32
  lgs.map { |l| l == "Spanish; Castilian" ? "Spanish" : l }
34
33
  end
@@ -36,7 +35,7 @@ module IsoDoc
36
35
  def author(isoxml, _out)
37
36
  tc = isoxml.at(ns("//bibdata/ext/editorialgroup/committee"))
38
37
  set(:tc, tc.text) if tc
39
- set(:distribution, isoxml&.at(ns("//bibdata/ext/distribution"))&.text)
38
+ set(:distribution, isoxml.at(ns("//bibdata/ext/distribution"))&.text)
40
39
  lgs = extract_languages(isoxml.xpath(ns("//bibdata/language")))
41
40
  lgs.sort == %w(English French Arabic Chinese Russian Spanish).sort and
42
41
  lgs = []
@@ -56,23 +55,23 @@ module IsoDoc
56
55
  end
57
56
 
58
57
  def session(isoxml, _out)
59
- set(:session_number, isoxml&.at(ns("//bibdata/ext/session/number"))&.
60
- text&.to_i&.localize&.
61
- to_rbnf_s("SpelloutRules", "spellout-ordinal")&.capitalize)
62
- set(:session_date, isoxml&.at(ns("//bibdata/ext/session/date"))&.text)
58
+ set(:session_number, isoxml.at(ns("//bibdata/ext/session/number"))
59
+ &.text&.to_i&.localize
60
+ &.to_rbnf_s("SpelloutRules", "spellout-ordinal")&.capitalize)
61
+ set(:session_date, isoxml.at(ns("//bibdata/ext/session/date"))&.text)
63
62
  set(:session_collaborator,
64
- isoxml&.at(ns("//bibdata/ext/session/collaborator"))&.text)
65
- sid = isoxml&.at(ns("//bibdata/ext/session/id"))&.text
63
+ isoxml.at(ns("//bibdata/ext/session/collaborator"))&.text)
64
+ sid = isoxml.at(ns("//bibdata/ext/session/id"))&.text
66
65
  set(:session_id, sid)
67
66
  set(:session_id_head, sid&.sub(%r{/.*$}, ""))
68
67
  set(:session_id_tail, sid&.sub(%r{^[^/]+}, ""))
69
- set(:item_footnote,
70
- isoxml&.at(ns("//bibdata/ext/session/item-footnote"))&.text)
71
- set(:session_itemnumber,
68
+ set(:item_footnote,
69
+ isoxml.at(ns("//bibdata/ext/session/item-footnote"))&.text)
70
+ set(:session_itemnumber,
72
71
  multival(isoxml, "//bibdata/ext/session/item-number"))
73
- set(:session_itemname,
72
+ set(:session_itemname,
74
73
  multival(isoxml, "//bibdata/ext/session/item-name"))
75
- set(:session_subitemname,
74
+ set(:session_subitemname,
76
75
  multival(isoxml, "//bibdata/ext/session/subitem-name"))
77
76
  end
78
77
 
@@ -80,8 +79,8 @@ module IsoDoc
80
79
  dn = isoxml.at(ns("//bibdata/docidentifier"))&.text
81
80
  set(:docnumber, dn)
82
81
  type = isoxml&.at(ns("//bibdata/ext/doctype"))&.text
83
- set(:formatted_docnumber, type == "recommendation" ?
84
- "UN/CEFACT Recommendation #{dn}" : dn)
82
+ set(:formatted_docnumber,
83
+ type == "recommendation" ? "UN/CEFACT Recommendation #{dn}" : dn)
85
84
  end
86
85
 
87
86
  def stage_abbr(status)
@@ -6542,6 +6542,18 @@
6542
6542
  </xsl:copy>
6543
6543
  </xsl:template>
6544
6544
 
6545
+ <xsl:template match="*[local-name() = 'sub']" mode="contents_item">
6546
+ <xsl:copy>
6547
+ <xsl:apply-templates mode="contents_item"/>
6548
+ </xsl:copy>
6549
+ </xsl:template>
6550
+
6551
+ <xsl:template match="*[local-name() = 'sup']" mode="contents_item">
6552
+ <xsl:copy>
6553
+ <xsl:apply-templates mode="contents_item"/>
6554
+ </xsl:copy>
6555
+ </xsl:template>
6556
+
6545
6557
  <xsl:template match="*[local-name() = 'stem']" mode="contents_item">
6546
6558
  <xsl:copy-of select="."/>
6547
6559
  </xsl:template>
@@ -7491,7 +7503,7 @@
7491
7503
  <!-- ====== -->
7492
7504
  <!-- eref -->
7493
7505
  <!-- ====== -->
7494
- <xsl:template match="*[local-name() = 'eref']">
7506
+ <xsl:template match="*[local-name() = 'eref']" name="eref">
7495
7507
  <xsl:variable name="current_bibitemid" select="@bibitemid"/>
7496
7508
  <!-- <xsl:variable name="external-destination" select="normalize-space(key('bibitems', $current_bibitemid)/*[local-name() = 'uri'][@type = 'citation'])"/> -->
7497
7509
  <xsl:variable name="external-destination" select="normalize-space($bibitems/*[local-name() ='bibitem'][@id = $current_bibitemid]/*[local-name() = 'uri'][@type = 'citation'])"/>
@@ -7992,21 +8004,29 @@
7992
8004
  </xsl:variable>
7993
8005
 
7994
8006
  <xsl:template match="@*|node()" mode="index_add_id">
8007
+ <xsl:param name="docid"/>
7995
8008
  <xsl:copy>
7996
- <xsl:apply-templates select="@*|node()" mode="index_add_id"/>
8009
+ <xsl:apply-templates select="@*|node()" mode="index_add_id">
8010
+ <xsl:with-param name="docid" select="$docid"/>
8011
+ </xsl:apply-templates>
7997
8012
  </xsl:copy>
7998
8013
  </xsl:template>
7999
8014
 
8000
8015
  <xsl:template match="*[local-name() = 'xref']" mode="index_add_id">
8016
+ <xsl:param name="docid"/>
8001
8017
  <xsl:variable name="id">
8002
- <xsl:call-template name="generateIndexXrefId"/>
8018
+ <xsl:call-template name="generateIndexXrefId">
8019
+ <xsl:with-param name="docid" select="$docid"/>
8020
+ </xsl:call-template>
8003
8021
  </xsl:variable>
8004
8022
  <xsl:copy> <!-- add id to xref -->
8005
8023
  <xsl:apply-templates select="@*" mode="index_add_id"/>
8006
8024
  <xsl:attribute name="id">
8007
8025
  <xsl:value-of select="$id"/>
8008
8026
  </xsl:attribute>
8009
- <xsl:apply-templates mode="index_add_id"/>
8027
+ <xsl:apply-templates mode="index_add_id">
8028
+ <xsl:with-param name="docid" select="$docid"/>
8029
+ </xsl:apply-templates>
8010
8030
  </xsl:copy>
8011
8031
  <!-- split <xref target="bm1" to="End" pagenumber="true"> to two xref:
8012
8032
  <xref target="bm1" pagenumber="true"> and <xref target="End" pagenumber="true"> -->
@@ -8018,7 +8038,9 @@
8018
8038
  <xsl:attribute name="id">
8019
8039
  <xsl:value-of select="$id"/><xsl:text>_to</xsl:text>
8020
8040
  </xsl:attribute>
8021
- <xsl:apply-templates mode="index_add_id"/>
8041
+ <xsl:apply-templates mode="index_add_id">
8042
+ <xsl:with-param name="docid" select="$docid"/>
8043
+ </xsl:apply-templates>
8022
8044
  </xsl:copy>
8023
8045
  </xsl:if>
8024
8046
  </xsl:template>
@@ -8055,12 +8077,33 @@
8055
8077
  </xsl:when>
8056
8078
  <xsl:when test="self::* and local-name(.) = 'xref'">
8057
8079
  <xsl:variable name="id" select="@id"/>
8058
- <xsl:variable name="page" select="$index//item[@id = $id]"/>
8059
- <xsl:variable name="id_next" select="following-sibling::*[local-name() = 'xref'][1]/@id"/>
8060
- <xsl:variable name="page_next" select="$index//item[@id = $id_next]"/>
8061
8080
 
8081
+ <xsl:variable name="id_next" select="following-sibling::*[local-name() = 'xref'][1]/@id"/>
8062
8082
  <xsl:variable name="id_prev" select="preceding-sibling::*[local-name() = 'xref'][1]/@id"/>
8063
- <xsl:variable name="page_prev" select="$index//item[@id = $id_prev]"/>
8083
+
8084
+ <xsl:variable name="pages_">
8085
+ <xsl:for-each select="$index/index/item[@id = $id or @id = $id_next or @id = $id_prev]">
8086
+ <xsl:choose>
8087
+ <xsl:when test="@id = $id">
8088
+ <page><xsl:value-of select="."/></page>
8089
+ </xsl:when>
8090
+ <xsl:when test="@id = $id_next">
8091
+ <page_next><xsl:value-of select="."/></page_next>
8092
+ </xsl:when>
8093
+ <xsl:when test="@id = $id_prev">
8094
+ <page_prev><xsl:value-of select="."/></page_prev>
8095
+ </xsl:when>
8096
+ </xsl:choose>
8097
+ </xsl:for-each>
8098
+ </xsl:variable>
8099
+ <xsl:variable name="pages" select="xalan:nodeset($pages_)"/>
8100
+
8101
+ <!-- <xsl:variable name="page" select="$index/index/item[@id = $id]"/> -->
8102
+ <xsl:variable name="page" select="$pages/page"/>
8103
+ <!-- <xsl:variable name="page_next" select="$index/index/item[@id = $id_next]"/> -->
8104
+ <xsl:variable name="page_next" select="$pages/page_next"/>
8105
+ <!-- <xsl:variable name="page_prev" select="$index/index/item[@id = $id_prev]"/> -->
8106
+ <xsl:variable name="page_prev" select="$pages/page_prev"/>
8064
8107
 
8065
8108
  <xsl:choose>
8066
8109
  <!-- 2nd pass -->
@@ -8120,16 +8163,20 @@
8120
8163
  </xsl:template>
8121
8164
 
8122
8165
  <xsl:template name="generateIndexXrefId">
8166
+ <xsl:param name="docid"/>
8167
+
8123
8168
  <xsl:variable name="level" select="count(ancestor::*[local-name() = 'ul'])"/>
8124
8169
 
8125
- <xsl:variable name="docid">
8126
- <xsl:call-template name="getDocumentId"/>
8170
+ <xsl:variable name="docid_curr">
8171
+ <xsl:value-of select="$docid"/>
8172
+ <xsl:if test="normalize-space($docid) = ''"><xsl:call-template name="getDocumentId"/></xsl:if>
8127
8173
  </xsl:variable>
8174
+
8128
8175
  <xsl:variable name="item_number">
8129
8176
  <xsl:number count="*[local-name() = 'li'][ancestor::*[local-name() = 'indexsect']]" level="any"/>
8130
8177
  </xsl:variable>
8131
8178
  <xsl:variable name="xref_number"><xsl:number count="*[local-name() = 'xref']"/></xsl:variable>
8132
- <xsl:value-of select="concat($docid, '_', $item_number, '_', $xref_number)"/> <!-- $level, '_', -->
8179
+ <xsl:value-of select="concat($docid_curr, '_', $item_number, '_', $xref_number)"/> <!-- $level, '_', -->
8133
8180
  </xsl:template>
8134
8181
 
8135
8182
  <xsl:template match="*[local-name() = 'indexsect']/*[local-name() = 'title']" priority="4">
@@ -6542,6 +6542,18 @@
6542
6542
  </xsl:copy>
6543
6543
  </xsl:template>
6544
6544
 
6545
+ <xsl:template match="*[local-name() = 'sub']" mode="contents_item">
6546
+ <xsl:copy>
6547
+ <xsl:apply-templates mode="contents_item"/>
6548
+ </xsl:copy>
6549
+ </xsl:template>
6550
+
6551
+ <xsl:template match="*[local-name() = 'sup']" mode="contents_item">
6552
+ <xsl:copy>
6553
+ <xsl:apply-templates mode="contents_item"/>
6554
+ </xsl:copy>
6555
+ </xsl:template>
6556
+
6545
6557
  <xsl:template match="*[local-name() = 'stem']" mode="contents_item">
6546
6558
  <xsl:copy-of select="."/>
6547
6559
  </xsl:template>
@@ -7491,7 +7503,7 @@
7491
7503
  <!-- ====== -->
7492
7504
  <!-- eref -->
7493
7505
  <!-- ====== -->
7494
- <xsl:template match="*[local-name() = 'eref']">
7506
+ <xsl:template match="*[local-name() = 'eref']" name="eref">
7495
7507
  <xsl:variable name="current_bibitemid" select="@bibitemid"/>
7496
7508
  <!-- <xsl:variable name="external-destination" select="normalize-space(key('bibitems', $current_bibitemid)/*[local-name() = 'uri'][@type = 'citation'])"/> -->
7497
7509
  <xsl:variable name="external-destination" select="normalize-space($bibitems/*[local-name() ='bibitem'][@id = $current_bibitemid]/*[local-name() = 'uri'][@type = 'citation'])"/>
@@ -7992,21 +8004,29 @@
7992
8004
  </xsl:variable>
7993
8005
 
7994
8006
  <xsl:template match="@*|node()" mode="index_add_id">
8007
+ <xsl:param name="docid"/>
7995
8008
  <xsl:copy>
7996
- <xsl:apply-templates select="@*|node()" mode="index_add_id"/>
8009
+ <xsl:apply-templates select="@*|node()" mode="index_add_id">
8010
+ <xsl:with-param name="docid" select="$docid"/>
8011
+ </xsl:apply-templates>
7997
8012
  </xsl:copy>
7998
8013
  </xsl:template>
7999
8014
 
8000
8015
  <xsl:template match="*[local-name() = 'xref']" mode="index_add_id">
8016
+ <xsl:param name="docid"/>
8001
8017
  <xsl:variable name="id">
8002
- <xsl:call-template name="generateIndexXrefId"/>
8018
+ <xsl:call-template name="generateIndexXrefId">
8019
+ <xsl:with-param name="docid" select="$docid"/>
8020
+ </xsl:call-template>
8003
8021
  </xsl:variable>
8004
8022
  <xsl:copy> <!-- add id to xref -->
8005
8023
  <xsl:apply-templates select="@*" mode="index_add_id"/>
8006
8024
  <xsl:attribute name="id">
8007
8025
  <xsl:value-of select="$id"/>
8008
8026
  </xsl:attribute>
8009
- <xsl:apply-templates mode="index_add_id"/>
8027
+ <xsl:apply-templates mode="index_add_id">
8028
+ <xsl:with-param name="docid" select="$docid"/>
8029
+ </xsl:apply-templates>
8010
8030
  </xsl:copy>
8011
8031
  <!-- split <xref target="bm1" to="End" pagenumber="true"> to two xref:
8012
8032
  <xref target="bm1" pagenumber="true"> and <xref target="End" pagenumber="true"> -->
@@ -8018,7 +8038,9 @@
8018
8038
  <xsl:attribute name="id">
8019
8039
  <xsl:value-of select="$id"/><xsl:text>_to</xsl:text>
8020
8040
  </xsl:attribute>
8021
- <xsl:apply-templates mode="index_add_id"/>
8041
+ <xsl:apply-templates mode="index_add_id">
8042
+ <xsl:with-param name="docid" select="$docid"/>
8043
+ </xsl:apply-templates>
8022
8044
  </xsl:copy>
8023
8045
  </xsl:if>
8024
8046
  </xsl:template>
@@ -8055,12 +8077,33 @@
8055
8077
  </xsl:when>
8056
8078
  <xsl:when test="self::* and local-name(.) = 'xref'">
8057
8079
  <xsl:variable name="id" select="@id"/>
8058
- <xsl:variable name="page" select="$index//item[@id = $id]"/>
8059
- <xsl:variable name="id_next" select="following-sibling::*[local-name() = 'xref'][1]/@id"/>
8060
- <xsl:variable name="page_next" select="$index//item[@id = $id_next]"/>
8061
8080
 
8081
+ <xsl:variable name="id_next" select="following-sibling::*[local-name() = 'xref'][1]/@id"/>
8062
8082
  <xsl:variable name="id_prev" select="preceding-sibling::*[local-name() = 'xref'][1]/@id"/>
8063
- <xsl:variable name="page_prev" select="$index//item[@id = $id_prev]"/>
8083
+
8084
+ <xsl:variable name="pages_">
8085
+ <xsl:for-each select="$index/index/item[@id = $id or @id = $id_next or @id = $id_prev]">
8086
+ <xsl:choose>
8087
+ <xsl:when test="@id = $id">
8088
+ <page><xsl:value-of select="."/></page>
8089
+ </xsl:when>
8090
+ <xsl:when test="@id = $id_next">
8091
+ <page_next><xsl:value-of select="."/></page_next>
8092
+ </xsl:when>
8093
+ <xsl:when test="@id = $id_prev">
8094
+ <page_prev><xsl:value-of select="."/></page_prev>
8095
+ </xsl:when>
8096
+ </xsl:choose>
8097
+ </xsl:for-each>
8098
+ </xsl:variable>
8099
+ <xsl:variable name="pages" select="xalan:nodeset($pages_)"/>
8100
+
8101
+ <!-- <xsl:variable name="page" select="$index/index/item[@id = $id]"/> -->
8102
+ <xsl:variable name="page" select="$pages/page"/>
8103
+ <!-- <xsl:variable name="page_next" select="$index/index/item[@id = $id_next]"/> -->
8104
+ <xsl:variable name="page_next" select="$pages/page_next"/>
8105
+ <!-- <xsl:variable name="page_prev" select="$index/index/item[@id = $id_prev]"/> -->
8106
+ <xsl:variable name="page_prev" select="$pages/page_prev"/>
8064
8107
 
8065
8108
  <xsl:choose>
8066
8109
  <!-- 2nd pass -->
@@ -8120,16 +8163,20 @@
8120
8163
  </xsl:template>
8121
8164
 
8122
8165
  <xsl:template name="generateIndexXrefId">
8166
+ <xsl:param name="docid"/>
8167
+
8123
8168
  <xsl:variable name="level" select="count(ancestor::*[local-name() = 'ul'])"/>
8124
8169
 
8125
- <xsl:variable name="docid">
8126
- <xsl:call-template name="getDocumentId"/>
8170
+ <xsl:variable name="docid_curr">
8171
+ <xsl:value-of select="$docid"/>
8172
+ <xsl:if test="normalize-space($docid) = ''"><xsl:call-template name="getDocumentId"/></xsl:if>
8127
8173
  </xsl:variable>
8174
+
8128
8175
  <xsl:variable name="item_number">
8129
8176
  <xsl:number count="*[local-name() = 'li'][ancestor::*[local-name() = 'indexsect']]" level="any"/>
8130
8177
  </xsl:variable>
8131
8178
  <xsl:variable name="xref_number"><xsl:number count="*[local-name() = 'xref']"/></xsl:variable>
8132
- <xsl:value-of select="concat($docid, '_', $item_number, '_', $xref_number)"/> <!-- $level, '_', -->
8179
+ <xsl:value-of select="concat($docid_curr, '_', $item_number, '_', $xref_number)"/> <!-- $level, '_', -->
8133
8180
  </xsl:template>
8134
8181
 
8135
8182
  <xsl:template match="*[local-name() = 'indexsect']/*[local-name() = 'title']" priority="4">
@@ -6622,6 +6622,18 @@
6622
6622
  </xsl:copy>
6623
6623
  </xsl:template>
6624
6624
 
6625
+ <xsl:template match="*[local-name() = 'sub']" mode="contents_item">
6626
+ <xsl:copy>
6627
+ <xsl:apply-templates mode="contents_item"/>
6628
+ </xsl:copy>
6629
+ </xsl:template>
6630
+
6631
+ <xsl:template match="*[local-name() = 'sup']" mode="contents_item">
6632
+ <xsl:copy>
6633
+ <xsl:apply-templates mode="contents_item"/>
6634
+ </xsl:copy>
6635
+ </xsl:template>
6636
+
6625
6637
  <xsl:template match="*[local-name() = 'stem']" mode="contents_item">
6626
6638
  <xsl:copy-of select="."/>
6627
6639
  </xsl:template>
@@ -7571,7 +7583,7 @@
7571
7583
  <!-- ====== -->
7572
7584
  <!-- eref -->
7573
7585
  <!-- ====== -->
7574
- <xsl:template match="*[local-name() = 'eref']">
7586
+ <xsl:template match="*[local-name() = 'eref']" name="eref">
7575
7587
  <xsl:variable name="current_bibitemid" select="@bibitemid"/>
7576
7588
  <!-- <xsl:variable name="external-destination" select="normalize-space(key('bibitems', $current_bibitemid)/*[local-name() = 'uri'][@type = 'citation'])"/> -->
7577
7589
  <xsl:variable name="external-destination" select="normalize-space($bibitems/*[local-name() ='bibitem'][@id = $current_bibitemid]/*[local-name() = 'uri'][@type = 'citation'])"/>
@@ -8072,21 +8084,29 @@
8072
8084
  </xsl:variable>
8073
8085
 
8074
8086
  <xsl:template match="@*|node()" mode="index_add_id">
8087
+ <xsl:param name="docid"/>
8075
8088
  <xsl:copy>
8076
- <xsl:apply-templates select="@*|node()" mode="index_add_id"/>
8089
+ <xsl:apply-templates select="@*|node()" mode="index_add_id">
8090
+ <xsl:with-param name="docid" select="$docid"/>
8091
+ </xsl:apply-templates>
8077
8092
  </xsl:copy>
8078
8093
  </xsl:template>
8079
8094
 
8080
8095
  <xsl:template match="*[local-name() = 'xref']" mode="index_add_id">
8096
+ <xsl:param name="docid"/>
8081
8097
  <xsl:variable name="id">
8082
- <xsl:call-template name="generateIndexXrefId"/>
8098
+ <xsl:call-template name="generateIndexXrefId">
8099
+ <xsl:with-param name="docid" select="$docid"/>
8100
+ </xsl:call-template>
8083
8101
  </xsl:variable>
8084
8102
  <xsl:copy> <!-- add id to xref -->
8085
8103
  <xsl:apply-templates select="@*" mode="index_add_id"/>
8086
8104
  <xsl:attribute name="id">
8087
8105
  <xsl:value-of select="$id"/>
8088
8106
  </xsl:attribute>
8089
- <xsl:apply-templates mode="index_add_id"/>
8107
+ <xsl:apply-templates mode="index_add_id">
8108
+ <xsl:with-param name="docid" select="$docid"/>
8109
+ </xsl:apply-templates>
8090
8110
  </xsl:copy>
8091
8111
  <!-- split <xref target="bm1" to="End" pagenumber="true"> to two xref:
8092
8112
  <xref target="bm1" pagenumber="true"> and <xref target="End" pagenumber="true"> -->
@@ -8098,7 +8118,9 @@
8098
8118
  <xsl:attribute name="id">
8099
8119
  <xsl:value-of select="$id"/><xsl:text>_to</xsl:text>
8100
8120
  </xsl:attribute>
8101
- <xsl:apply-templates mode="index_add_id"/>
8121
+ <xsl:apply-templates mode="index_add_id">
8122
+ <xsl:with-param name="docid" select="$docid"/>
8123
+ </xsl:apply-templates>
8102
8124
  </xsl:copy>
8103
8125
  </xsl:if>
8104
8126
  </xsl:template>
@@ -8135,12 +8157,33 @@
8135
8157
  </xsl:when>
8136
8158
  <xsl:when test="self::* and local-name(.) = 'xref'">
8137
8159
  <xsl:variable name="id" select="@id"/>
8138
- <xsl:variable name="page" select="$index//item[@id = $id]"/>
8139
- <xsl:variable name="id_next" select="following-sibling::*[local-name() = 'xref'][1]/@id"/>
8140
- <xsl:variable name="page_next" select="$index//item[@id = $id_next]"/>
8141
8160
 
8161
+ <xsl:variable name="id_next" select="following-sibling::*[local-name() = 'xref'][1]/@id"/>
8142
8162
  <xsl:variable name="id_prev" select="preceding-sibling::*[local-name() = 'xref'][1]/@id"/>
8143
- <xsl:variable name="page_prev" select="$index//item[@id = $id_prev]"/>
8163
+
8164
+ <xsl:variable name="pages_">
8165
+ <xsl:for-each select="$index/index/item[@id = $id or @id = $id_next or @id = $id_prev]">
8166
+ <xsl:choose>
8167
+ <xsl:when test="@id = $id">
8168
+ <page><xsl:value-of select="."/></page>
8169
+ </xsl:when>
8170
+ <xsl:when test="@id = $id_next">
8171
+ <page_next><xsl:value-of select="."/></page_next>
8172
+ </xsl:when>
8173
+ <xsl:when test="@id = $id_prev">
8174
+ <page_prev><xsl:value-of select="."/></page_prev>
8175
+ </xsl:when>
8176
+ </xsl:choose>
8177
+ </xsl:for-each>
8178
+ </xsl:variable>
8179
+ <xsl:variable name="pages" select="xalan:nodeset($pages_)"/>
8180
+
8181
+ <!-- <xsl:variable name="page" select="$index/index/item[@id = $id]"/> -->
8182
+ <xsl:variable name="page" select="$pages/page"/>
8183
+ <!-- <xsl:variable name="page_next" select="$index/index/item[@id = $id_next]"/> -->
8184
+ <xsl:variable name="page_next" select="$pages/page_next"/>
8185
+ <!-- <xsl:variable name="page_prev" select="$index/index/item[@id = $id_prev]"/> -->
8186
+ <xsl:variable name="page_prev" select="$pages/page_prev"/>
8144
8187
 
8145
8188
  <xsl:choose>
8146
8189
  <!-- 2nd pass -->
@@ -8200,16 +8243,20 @@
8200
8243
  </xsl:template>
8201
8244
 
8202
8245
  <xsl:template name="generateIndexXrefId">
8246
+ <xsl:param name="docid"/>
8247
+
8203
8248
  <xsl:variable name="level" select="count(ancestor::*[local-name() = 'ul'])"/>
8204
8249
 
8205
- <xsl:variable name="docid">
8206
- <xsl:call-template name="getDocumentId"/>
8250
+ <xsl:variable name="docid_curr">
8251
+ <xsl:value-of select="$docid"/>
8252
+ <xsl:if test="normalize-space($docid) = ''"><xsl:call-template name="getDocumentId"/></xsl:if>
8207
8253
  </xsl:variable>
8254
+
8208
8255
  <xsl:variable name="item_number">
8209
8256
  <xsl:number count="*[local-name() = 'li'][ancestor::*[local-name() = 'indexsect']]" level="any"/>
8210
8257
  </xsl:variable>
8211
8258
  <xsl:variable name="xref_number"><xsl:number count="*[local-name() = 'xref']"/></xsl:variable>
8212
- <xsl:value-of select="concat($docid, '_', $item_number, '_', $xref_number)"/> <!-- $level, '_', -->
8259
+ <xsl:value-of select="concat($docid_curr, '_', $item_number, '_', $xref_number)"/> <!-- $level, '_', -->
8213
8260
  </xsl:template>
8214
8261
 
8215
8262
  <xsl:template match="*[local-name() = 'indexsect']/*[local-name() = 'title']" priority="4">
@@ -25,6 +25,15 @@ module IsoDoc
25
25
  end
26
26
  end
27
27
 
28
+ def asset_anchor_names(doc)
29
+ super
30
+ @parse_settings.empty? or return
31
+ sequential_asset_names(
32
+ doc.xpath(ns("//preface/abstract | //foreword | //introduction | "\
33
+ "//preface/clause | //acknowledgements")),
34
+ )
35
+ end
36
+
28
37
  def clause_names(docxml, _sect_num)
29
38
  q = "//clause[parent::sections]"
30
39
  @paranumber = 0
@@ -73,8 +73,14 @@
73
73
  <text/>
74
74
  </element>
75
75
  </define>
76
- <define name="script">
76
+ <define name="locale">
77
77
  <a:documentation>ISO-639</a:documentation>
78
+ <element name="locale">
79
+ <text/>
80
+ </element>
81
+ </define>
82
+ <define name="script">
83
+ <a:documentation>ISO-3166</a:documentation>
78
84
  <element name="script">
79
85
  <text/>
80
86
  </element>
@@ -93,6 +99,9 @@
93
99
  <!-- multiple languages and scripts possible: comma delimit them if so -->
94
100
  <attribute name="language"/>
95
101
  </optional>
102
+ <optional>
103
+ <attribute name="locale"/>
104
+ </optional>
96
105
  <optional>
97
106
  <attribute name="script"/>
98
107
  </optional>
@@ -136,6 +145,9 @@
136
145
  <!-- multiple languages and scripts possible: comma delimit them if so -->
137
146
  <attribute name="language"/>
138
147
  </optional>
148
+ <optional>
149
+ <attribute name="locale"/>
150
+ </optional>
139
151
  <optional>
140
152
  <attribute name="script"/>
141
153
  </optional>
@@ -650,6 +662,9 @@
650
662
  <zeroOrMore>
651
663
  <ref name="language"/>
652
664
  </zeroOrMore>
665
+ <zeroOrMore>
666
+ <ref name="locale"/>
667
+ </zeroOrMore>
653
668
  <zeroOrMore>
654
669
  <ref name="script"/>
655
670
  </zeroOrMore>
@@ -741,6 +756,9 @@
741
756
  <zeroOrMore>
742
757
  <ref name="language"/>
743
758
  </zeroOrMore>
759
+ <zeroOrMore>
760
+ <ref name="locale"/>
761
+ </zeroOrMore>
744
762
  <zeroOrMore>
745
763
  <ref name="script"/>
746
764
  </zeroOrMore>
@@ -854,6 +872,15 @@
854
872
  <optional>
855
873
  <attribute name="type"/>
856
874
  </optional>
875
+ <optional>
876
+ <attribute name="language"/>
877
+ </optional>
878
+ <optional>
879
+ <attribute name="locale"/>
880
+ </optional>
881
+ <optional>
882
+ <attribute name="script"/>
883
+ </optional>
857
884
  <data type="anyURI"/>
858
885
  </define>
859
886
  <define name="DateType">
@@ -882,6 +909,7 @@
882
909
  <value>vote-started</value>
883
910
  <value>vote-ended</value>
884
911
  <value>announced</value>
912
+ <value>stable-until</value>
885
913
  </choice>
886
914
  </define>
887
915
  <define name="bdate">
@@ -930,6 +958,9 @@
930
958
  <optional>
931
959
  <attribute name="language"/>
932
960
  </optional>
961
+ <optional>
962
+ <attribute name="locale"/>
963
+ </optional>
933
964
  <optional>
934
965
  <attribute name="script"/>
935
966
  </optional>
@@ -51,7 +51,7 @@ module Metanorma
51
51
  def metadata_id(node, xml)
52
52
  dn = node.attr("docnumber")
53
53
  if docstatus = node.attr("status")
54
- abbr = IsoDoc::UN::Metadata.new("en", "Latn", @i18n)
54
+ abbr = IsoDoc::UN::Metadata.new("en", "Latn", "", @i18n)
55
55
  .stage_abbr(docstatus)
56
56
  dn = "#{dn}(#{abbr})" unless abbr.empty?
57
57
  end
@@ -67,13 +67,13 @@ module Metanorma
67
67
  xml.session do |session|
68
68
  session.number node.attr("session") if node.attr("session")
69
69
  session.date node.attr("session-date") if node.attr("session-date")
70
- node&.attr("item-number")&.split(/, */)&.each do |i|
70
+ node.attr("item-number")&.split(/, */)&.each do |i|
71
71
  session.item_number i
72
72
  end
73
- node&.attr("item-name")&.split(/, */)&.each do |i|
73
+ node.attr("item-name")&.split(/, */)&.each do |i|
74
74
  session.item_name i
75
75
  end
76
- node&.attr("subitem-name")&.split(/, */)&.each do |i|
76
+ node.attr("subitem-name")&.split(/, */)&.each do |i|
77
77
  session.subitem_name i
78
78
  end
79
79
  node.attr("collaborator") and
@@ -205,6 +205,15 @@
205
205
  <data type="boolean"/>
206
206
  </attribute>
207
207
  </optional>
208
+ <optional>
209
+ <attribute name="style">
210
+ <choice>
211
+ <value>basic</value>
212
+ <value>full</value>
213
+ <value>short</value>
214
+ </choice>
215
+ </attribute>
216
+ </optional>
208
217
  <ref name="XrefBody"/>
209
218
  </element>
210
219
  </define>
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module UN
3
- VERSION = "0.9.8.1".freeze
3
+ VERSION = "0.9.10".freeze
4
4
  end
5
5
  end
data/metanorma-un.gemspec CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.add_dependency "roman-numerals"
31
31
  spec.add_dependency "twitter_cldr"
32
32
 
33
- spec.add_dependency "metanorma-standoc", "~> 2.2.0"
33
+ spec.add_dependency "metanorma-standoc", "~> 2.2.4"
34
34
 
35
35
  spec.add_development_dependency "debug"
36
36
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-un
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.8.1
4
+ version: 0.9.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-07 00:00:00.000000000 Z
11
+ date: 2022-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: iso-639
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 2.2.0
61
+ version: 2.2.4
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 2.2.0
68
+ version: 2.2.4
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: debug
71
71
  requirement: !ruby/object:Gem::Requirement