metanorma-iso 1.5.11 → 1.5.12

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b55ad63091753ec601585409d6eb07ecb5036273c4c0a25d4dc8933d1f8fe68e
4
- data.tar.gz: e4926508e1cbd008d5f8f9daf99746dd31fe599726ac3b40c3fbe21417425d92
3
+ metadata.gz: 8fa41b9ff5a061ea7bf8428ec4cd1a692867c877462f4fd1b7bf1ae1b0dd2a9f
4
+ data.tar.gz: 7e99d7041d2a295b48057be5ea7505ce05be4b40739ce4ffa3ffc4b94149aabc
5
5
  SHA512:
6
- metadata.gz: 5e91a33a23750e3f6bcc4a7b41b31a6543ab59bd28f7c82bc683e4e18c6e1ba0944b8662d29b74f95e548eac55da5d7b40bb842574d1739aba494e0058e07e3c
7
- data.tar.gz: d8c09a90f76d6d5872010b54001af4c7a8d8ebd809cef8c6c6d09e75bb303c7717d5f74f8e10230ed9a6dbbc47f166383ade0215d2f876dd948a202b08ada08c
6
+ metadata.gz: e7ee3745f439ae3aae5664e6440aed30d94f5e02b4691754fc39cc8ed58fa9bd8e8b80063d9d7889c4e36e8edc9e056f1bef761f471af4742bab8d8465d6a8d7
7
+ data.tar.gz: a8f78935bf25b08a0cf56872384d0dcabd71d7ea8e996bf87d54db1f7045811b6e064953773b93d0d4f560a38f4fff16b4efd96814f01ac1eefbd4ae4e214d04
@@ -0,0 +1,66 @@
1
+ # Auto-generated by Cimas: Do not edit it manually!
2
+ # See https://github.com/metanorma/cimas
3
+ name: rake
4
+
5
+ on:
6
+ push:
7
+ branches: [ master, main ]
8
+ tags: [ v* ]
9
+ pull_request:
10
+
11
+ jobs:
12
+ rake:
13
+ name: Test on Ruby ${{ matrix.ruby }} ${{ matrix.os }}
14
+ runs-on: ${{ matrix.os }}
15
+ continue-on-error: ${{ matrix.experimental }}
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ ruby: [ '2.6', '2.5', '2.4' ]
20
+ os: [ ubuntu-latest, windows-latest, macos-latest ]
21
+ experimental: [ false ]
22
+ include:
23
+ - ruby: '2.7'
24
+ os: 'ubuntu-latest'
25
+ experimental: true
26
+ - ruby: '2.7'
27
+ os: 'windows-latest'
28
+ experimental: true
29
+ - ruby: '2.7'
30
+ os: 'macos-latest'
31
+ experimental: true
32
+ steps:
33
+ - uses: actions/checkout@master
34
+
35
+ - uses: ruby/setup-ruby@v1
36
+ with:
37
+ ruby-version: ${{ matrix.ruby }}
38
+
39
+ - uses: actions/cache@v1
40
+ with:
41
+ path: vendor/bundle
42
+ key: bundle-${{ matrix.os }}-${{ matrix.ruby }}-${{ hashFiles('**/*.gemspec') }}
43
+ restore-keys: bundle-${{ matrix.os }}-${{ matrix.ruby }}
44
+
45
+ - run: bundle config set path 'vendor/bundle'
46
+
47
+ - run: bundle install --jobs 4 --retry 3
48
+
49
+ - name: install plantuml ubuntu
50
+ if: matrix.os == 'ubuntu-latest'
51
+ uses: nick-invision/retry@v1
52
+ with:
53
+ polling_interval_seconds: 5
54
+ timeout_minutes: 5
55
+ max_attempts: 3
56
+ command: >
57
+ sudo apt-get update -y && sudo bash -c
58
+ "curl -L https://github.com/metanorma/plantuml-install/raw/master/ubuntu.sh | bash"
59
+
60
+ - if: matrix.os == 'macos-latest'
61
+ run: brew install plantuml
62
+
63
+ - if: matrix.os == 'windows-latest'
64
+ run: cinst -y plantuml
65
+
66
+ - run: bundle exec rake
@@ -1,22 +1,18 @@
1
1
  = Metanorma-ISO: Metanorma processor for ISO standards
2
2
 
3
3
  image:https://img.shields.io/gem/v/metanorma-iso.svg["Gem Version", link="https://rubygems.org/gems/metanorma-iso"]
4
- image:https://github.com/metanorma/metanorma-iso/workflows/macos/badge.svg["Build Status (macOS)", link="https://github.com/metanorma/metanorma-iso/actions?workflow=macos"]
5
- image:https://github.com/metanorma/metanorma-iso/workflows/ubuntu/badge.svg["Build Status (ubuntu)", link="https://github.com/metanorma/metanorma-iso/actions?workflow=ubuntu"]
6
- image:https://github.com/metanorma/metanorma-iso/workflows/windows/badge.svg["Build Status (Windows)", link="https://github.com/metanorma/metanorma-iso/actions?workflow=windows"]
4
+ image:https://github.com/metanorma/metanorma-iso/workflows/rake/badge.svg["Build Status", link="https://github.com/metanorma/metanorma-iso/actions?workflow=rake"]
7
5
  image:https://codeclimate.com/github/metanorma/metanorma-iso/badges/gpa.svg["Code Climate", link="https://codeclimate.com/github/metanorma/metanorma-iso"]
8
6
  image:https://img.shields.io/github/issues-pr-raw/metanorma/metanorma-iso.svg["Pull Requests", link="https://github.com/metanorma/metanorma-iso/pulls"]
9
7
  image:https://img.shields.io/github/commits-since/metanorma/metanorma-iso/latest.svg["Commits since latest",link="https://github.com/metanorma/metanorma-iso/releases"]
10
8
 
11
- _Formerly known as_ `asciidoctor-iso`.
12
-
13
9
  == Functionality and Approach
14
10
 
15
11
  For the conceptual underpinnings of this gem, and the other gems in the Metanorma suite, see the https://github.com/metanorma/metanorma-model-standoc/blob/master/README.adoc[metanorma-standoc README].
16
12
 
17
13
  == Outputs
18
14
 
19
- This gem processes Metanorma documents following a template for generating ISO
15
+ This gem processes https://www.metanorma.com[Metanorma documents] following a template for generating ISO
20
16
  International Standards. The following outputs are generated.
21
17
 
22
18
  * The XML representation of the document, intended as a document model for ISO
@@ -79,3 +75,6 @@ See https://www.metanorma.com/author/iso/[The ISO flavor of Metanorma].
79
75
  * Example documents are avalable at the https://github.com/metanorma/mn-samples-iso[mn-samples-iso] repository.
80
76
  * Document templates are available at the https://github.com/metanorma/mn-templates-iso[mn-templates-iso] repository.
81
77
 
78
+ == Notes
79
+
80
+ Metanorma-ISO was formerly published as `asciidoctor-iso`.
@@ -32,8 +32,8 @@ l’adresse ci-après ou au comité membre de l’ISO dans le pays du demandeur.
32
32
  <clause>
33
33
  <title>Avertissement</title>
34
34
 
35
- <p>Ce document n'est pas une Norme internationale de l'ISO. Il est distribué pour examen et observations. Il est susceptible de modification sans préavis et ne peut être cité comme Norme internationale.</p>
36
- <p>Les destinataires du présent projet sont invités présenter, avec leurs observations, notification des droits de propriété dont ils auraient éventuellement connaissance et fournir une documentation explicative.</p>
35
+ <p>Ce document n'est pas une Norme internationale de l'ISO. Il est distribué pour examen et observations. Il est susceptible de modification sans préavis et ne peut être cité comme Norme internationale.</p>
36
+ <p>Les destinataires du présent projet sont invités à présenter, avec leurs observations, notification des droits de propriété dont ils auraient éventuellement connaissance et à fournir une documentation explicative.</p>
37
37
  </clause>
38
38
  </license-statement>
39
39
  {% endif %}
@@ -129,6 +129,39 @@ module Asciidoctor
129
129
  file = @lang == "fr" ? "boilerplate-fr.xml" : "boilerplate.xml"
130
130
  File.join(@libdir, file)
131
131
  end
132
+
133
+ def footnote_cleanup(xmldoc)
134
+ unpub_footnotes(xmldoc)
135
+ super
136
+ end
137
+
138
+ def unpub_footnotes(xmldoc)
139
+ xmldoc.xpath("//bibitem/note[@type = 'Unpublished-Status']").each do |n|
140
+ id = n.parent["id"]
141
+ e = xmldoc.at("//eref[@bibitemid = '#{id}']") or next
142
+ e.next = n.dup
143
+ e.next.name = "fn"
144
+ e.next.delete("format")
145
+ e.next.delete("type")
146
+ end
147
+ end
148
+
149
+ def bibitem_cleanup(xmldoc)
150
+ super
151
+ unpublished_note(xmldoc)
152
+ end
153
+
154
+ def unpublished_note(xmldoc)
155
+ xmldoc.xpath("//bibitem[not(note[@type = 'Unpublished-Status'])]").each do |b|
156
+ next if pub_class(b) > 2
157
+ next unless s = b.at("./status/stage") and s.text.to_i < 60
158
+ id = b.at("docidentifier").text
159
+ b.at("./language | ./script | ./abstract | ./status").previous = <<~NOTE
160
+ <note type="Unpublished-Status">
161
+ <p>#{@i18n.under_preparation.sub(/%/, id)}</p></note>
162
+ NOTE
163
+ end
164
+ end
132
165
  end
133
166
  end
134
167
  end
@@ -24,6 +24,14 @@
24
24
  <start>
25
25
  <ref name="standard-document"/>
26
26
  </start>
27
+ <define name="doctype">
28
+ <element name="doctype">
29
+ <optional>
30
+ <attribute name="abbreviation"/>
31
+ </optional>
32
+ <ref name="DocumentType"/>
33
+ </element>
34
+ </define>
27
35
  <define name="hyperlink">
28
36
  <element name="link">
29
37
  <attribute name="target">
@@ -141,6 +149,11 @@
141
149
  <data type="boolean"/>
142
150
  </attribute>
143
151
  </optional>
152
+ <optional>
153
+ <attribute name="key">
154
+ <data type="boolean"/>
155
+ </attribute>
156
+ </optional>
144
157
  <oneOrMore>
145
158
  <ref name="dt"/>
146
159
  <ref name="dd"/>
@@ -170,7 +170,7 @@ module Asciidoctor
170
170
 
171
171
  def bibitem_validate(xmldoc)
172
172
  xmldoc.xpath("//bibitem[date/on = '–']").each do |b|
173
- b.at("./note[@type = 'ISO DATE']") or
173
+ b.at("./note[@type = 'Unpublished-Status']") or
174
174
  @log.add("Style", b,
175
175
  "Reference #{b&.at("./@id")&.text} does not have an "\
176
176
  "associated footnote indicating unpublished status")
@@ -157,6 +157,15 @@ module Asciidoctor
157
157
  scope = root.at("//clause[@type = 'scope']/clause")
158
158
  # ISO/IEC DIR 2, 14.4
159
159
  scope.nil? || style_warning(scope, SCOPE_WARN, nil)
160
+ tech_report_style(root)
161
+ end
162
+
163
+ def tech_report_style(root)
164
+ root.at("//bibdata/ext/doctype")&.text == "technical-report" or return
165
+ root.xpath("//sections/clause[not(@type = 'scope')] | //annex").each do |s|
166
+ r = requirement_check(extract_text(s))
167
+ style_warning(s, "Technical Report clause may contain requirement", r) if r
168
+ end
160
169
  end
161
170
 
162
171
  ASSETS_TO_STYLE =
@@ -149,8 +149,7 @@ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span style='mso-tab-count:
149
149
 
150
150
  <div style='mso-element:footer' id=f2>
151
151
  <p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
152
- style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– All
153
- rights reserved<span style='mso-tab-count:1'>                                                                                                                                                                          </span></span><!--[if supportFields]><span
152
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ all_rights_reserved }}<span style='mso-tab-count:1'>                                                                                                                                                                          </span></span><!--[if supportFields]><span
154
153
  lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
155
154
  style='mso-element:field-begin'></span> PAGE<span style='mso-spacerun:yes'>  
156
155
  </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
@@ -163,8 +162,7 @@ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
163
162
 
164
163
  <div style='mso-element:footer' id=f2l>
165
164
  <p class=MsoFooterLandscape style='line-height:12.0pt'><span lang=EN-GB
166
- style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– All
167
- rights reserved<span style='mso-tab-count:1'>                                                                                                                                                                          </span></span><!--[if supportFields]><span
165
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ all_rights_reserved }}<span style='mso-tab-count:1'>                                                                                                                                                                          </span></span><!--[if supportFields]><span
168
166
  lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
169
167
  style='mso-element:field-begin'></span> PAGE<span style='mso-spacerun:yes'>  
170
168
  </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
@@ -209,8 +207,7 @@ style='mso-tab-count:1'>                            
209
207
 
210
208
  <div style='mso-element:footer' id=f3>
211
209
  <p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
212
- style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– All
213
- rights reserved<span style='mso-tab-count:1'>                                                                                                                                                                           </span></span><!--[if supportFields]><b
210
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ all_rights_reserved }}<span style='mso-tab-count:1'>                                                                                                                                                                           </span></span><!--[if supportFields]><b
214
211
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
215
212
  mso-bidi-font-size:11.0pt'><span style='mso-element:field-begin'></span>
216
213
  PAGE<span style='mso-spacerun:yes'>   </span>\* MERGEFORMAT <span
@@ -224,8 +221,7 @@ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span>
224
221
 
225
222
  <div style='mso-element:footer' id=f3l>
226
223
  <p class=MsoFooterLandscape style='line-height:12.0pt'><span lang=EN-GB
227
- style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– All
228
- rights reserved<span style='mso-tab-count:1'>                                                                                                                                                                           </span></span><!--[if supportFields]><b
224
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– {{ all_rights_reserved }}<span style='mso-tab-count:1'>                                                                                                                                                                           </span></span><!--[if supportFields]><b
229
225
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
230
226
  mso-bidi-font-size:11.0pt'><span style='mso-element:field-begin'></span>
231
227
  PAGE<span style='mso-spacerun:yes'>   </span>\* MERGEFORMAT <span
@@ -11,3 +11,4 @@ term_def_boilerplate: |
11
11
  all_rights_reserved: All rights reserved
12
12
  reference_number: Reference Number
13
13
  price_based_on: Price based on % pages
14
+ under_preparation: Under preparation. (Stage at the time of publication %).
@@ -11,3 +11,5 @@ term_def_boilerplate: |
11
11
  all_rights_reserved: Tous droits réservés
12
12
  reference_number: Numéro de référence
13
13
  price_based_on: Prix basé sur % pages
14
+ under_preparation: En cours d'élaboration. (Stade au moment de la publication %).
15
+
@@ -9,4 +9,5 @@ term_def_boilerplate: |
9
9
  all_rights_reserved: 版权所有
10
10
  reference_number: 参考编号
11
11
  price_based_on: 价格基于%页
12
+ under_preparation: 制定中(出版时最新状态为%)
12
13
 
@@ -1,17 +1,16 @@
1
1
  module IsoDoc
2
2
  module Iso
3
3
  class I18n < IsoDoc::I18n
4
- def load_yaml(lang, script, i18nyaml = nil)
5
- y = if i18nyaml then YAML.load_file(i18nyaml)
6
- elsif lang == "en"
7
- YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
8
- elsif lang == "fr"
9
- YAML.load_file(File.join(File.dirname(__FILE__), "i18n-fr.yaml"))
10
- elsif lang == "zh" && script == "Hans"
11
- YAML.load_file(File.join(File.dirname(__FILE__), "i18n-zh-Hans.yaml"))
12
- else
13
- YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
14
- end
4
+ def load_yaml1(lang, script)
5
+ y = if lang == "en"
6
+ YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
7
+ elsif lang == "fr"
8
+ YAML.load_file(File.join(File.dirname(__FILE__), "i18n-fr.yaml"))
9
+ elsif lang == "zh" && script == "Hans"
10
+ YAML.load_file(File.join(File.dirname(__FILE__), "i18n-zh-Hans.yaml"))
11
+ else
12
+ YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
13
+ end
15
14
  super.merge(y)
16
15
  end
17
16
  end
@@ -17,7 +17,12 @@
17
17
 
18
18
  <xsl:variable name="docidentifierISO" select="/iso:iso-standard/iso:bibdata/iso:docidentifier[@type = 'iso'] | /iso:iso-standard/iso:bibdata/iso:docidentifier[@type = 'ISO']"/>
19
19
 
20
- <xsl:variable name="copyrightText" select="concat('© ISO ', iso:iso-standard/iso:bibdata/iso:copyright/iso:from ,' – All rights reserved')"/>
20
+ <xsl:variable name="all_rights_reserved">
21
+ <xsl:call-template name="getLocalizedString">
22
+ <xsl:with-param name="key">all_rights_reserved</xsl:with-param>
23
+ </xsl:call-template>
24
+ </xsl:variable>
25
+ <xsl:variable name="copyrightText" select="concat('© ISO ', /iso:iso-standard/iso:bibdata/iso:copyright/iso:from ,' – ', $all_rights_reserved)"/>
21
26
 
22
27
  <xsl:variable name="lang-1st-letter_tmp" select="substring-before(substring-after(/iso:iso-standard/iso:bibdata/iso:docidentifier[@type = 'iso-with-lang'], '('), ')')"/>
23
28
  <xsl:variable name="lang-1st-letter" select="concat('(', $lang-1st-letter_tmp , ')')"/>
@@ -162,6 +167,9 @@
162
167
  <xsl:template match="/">
163
168
  <xsl:call-template name="namespaceCheck"/>
164
169
  <fo:root font-family="Cambria, Times New Roman, Cambria Math, HanSans" font-size="11pt" xml:lang="{$lang}"> <!-- -->
170
+ <xsl:if test="$lang = 'zh'">
171
+ <xsl:attribute name="font-family">HanSans, Times New Roman, Cambria Math</xsl:attribute>
172
+ </xsl:if>
165
173
  <fo:layout-master-set>
166
174
 
167
175
  <!-- cover page -->
@@ -376,8 +384,13 @@
376
384
  </fo:block>
377
385
  </fo:table-cell>
378
386
  <fo:table-cell display-align="center">
379
- <fo:block text-align="right">
380
- <fo:block>Reference number</fo:block>
387
+ <fo:block text-align="right">
388
+ <!-- Reference number -->
389
+ <fo:block>
390
+ <xsl:call-template name="getLocalizedString">
391
+ <xsl:with-param name="key">reference_number</xsl:with-param>
392
+ </xsl:call-template>
393
+ </fo:block>
381
394
  <fo:block>
382
395
  <xsl:value-of select="$ISOname"/>
383
396
  </fo:block>
@@ -756,8 +769,12 @@
756
769
  </fo:block>
757
770
  </fo:table-cell>
758
771
  <fo:table-cell display-align="center">
759
- <fo:block text-align="right">
760
- <fo:block>Reference number</fo:block>
772
+ <fo:block text-align="right">
773
+ <fo:block>
774
+ <xsl:call-template name="getLocalizedString">
775
+ <xsl:with-param name="key">reference_number</xsl:with-param>
776
+ </xsl:call-template>
777
+ </fo:block>
761
778
  <fo:block><xsl:value-of select="$ISOname"/></fo:block>
762
779
  <fo:block> </fo:block>
763
780
  <fo:block> </fo:block>
@@ -984,10 +1001,10 @@
984
1001
  <xsl:if test="/iso:iso-standard/iso:boilerplate/iso:copyright-statement">
985
1002
 
986
1003
  <fo:block-container height="252mm" display-align="after">
987
- <fo:block margin-bottom="3mm">
988
- <fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-Attention))}" width="14mm" content-height="13mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image {@alt}"/>
989
- <fo:inline padding-left="6mm" font-size="12pt" font-weight="bold">COPYRIGHT PROTECTED DOCUMENT</fo:inline>
990
- </fo:block>
1004
+ <!-- <fo:block margin-bottom="3mm">
1005
+ <fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-Attention))}" width="14mm" content-height="13mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image {@alt}"/>
1006
+ <fo:inline padding-left="6mm" font-size="12pt" font-weight="bold"></fo:inline>
1007
+ </fo:block> -->
991
1008
  <fo:block line-height="90%">
992
1009
  <fo:block font-size="9pt" text-align="justify">
993
1010
  <xsl:apply-templates select="/iso:iso-standard/iso:boilerplate/iso:copyright-statement"/>
@@ -1106,20 +1123,26 @@
1106
1123
  </fo:block>
1107
1124
  -->
1108
1125
  <fo:block font-size="18pt" font-weight="bold" margin-top="40pt" margin-bottom="20pt" line-height="1.1">
1109
- <xsl:variable name="part-en" select="/iso:iso-standard/iso:bibdata/iso:title[@language = 'en' and @type = 'title-part']"/>
1126
+
1127
+ <xsl:variable name="title-part-doc-lang" select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']"/>
1128
+
1129
+ <xsl:variable name="title-intro-doc-lang" select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-intro']"/>
1130
+
1110
1131
  <fo:block>
1111
- <xsl:if test="normalize-space($title-intro) != ''">
1112
- <xsl:value-of select="$title-intro"/>
1132
+ <xsl:if test="normalize-space($title-intro-doc-lang) != ''">
1133
+ <xsl:value-of select="$title-intro-doc-lang"/>
1113
1134
  <xsl:text> — </xsl:text>
1114
1135
  </xsl:if>
1115
1136
 
1116
- <xsl:value-of select="$title-main"/>
1137
+ <xsl:variable name="title-main-doc-lang" select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-main']"/>
1117
1138
 
1118
- <xsl:if test="normalize-space($part-en) != ''">
1139
+ <xsl:value-of select="$title-main-doc-lang"/>
1140
+
1141
+ <xsl:if test="normalize-space($title-part-doc-lang) != ''">
1119
1142
  <xsl:if test="$part != ''">
1120
1143
  <xsl:text> — </xsl:text>
1121
- <fo:block font-weight="normal" margin-top="12pt" line-height="1.1">
1122
- <xsl:value-of select="java:replaceAll(java:java.lang.String.new($titles/title-part[@lang='en']),'#',$part)"/>
1144
+ <fo:block font-weight="normal" margin-top="12pt" line-height="1.1">
1145
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new($titles/title-part[@lang=$lang]),'#',$part)"/>
1123
1146
  <!-- <xsl:value-of select="$title-part-en"/>
1124
1147
  <xsl:value-of select="$part"/>
1125
1148
  <xsl:text>:</xsl:text> -->
@@ -1128,10 +1151,10 @@
1128
1151
  </xsl:if>
1129
1152
  </fo:block>
1130
1153
  <fo:block>
1131
- <xsl:value-of select="$part-en"/>
1154
+ <xsl:value-of select="$title-part-doc-lang"/>
1132
1155
  </fo:block>
1133
1156
 
1134
- <xsl:variable name="title-amd" select="/iso:iso-standard/iso:bibdata/iso:title[@language = 'en' and @type = 'title-amd']"/>
1157
+ <xsl:variable name="title-amd" select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-amd']"/>
1135
1158
  <xsl:if test="$doctype = 'amendment' and normalize-space($title-amd) != ''">
1136
1159
  <fo:block margin-top="12pt">
1137
1160
  <xsl:call-template name="printAmendmentTitle"/>
@@ -1215,7 +1238,28 @@
1215
1238
  </xsl:call-template>
1216
1239
  </fo:block>
1217
1240
  </xsl:if>
1218
- <fo:block font-size="9pt">Price based on <fo:page-number-citation ref-id="lastBlock"/> pages</fo:block>
1241
+ <xsl:variable name="countPages"/>
1242
+ <xsl:variable name="price_based_on">
1243
+ <xsl:call-template name="getLocalizedString">
1244
+ <xsl:with-param name="key">price_based_on</xsl:with-param>
1245
+ </xsl:call-template>
1246
+ </xsl:variable>
1247
+ <xsl:variable name="price_based_on_items">
1248
+ <xsl:call-template name="split">
1249
+ <xsl:with-param name="pText" select="$price_based_on"/>
1250
+ <xsl:with-param name="sep" select="'%'"/>
1251
+ <xsl:with-param name="normalize-space">false</xsl:with-param>
1252
+ </xsl:call-template>
1253
+ </xsl:variable>
1254
+ <!-- Price based on ... pages -->
1255
+ <fo:block font-size="9pt">
1256
+ <xsl:for-each select="xalan:nodeset($price_based_on_items)/item">
1257
+ <xsl:value-of select="."/>
1258
+ <xsl:if test="position() != last()">
1259
+ <fo:page-number-citation ref-id="lastBlock"/>
1260
+ </xsl:if>
1261
+ </xsl:for-each>
1262
+ </fo:block>
1219
1263
  </fo:block-container>
1220
1264
  </fo:block-container>
1221
1265
  </fo:flow>
@@ -1365,6 +1409,14 @@
1365
1409
  <fo:block>www.iso.org</fo:block>
1366
1410
  </fo:block> -->
1367
1411
 
1412
+ <xsl:template match="iso:copyright-statement/iso:clause[1]/iso:title">
1413
+ <fo:block margin-bottom="3mm">
1414
+ <fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-Attention))}" width="14mm" content-height="13mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image {@alt}"/>
1415
+ <!-- <fo:inline padding-left="6mm" font-size="12pt" font-weight="bold">COPYRIGHT PROTECTED DOCUMENT</fo:inline> -->
1416
+ <fo:inline padding-left="6mm" font-size="12pt" font-weight="bold"><xsl:apply-templates/></fo:inline>
1417
+ </fo:block>
1418
+ </xsl:template>
1419
+
1368
1420
  <xsl:template match="iso:copyright-statement//iso:p">
1369
1421
  <fo:block>
1370
1422
  <xsl:if test="preceding-sibling::iso:p">
@@ -1629,6 +1681,9 @@
1629
1681
  <xsl:if test="normalize-space($docidentifier) != ''">, </xsl:if>
1630
1682
  <fo:inline font-style="italic">
1631
1683
  <xsl:choose>
1684
+ <xsl:when test="iso:title[@type = 'main' and @language = $lang]">
1685
+ <xsl:value-of select="iso:title[@type = 'main' and @language = $lang]"/>
1686
+ </xsl:when>
1632
1687
  <xsl:when test="iso:title[@type = 'main' and @language = 'en']">
1633
1688
  <xsl:value-of select="iso:title[@type = 'main' and @language = 'en']"/>
1634
1689
  </xsl:when>
@@ -1748,6 +1803,9 @@
1748
1803
  <xsl:apply-templates select="iso:note"/>
1749
1804
  <xsl:if test="normalize-space($docidentifier) != ''">, </xsl:if>
1750
1805
  <xsl:choose>
1806
+ <xsl:when test="iso:title[@type = 'main' and @language = $lang]">
1807
+ <xsl:apply-templates select="iso:title[@type = 'main' and @language = $lang]"/>
1808
+ </xsl:when>
1751
1809
  <xsl:when test="iso:title[@type = 'main' and @language = 'en']">
1752
1810
  <xsl:apply-templates select="iso:title[@type = 'main' and @language = 'en']"/>
1753
1811
  </xsl:when>
@@ -1789,7 +1847,12 @@
1789
1847
 
1790
1848
  <xsl:template match="iso:admonition">
1791
1849
  <fo:block margin-bottom="12pt" font-weight="bold"> <!-- text-align="center" -->
1792
- <xsl:value-of select="java:toUpperCase(java:java.lang.String.new(@type))"/>
1850
+ <xsl:variable name="type">
1851
+ <xsl:call-template name="getLocalizedString">
1852
+ <xsl:with-param name="key">admonition.<xsl:value-of select="@type"/></xsl:with-param>
1853
+ </xsl:call-template>
1854
+ </xsl:variable>
1855
+ <xsl:value-of select="java:toUpperCase(java:java.lang.String.new($type))"/>
1793
1856
  <xsl:text> — </xsl:text>
1794
1857
  <xsl:apply-templates/>
1795
1858
  </fo:block>
@@ -2111,15 +2174,24 @@
2111
2174
  <xsl:text>Part #:</xsl:text>
2112
2175
 
2113
2176
 
2177
+
2114
2178
  </title-part>
2115
2179
  <title-part lang="fr">
2116
2180
 
2117
2181
  <xsl:text>Partie #:</xsl:text>
2118
2182
 
2119
2183
 
2184
+
2120
2185
  </title-part>
2121
2186
  <title-part lang="zh">第 # 部分:</title-part>
2122
2187
 
2188
+ <title-subpart lang="en">
2189
+
2190
+ </title-subpart>
2191
+ <title-subpart lang="fr">
2192
+
2193
+ </title-subpart>
2194
+
2123
2195
  <title-modified lang="en">modified</title-modified>
2124
2196
  <title-modified lang="fr">modifiée</title-modified>
2125
2197
 
@@ -2597,7 +2669,9 @@
2597
2669
 
2598
2670
 
2599
2671
 
2600
-
2672
+ <!-- <xsl:if test="$namespace = 'bipm'">
2673
+ <fo:block>&#xA0;</fo:block>
2674
+ </xsl:if> -->
2601
2675
 
2602
2676
  <!-- $namespace = 'iso' or -->
2603
2677
 
@@ -2773,6 +2847,7 @@
2773
2847
 
2774
2848
  <xsl:attribute name="margin-bottom">0pt</xsl:attribute>
2775
2849
 
2850
+
2776
2851
  <xsl:apply-templates/>
2777
2852
  </fo:block>
2778
2853
  </xsl:if>
@@ -3184,6 +3259,7 @@
3184
3259
 
3185
3260
 
3186
3261
 
3262
+
3187
3263
  <!-- <xsl:if test="$namespace = 'bipm'">
3188
3264
  <xsl:attribute name="height">8mm</xsl:attribute>
3189
3265
  </xsl:if> -->
@@ -3277,7 +3353,8 @@
3277
3353
  </xsl:attribute>
3278
3354
  </xsl:if>
3279
3355
  <xsl:call-template name="display-align"/>
3280
- <fo:block>
3356
+ <fo:block>
3357
+
3281
3358
  <xsl:apply-templates/>
3282
3359
  </fo:block>
3283
3360
  </fo:table-cell>
@@ -3501,7 +3578,11 @@
3501
3578
  <xsl:apply-templates/>
3502
3579
  </fo:inline>
3503
3580
  </xsl:template><xsl:template match="*[local-name()='dl']">
3504
- <fo:block-container margin-left="0mm">
3581
+ <fo:block-container>
3582
+
3583
+ <xsl:attribute name="margin-left">0mm</xsl:attribute>
3584
+
3585
+
3505
3586
  <xsl:if test="parent::*[local-name() = 'note']">
3506
3587
  <xsl:attribute name="margin-left">
3507
3588
  <xsl:choose>
@@ -3511,8 +3592,11 @@
3511
3592
  </xsl:attribute>
3512
3593
 
3513
3594
  </xsl:if>
3514
- <fo:block-container margin-left="0mm">
3515
-
3595
+ <fo:block-container>
3596
+
3597
+ <xsl:attribute name="margin-left">0mm</xsl:attribute>
3598
+
3599
+
3516
3600
  <xsl:variable name="parent" select="local-name(..)"/>
3517
3601
 
3518
3602
  <xsl:variable name="key_iso">
@@ -3530,9 +3614,12 @@
3530
3614
  <xsl:attribute name="margin-bottom">0</xsl:attribute>
3531
3615
 
3532
3616
  <xsl:variable name="title-where">
3533
- <xsl:call-template name="getTitle">
3534
- <xsl:with-param name="name" select="'title-where'"/>
3535
- </xsl:call-template>
3617
+
3618
+ <xsl:call-template name="getLocalizedString">
3619
+ <xsl:with-param name="key">where</xsl:with-param>
3620
+ </xsl:call-template>
3621
+
3622
+
3536
3623
  </xsl:variable>
3537
3624
  <xsl:value-of select="$title-where"/><xsl:text> </xsl:text>
3538
3625
  <xsl:apply-templates select="*[local-name()='dt']/*"/>
@@ -3550,9 +3637,12 @@
3550
3637
 
3551
3638
 
3552
3639
  <xsl:variable name="title-where">
3553
- <xsl:call-template name="getTitle">
3554
- <xsl:with-param name="name" select="'title-where'"/>
3555
- </xsl:call-template>
3640
+
3641
+ <xsl:call-template name="getLocalizedString">
3642
+ <xsl:with-param name="key">where</xsl:with-param>
3643
+ </xsl:call-template>
3644
+
3645
+
3556
3646
  </xsl:variable>
3557
3647
  <xsl:value-of select="$title-where"/>
3558
3648
  </fo:block>
@@ -3566,9 +3656,12 @@
3566
3656
 
3567
3657
 
3568
3658
  <xsl:variable name="title-key">
3569
- <xsl:call-template name="getTitle">
3570
- <xsl:with-param name="name" select="'title-key'"/>
3571
- </xsl:call-template>
3659
+
3660
+ <xsl:call-template name="getLocalizedString">
3661
+ <xsl:with-param name="key">key</xsl:with-param>
3662
+ </xsl:call-template>
3663
+
3664
+
3572
3665
  </xsl:variable>
3573
3666
  <xsl:value-of select="$title-key"/>
3574
3667
  </fo:block>
@@ -4146,7 +4239,18 @@
4146
4239
  <xsl:with-param name="previousRow" select="$newRow"/>
4147
4240
  </xsl:apply-templates>
4148
4241
  </xsl:template><xsl:template name="getLang">
4149
- <xsl:variable name="language" select="//*[local-name()='bibdata']//*[local-name()='language']"/>
4242
+ <xsl:variable name="language_current" select="normalize-space(//*[local-name()='bibdata']//*[local-name()='language'][@current = 'true'])"/>
4243
+ <xsl:variable name="language">
4244
+ <xsl:choose>
4245
+ <xsl:when test="$language_current != ''">
4246
+ <xsl:value-of select="$language_current"/>
4247
+ </xsl:when>
4248
+ <xsl:otherwise>
4249
+ <xsl:value-of select="//*[local-name()='bibdata']//*[local-name()='language']"/>
4250
+ </xsl:otherwise>
4251
+ </xsl:choose>
4252
+ </xsl:variable>
4253
+
4150
4254
  <xsl:choose>
4151
4255
  <xsl:when test="$language = 'English'">en</xsl:when>
4152
4256
  <xsl:otherwise><xsl:value-of select="$language"/></xsl:otherwise>
@@ -4181,6 +4285,7 @@
4181
4285
  <xsl:value-of select="substring($str, 2)"/>
4182
4286
  </xsl:template><xsl:template match="mathml:math">
4183
4287
  <fo:inline font-family="STIX Two Math"> <!-- -->
4288
+
4184
4289
  <xsl:variable name="mathml">
4185
4290
  <xsl:apply-templates select="." mode="mathml"/>
4186
4291
  </xsl:variable>
@@ -4263,10 +4368,14 @@
4263
4368
  </fo:inline>
4264
4369
  </xsl:template><xsl:template match="*[local-name() = 'modification']">
4265
4370
  <xsl:variable name="title-modified">
4266
- <xsl:call-template name="getTitle">
4267
- <xsl:with-param name="name" select="'title-modified'"/>
4268
- </xsl:call-template>
4371
+
4372
+ <xsl:call-template name="getLocalizedString">
4373
+ <xsl:with-param name="key">modified</xsl:with-param>
4374
+ </xsl:call-template>
4375
+
4376
+
4269
4377
  </xsl:variable>
4378
+
4270
4379
  <xsl:choose>
4271
4380
  <xsl:when test="$lang = 'zh'"><xsl:text>、</xsl:text><xsl:value-of select="$title-modified"/><xsl:text>—</xsl:text></xsl:when>
4272
4381
  <xsl:otherwise><xsl:text>, </xsl:text><xsl:value-of select="$title-modified"/><xsl:text> — </xsl:text></xsl:otherwise>
@@ -4993,9 +5102,14 @@
4993
5102
 
4994
5103
  <fo:inline>
4995
5104
 
4996
- <xsl:call-template name="getTitle">
4997
- <xsl:with-param name="name" select="'title-source'"/>
4998
- </xsl:call-template>
5105
+
5106
+
5107
+ <xsl:call-template name="getLocalizedString">
5108
+ <xsl:with-param name="key">source</xsl:with-param>
5109
+ </xsl:call-template>
5110
+
5111
+
5112
+
4999
5113
  <xsl:text>: </xsl:text>
5000
5114
  </fo:inline>
5001
5115
 
@@ -5144,9 +5258,12 @@
5144
5258
  </fo:block>
5145
5259
  </xsl:template><xsl:template match="*[local-name() = 'deprecates']">
5146
5260
  <xsl:variable name="title-deprecated">
5147
- <xsl:call-template name="getTitle">
5148
- <xsl:with-param name="name" select="'title-deprecated'"/>
5149
- </xsl:call-template>
5261
+
5262
+ <xsl:call-template name="getLocalizedString">
5263
+ <xsl:with-param name="key">deprecated</xsl:with-param>
5264
+ </xsl:call-template>
5265
+
5266
+
5150
5267
  </xsl:variable>
5151
5268
  <fo:block xsl:use-attribute-sets="deprecates-style">
5152
5269
  <xsl:value-of select="$title-deprecated"/>: <xsl:apply-templates/>
@@ -5514,13 +5631,22 @@
5514
5631
  </xsl:template><xsl:template name="split">
5515
5632
  <xsl:param name="pText" select="."/>
5516
5633
  <xsl:param name="sep" select="','"/>
5634
+ <xsl:param name="normalize-space" select="'true'"/>
5517
5635
  <xsl:if test="string-length($pText) &gt;0">
5518
5636
  <item>
5519
- <xsl:value-of select="normalize-space(substring-before(concat($pText, ','), $sep))"/>
5637
+ <xsl:choose>
5638
+ <xsl:when test="$normalize-space = 'true'">
5639
+ <xsl:value-of select="normalize-space(substring-before(concat($pText, $sep), $sep))"/>
5640
+ </xsl:when>
5641
+ <xsl:otherwise>
5642
+ <xsl:value-of select="substring-before(concat($pText, $sep), $sep)"/>
5643
+ </xsl:otherwise>
5644
+ </xsl:choose>
5520
5645
  </item>
5521
5646
  <xsl:call-template name="split">
5522
5647
  <xsl:with-param name="pText" select="substring-after($pText, $sep)"/>
5523
5648
  <xsl:with-param name="sep" select="$sep"/>
5649
+ <xsl:with-param name="normalize-space" select="$normalize-space"/>
5524
5650
  </xsl:call-template>
5525
5651
  </xsl:if>
5526
5652
  </xsl:template><xsl:template name="getDocumentId">
@@ -5586,4 +5712,23 @@
5586
5712
  <xsl:with-param name="letter-spacing" select="$letter-spacing"/>
5587
5713
  </xsl:call-template>
5588
5714
  </xsl:if>
5715
+ </xsl:template><xsl:template name="repeat">
5716
+ <xsl:param name="char" select="'*'"/>
5717
+ <xsl:param name="count"/>
5718
+ <xsl:if test="$count &gt; 0">
5719
+ <xsl:value-of select="$char"/>
5720
+ <xsl:call-template name="repeat">
5721
+ <xsl:with-param name="char" select="$char"/>
5722
+ <xsl:with-param name="count" select="$count - 1"/>
5723
+ </xsl:call-template>
5724
+ </xsl:if>
5725
+ </xsl:template><xsl:template name="getLocalizedString">
5726
+ <xsl:param name="key"/>
5727
+
5728
+ <xsl:variable name="curr_lang">
5729
+ <xsl:call-template name="getLang"/>
5730
+ </xsl:variable>
5731
+
5732
+ <xsl:value-of select="/*/*[local-name() = 'localized-strings']/*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
5733
+
5589
5734
  </xsl:template></xsl:stylesheet>