metanorma-iso 3.4.5 → 3.4.6

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: 91f9230ee17e15e6511a7d8b4a787c90ea830403daf0cfc54b75a7fabb4e4d0c
4
- data.tar.gz: 83d997bcc7d2bf3a7884a7bf155e7b2e0ef63148b99075e560821d309467277b
3
+ metadata.gz: 55dfe96e650ca067066f2110879c8922a011fa252f5771a06bde82aed595f3a7
4
+ data.tar.gz: 01d0e83ff3587fe1bf21172f398fb37dbc74d14bc1f0bd6a9035c7402d5eeb10
5
5
  SHA512:
6
- metadata.gz: 49c2ddd6e4c19245d0ee90f3ff4697a1971a20b7a8ec608b8cb7b704b6ed838299502917453100c683c2c5a69c45c53c10eb2432ea6c6300ba119e3be3bfa215
7
- data.tar.gz: 2f70229f2706c9bc2e01e0b879e243575fe6a387f9dc1ebf77665260ea523ab79f11bf88deebe6677a4e9f74c241d9fb29583c19819eaadc3bae290d8307c44f
6
+ metadata.gz: 5c4c76336345849b312496213df87c3204fade1a8684e896d2483fe77b11da7d22fcde79089e7cf8c88ec30524bbf2f8cf0b4e6d0dc1eba3c1fe13b3d9b3c4d1
7
+ data.tar.gz: 22210e9813ce6d91a141539d0ee54ca807fcca4c2aeb3e56ae9366fb9efbe16ff6feff81eba59dad53d2ab3ab8c19fb4d435fbef8d33c68e193bbeb9e4c7033e
data/Makefile CHANGED
@@ -8,15 +8,6 @@ SHELL := /bin/bash
8
8
  # Ensure the xml2rfc cache directory exists locally
9
9
  IGNORE := $(shell mkdir -p $(HOME)/.cache/xml2rfc)
10
10
 
11
- TRANG_RELEASE := https://github.com/relaxng/jing-trang/releases/download/V20181222/trang-20181222.zip
12
- TOOLS_DIR := ${CURDIR}/tools
13
- TRANG_JAR := $(TOOLS_DIR)/trang.jar
14
- XSDVIPATH := $(TOOLS_DIR)/xsdvi.jar
15
- XSLT_FILE := $(TOOLS_DIR)/xs3pxsl
16
- XSLT_FILE_MERGE := $(TOOLS_DIR)/xsdmerge.xsl
17
- RNG_FILE_SRC := lib/metanorma/iso/isostandard-compile.rng
18
- XSD_FILE_DEST := ${CURDIR}/xsd_doc/isostandard.xsd
19
-
20
11
  all: $(TXT) $(HTML) $(XML) $(NITS)
21
12
 
22
13
  clean:
@@ -45,39 +36,3 @@ clean:
45
36
 
46
37
  open:
47
38
  open *.txt
48
-
49
-
50
- $(XSDVIPATH):
51
- mkdir -p $(dir $@); \
52
- curl -sSL https://sourceforge.net/projects/xsdvi/files/latest/download > $(dir $@)/xsdvi.zip; \
53
- unzip -p $(dir $@)/xsdvi.zip dist/lib/xercesImpl.jar > $(dir $@)/xercesImpl.jar; \
54
- curl -sSL https://github.com/metanorma/xsdvi/releases/download/v1.0/xsdvi-1.0.jar > $@
55
-
56
- $(XSLT_FILE):
57
- mkdir -p $(dir $@)
58
- curl -sSL https://raw.githubusercontent.com/metanorma/xs3p/main/xsl/xs3p.xsl > $@
59
-
60
- $(XSLT_FILE_MERGE):
61
- mkdir -p $(dir $@)
62
- curl -sSL https://raw.githubusercontent.com/metanorma/xs3p/main/xsl/xsdmerge.xsl > $@
63
-
64
- $(TRANG_JAR):
65
- mkdir -p $(dir $@); \
66
- cd $(dir $@); \
67
- curl -sSL $(TRANG_RELEASE) > trang.zip; \
68
- unzip -p trang.zip trang-20181222/trang.jar > $@
69
-
70
-
71
- $(XSD_FILE_DEST): $(TRANG_JAR)
72
- mkdir -p $(dir $@); \
73
- java -jar $< $(RNG_FILE_SRC) $@
74
-
75
- xsd_doc: $(XSD_FILE_DEST) $(XSDVIPATH) $(XSLT_FILE) $(XSLT_FILE_MERGE)
76
- mkdir -p $@/diagrams; \
77
- cd $@; \
78
- java -jar $(XSDVIPATH) $< -rootNodeName all -oneNodeOnly -outputPath diagrams; \
79
- xsltproc --nonet --stringparam rootxsd iso-standard --output $@.tmp $(XSLT_FILE_MERGE) $<;\
80
- xsltproc --nonet --param title "'Metanorma XML Schema Documentation, ISO Standard'" \
81
- --output index.html $(XSLT_FILE) $@.tmp;\
82
- rm $@.tmp
83
-
@@ -46,6 +46,12 @@
46
46
  {% if doctitleaddlabel %}
47
47
  <div class="doctitle-part">{{ doctitleaddlabel }}{% if doctitleadd %}: {{ doctitleadd }}{% endif %}</div>
48
48
  {% endif %}
49
+ {% if doctitlesuplabel %}
50
+ <div class="doctitle-part">{{ doctitlesuplabel }}{% if doctitlesup %}: {{ doctitlesup }}{% endif %}</div>
51
+ {% endif %}
52
+ {% if doctitleextlabel %}
53
+ <div class="doctitle-part">{{ doctitleextlabel }}{% if doctitleext %}: {{ doctitleext }}{% endif %}</div>
54
+ {% endif %}
49
55
  {% if doctitlecorrlabel %}
50
56
  <div class="doctitle-part">{{ doctitlecorrlabel }}</div>
51
57
  {% endif %}
@@ -34,6 +34,14 @@
34
34
  <p class="zzCover"><b>{{ doctitleaddlabel }}</b></p>
35
35
  {% endif %}
36
36
 
37
+ {% if doctitlesuplabel %}
38
+ <p class="zzCover"><b>{{ doctitlesuplabel }}</b></p>
39
+ {% endif %}
40
+
41
+ {% if doctitleextlabel %}
42
+ <p class="zzCover"><b>{{ doctitleextlabel }}</b></p>
43
+ {% endif %}
44
+
37
45
  {% if doctitlecorrlabel %}
38
46
  <p class="zzCover"><b>{{ doctitlecorrlabel }}</b></p>
39
47
  {% endif %}
@@ -52,6 +60,12 @@
52
60
  {% if doctitleaddlabel %}
53
61
  <p class="zzCover"><b>{{ doctitleaddlabel }}{% if doctitleadd %}: {{ doctitleadd }}{% endif %}</b></p>
54
62
  {% endif %}
63
+ {% if doctitlesuplabel %}
64
+ <p class="zzCover"><b>{{ doctitlesuplabel }}{% if doctitlesup %}: {{ doctitlesup }}{% endif %}</b></p>
65
+ {% endif %}
66
+ {% if doctitleextlabel %}
67
+ <p class="zzCover"><b>{{ doctitleextlabel }}{% if doctitleext %}: {{ doctitleext }}{% endif %}</b></p>
68
+ {% endif %}
55
69
  {% if doctitlecorrlabel %}
56
70
  <p class="zzCover"><b>{{ doctitlecorrlabel }}</b></p>
57
71
  {% endif %}
@@ -28,6 +28,14 @@
28
28
  <p class="zzCover"><b>{{ doctitleaddlabel }}</b></p>
29
29
  {% endif %}
30
30
 
31
+ {% if doctitlesuplabel %}
32
+ <p class="zzCover"><b>{{ doctitlesuplabel }}</b></p>
33
+ {% endif %}
34
+
35
+ {% if doctitleextlabel %}
36
+ <p class="zzCover"><b>{{ doctitleextlabel }}</b></p>
37
+ {% endif %}
38
+
31
39
  {% if doctitlecorrlabel %}
32
40
  <p class="zzCover"><b>{{ doctitlecorrlabel }}</b></p>
33
41
  {% endif %}
@@ -46,6 +54,12 @@
46
54
  {% if doctitleaddlabel %}
47
55
  <p class="zzCover"><b>{{ doctitleaddlabel }}{% if doctitleadd %}: {{ doctitleadd }}{% endif %}</b></p>
48
56
  {% endif %}
57
+ {% if doctitlesuplabel %}
58
+ <p class="zzCover"><b>{{ doctitlesuplabel }}{% if doctitlesup %}: {{ doctitlesup }}{% endif %}</b></p>
59
+ {% endif %}
60
+ {% if doctitleextlabel %}
61
+ <p class="zzCover"><b>{{ doctitleextlabel }}{% if doctitleext %}: {{ doctitleext }}{% endif %}</b></p>
62
+ {% endif %}
49
63
  {% if doctitlecorrlabel %}
50
64
  <p class="zzCover"><b>{{ doctitlecorrlabel }}</b></p>
51
65
  {% endif %}
@@ -22,6 +22,14 @@ style='mso-bidi-font-weight:normal'><span lang="EN-GB" style='font-size:14.0pt'>
22
22
  <p class="MsoNormal" align="right" style='text-align:right'><b>{{ doctitleaddlabel }}</b></p>
23
23
  {% endif %}
24
24
 
25
+ {% if doctitlesuplabel %}
26
+ <p class="MsoNormal" align="right" style='text-align:right'><b>{{ doctitlesuplabel }}</b></p>
27
+ {% endif %}
28
+
29
+ {% if doctitleextlabel %}
30
+ <p class="MsoNormal" align="right" style='text-align:right'><b>{{ doctitleextlabel }}</b></p>
31
+ {% endif %}
32
+
25
33
  {% if doctitlecorrlabel %}
26
34
  <p class="MsoNormal" align="right" style='text-align:right'><b>{{ doctitlecorrlabel }}</b></p>
27
35
  {% endif %}
@@ -61,6 +69,12 @@ style='mso-no-proof:yes'>{{ editorialgroup }}</span></p>
61
69
  {% if doctitleaddlabel %}
62
70
  <p class="MsoNormal" style='text-align:left;line-height:18.0pt;margin-bottom:0.0pt;margin-top:6.0pt;font-size:16.0pt'>{{ doctitleaddlabel }}{% if doctitleadd %}: {{ doctitleadd }}{% endif %}</p>
63
71
  {% endif %}
72
+ {% if doctitlesuplabel %}
73
+ <p class="MsoNormal" style='text-align:left;line-height:18.0pt;margin-bottom:0.0pt;margin-top:6.0pt;font-size:16.0pt'>{{ doctitlesuplabel }}{% if doctitlesup %}: {{ doctitlesup }}{% endif %}</p>
74
+ {% endif %}
75
+ {% if doctitleextlabel %}
76
+ <p class="MsoNormal" style='text-align:left;line-height:18.0pt;margin-bottom:0.0pt;margin-top:6.0pt;font-size:16.0pt'>{{ doctitleextlabel }}{% if doctitleext %}: {{ doctitleext }}{% endif %}</p>
77
+ {% endif %}
64
78
  {% if doctitlecorrlabel %}
65
79
  <p class="MsoNormal" style='text-align:left;line-height:18.0pt;margin-bottom:0.0pt;margin-top:6.0pt;font-size:16.0pt'>{{ doctitlecorrlabel }}</p>
66
80
  {% endif %}
@@ -48,6 +48,8 @@ doctype_dict:
48
48
  guide: Leitfaden
49
49
  amendment: Änderung
50
50
  addendum: Nachtrag
51
+ supplement: Beiblatt
52
+ extract: Auszug
51
53
  technical-corrigendum: Technische Berichtigung
52
54
  directive: Richtlinie
53
55
  committee-document: Ausschussdokument
@@ -44,6 +44,8 @@ title_prefixes:
44
44
  amendment: "AMENDMENT {{ var1 }}"
45
45
  corrigendum: "TECHNICAL CORRIGENDUM {{ var1 }}"
46
46
  addendum: "ADDENDUM {{ var1 }}"
47
+ supplement: "SUPPLEMENT {{ var1 }}"
48
+ extract: "EXTRACT {{ var1 }}"
47
49
  doctype_dict:
48
50
  international-standard: International Standard
49
51
  technical-specification: Technical Specification
@@ -53,6 +55,8 @@ doctype_dict:
53
55
  guide: Guide
54
56
  amendment: Amendment
55
57
  addendum: Addendum
58
+ supplement: Supplement
59
+ extract: Extract
56
60
  technical-corrigendum: Technical Corrigendum
57
61
  directive: Directive
58
62
  committee-document: Committee Document
@@ -42,6 +42,8 @@ title_prefixes:
42
42
  amendment: "AMENDEMENT {{ var1 }}"
43
43
  corrigendum: "RECTIFICATIF TECHNIQUE {{ var1 }}"
44
44
  addendum: "ADDITIF {{ var1 }}"
45
+ supplement: "SUPPLÉMENT {{ var1 }}"
46
+ extract: "EXTRAIT {{ var1 }}"
45
47
  doctype_dict:
46
48
  international-standard: Norme internationale
47
49
  technical-specification: Spécification technique
@@ -51,6 +53,8 @@ doctype_dict:
51
53
  guide: Guide
52
54
  amendment: Amendement
53
55
  addendum: Additif
56
+ supplement: Supplément
57
+ extract: Extrait
54
58
  technical-corrigendum: Rectificatif technique
55
59
  directive: Directive
56
60
  committee-document: Document du comité
@@ -42,6 +42,8 @@ title_prefixes:
42
42
  amendment: "ПОПРАВКА {{ var1 }}"
43
43
  corrigendum: "ТЕХНИЧЕСКОЕ ИСПРАВЛЕНИЕ {{ var1 }}"
44
44
  addendum: "ДОПОЛНЕНИЕ {{ var1 }}"
45
+ supplement: "ПРИБАВЛЕНИЕ {{ var1 }}"
46
+ extract: "ИЗВЛЕЧЕНИЕ {{ var1 }}"
45
47
  doctype_dict:
46
48
  international-standard: Международный Стандарт
47
49
  technical-specification: Техническая Спецификация
@@ -51,6 +53,8 @@ doctype_dict:
51
53
  guide: Руководство
52
54
  amendment: Поправка
53
55
  addendum: Дополнение
56
+ supplement: Прибавление
57
+ extract: Извлечение
54
58
  technical-corrigendum: Техническое Исправление
55
59
  directive: Директива
56
60
  committee-document: Документ комитета
@@ -33,6 +33,8 @@ doctype_dict:
33
33
  guide: 指南
34
34
  amendment: 修正
35
35
  addendum: 附录
36
+ supplement: 补充
37
+ extract: 摘录
36
38
  technical-corrigendum: 技术勘误
37
39
  directive: 指令
38
40
  committee-document: 委员会文件
@@ -3828,6 +3828,20 @@
3828
3828
  </fo:block>
3829
3829
  </fo:block-container>
3830
3830
  </xsl:if>
3831
+
3832
+ <xsl:if test="$contents/mnx:doc[@num = $num]//mnx:examples/mnx:example">
3833
+ <fo:block-container>
3834
+ <!-- List of Examples -->
3835
+ <xsl:call-template name="insertListOf_Title">
3836
+ <xsl:with-param name="title" select="$title-list-examples"/>
3837
+ </xsl:call-template>
3838
+ <fo:block role="TOC">
3839
+ <xsl:for-each select="$contents/mnx:doc[@num = $num]//mnx:examples/mnx:example">
3840
+ <xsl:call-template name="insertListOf_Item"/>
3841
+ </xsl:for-each>
3842
+ </fo:block>
3843
+ </fo:block-container>
3844
+ </xsl:if>
3831
3845
  </xsl:if>
3832
3846
  </fo:block-container>
3833
3847
  </xsl:otherwise>
@@ -3838,6 +3852,7 @@
3838
3852
  <xsl:param name="num"/>
3839
3853
  <xsl:variable name="i18n_locality_page" select="$variables/mnx:doc[@num = $num]/i18n_locality_page"/>
3840
3854
  <fo:block xsl:use-attribute-sets="toc-title-style">
3855
+ <xsl:call-template name="refine_toc-title-style"/>
3841
3856
  <xsl:if test="$layoutVersion = '2024'">
3842
3857
  <xsl:attribute name="margin-top">0</xsl:attribute>
3843
3858
  </xsl:if>
@@ -6221,6 +6236,16 @@
6221
6236
  </xsl:if>
6222
6237
  </xsl:variable>
6223
6238
 
6239
+ <xsl:variable name="title-list-examples">
6240
+ <xsl:variable name="toc_example_title" select="//mn:metanorma/mn:metanorma-extension/mn:toc[@type='example']/mn:title"/>
6241
+ <xsl:value-of select="$toc_example_title"/>
6242
+ <xsl:if test="normalize-space($toc_example_title) = ''">
6243
+ <xsl:call-template name="getLocalizedString">
6244
+ <xsl:with-param name="key">toc_examples</xsl:with-param>
6245
+ </xsl:call-template>
6246
+ </xsl:if>
6247
+ </xsl:variable>
6248
+
6224
6249
  <xsl:variable name="title-list-recommendations">
6225
6250
  <xsl:variable name="toc_requirement_title" select="//mn:metanorma/mn:metanorma-extension/mn:toc[@type='requirement']/mn:title"/>
6226
6251
  <xsl:value-of select="$toc_requirement_title"/>
@@ -17966,7 +17991,7 @@
17966
17991
  <xsl:template name="refine_toc-pagenumber-style">
17967
17992
  </xsl:template>
17968
17993
 
17969
- <!-- List of Figures, Tables -->
17994
+ <!-- List of Figures, Tables, Examples -->
17970
17995
  <xsl:attribute-set name="toc-listof-title-style">
17971
17996
  <xsl:attribute name="role">H2</xsl:attribute> <!-- TOCI -->
17972
17997
  <xsl:attribute name="margin-top">5pt</xsl:attribute>
@@ -18070,6 +18095,9 @@
18070
18095
  <xsl:if test="(//mn:metanorma/mn:metanorma-extension/mn:toc[@type='figure']/mn:title) or normalize-space($always) = 'true'">
18071
18096
  <xsl:call-template name="processFigures_Contents"/>
18072
18097
  </xsl:if>
18098
+ <xsl:if test="(//mn:metanorma/mn:metanorma-extension/mn:toc[@type='example']/mn:title)">
18099
+ <xsl:call-template name="processExamples_Contents"/>
18100
+ </xsl:if>
18073
18101
  </xsl:template>
18074
18102
 
18075
18103
  <xsl:template name="processTables_Contents">
@@ -18116,7 +18144,29 @@
18116
18144
  </mnx:figures>
18117
18145
  </xsl:template>
18118
18146
 
18119
- <xsl:template match="mn:figure/mn:name | mnx:figure/mn:name | mn:table/mn:name | mnx:table/mn:name | mn:permission/mn:name | mnx:permission/mn:name | mn:recommendation/mn:name | mnx:recommendation/mn:name | mn:requirement/mn:name | mnx:requirement/mn:name" mode="contents">
18147
+ <xsl:template name="processExamples_Contents">
18148
+ <mnx:examples>
18149
+ <xsl:for-each select="//mn:example[@id and mn:fmt-name and not(@unnumbered = 'true') and normalize-space(@id) != '']">
18150
+ <xsl:choose>
18151
+ <xsl:when test="mn:fmt-name">
18152
+ <xsl:variable name="fmt_name">
18153
+ <xsl:apply-templates select="mn:fmt-name" mode="update_xml_step1"/>
18154
+ </xsl:variable>
18155
+ <mnx:example id="{@id}" alt-text="{normalize-space($fmt_name)}">
18156
+ <xsl:copy-of select="$fmt_name"/>
18157
+ </mnx:example>
18158
+ </xsl:when>
18159
+ <xsl:otherwise>
18160
+ <mnx:example id="{@id}" alt-text="{mn:name}">
18161
+ <xsl:copy-of select="mn:name"/>
18162
+ </mnx:example>
18163
+ </xsl:otherwise>
18164
+ </xsl:choose>
18165
+ </xsl:for-each>
18166
+ </mnx:examples>
18167
+ </xsl:template>
18168
+
18169
+ <xsl:template match="mn:figure/mn:name | mnx:figure/mn:name | mn:table/mn:name | mnx:table/mn:name | mn:example/mn:name | mnx:example/mn:name | mn:permission/mn:name | mnx:permission/mn:name | mn:recommendation/mn:name | mnx:recommendation/mn:name | mn:requirement/mn:name | mnx:requirement/mn:name" mode="contents">
18120
18170
  <xsl:if test="not(following-sibling::*[1][self::mn:fmt-name])">
18121
18171
  <xsl:apply-templates mode="contents"/>
18122
18172
  <xsl:text> </xsl:text>
@@ -18125,40 +18175,40 @@
18125
18175
 
18126
18176
  <xsl:template match="mn:title[following-sibling::*[1][self::mn:fmt-title]]" mode="contents"/>
18127
18177
 
18128
- <xsl:template match="mn:figure/mn:fmt-name | mnx:figure/mn:fmt-name | mn:table/mn:fmt-name | mnx:table/mn:fmt-name | mn:permission/mn:fmt-name | mnx:permission/mn:fmt-name | mn:recommendation/mn:fmt-name | mnx:recommendation/mn:fmt-name | mn:requirement/mn:fmt-name | mnx:requirement/mn:fmt-name" mode="contents">
18178
+ <xsl:template match="mn:figure/mn:fmt-name | mnx:figure/mn:fmt-name | mn:table/mn:fmt-name | mnx:table/mn:fmt-name | mn:example/mn:fmt-name | mnx:example/mn:fmt-name | mn:permission/mn:fmt-name | mnx:permission/mn:fmt-name | mn:recommendation/mn:fmt-name | mnx:recommendation/mn:fmt-name | mn:requirement/mn:fmt-name | mnx:requirement/mn:fmt-name" mode="contents">
18129
18179
  <xsl:apply-templates mode="contents"/>
18130
18180
  <xsl:text> </xsl:text>
18131
18181
  </xsl:template>
18132
18182
 
18133
- <xsl:template match="mn:figure/mn:name | mnx:figure/mn:name | mn:table/mn:name | mnx:table/mn:name | mn:permission/mn:name | mnx:permission/mn:name | mn:recommendation/mn:name | mnx:recommendation/mn:name | mn:requirement/mn:name | mnx:requirement/mn:name | mn:sourcecode/mn:name" mode="bookmarks">
18183
+ <xsl:template match="mn:figure/mn:name | mnx:figure/mn:name | mn:table/mn:name | mnx:table/mn:name | mn:example/mn:name | mnx:example/mn:name | mn:permission/mn:name | mnx:permission/mn:name | mn:recommendation/mn:name | mnx:recommendation/mn:name | mn:requirement/mn:name | mnx:requirement/mn:name | mn:sourcecode/mn:name" mode="bookmarks">
18134
18184
  <xsl:if test="not(following-sibling::*[1][self::mn:fmt-name])">
18135
18185
  <xsl:apply-templates mode="bookmarks"/>
18136
18186
  <xsl:text> </xsl:text>
18137
18187
  </xsl:if>
18138
18188
  </xsl:template>
18139
18189
 
18140
- <xsl:template match="mn:figure/mn:fmt-name | mnx:figure/mn:fmt-name | mn:table/mn:fmt-name | mnx:table/mn:fmt-name | mn:permission/mn:fmt-name | mnx:permission/mn:fmt-name | mn:recommendation/mn:fmt-name | mnx:recommendation/mn:fmt-name | mn:requirement/mn:fmt-name | mnx:requirement/mn:fmt-name | mn:sourcecode/mn:fmt-name | mnx:sourcecode/mn:fmt-name" mode="bookmarks">
18190
+ <xsl:template match="mn:figure/mn:fmt-name | mnx:figure/mn:fmt-name | mn:table/mn:fmt-name | mnx:table/mn:fmt-name | mn:example/mn:fmt-name | mnx:example/mn:fmt-name | mn:permission/mn:fmt-name | mnx:permission/mn:fmt-name | mn:recommendation/mn:fmt-name | mnx:recommendation/mn:fmt-name | mn:requirement/mn:fmt-name | mnx:requirement/mn:fmt-name | mn:sourcecode/mn:fmt-name | mnx:sourcecode/mn:fmt-name" mode="bookmarks">
18141
18191
  <xsl:apply-templates mode="bookmarks"/>
18142
18192
  <xsl:text> </xsl:text>
18143
18193
  </xsl:template>
18144
18194
 
18145
- <xsl:template match="*[self::mn:figure or self::mn:table or self::mn:permission or self::mn:recommendation or self::mn:requirement]/mn:name/text() | *[self::mnx:figure or self::mnx:table or self::mnx:permission or self::mnx:recommendation or self::mnx:requirement]/mn:name/text()" mode="contents" priority="2">
18195
+ <xsl:template match="*[self::mn:figure or self::mn:table or self::mn:example or self::mn:permission or self::mn:recommendation or self::mn:requirement]/mn:name/text() | *[self::mnx:figure or self::mnx:table or self::mnx:example or self::mnx:permission or self::mnx:recommendation or self::mnx:requirement]/mn:name/text()" mode="contents" priority="2">
18146
18196
  <xsl:if test="not(../following-sibling::*[1][self::mn:fmt-name])">
18147
18197
  <xsl:value-of select="."/>
18148
18198
  </xsl:if>
18149
18199
  </xsl:template>
18150
18200
 
18151
- <xsl:template match="*[self::mn:figure or self::mn:table or self::mn:permission or self::mn:recommendation or self::mn:requirement]/mn:fmt-name/text() | *[self::mnx:figure or self::mnx:table or self::mnx:permission or self::mnx:recommendation or self::mnx:requirement]/mn:fmt-name/text()" mode="contents" priority="2">
18201
+ <xsl:template match="*[self::mn:figure or self::mn:table or self::mn:example or self::mn:permission or self::mn:recommendation or self::mn:requirement]/mn:fmt-name/text() | *[self::mnx:figure or self::mnx:table or self::mnx:example or self::mnx:permission or self::mnx:recommendation or self::mnx:requirement]/mn:fmt-name/text()" mode="contents" priority="2">
18152
18202
  <xsl:value-of select="."/>
18153
18203
  </xsl:template>
18154
18204
 
18155
- <xsl:template match="*[self::mn:figure or self::mn:table or self::mn:permission or self::mn:recommendation or self::mn:requirement or self::mn:sourcecode]/mn:name//text() | *[self::mnx:figure or self::mnx:table or self::mnx:permission or self::mnx:recommendation or self::mnx:requirement or self::mnx:sourcecode]/mn:name//text()" mode="bookmarks" priority="2">
18205
+ <xsl:template match="*[self::mn:figure or self::mn:table or self::mn:example or self::mn:permission or self::mn:recommendation or self::mn:requirement or self::mn:sourcecode]/mn:name//text() | *[self::mnx:figure or self::mnx:table or self::mnx:example or self::mnx:permission or self::mnx:recommendation or self::mnx:requirement or self::mnx:sourcecode]/mn:name//text()" mode="bookmarks" priority="2">
18156
18206
  <xsl:if test="not(../following-sibling::*[1][self::mn:fmt-name])">
18157
18207
  <xsl:value-of select="."/>
18158
18208
  </xsl:if>
18159
18209
  </xsl:template>
18160
18210
 
18161
- <xsl:template match="*[self::mn:figure or self::mn:table or self::mn:permission or self::mn:recommendation or self::mn:requirement or self::mn:sourcecode]/mn:fmt-name//text() | *[self::mnx:figure or self::mnx:table or self::mnx:permission or self::mnx:recommendation or self::mnx:requirement or self::mnx:sourcecode]/mn:fmt-name//text()" mode="bookmarks" priority="2">
18211
+ <xsl:template match="*[self::mn:figure or self::mn:table or self::mn:example or self::mn:permission or self::mn:recommendation or self::mn:requirement or self::mn:sourcecode]/mn:fmt-name//text() | *[self::mnx:figure or self::mnx:table or self::mnx:example or self::mnx:permission or self::mnx:recommendation or self::mnx:requirement or self::mnx:sourcecode]/mn:fmt-name//text()" mode="bookmarks" priority="2">
18162
18212
  <xsl:value-of select="."/>
18163
18213
  </xsl:template>
18164
18214
 
@@ -18391,6 +18441,11 @@
18391
18441
  <xsl:with-param name="lang" select="@lang"/>
18392
18442
  </xsl:call-template>
18393
18443
 
18444
+ <xsl:call-template name="insertExampleBookmarks">
18445
+ <xsl:with-param name="contents" select="mnx:contents"/>
18446
+ <xsl:with-param name="lang" select="@lang"/>
18447
+ </xsl:call-template>
18448
+
18394
18449
  </fo:bookmark>
18395
18450
 
18396
18451
  </xsl:for-each>
@@ -18409,6 +18464,11 @@
18409
18464
  <xsl:with-param name="lang" select="@lang"/>
18410
18465
  </xsl:call-template>
18411
18466
 
18467
+ <xsl:call-template name="insertExampleBookmarks">
18468
+ <xsl:with-param name="contents" select="mnx:contents"/>
18469
+ <xsl:with-param name="lang" select="@lang"/>
18470
+ </xsl:call-template>
18471
+
18412
18472
  </xsl:for-each>
18413
18473
  </xsl:otherwise>
18414
18474
  </xsl:choose>
@@ -18425,6 +18485,11 @@
18425
18485
  <xsl:with-param name="lang" select="@lang"/>
18426
18486
  </xsl:call-template>
18427
18487
 
18488
+ <xsl:call-template name="insertExampleBookmarks">
18489
+ <xsl:with-param name="contents" select="$contents_nodes/mnx:contents"/>
18490
+ <xsl:with-param name="lang" select="@lang"/>
18491
+ </xsl:call-template>
18492
+
18428
18493
  </xsl:otherwise>
18429
18494
  </xsl:choose>
18430
18495
 
@@ -18505,6 +18570,46 @@
18505
18570
  </fo:bookmark>
18506
18571
  </xsl:if>
18507
18572
  </xsl:template> <!-- insertTableBookmarks -->
18573
+
18574
+ <xsl:template name="insertExampleBookmarks">
18575
+ <xsl:param name="contents"/>
18576
+ <xsl:param name="lang"/>
18577
+ <xsl:variable name="contents_nodes" select="xalan:nodeset($contents)"/>
18578
+ <xsl:if test="$contents_nodes/mnx:example">
18579
+ <fo:bookmark internal-destination="{$contents_nodes/mnx:example[1]/@id}" starting-state="hide">
18580
+ <fo:bookmark-title>
18581
+ <xsl:choose>
18582
+ <xsl:when test="$lang = 'fr'">Exemples</xsl:when>
18583
+ <xsl:otherwise>Examples</xsl:otherwise>
18584
+ </xsl:choose>
18585
+ </fo:bookmark-title>
18586
+ <xsl:for-each select="$contents_nodes/mnx:example">
18587
+ <fo:bookmark internal-destination="{@id}">
18588
+ <fo:bookmark-title>
18589
+ <xsl:value-of select="normalize-space(mnx:title)"/>
18590
+ </fo:bookmark-title>
18591
+ </fo:bookmark>
18592
+ </xsl:for-each>
18593
+ </fo:bookmark>
18594
+ </xsl:if>
18595
+ <xsl:if test="$contents_nodes//mnx:examples/mnx:example">
18596
+ <fo:bookmark internal-destination="empty_bookmark" starting-state="hide">
18597
+
18598
+ <xsl:variable name="bookmark-title">
18599
+ <xsl:value-of select="$title-list-examples"/>
18600
+ </xsl:variable>
18601
+
18602
+ <fo:bookmark-title><xsl:value-of select="$bookmark-title"/></fo:bookmark-title>
18603
+
18604
+ <xsl:for-each select="$contents_nodes//mnx:examples/mnx:example">
18605
+ <fo:bookmark internal-destination="{@id}">
18606
+ <!-- <fo:bookmark-title><xsl:value-of select="normalize-space(.)"/></fo:bookmark-title> -->
18607
+ <fo:bookmark-title><xsl:apply-templates mode="bookmark_clean"/></fo:bookmark-title>
18608
+ </fo:bookmark>
18609
+ </xsl:for-each>
18610
+ </fo:bookmark>
18611
+ </xsl:if>
18612
+ </xsl:template> <!-- insertExampleBookmarks -->
18508
18613
  <!-- End Bookmarks -->
18509
18614
 
18510
18615
  <!-- ============================ -->
@@ -3828,6 +3828,20 @@
3828
3828
  </fo:block>
3829
3829
  </fo:block-container>
3830
3830
  </xsl:if>
3831
+
3832
+ <xsl:if test="$contents/mnx:doc[@num = $num]//mnx:examples/mnx:example">
3833
+ <fo:block-container>
3834
+ <!-- List of Examples -->
3835
+ <xsl:call-template name="insertListOf_Title">
3836
+ <xsl:with-param name="title" select="$title-list-examples"/>
3837
+ </xsl:call-template>
3838
+ <fo:block role="TOC">
3839
+ <xsl:for-each select="$contents/mnx:doc[@num = $num]//mnx:examples/mnx:example">
3840
+ <xsl:call-template name="insertListOf_Item"/>
3841
+ </xsl:for-each>
3842
+ </fo:block>
3843
+ </fo:block-container>
3844
+ </xsl:if>
3831
3845
  </xsl:if>
3832
3846
  </fo:block-container>
3833
3847
  </xsl:otherwise>
@@ -3838,6 +3852,7 @@
3838
3852
  <xsl:param name="num"/>
3839
3853
  <xsl:variable name="i18n_locality_page" select="$variables/mnx:doc[@num = $num]/i18n_locality_page"/>
3840
3854
  <fo:block xsl:use-attribute-sets="toc-title-style">
3855
+ <xsl:call-template name="refine_toc-title-style"/>
3841
3856
  <xsl:if test="$layoutVersion = '2024'">
3842
3857
  <xsl:attribute name="margin-top">0</xsl:attribute>
3843
3858
  </xsl:if>
@@ -6221,6 +6236,16 @@
6221
6236
  </xsl:if>
6222
6237
  </xsl:variable>
6223
6238
 
6239
+ <xsl:variable name="title-list-examples">
6240
+ <xsl:variable name="toc_example_title" select="//mn:metanorma/mn:metanorma-extension/mn:toc[@type='example']/mn:title"/>
6241
+ <xsl:value-of select="$toc_example_title"/>
6242
+ <xsl:if test="normalize-space($toc_example_title) = ''">
6243
+ <xsl:call-template name="getLocalizedString">
6244
+ <xsl:with-param name="key">toc_examples</xsl:with-param>
6245
+ </xsl:call-template>
6246
+ </xsl:if>
6247
+ </xsl:variable>
6248
+
6224
6249
  <xsl:variable name="title-list-recommendations">
6225
6250
  <xsl:variable name="toc_requirement_title" select="//mn:metanorma/mn:metanorma-extension/mn:toc[@type='requirement']/mn:title"/>
6226
6251
  <xsl:value-of select="$toc_requirement_title"/>
@@ -17966,7 +17991,7 @@
17966
17991
  <xsl:template name="refine_toc-pagenumber-style">
17967
17992
  </xsl:template>
17968
17993
 
17969
- <!-- List of Figures, Tables -->
17994
+ <!-- List of Figures, Tables, Examples -->
17970
17995
  <xsl:attribute-set name="toc-listof-title-style">
17971
17996
  <xsl:attribute name="role">H2</xsl:attribute> <!-- TOCI -->
17972
17997
  <xsl:attribute name="margin-top">5pt</xsl:attribute>
@@ -18070,6 +18095,9 @@
18070
18095
  <xsl:if test="(//mn:metanorma/mn:metanorma-extension/mn:toc[@type='figure']/mn:title) or normalize-space($always) = 'true'">
18071
18096
  <xsl:call-template name="processFigures_Contents"/>
18072
18097
  </xsl:if>
18098
+ <xsl:if test="(//mn:metanorma/mn:metanorma-extension/mn:toc[@type='example']/mn:title)">
18099
+ <xsl:call-template name="processExamples_Contents"/>
18100
+ </xsl:if>
18073
18101
  </xsl:template>
18074
18102
 
18075
18103
  <xsl:template name="processTables_Contents">
@@ -18116,7 +18144,29 @@
18116
18144
  </mnx:figures>
18117
18145
  </xsl:template>
18118
18146
 
18119
- <xsl:template match="mn:figure/mn:name | mnx:figure/mn:name | mn:table/mn:name | mnx:table/mn:name | mn:permission/mn:name | mnx:permission/mn:name | mn:recommendation/mn:name | mnx:recommendation/mn:name | mn:requirement/mn:name | mnx:requirement/mn:name" mode="contents">
18147
+ <xsl:template name="processExamples_Contents">
18148
+ <mnx:examples>
18149
+ <xsl:for-each select="//mn:example[@id and mn:fmt-name and not(@unnumbered = 'true') and normalize-space(@id) != '']">
18150
+ <xsl:choose>
18151
+ <xsl:when test="mn:fmt-name">
18152
+ <xsl:variable name="fmt_name">
18153
+ <xsl:apply-templates select="mn:fmt-name" mode="update_xml_step1"/>
18154
+ </xsl:variable>
18155
+ <mnx:example id="{@id}" alt-text="{normalize-space($fmt_name)}">
18156
+ <xsl:copy-of select="$fmt_name"/>
18157
+ </mnx:example>
18158
+ </xsl:when>
18159
+ <xsl:otherwise>
18160
+ <mnx:example id="{@id}" alt-text="{mn:name}">
18161
+ <xsl:copy-of select="mn:name"/>
18162
+ </mnx:example>
18163
+ </xsl:otherwise>
18164
+ </xsl:choose>
18165
+ </xsl:for-each>
18166
+ </mnx:examples>
18167
+ </xsl:template>
18168
+
18169
+ <xsl:template match="mn:figure/mn:name | mnx:figure/mn:name | mn:table/mn:name | mnx:table/mn:name | mn:example/mn:name | mnx:example/mn:name | mn:permission/mn:name | mnx:permission/mn:name | mn:recommendation/mn:name | mnx:recommendation/mn:name | mn:requirement/mn:name | mnx:requirement/mn:name" mode="contents">
18120
18170
  <xsl:if test="not(following-sibling::*[1][self::mn:fmt-name])">
18121
18171
  <xsl:apply-templates mode="contents"/>
18122
18172
  <xsl:text> </xsl:text>
@@ -18125,40 +18175,40 @@
18125
18175
 
18126
18176
  <xsl:template match="mn:title[following-sibling::*[1][self::mn:fmt-title]]" mode="contents"/>
18127
18177
 
18128
- <xsl:template match="mn:figure/mn:fmt-name | mnx:figure/mn:fmt-name | mn:table/mn:fmt-name | mnx:table/mn:fmt-name | mn:permission/mn:fmt-name | mnx:permission/mn:fmt-name | mn:recommendation/mn:fmt-name | mnx:recommendation/mn:fmt-name | mn:requirement/mn:fmt-name | mnx:requirement/mn:fmt-name" mode="contents">
18178
+ <xsl:template match="mn:figure/mn:fmt-name | mnx:figure/mn:fmt-name | mn:table/mn:fmt-name | mnx:table/mn:fmt-name | mn:example/mn:fmt-name | mnx:example/mn:fmt-name | mn:permission/mn:fmt-name | mnx:permission/mn:fmt-name | mn:recommendation/mn:fmt-name | mnx:recommendation/mn:fmt-name | mn:requirement/mn:fmt-name | mnx:requirement/mn:fmt-name" mode="contents">
18129
18179
  <xsl:apply-templates mode="contents"/>
18130
18180
  <xsl:text> </xsl:text>
18131
18181
  </xsl:template>
18132
18182
 
18133
- <xsl:template match="mn:figure/mn:name | mnx:figure/mn:name | mn:table/mn:name | mnx:table/mn:name | mn:permission/mn:name | mnx:permission/mn:name | mn:recommendation/mn:name | mnx:recommendation/mn:name | mn:requirement/mn:name | mnx:requirement/mn:name | mn:sourcecode/mn:name" mode="bookmarks">
18183
+ <xsl:template match="mn:figure/mn:name | mnx:figure/mn:name | mn:table/mn:name | mnx:table/mn:name | mn:example/mn:name | mnx:example/mn:name | mn:permission/mn:name | mnx:permission/mn:name | mn:recommendation/mn:name | mnx:recommendation/mn:name | mn:requirement/mn:name | mnx:requirement/mn:name | mn:sourcecode/mn:name" mode="bookmarks">
18134
18184
  <xsl:if test="not(following-sibling::*[1][self::mn:fmt-name])">
18135
18185
  <xsl:apply-templates mode="bookmarks"/>
18136
18186
  <xsl:text> </xsl:text>
18137
18187
  </xsl:if>
18138
18188
  </xsl:template>
18139
18189
 
18140
- <xsl:template match="mn:figure/mn:fmt-name | mnx:figure/mn:fmt-name | mn:table/mn:fmt-name | mnx:table/mn:fmt-name | mn:permission/mn:fmt-name | mnx:permission/mn:fmt-name | mn:recommendation/mn:fmt-name | mnx:recommendation/mn:fmt-name | mn:requirement/mn:fmt-name | mnx:requirement/mn:fmt-name | mn:sourcecode/mn:fmt-name | mnx:sourcecode/mn:fmt-name" mode="bookmarks">
18190
+ <xsl:template match="mn:figure/mn:fmt-name | mnx:figure/mn:fmt-name | mn:table/mn:fmt-name | mnx:table/mn:fmt-name | mn:example/mn:fmt-name | mnx:example/mn:fmt-name | mn:permission/mn:fmt-name | mnx:permission/mn:fmt-name | mn:recommendation/mn:fmt-name | mnx:recommendation/mn:fmt-name | mn:requirement/mn:fmt-name | mnx:requirement/mn:fmt-name | mn:sourcecode/mn:fmt-name | mnx:sourcecode/mn:fmt-name" mode="bookmarks">
18141
18191
  <xsl:apply-templates mode="bookmarks"/>
18142
18192
  <xsl:text> </xsl:text>
18143
18193
  </xsl:template>
18144
18194
 
18145
- <xsl:template match="*[self::mn:figure or self::mn:table or self::mn:permission or self::mn:recommendation or self::mn:requirement]/mn:name/text() | *[self::mnx:figure or self::mnx:table or self::mnx:permission or self::mnx:recommendation or self::mnx:requirement]/mn:name/text()" mode="contents" priority="2">
18195
+ <xsl:template match="*[self::mn:figure or self::mn:table or self::mn:example or self::mn:permission or self::mn:recommendation or self::mn:requirement]/mn:name/text() | *[self::mnx:figure or self::mnx:table or self::mnx:example or self::mnx:permission or self::mnx:recommendation or self::mnx:requirement]/mn:name/text()" mode="contents" priority="2">
18146
18196
  <xsl:if test="not(../following-sibling::*[1][self::mn:fmt-name])">
18147
18197
  <xsl:value-of select="."/>
18148
18198
  </xsl:if>
18149
18199
  </xsl:template>
18150
18200
 
18151
- <xsl:template match="*[self::mn:figure or self::mn:table or self::mn:permission or self::mn:recommendation or self::mn:requirement]/mn:fmt-name/text() | *[self::mnx:figure or self::mnx:table or self::mnx:permission or self::mnx:recommendation or self::mnx:requirement]/mn:fmt-name/text()" mode="contents" priority="2">
18201
+ <xsl:template match="*[self::mn:figure or self::mn:table or self::mn:example or self::mn:permission or self::mn:recommendation or self::mn:requirement]/mn:fmt-name/text() | *[self::mnx:figure or self::mnx:table or self::mnx:example or self::mnx:permission or self::mnx:recommendation or self::mnx:requirement]/mn:fmt-name/text()" mode="contents" priority="2">
18152
18202
  <xsl:value-of select="."/>
18153
18203
  </xsl:template>
18154
18204
 
18155
- <xsl:template match="*[self::mn:figure or self::mn:table or self::mn:permission or self::mn:recommendation or self::mn:requirement or self::mn:sourcecode]/mn:name//text() | *[self::mnx:figure or self::mnx:table or self::mnx:permission or self::mnx:recommendation or self::mnx:requirement or self::mnx:sourcecode]/mn:name//text()" mode="bookmarks" priority="2">
18205
+ <xsl:template match="*[self::mn:figure or self::mn:table or self::mn:example or self::mn:permission or self::mn:recommendation or self::mn:requirement or self::mn:sourcecode]/mn:name//text() | *[self::mnx:figure or self::mnx:table or self::mnx:example or self::mnx:permission or self::mnx:recommendation or self::mnx:requirement or self::mnx:sourcecode]/mn:name//text()" mode="bookmarks" priority="2">
18156
18206
  <xsl:if test="not(../following-sibling::*[1][self::mn:fmt-name])">
18157
18207
  <xsl:value-of select="."/>
18158
18208
  </xsl:if>
18159
18209
  </xsl:template>
18160
18210
 
18161
- <xsl:template match="*[self::mn:figure or self::mn:table or self::mn:permission or self::mn:recommendation or self::mn:requirement or self::mn:sourcecode]/mn:fmt-name//text() | *[self::mnx:figure or self::mnx:table or self::mnx:permission or self::mnx:recommendation or self::mnx:requirement or self::mnx:sourcecode]/mn:fmt-name//text()" mode="bookmarks" priority="2">
18211
+ <xsl:template match="*[self::mn:figure or self::mn:table or self::mn:example or self::mn:permission or self::mn:recommendation or self::mn:requirement or self::mn:sourcecode]/mn:fmt-name//text() | *[self::mnx:figure or self::mnx:table or self::mnx:example or self::mnx:permission or self::mnx:recommendation or self::mnx:requirement or self::mnx:sourcecode]/mn:fmt-name//text()" mode="bookmarks" priority="2">
18162
18212
  <xsl:value-of select="."/>
18163
18213
  </xsl:template>
18164
18214
 
@@ -18391,6 +18441,11 @@
18391
18441
  <xsl:with-param name="lang" select="@lang"/>
18392
18442
  </xsl:call-template>
18393
18443
 
18444
+ <xsl:call-template name="insertExampleBookmarks">
18445
+ <xsl:with-param name="contents" select="mnx:contents"/>
18446
+ <xsl:with-param name="lang" select="@lang"/>
18447
+ </xsl:call-template>
18448
+
18394
18449
  </fo:bookmark>
18395
18450
 
18396
18451
  </xsl:for-each>
@@ -18409,6 +18464,11 @@
18409
18464
  <xsl:with-param name="lang" select="@lang"/>
18410
18465
  </xsl:call-template>
18411
18466
 
18467
+ <xsl:call-template name="insertExampleBookmarks">
18468
+ <xsl:with-param name="contents" select="mnx:contents"/>
18469
+ <xsl:with-param name="lang" select="@lang"/>
18470
+ </xsl:call-template>
18471
+
18412
18472
  </xsl:for-each>
18413
18473
  </xsl:otherwise>
18414
18474
  </xsl:choose>
@@ -18425,6 +18485,11 @@
18425
18485
  <xsl:with-param name="lang" select="@lang"/>
18426
18486
  </xsl:call-template>
18427
18487
 
18488
+ <xsl:call-template name="insertExampleBookmarks">
18489
+ <xsl:with-param name="contents" select="$contents_nodes/mnx:contents"/>
18490
+ <xsl:with-param name="lang" select="@lang"/>
18491
+ </xsl:call-template>
18492
+
18428
18493
  </xsl:otherwise>
18429
18494
  </xsl:choose>
18430
18495
 
@@ -18505,6 +18570,46 @@
18505
18570
  </fo:bookmark>
18506
18571
  </xsl:if>
18507
18572
  </xsl:template> <!-- insertTableBookmarks -->
18573
+
18574
+ <xsl:template name="insertExampleBookmarks">
18575
+ <xsl:param name="contents"/>
18576
+ <xsl:param name="lang"/>
18577
+ <xsl:variable name="contents_nodes" select="xalan:nodeset($contents)"/>
18578
+ <xsl:if test="$contents_nodes/mnx:example">
18579
+ <fo:bookmark internal-destination="{$contents_nodes/mnx:example[1]/@id}" starting-state="hide">
18580
+ <fo:bookmark-title>
18581
+ <xsl:choose>
18582
+ <xsl:when test="$lang = 'fr'">Exemples</xsl:when>
18583
+ <xsl:otherwise>Examples</xsl:otherwise>
18584
+ </xsl:choose>
18585
+ </fo:bookmark-title>
18586
+ <xsl:for-each select="$contents_nodes/mnx:example">
18587
+ <fo:bookmark internal-destination="{@id}">
18588
+ <fo:bookmark-title>
18589
+ <xsl:value-of select="normalize-space(mnx:title)"/>
18590
+ </fo:bookmark-title>
18591
+ </fo:bookmark>
18592
+ </xsl:for-each>
18593
+ </fo:bookmark>
18594
+ </xsl:if>
18595
+ <xsl:if test="$contents_nodes//mnx:examples/mnx:example">
18596
+ <fo:bookmark internal-destination="empty_bookmark" starting-state="hide">
18597
+
18598
+ <xsl:variable name="bookmark-title">
18599
+ <xsl:value-of select="$title-list-examples"/>
18600
+ </xsl:variable>
18601
+
18602
+ <fo:bookmark-title><xsl:value-of select="$bookmark-title"/></fo:bookmark-title>
18603
+
18604
+ <xsl:for-each select="$contents_nodes//mnx:examples/mnx:example">
18605
+ <fo:bookmark internal-destination="{@id}">
18606
+ <!-- <fo:bookmark-title><xsl:value-of select="normalize-space(.)"/></fo:bookmark-title> -->
18607
+ <fo:bookmark-title><xsl:apply-templates mode="bookmark_clean"/></fo:bookmark-title>
18608
+ </fo:bookmark>
18609
+ </xsl:for-each>
18610
+ </fo:bookmark>
18611
+ </xsl:if>
18612
+ </xsl:template> <!-- insertExampleBookmarks -->
18508
18613
  <!-- End Bookmarks -->
18509
18614
 
18510
18615
  <!-- ============================ -->
@@ -92,11 +92,13 @@ module IsoDoc
92
92
  subpart: isoxml.at(ns("#{prefix}/@subpart")),
93
93
  amd: isoxml.at(ns("#{prefix}/@amendment")),
94
94
  add: isoxml.at(ns("#{prefix}/@addendum")),
95
+ sup: isoxml.at(ns("#{prefix}/@supplement")),
96
+ ext: isoxml.at(ns("#{prefix}/@extract")),
95
97
  corr: isoxml.at(ns("#{prefix}/@corrigendum")) }
96
98
  end
97
99
 
98
100
  def title_parts(isoxml, lang)
99
- %w(intro main complementary part amd add).each_with_object({}) do |w, m|
101
+ %w(intro main complementary part amd add sup ext).each_with_object({}) do |w, m|
100
102
  m[w.to_sym] = isoxml.at(ns("//bibdata/title[@type='title-#{w}' and " \
101
103
  "@language='#{lang}']"))
102
104
  end
@@ -123,6 +125,12 @@ module IsoDoc
123
125
  tn[:add] and set(:doctitleaddlabel,
124
126
  title_part_prefix(isoxml, "addendum", lang))
125
127
  tp[:add] and set(:doctitleadd, to_xml(tp[:add].children))
128
+ tn[:sup] and set(:doctitlesuplabel,
129
+ title_part_prefix(isoxml, "supplement", lang))
130
+ tp[:sup] and set(:doctitlesup, to_xml(tp[:sup].children))
131
+ tn[:ext] and set(:doctitleextlabel,
132
+ title_part_prefix(isoxml, "extract", lang))
133
+ tp[:ext] and set(:doctitleext, to_xml(tp[:ext].children))
126
134
  main = compose_title(tp, tn, lang)
127
135
  set(:doctitle, main)
128
136
  end
@@ -144,6 +152,12 @@ module IsoDoc
144
152
  tn[:add] and set(:docsubtitleaddlabel,
145
153
  title_part_prefix(isoxml, "addendum", lang))
146
154
  tp[:add] and set(:docsubtitleadd, to_xml(tp[:add].children))
155
+ tn[:sup] and set(:docsubtitlesuplabel,
156
+ title_part_prefix(isoxml, "supplement", lang))
157
+ tp[:sup] and set(:docsubtitlesup, to_xml(tp[:sup].children))
158
+ tn[:ext] and set(:docsubtitleextlabel,
159
+ title_part_prefix(isoxml, "extract", lang))
160
+ tp[:ext] and set(:docsubtitleext, to_xml(tp[:ext].children))
147
161
  tn[:corr] and set(:docsubtitlecorrlabel,
148
162
  title_part_prefix(isoxml, "corrigendum", lang))
149
163
  main = compose_title(tp, tn, lang)
@@ -183,6 +183,17 @@ module IsoDoc
183
183
  ret
184
184
  end
185
185
 
186
+ # ISO mandates sequential bibliography numbering. A `.metanorma`
187
+ # docidentifier (e.g. `[ГОСТ 3295-73]`) must not suppress the
188
+ # autonumber the way it does for other flavours.
189
+ # https://github.com/metanorma/metanorma-iso/issues/1530
190
+ def bibliography_bibitem_number_skip(bibitem)
191
+ implicit_reference(bibitem) ||
192
+ bibitem.at(ns(".//docidentifier[@type = 'metanorma-ordinal']")) ||
193
+ bibitem["suppress_identifier"] == "true" ||
194
+ bibitem["hidden"] == "true" || bibitem.parent["hidden"] == "true"
195
+ end
196
+
186
197
  def admonition_delim(elem)
187
198
  if elem.at("./*[not(self::xmlns:name)]")&.name == "p"
188
199
  " &#x2014; "
@@ -18,7 +18,8 @@ module Metanorma
18
18
  # ISO as a prefix goes first
19
19
  def docidentifier_cleanup(xml)
20
20
  prefix = get_id_prefix(xml)
21
- amd = @amd || xml.at("//bibdata/ext/doctype")&.text == "addendum"
21
+ amd = @amd ||
22
+ %w(addendum supplement extract).include?(xml.at("//bibdata/ext/doctype")&.text)
22
23
  id = xml.at("//bibdata/ext/structuredidentifier/project-number") and
23
24
  id.content =
24
25
  id_prefix(prefix, id, amd:)
@@ -79,11 +79,13 @@ module Metanorma
79
79
  end
80
80
 
81
81
  def title_full(node, xml, lang)
82
- title, intro, part, amd, add = title_full_prep(node, lang)
82
+ title, intro, part, amd, add, sup, ext = title_full_prep(node, lang)
83
83
  title = "#{intro} -- #{title}" if intro
84
84
  title = "#{title} -- #{part}" if part
85
85
  title = "#{title} -- #{amd}" if amd
86
86
  title = "#{title} -- #{add}" if add
87
+ title = "#{title} -- #{sup}" if sup
88
+ title = "#{title} -- #{ext}" if ext
87
89
  add_title_xml(xml, title, lang, "main")
88
90
  end
89
91
 
@@ -95,7 +97,11 @@ module Metanorma
95
97
  @amd and amd = node.attr("title-amendment-#{lang}")
96
98
  node.attr("addendum-number") and
97
99
  add = node.attr("title-addendum-#{lang}")
98
- [title, intro, part, amd, add].map { |x| x&.empty? ? nil : x }
100
+ node.attr("supplement-number") and
101
+ sup = node.attr("title-supplement-#{lang}")
102
+ node.attr("extract-number") and
103
+ ext = node.attr("title-extract-#{lang}")
104
+ [title, intro, part, amd, add, sup, ext].map { |x| x&.empty? ? nil : x }
99
105
  end
100
106
 
101
107
  def title(node, xml)
@@ -115,6 +121,12 @@ module Metanorma
115
121
  node.attr("addendum-number") and
116
122
  title_component(node, xml, lang,
117
123
  { name: "addendum", abbr: "add" })
124
+ node.attr("supplement-number") and
125
+ title_component(node, xml, lang,
126
+ { name: "supplement", abbr: "sup" })
127
+ node.attr("extract-number") and
128
+ title_component(node, xml, lang,
129
+ { name: "extract", abbr: "ext" })
118
130
  title_nums(node, xml, lang)
119
131
  end
120
132
 
@@ -28,6 +28,8 @@ module Metanorma
28
28
  def get_typeabbr(node, amd: false)
29
29
  node.attr("amendment-number") and return :amd
30
30
  node.attr("addendum-number") and return :add
31
+ node.attr("supplement-number") and return :sup
32
+ node.attr("extract-number") and return :ext
31
33
  node.attr("corrigendum-number") and return :cor
32
34
  DOCTYPE2HASHID[doctype(node).to_sym]
33
35
  end
@@ -103,7 +105,9 @@ module Metanorma
103
105
  stage = iso_id_stage(node)
104
106
  ret = { number: node.attr("amendment-number") ||
105
107
  node.attr("corrigendum-number") ||
106
- node.attr("addendum-number"),
108
+ node.attr("addendum-number") ||
109
+ node.attr("supplement-number") ||
110
+ node.attr("extract-number"),
107
111
  year: iso_id_year(node),
108
112
  iteration: node.attr("iteration") }
109
113
  iso_id_stage_populate(ret, node, stage)
@@ -144,7 +148,9 @@ module Metanorma
144
148
  def iso_id_params_resolve(params, params2, node, orig_id)
145
149
  if orig_id && (node.attr("amendment-number") ||
146
150
  node.attr("corrigendum-number") ||
147
- node.attr("addendum-number"))
151
+ node.attr("addendum-number") ||
152
+ node.attr("supplement-number") ||
153
+ node.attr("extract-number"))
148
154
  %i(unpublished part).each { |x| params.delete(x) }
149
155
  params2[:base] = orig_id
150
156
  elsif orig_id &&
@@ -213,6 +213,12 @@ Sources are currently only rendered in metanorma-plateau</a:documentation>
213
213
  <define name="ExampleAttributes">
214
214
  <ref name="NumberingAttributes"/>
215
215
  <ref name="BlockAttributes"/>
216
+ <optional>
217
+ <attribute name="collapsible">
218
+ <a:documentation>Render the example as collapsible (HTML5 details/summary)</a:documentation>
219
+ <data type="boolean"/>
220
+ </attribute>
221
+ </optional>
216
222
  </define>
217
223
  <define name="ExampleBody">
218
224
  <optional>
@@ -44,6 +44,8 @@
44
44
  <value>directive</value>
45
45
  <value>committee-document</value>
46
46
  <value>addendum</value>
47
+ <value>supplement</value>
48
+ <value>extract</value>
47
49
  </choice>
48
50
  </define>
49
51
  <define name="DocumentSubtype">
@@ -53,7 +53,7 @@ module Metanorma
53
53
  %w(international-standard technical-specification technical-report
54
54
  publicly-available-specification international-workshop-agreement
55
55
  guide amendment technical-corrigendum committee-document addendum
56
- recommendation)
56
+ supplement extract recommendation)
57
57
  .include? @doctype or
58
58
  @log.add("ISO_5", nil, params: [@doctype])
59
59
  end
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Iso
3
- VERSION = "3.4.5".freeze
3
+ VERSION = "3.4.6".freeze
4
4
  end
5
5
  end
@@ -33,9 +33,9 @@ citetemplate:
33
33
  article: "{{ creatornames | selective_upcase }}$$$ ({{role}}) {{ title }}$$$ {{ series }} $$$ {{date}}, {{ extent }}$$$ {{ labels['updated'] | capitalize }}:_{{date_updated}}"
34
34
  software: "{{ creatornames | selective_upcase }}$$$ ({{ role}}) <em>{{ title }}</em> $$$ {{ labels['version'] | capitalize }}_{{ edition_raw }}$$$ {{medium | capitalize}}$$$ {{place}}: {{publisher | replace: '+++', ''}}$$$ {{date}}$$$ {{size}}$$$ {{extent}}"
35
35
  electronic resource: software
36
- dataset: "{{ creatornames | selective_upcase }}$$$ ({{ role }}) <em>{{ title }}</em> $$$ {{ labels['version'] | capitalize }}_{{ edition_raw }}$$$ {{medium | capitalize }}$$$ {{ labels['in'] | capitalize }}:_{{series}}$$$ {{date}}$$$ {{ labels['updated'] | capitalize }}:_{{date_updated}}$$$ {{ authoritative_identifier | join '$$$ ' }}$$$ {{ other_identifier | join '$$$ ' }}"
36
+ dataset: "{{ creatornames | selective_upcase }}$$$ ({{ role }}) <em>{{ title }}</em> $$$ {{ labels['version'] | capitalize }}_{{ edition_raw }}$$$ {{medium | capitalize }}$$$ {{ labels['in_series'] | capitalize }}:_{{series}}$$$ {{date}}$$$ {{ labels['updated'] | capitalize }}:_{{date_updated}}$$$ {{ authoritative_identifier | join '$$$ ' }}$$$ {{ other_identifier | join '$$$ ' }}"
37
37
  webresource: website
38
- unpublished: "{{ creatornames | selective_upcase }}$$$ ({{ role }}) <em>{{ title }}</em> $$$ {{ medium | capitalize }}$$$ {{ date }}$$$ {{ labels['at'] | capitalize}}:_{{ access_location }}"
38
+ unpublished: "{{ creatornames | selective_upcase }}$$$ ({{ role }}) <em>{{ title }}</em> $$$ {{ medium | capitalize }}$$$ {{ date }}$$$ {{ labels['at_url'] | capitalize}}:_{{ access_location }}"
39
39
  presentation: unpublished
40
40
  thesis: "{{ creatornames | selective_upcase }}$$$ ({{ role }}) <em>{{ title }}</em> $$$ {{ medium | capitalize }}$$$ {{place}}: {{ publisher | replace: '+++', '' }}$$$ {{ date }}"
41
41
  misc: "{{ creatornames | selective_upcase }}$$$ ({{ role }}) <em>{{ title }}</em> $$$ {{ date }}$$$"
@@ -60,23 +60,23 @@ template:
60
60
  # skip standardidentifier, it is inserted in front of formattedref within metanorma
61
61
  standard: "{% if home_standard %}<em><span_class='stddocTitle'>{{ title }}</span></em> ,_{{ extent }}{% else %}{{ creatornames | selective_upcase }}$$$ <em><span_class='stddocTitle'>{{ title }}</span></em> ,_{{ extent }} $$$ {{ labels['version'] | capitalize }}_{{ edition_raw }}$$$ {{labels['updated'] | capitalize }}_{{date_updated}}$$$ {{status | capitalize}}$$$ {{ authorizer | replace: '+++', '' }}{% endif %}"
62
62
  website: "{{ creatornames | selective_upcase }}$$$ ({{ role }}) <em><span_class='stddocTitle'>{{ title }}</span></em> [{{ labels['website'] }}]$$$ {{ labels['version'] | capitalize }}_{{ edition_raw }}$$$ {{place}}: {{ publisher | replace: '+++', '' }}$$$ {{date}}$$$ {{ labels['updated'] | capitalize }}:_{{date_updated}}$$$ $$$_{{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$ "
63
- book: "{{ creatornames | selective_upcase }}$$$ ({{role}}) <em>{{ title }}</em> $$$ {{ edition | capitalize_first }}$$$ ({{ series }})$$$ {% if place %}{{place}}:{%endif%} {{publisher | replace: '+++', ''}}$$$ {{date}}$$$ {{size}}$$$ {{extent}}$$$ $$$_{{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>$$$ {{ labels['at'] | capitalize}}:_{{ access_location }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
63
+ book: "{{ creatornames | selective_upcase }}$$$ ({{role}}) <em>{{ title }}</em> $$$ {{ edition | capitalize_first }}$$$ ({{ series }})$$$ {% if place %}{{place}}:{%endif%} {{publisher | replace: '+++', ''}}$$$ {{date}}$$$ {{size}}$$$ {{extent}}$$$ $$$_{{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>$$$ {{ labels['at_url'] | capitalize}}:_{{ access_location }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
64
64
  booklet: book
65
65
  manual: book
66
66
  techreport: book
67
67
  proceedings: book
68
- inbook: "{{ creatornames | selective_upcase }}$$$ ({{role}}) {{ title }} $$$ <em>{{host_title}}</em> ({{host_role}} {{ host_creatornames | replace: '+++', ''}}) $$$ {{ edition | capitalize_first }}$$$ ({{ series }})$$$ {% if place %}{{place}}:{%endif%} {{publisher | replace: '+++', ''}}$$$ {{date}}$$$ {{size}}$$$ {{extent}}$$$ $$$_{{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>$$$ {{ labels['at'] | capitalize}}:_{{ access_location }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
68
+ inbook: "{{ creatornames | selective_upcase }}$$$ ({{role}}) {{ title }} $$$ <em>{{host_title}}</em> ({{host_role}} {{ host_creatornames | replace: '+++', ''}}) $$$ {{ edition | capitalize_first }}$$$ ({{ series }})$$$ {% if place %}{{place}}:{%endif%} {{publisher | replace: '+++', ''}}$$$ {{date}}$$$ {{size}}$$$ {{extent}}$$$ $$$_{{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>$$$ {{ labels['at_url'] | capitalize}}:_{{ access_location }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
69
69
  inproceedings: inbook
70
70
  incollection: inbook
71
- journal: "<em>{{ title}}</em> $$$ {{ edition | capitalize_first }}$$$ {{place}}: {{publisher | replace: '+++', ''}}$$$ {{date}}$$$ {{size}}$$$ {{extent}}$$$ $$$_{{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>$$$ {{ labels['at'] | capitalize}}:_{{ access_location }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
72
- article: "{{ creatornames | selective_upcase }}$$$ ({{role}}) {{ title }}$$$ {{ series }} $$$ {{date}}, {{ extent }}$$$ {{ labels['updated'] | capitalize }}:_{{date_updated}}$$$ $$$_{{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>$$$ {{ labels['at'] | capitalize}}:_{{ access_location }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
71
+ journal: "<em>{{ title}}</em> $$$ {{ edition | capitalize_first }}$$$ {{place}}: {{publisher | replace: '+++', ''}}$$$ {{date}}$$$ {{size}}$$$ {{extent}}$$$ $$$_{{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>$$$ {{ labels['at_url'] | capitalize}}:_{{ access_location }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
72
+ article: "{{ creatornames | selective_upcase }}$$$ ({{role}}) {{ title }}$$$ {{ series }} $$$ {{date}}, {{ extent }}$$$ {{ labels['updated'] | capitalize }}:_{{date_updated}}$$$ $$$_{{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>$$$ {{ labels['at_url'] | capitalize}}:_{{ access_location }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
73
73
  software: "{{ creatornames | selective_upcase }}$$$ ({{ role}}) <em>{{ title }}</em> $$$ {{ labels['version'] | capitalize }}_{{ edition_raw }}$$$ {{medium | capitalize}}$$$ {{place}}: {{publisher | replace: '+++', ''}}$$$ {{date}}$$$ {{size}}$$$ {{extent}}$$$ {{ labels['updated'] | capitalize }}:_{{date_updated}}$$$ $$$_{{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$ "
74
74
  electronic resource: software
75
- dataset: "{{ creatornames | selective_upcase }}$$$ ({{ role }}) <em>{{ title }}</em> $$$ {{ labels['version'] | capitalize }}_{{ edition_raw }}$$$ {{medium | capitalize }}$$$ {{ labels['in'] | capitalize }}:_{{series}}$$$ {{date}}$$$ {{ labels['updated'] | capitalize }}:_{{date_updated}}$$$ {{ authoritative_identifier | join '$$$ ' }}$$$ {{ other_identifier | join '$$$ ' }}$$$ $$$_{{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>$$$ {{ size }}$$$ {{ extent}}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$ "
75
+ dataset: "{{ creatornames | selective_upcase }}$$$ ({{ role }}) <em>{{ title }}</em> $$$ {{ labels['version'] | capitalize }}_{{ edition_raw }}$$$ {{medium | capitalize }}$$$ {{ labels['in_series'] | capitalize }}:_{{series}}$$$ {{date}}$$$ {{ labels['updated'] | capitalize }}:_{{date_updated}}$$$ {{ authoritative_identifier | join '$$$ ' }}$$$ {{ other_identifier | join '$$$ ' }}$$$ $$$_{{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>$$$ {{ size }}$$$ {{ extent}}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$ "
76
76
  webresource: website
77
- unpublished: "{{ creatornames | selective_upcase }}$$$ ({{ role }}) <em>{{ title }}</em> $$$ {{ medium | capitalize }}$$$ {{ date }}$$$ {{ labels['at'] | capitalize}}:_{{ access_location }}$$$ $$$_{{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
77
+ unpublished: "{{ creatornames | selective_upcase }}$$$ ({{ role }}) <em>{{ title }}</em> $$$ {{ medium | capitalize }}$$$ {{ date }}$$$ {{ labels['at_url'] | capitalize}}:_{{ access_location }}$$$ $$$_{{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
78
78
  presentation: unpublished
79
- thesis: "{{ creatornames | selective_upcase }}$$$ ({{ role }}) <em>{{ title }}</em> $$$ {{ medium | capitalize }}$$$ {{place}}: {{ publisher | replace: '+++', '' }}$$$ {{ date }}$$$ {{ labels['at'] | capitalize}}:_{{ access_location }}$$$ $$$_{{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
79
+ thesis: "{{ creatornames | selective_upcase }}$$$ ({{ role }}) <em>{{ title }}</em> $$$ {{ medium | capitalize }}$$$ {{place}}: {{ publisher | replace: '+++', '' }}$$$ {{ date }}$$$ {{ labels['at_url'] | capitalize}}:_{{ access_location }}$$$ $$$_{{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
80
80
  misc: "{{ creatornames | selective_upcase }}$$$ ({{ role }}) <em>{{ title }}</em> $$$ {{ date }}$$$"
81
81
  # following are # unsupported types:
82
82
  map: misc
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-iso
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.5
4
+ version: 3.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2026-06-09 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: metanorma-standoc
@@ -413,7 +412,6 @@ homepage: https://github.com/metanorma/metanorma-iso
413
412
  licenses:
414
413
  - BSD-2-Clause
415
414
  metadata: {}
416
- post_install_message:
417
415
  rdoc_options: []
418
416
  require_paths:
419
417
  - lib
@@ -428,8 +426,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
428
426
  - !ruby/object:Gem::Version
429
427
  version: '0'
430
428
  requirements: []
431
- rubygems_version: 3.5.22
432
- signing_key:
429
+ rubygems_version: 4.0.10
433
430
  specification_version: 4
434
431
  summary: metanorma-iso lets you write ISO standards in AsciiDoc.
435
432
  test_files: []