metanorma-iso 1.8.6 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2099,88 +2099,6 @@
2099
2099
  <xsl:text>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</xsl:text>
2100
2100
  </xsl:variable>
2101
2101
 
2102
- <xsl:template name="number-to-words">
2103
- <xsl:param name="number"/>
2104
- <xsl:variable name="words">
2105
- <words>
2106
- <word cardinal="1">One-</word>
2107
- <word ordinal="1">First </word>
2108
- <word cardinal="2">Two-</word>
2109
- <word ordinal="2">Second </word>
2110
- <word cardinal="3">Three-</word>
2111
- <word ordinal="3">Third </word>
2112
- <word cardinal="4">Four-</word>
2113
- <word ordinal="4">Fourth </word>
2114
- <word cardinal="5">Five-</word>
2115
- <word ordinal="5">Fifth </word>
2116
- <word cardinal="6">Six-</word>
2117
- <word ordinal="6">Sixth </word>
2118
- <word cardinal="7">Seven-</word>
2119
- <word ordinal="7">Seventh </word>
2120
- <word cardinal="8">Eight-</word>
2121
- <word ordinal="8">Eighth </word>
2122
- <word cardinal="9">Nine-</word>
2123
- <word ordinal="9">Ninth </word>
2124
- <word ordinal="10">Tenth </word>
2125
- <word ordinal="11">Eleventh </word>
2126
- <word ordinal="12">Twelfth </word>
2127
- <word ordinal="13">Thirteenth </word>
2128
- <word ordinal="14">Fourteenth </word>
2129
- <word ordinal="15">Fifteenth </word>
2130
- <word ordinal="16">Sixteenth </word>
2131
- <word ordinal="17">Seventeenth </word>
2132
- <word ordinal="18">Eighteenth </word>
2133
- <word ordinal="19">Nineteenth </word>
2134
- <word cardinal="20">Twenty-</word>
2135
- <word ordinal="20">Twentieth </word>
2136
- <word cardinal="30">Thirty-</word>
2137
- <word ordinal="30">Thirtieth </word>
2138
- <word cardinal="40">Forty-</word>
2139
- <word ordinal="40">Fortieth </word>
2140
- <word cardinal="50">Fifty-</word>
2141
- <word ordinal="50">Fiftieth </word>
2142
- <word cardinal="60">Sixty-</word>
2143
- <word ordinal="60">Sixtieth </word>
2144
- <word cardinal="70">Seventy-</word>
2145
- <word ordinal="70">Seventieth </word>
2146
- <word cardinal="80">Eighty-</word>
2147
- <word ordinal="80">Eightieth </word>
2148
- <word cardinal="90">Ninety-</word>
2149
- <word ordinal="90">Ninetieth </word>
2150
- <word cardinal="100">Hundred-</word>
2151
- <word ordinal="100">Hundredth </word>
2152
- </words>
2153
- </xsl:variable>
2154
-
2155
- <xsl:variable name="ordinal" select="xalan:nodeset($words)//word[@ordinal = $number]/text()"/>
2156
-
2157
- <xsl:choose>
2158
- <xsl:when test="$ordinal != ''">
2159
- <xsl:value-of select="$ordinal"/>
2160
- </xsl:when>
2161
- <xsl:otherwise>
2162
- <xsl:choose>
2163
- <xsl:when test="$number &lt; 100">
2164
- <xsl:variable name="decade" select="concat(substring($number,1,1), '0')"/>
2165
- <xsl:variable name="digit" select="substring($number,2)"/>
2166
- <xsl:value-of select="xalan:nodeset($words)//word[@cardinal = $decade]/text()"/>
2167
- <xsl:value-of select="xalan:nodeset($words)//word[@ordinal = $digit]/text()"/>
2168
- </xsl:when>
2169
- <xsl:otherwise>
2170
- <!-- more 100 -->
2171
- <xsl:variable name="hundred" select="substring($number,1,1)"/>
2172
- <xsl:variable name="digits" select="number(substring($number,2))"/>
2173
- <xsl:value-of select="xalan:nodeset($words)//word[@cardinal = $hundred]/text()"/>
2174
- <xsl:value-of select="xalan:nodeset($words)//word[@cardinal = '100']/text()"/>
2175
- <xsl:call-template name="number-to-words">
2176
- <xsl:with-param name="number" select="$digits"/>
2177
- </xsl:call-template>
2178
- </xsl:otherwise>
2179
- </xsl:choose>
2180
- </xsl:otherwise>
2181
- </xsl:choose>
2182
- </xsl:template>
2183
-
2184
2102
  <xsl:template name="printEdition">
2185
2103
  <xsl:variable name="edition" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:edition)"/>
2186
2104
  <xsl:text> </xsl:text>
@@ -3424,6 +3342,7 @@
3424
3342
  <fo:table-row>
3425
3343
  <fo:table-cell border="solid black 1pt" padding-left="1mm" padding-right="1mm" padding-top="1mm" number-columns-spanned="{$cols-count}">
3426
3344
 
3345
+
3427
3346
  <xsl:attribute name="border-top">solid black 0pt</xsl:attribute>
3428
3347
 
3429
3348
 
@@ -3436,6 +3355,10 @@
3436
3355
 
3437
3356
 
3438
3357
 
3358
+
3359
+ <!-- for BSI (not PAS) display Notes before footnotes -->
3360
+
3361
+
3439
3362
  <!-- except gb -->
3440
3363
 
3441
3364
  <xsl:apply-templates select="../*[local-name()='note']" mode="process"/>
@@ -3461,6 +3384,10 @@
3461
3384
  <!-- fn processing -->
3462
3385
  <xsl:call-template name="fn_display"/>
3463
3386
 
3387
+
3388
+ <!-- for PAS display Notes after footnotes -->
3389
+
3390
+
3464
3391
  </fo:table-cell>
3465
3392
  </fo:table-row>
3466
3393
  </fo:table-body>
@@ -3569,6 +3496,7 @@
3569
3496
  </xsl:if>
3570
3497
  <xsl:if test="$parent-name = 'tfoot'">
3571
3498
 
3499
+
3572
3500
  <xsl:attribute name="font-size">9pt</xsl:attribute>
3573
3501
  <xsl:attribute name="border-left">solid black 1pt</xsl:attribute>
3574
3502
  <xsl:attribute name="border-right">solid black 1pt</xsl:attribute>
@@ -3704,6 +3632,7 @@
3704
3632
 
3705
3633
  <fo:block font-size="10pt" margin-bottom="12pt">
3706
3634
 
3635
+
3707
3636
  <xsl:attribute name="font-size">9pt</xsl:attribute>
3708
3637
  <xsl:attribute name="margin-bottom">6pt</xsl:attribute>
3709
3638
 
@@ -3713,8 +3642,12 @@
3713
3642
 
3714
3643
 
3715
3644
 
3645
+ <!-- Table's note name (NOTE, for example) -->
3646
+
3716
3647
  <fo:inline padding-right="2mm">
3717
3648
 
3649
+
3650
+
3718
3651
 
3719
3652
 
3720
3653
 
@@ -3722,6 +3655,8 @@
3722
3655
 
3723
3656
  </fo:inline>
3724
3657
 
3658
+
3659
+
3725
3660
  <xsl:apply-templates mode="process"/>
3726
3661
  </fo:block>
3727
3662
 
@@ -3741,6 +3676,8 @@
3741
3676
  <xsl:variable name="reference" select="@reference"/>
3742
3677
  <xsl:if test="not(preceding-sibling::*[@reference = $reference])"> <!-- only unique reference puts in note-->
3743
3678
  <fo:block margin-bottom="12pt">
3679
+
3680
+
3744
3681
 
3745
3682
  <xsl:attribute name="font-size">9pt</xsl:attribute>
3746
3683
  <xsl:attribute name="margin-bottom">6pt</xsl:attribute>
@@ -3763,6 +3700,7 @@
3763
3700
  <xsl:value-of select="@reference"/>
3764
3701
 
3765
3702
 
3703
+
3766
3704
  </fo:inline>
3767
3705
  <fo:inline>
3768
3706
 
@@ -3918,6 +3856,7 @@
3918
3856
 
3919
3857
  <xsl:value-of select="@reference"/>
3920
3858
 
3859
+
3921
3860
  </fo:basic-link>
3922
3861
  </fo:inline>
3923
3862
  </xsl:template><xsl:template match="*[local-name()='fn']/*[local-name()='p']">
@@ -4944,6 +4883,7 @@
4944
4883
 
4945
4884
 
4946
4885
 
4886
+
4947
4887
  <fo:block-container margin-left="0mm">
4948
4888
 
4949
4889
 
@@ -6151,9 +6091,10 @@
6151
6091
 
6152
6092
 
6153
6093
  </xsl:if>
6154
-
6094
+
6095
+
6096
+
6155
6097
  <fo:basic-link internal-destination="{@bibitemid}" fox:alt-text="{@citeas}">
6156
-
6157
6098
  <xsl:if test="normalize-space(@citeas) = ''">
6158
6099
  <xsl:attribute name="fox:alt-text"><xsl:value-of select="."/></xsl:attribute>
6159
6100
  </xsl:if>
@@ -6161,6 +6102,7 @@
6161
6102
 
6162
6103
 
6163
6104
 
6105
+
6164
6106
  </xsl:if>
6165
6107
 
6166
6108
  <xsl:apply-templates/>
@@ -7105,4 +7047,100 @@
7105
7047
  <xsl:otherwise><xsl:value-of select="$default"/></xsl:otherwise>
7106
7048
  </xsl:choose>
7107
7049
  </xsl:attribute>
7050
+ </xsl:template><xsl:template name="number-to-words">
7051
+ <xsl:param name="number"/>
7052
+ <xsl:param name="first"/>
7053
+ <xsl:if test="$number != ''">
7054
+ <xsl:variable name="words">
7055
+ <words>
7056
+ <word cardinal="1">One-</word>
7057
+ <word ordinal="1">First </word>
7058
+ <word cardinal="2">Two-</word>
7059
+ <word ordinal="2">Second </word>
7060
+ <word cardinal="3">Three-</word>
7061
+ <word ordinal="3">Third </word>
7062
+ <word cardinal="4">Four-</word>
7063
+ <word ordinal="4">Fourth </word>
7064
+ <word cardinal="5">Five-</word>
7065
+ <word ordinal="5">Fifth </word>
7066
+ <word cardinal="6">Six-</word>
7067
+ <word ordinal="6">Sixth </word>
7068
+ <word cardinal="7">Seven-</word>
7069
+ <word ordinal="7">Seventh </word>
7070
+ <word cardinal="8">Eight-</word>
7071
+ <word ordinal="8">Eighth </word>
7072
+ <word cardinal="9">Nine-</word>
7073
+ <word ordinal="9">Ninth </word>
7074
+ <word ordinal="10">Tenth </word>
7075
+ <word ordinal="11">Eleventh </word>
7076
+ <word ordinal="12">Twelfth </word>
7077
+ <word ordinal="13">Thirteenth </word>
7078
+ <word ordinal="14">Fourteenth </word>
7079
+ <word ordinal="15">Fifteenth </word>
7080
+ <word ordinal="16">Sixteenth </word>
7081
+ <word ordinal="17">Seventeenth </word>
7082
+ <word ordinal="18">Eighteenth </word>
7083
+ <word ordinal="19">Nineteenth </word>
7084
+ <word cardinal="20">Twenty-</word>
7085
+ <word ordinal="20">Twentieth </word>
7086
+ <word cardinal="30">Thirty-</word>
7087
+ <word ordinal="30">Thirtieth </word>
7088
+ <word cardinal="40">Forty-</word>
7089
+ <word ordinal="40">Fortieth </word>
7090
+ <word cardinal="50">Fifty-</word>
7091
+ <word ordinal="50">Fiftieth </word>
7092
+ <word cardinal="60">Sixty-</word>
7093
+ <word ordinal="60">Sixtieth </word>
7094
+ <word cardinal="70">Seventy-</word>
7095
+ <word ordinal="70">Seventieth </word>
7096
+ <word cardinal="80">Eighty-</word>
7097
+ <word ordinal="80">Eightieth </word>
7098
+ <word cardinal="90">Ninety-</word>
7099
+ <word ordinal="90">Ninetieth </word>
7100
+ <word cardinal="100">Hundred-</word>
7101
+ <word ordinal="100">Hundredth </word>
7102
+ </words>
7103
+ </xsl:variable>
7104
+
7105
+ <xsl:variable name="ordinal" select="xalan:nodeset($words)//word[@ordinal = $number]/text()"/>
7106
+
7107
+ <xsl:variable name="value">
7108
+ <xsl:choose>
7109
+ <xsl:when test="$ordinal != ''">
7110
+ <xsl:value-of select="$ordinal"/>
7111
+ </xsl:when>
7112
+ <xsl:otherwise>
7113
+ <xsl:choose>
7114
+ <xsl:when test="$number &lt; 100">
7115
+ <xsl:variable name="decade" select="concat(substring($number,1,1), '0')"/>
7116
+ <xsl:variable name="digit" select="substring($number,2)"/>
7117
+ <xsl:value-of select="xalan:nodeset($words)//word[@cardinal = $decade]/text()"/>
7118
+ <xsl:value-of select="xalan:nodeset($words)//word[@ordinal = $digit]/text()"/>
7119
+ </xsl:when>
7120
+ <xsl:otherwise>
7121
+ <!-- more 100 -->
7122
+ <xsl:variable name="hundred" select="substring($number,1,1)"/>
7123
+ <xsl:variable name="digits" select="number(substring($number,2))"/>
7124
+ <xsl:value-of select="xalan:nodeset($words)//word[@cardinal = $hundred]/text()"/>
7125
+ <xsl:value-of select="xalan:nodeset($words)//word[@cardinal = '100']/text()"/>
7126
+ <xsl:call-template name="number-to-words">
7127
+ <xsl:with-param name="number" select="$digits"/>
7128
+ </xsl:call-template>
7129
+ </xsl:otherwise>
7130
+ </xsl:choose>
7131
+ </xsl:otherwise>
7132
+ </xsl:choose>
7133
+ </xsl:variable>
7134
+ <xsl:choose>
7135
+ <xsl:when test="$first = 'true'">
7136
+ <xsl:variable name="value_lc" select="java:toLowerCase(java:java.lang.String.new($value))"/>
7137
+ <xsl:call-template name="capitalize">
7138
+ <xsl:with-param name="str" select="$value_lc"/>
7139
+ </xsl:call-template>
7140
+ </xsl:when>
7141
+ <xsl:otherwise>
7142
+ <xsl:value-of select="$value"/>
7143
+ </xsl:otherwise>
7144
+ </xsl:choose>
7145
+ </xsl:if>
7108
7146
  </xsl:template></xsl:stylesheet>
@@ -1,31 +1,30 @@
1
1
  require "isodoc"
2
- require "mn2sts"
2
+ require "mnconvert"
3
3
 
4
4
  module IsoDoc
5
5
  module Iso
6
-
7
6
  # A {Converter} implementation that generates HTML output, and a document
8
7
  # schema encapsulation of the document for validation
9
8
  #
10
9
  class IsoStsConvert < IsoDoc::XslfoPdfConvert
11
- def initialize(options)
10
+ def initialize(_options)
12
11
  @libdir = File.dirname(__FILE__)
13
12
  @format = :isosts
14
13
  @suffix = "isosts.xml"
15
14
  end
16
15
 
17
- def convert(input_filename, file = nil, debug = false, output_filename = nil)
18
- file = File.read(input_filename, encoding: "utf-8") if file.nil?
19
- docxml, filename, dir = convert_init(file, input_filename, debug)
20
- /\.xml$/.match(input_filename) or
21
- input_filename = Tempfile.open([filename, ".xml"], encoding: "utf-8") do |f|
22
- f.write file
23
- f.path
24
- end
16
+ def convert(input_fname, file = nil, debug = false, output_fname = nil)
17
+ file = File.read(input_fname, encoding: "utf-8") if file.nil?
18
+ _, fname, dir = convert_init(file, input_fname, debug)
19
+ /\.xml$/.match(input_fname) or
20
+ input_fname = Tempfile.open([fname, ".xml"], encoding: "utf-8") do |f|
21
+ f.write file
22
+ f.path
23
+ end
25
24
  FileUtils.rm_rf dir
26
- Mn2sts.convert(input_filename, output_filename || "#{filename}.#{@suffix}", iso: true)
25
+ MnConvert.convert(input_fname, output_fname || "#{fname}.#{@suffix}",
26
+ MnConvert::InputFormat::MN, { output_format: :iso })
27
27
  end
28
28
  end
29
29
  end
30
30
  end
31
-
@@ -112,14 +112,58 @@ module IsoDoc
112
112
  end
113
113
  end
114
114
 
115
+ def concept(docxml)
116
+ docxml.xpath(ns("//terms//concept")).each_with_object({}) do |f, m|
117
+ concept_term(f, m)
118
+ end
119
+ docxml.xpath(ns("//concept")).each do |node|
120
+ concept_render(node, node["ital"] || "false", node["ref"] || "false")
121
+ end
122
+ end
123
+
124
+ def concept_term(node, seen)
125
+ term = node&.at(ns("./refterm"))&.to_xml
126
+ if term && seen[term]
127
+ concept_render(node, node["ital"] || "false", node["ref"] || "false")
128
+ else concept_render(node, node["ital"] || "true", node["ref"] || "true")
129
+ end
130
+ seen[term] = true if term
131
+ seen
132
+ end
133
+
134
+ def concept1_ref(node, ref)
135
+ if r = node.at(ns("./xref | ./eref | ./termref"))
136
+ return r.remove if ref == "false"
137
+
138
+ r.name == "termref" and
139
+ r.replace(@i18n.term_defined_in.sub(/%/, r.to_xml)) or
140
+ r.replace("(#{r.to_xml})")
141
+ end
142
+ end
143
+
115
144
  def concept1(node)
116
- node&.at(ns("./refterm"))&.remove
117
- node&.at(ns("./renderterm"))&.name = "em"
118
- r = node.at(ns("./xref | ./eref | ./termref"))
119
- r.name == "termref" and
120
- r.replace(@i18n.term_defined_in.sub(/%/, r.to_xml)) or
121
- r.replace("(#{r.to_xml})")
122
- node.replace(node.children)
145
+ node.replace(node&.at(ns("./renderterm"))&.children ||
146
+ node&.at(ns("./refterm"))&.children ||
147
+ node.children)
148
+ end
149
+
150
+ # we're assuming terms and clauses in the right place for display,
151
+ # to cope with multiple terms sections
152
+
153
+ def display_order(docxml)
154
+ i = 0
155
+ i = display_order_xpath(docxml, "//preface/*", i)
156
+ i = display_order_at(docxml, "//clause[@type = 'scope']", i)
157
+ i = display_order_at(docxml, @xrefs.klass.norm_ref_xpath, i)
158
+ # i = display_order_at(docxml, "//sections/terms | "\
159
+ # "//sections/clause[descendant::terms]", i)
160
+ # i = display_order_at(docxml, "//sections/definitions", i)
161
+ # i = display_order_xpath(docxml, @xrefs.klass.middle_clause(docxml), i)
162
+ i = display_order_xpath(docxml, "//sections/clause[not(@type = 'scope')] | "\
163
+ "//sections/terms | //sections/definitions", i)
164
+ i = display_order_xpath(docxml, "//annex", i)
165
+ i = display_order_xpath(docxml, @xrefs.klass.bibliography_xpath, i)
166
+ display_order_xpath(docxml, "//indexsect", i)
123
167
  end
124
168
 
125
169
  include Init
@@ -1,9 +1,8 @@
1
1
  require "isodoc"
2
- require "mn2sts"
2
+ require "mnconvert"
3
3
 
4
4
  module IsoDoc
5
5
  module Iso
6
-
7
6
  class StsConvert < IsoDoc::XslfoPdfConvert
8
7
  def initialize(_options) # rubocop:disable Lint/MissingSuper
9
8
  @libdir = File.dirname(__FILE__)
@@ -14,14 +13,14 @@ module IsoDoc
14
13
  def convert(in_fname, file = nil, debug = false, out_fname = nil)
15
14
  file = File.read(in_fname, encoding: "utf-8") if file.nil?
16
15
  _docxml, filename, dir = convert_init(file, in_fname, debug)
17
- unless /\.xml$/.match?(in_fname)
16
+ /\.xml$/.match?(in_fname) or
18
17
  in_fname = Tempfile.open([filename, ".xml"], encoding: "utf-8") do |f|
19
18
  f.write file
20
19
  f.path
21
20
  end
22
- end
23
21
  FileUtils.rm_rf dir
24
- Mn2sts.convert(in_fname, out_fname || "#{filename}.#{@suffix}")
22
+ Mnconvert.convert(in_fname, out_fname || "#{filename}.#{@suffix}",
23
+ MnConvert::InputFormat::MN)
25
24
  end
26
25
  end
27
26
  end
@@ -8,7 +8,7 @@ module IsoDoc
8
8
  if @klass.amd(doc)
9
9
  initial_anchor_names_amd(doc)
10
10
  else
11
- super
11
+ initial_anchor_names1(doc)
12
12
  end
13
13
  introduction_names(doc.at(ns("//introduction")))
14
14
  end
@@ -26,6 +26,22 @@ module IsoDoc
26
26
  termexample_anchor_names(doc)
27
27
  end
28
28
 
29
+ def initial_anchor_names1(doc)
30
+ doc.xpath(ns("//preface/*")).each { |c| c.element? and preface_names(c) }
31
+ # potentially overridden in middle_section_asset_names()
32
+ sequential_asset_names(doc.xpath(ns("//preface/*")))
33
+ n = Counter.new
34
+ n = section_names(doc.at(ns("//clause[@type = 'scope']")), n, 1)
35
+ n = section_names(doc.at(ns(@klass.norm_ref_xpath)), n, 1)
36
+ doc.xpath(ns("//sections/clause[not(@type = 'scope')] | "\
37
+ "//sections/terms | //sections/definitions")).each do |c|
38
+ n = section_names(c, n, 1)
39
+ end
40
+ middle_section_asset_names(doc)
41
+ termnote_anchor_names(doc)
42
+ termexample_anchor_names(doc)
43
+ end
44
+
29
45
  # we can reference 0-number clauses in introduction
30
46
  def introduction_names(clause)
31
47
  return if clause.nil?