metanorma-iso 1.8.6 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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?