metanorma-iho 1.0.8 → 1.0.9

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.
@@ -137,89 +137,89 @@
137
137
  <xsl:with-param name="contents" select="$contents"/>
138
138
  </xsl:call-template>
139
139
 
140
- <!-- =========================== -->
141
- <!-- Cover Page -->
142
- <fo:page-sequence master-reference="cover">
143
- <fo:flow flow-name="xsl-region-body">
144
- <fo:block-container position="absolute" left="14.25mm" top="12mm" id="__internal_layout__coverpage_{generate-id()}">
145
- <fo:table table-layout="fixed" width="181.1mm">
146
- <fo:table-column column-width="26mm"/>
147
- <fo:table-column column-width="19.4mm"/>
148
- <fo:table-column column-width="135.7mm"/>
149
- <fo:table-body>
150
- <fo:table-row>
151
- <fo:table-cell><fo:block> </fo:block></fo:table-cell>
152
- <fo:table-cell>
153
- <fo:block-container width="19.4mm" height="21mm" background-color="rgb(241, 234, 202)" border-bottom="0.05pt solid rgb(0, 21, 50)" text-align="center" display-align="center" font-size="10pt" font-weight="bold">
154
- <fo:block>
155
- <xsl:value-of select="$docidentifier"/>
140
+ <xsl:variable name="updated_xml">
141
+ <xsl:call-template name="updateXML"/>
142
+ </xsl:variable>
143
+
144
+ <xsl:for-each select="xalan:nodeset($updated_xml)/*">
145
+
146
+ <!-- =========================== -->
147
+ <!-- Cover Page -->
148
+ <fo:page-sequence master-reference="cover">
149
+ <fo:flow flow-name="xsl-region-body">
150
+ <fo:block-container position="absolute" left="14.25mm" top="12mm" id="__internal_layout__coverpage_{generate-id()}">
151
+ <fo:table table-layout="fixed" width="181.1mm">
152
+ <fo:table-column column-width="26mm"/>
153
+ <fo:table-column column-width="19.4mm"/>
154
+ <fo:table-column column-width="135.7mm"/>
155
+ <fo:table-body>
156
+ <fo:table-row>
157
+ <fo:table-cell><fo:block> </fo:block></fo:table-cell>
158
+ <fo:table-cell>
159
+ <fo:block-container width="19.4mm" height="21mm" background-color="rgb(241, 234, 202)" border-bottom="0.05pt solid rgb(0, 21, 50)" text-align="center" display-align="center" font-size="10pt" font-weight="bold">
160
+ <fo:block>
161
+ <xsl:value-of select="$docidentifier"/>
162
+ </fo:block>
163
+ </fo:block-container>
164
+ </fo:table-cell>
165
+ <fo:table-cell><fo:block> </fo:block></fo:table-cell>
166
+ </fo:table-row>
167
+ <fo:table-row>
168
+ <fo:table-cell display-align="after" text-align="right">
169
+ <fo:block font-size="1">
170
+ <fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-IHO))}" width="25.9mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image IHO"/>
156
171
  </fo:block>
157
- </fo:block-container>
158
- </fo:table-cell>
159
- <fo:table-cell><fo:block> </fo:block></fo:table-cell>
160
- </fo:table-row>
161
- <fo:table-row>
162
- <fo:table-cell display-align="after" text-align="right">
163
- <fo:block font-size="1">
164
- <fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-IHO))}" width="25.9mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image IHO"/>
165
- </fo:block>
166
- </fo:table-cell>
167
- <fo:table-cell number-columns-spanned="2" border="0.5pt solid rgb(0, 21, 50)" font-weight="bold" color="rgb(0, 0, 76)" padding-top="3mm">
168
- <fo:block-container height="165mm" width="115mm">
169
- <fo:block-container margin-left="10mm">
170
- <fo:block-container margin-left="0mm">
171
- <fo:block-container display-align="center" height="90mm">
172
- <fo:block font-size="28pt" role="H1" line-height="115%">
173
- <xsl:copy-of select="$title-en"/>
172
+ </fo:table-cell>
173
+ <fo:table-cell number-columns-spanned="2" border="0.5pt solid rgb(0, 21, 50)" font-weight="bold" color="rgb(0, 0, 76)" padding-top="3mm">
174
+ <fo:block-container height="165mm" width="115mm">
175
+ <fo:block-container margin-left="10mm">
176
+ <fo:block-container margin-left="0mm">
177
+ <fo:block-container display-align="center" height="90mm">
178
+ <fo:block font-size="28pt" role="H1" line-height="115%">
179
+ <xsl:copy-of select="$title-en"/>
180
+ </fo:block>
181
+ </fo:block-container>
182
+ <fo:block font-size="14pt">
183
+ <xsl:value-of select="$edition"/>
184
+ <xsl:if test="normalize-space($month_year) != ''">
185
+ <xsl:text> – </xsl:text>
186
+ <xsl:value-of select="$month_year"/>
187
+ </xsl:if>
174
188
  </fo:block>
175
189
  </fo:block-container>
176
- <fo:block font-size="14pt">
177
- <xsl:value-of select="$edition"/>
178
- <xsl:if test="normalize-space($month_year) != ''">
179
- <xsl:text> – </xsl:text>
180
- <xsl:value-of select="$month_year"/>
181
- </xsl:if>
182
- </fo:block>
183
190
  </fo:block-container>
184
191
  </fo:block-container>
185
- </fo:block-container>
186
- </fo:table-cell>
187
- </fo:table-row>
188
- <fo:table-row>
189
- <fo:table-cell>
190
- <fo:block font-size="1">
191
- <fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-Logo-IHO))}" width="25.9mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image Logo IHO"/>
192
- </fo:block>
193
- </fo:table-cell>
194
- <fo:table-cell>
195
- <fo:block font-size="1">
196
- <fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-Text-IHO))}" width="25.8mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image Text IHO"/>
197
- </fo:block>
198
- </fo:table-cell>
199
- <fo:table-cell>
200
- <fo:block-container width="79mm" height="72mm" margin-left="56.8mm" background-color="rgb(0, 172, 158)" text-align="right" display-align="after">
201
- <fo:block-container margin-left="0mm">
202
- <fo:block font-size="8pt" color="white" margin-right="5mm" margin-bottom="5mm" line-height-shift-adjustment="disregard-shifts">
203
- <xsl:apply-templates select="/iho:iho-standard/iho:boilerplate/iho:feedback-statement"/>
204
- </fo:block>
192
+ </fo:table-cell>
193
+ </fo:table-row>
194
+ <fo:table-row>
195
+ <fo:table-cell>
196
+ <fo:block font-size="1">
197
+ <fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-Logo-IHO))}" width="25.9mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image Logo IHO"/>
198
+ </fo:block>
199
+ </fo:table-cell>
200
+ <fo:table-cell>
201
+ <fo:block font-size="1">
202
+ <fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-Text-IHO))}" width="25.8mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image Text IHO"/>
203
+ </fo:block>
204
+ </fo:table-cell>
205
+ <fo:table-cell>
206
+ <fo:block-container width="79mm" height="72mm" margin-left="56.8mm" background-color="rgb(0, 172, 158)" text-align="right" display-align="after">
207
+ <fo:block-container margin-left="0mm">
208
+ <fo:block font-size="8pt" color="white" margin-right="5mm" margin-bottom="5mm" line-height-shift-adjustment="disregard-shifts">
209
+ <xsl:apply-templates select="/iho:iho-standard/iho:boilerplate/iho:feedback-statement"/>
210
+ </fo:block>
211
+ </fo:block-container>
205
212
  </fo:block-container>
206
- </fo:block-container>
207
- </fo:table-cell>
208
- </fo:table-row>
209
- </fo:table-body>
210
- </fo:table>
211
- </fo:block-container>
212
- </fo:flow>
213
- </fo:page-sequence>
214
- <!-- End Cover Page -->
215
- <!-- =========================== -->
216
- <!-- =========================== -->
217
-
218
- <xsl:variable name="updated_xml">
219
- <xsl:call-template name="updateXML"/>
220
- </xsl:variable>
221
-
222
- <xsl:for-each select="xalan:nodeset($updated_xml)/*">
213
+ </fo:table-cell>
214
+ </fo:table-row>
215
+ </fo:table-body>
216
+ </fo:table>
217
+ </fo:block-container>
218
+ </fo:flow>
219
+ </fo:page-sequence>
220
+ <!-- End Cover Page -->
221
+ <!-- =========================== -->
222
+ <!-- =========================== -->
223
223
 
224
224
  <xsl:variable name="updated_xml_with_pages">
225
225
  <xsl:call-template name="processPrefaceAndMainSectionsDefault_items"/>
@@ -386,19 +386,19 @@
386
386
 
387
387
  <xsl:template match="iho:preface//iho:clause[@type = 'toc']" priority="4">
388
388
  <!-- Table of Contents -->
389
- <fo:block role="TOC">
389
+ <fo:block>
390
390
 
391
391
  <xsl:apply-templates/>
392
392
 
393
- <!-- <xsl:if test="$debug = 'true'">
394
- <redirect:write file="contents_{java:getTime(java:java.util.Date.new())}.xml">
393
+ <xsl:if test="$debug = 'true'">
394
+ <redirect:write file="contents_.xml"> <!-- {java:getTime(java:java.util.Date.new())} -->
395
395
  <xsl:copy-of select="$contents"/>
396
396
  </redirect:write>
397
- </xsl:if> -->
397
+ </xsl:if>
398
398
 
399
399
  <xsl:if test="count(*) = 1 and *[local-name() = 'title']"> <!-- if there isn't user ToC -->
400
400
 
401
- <fo:block line-height="115%">
401
+ <fo:block line-height="115%" role="TOC">
402
402
 
403
403
  <xsl:for-each select="$contents//item[@display = 'true']"><!-- [not(@level = 2 and starts-with(@section, '0'))] skip clause from preface -->
404
404
  <fo:block role="TOCI">
@@ -466,8 +466,8 @@
466
466
  </xsl:template>
467
467
 
468
468
  <xsl:template match="iho:preface//iho:clause[@type = 'toc']/iho:title" priority="3">
469
- <fo:block font-weight="bold" margin-bottom="7.5pt" role="H1" font-size="12pt" margin-top="4pt">
470
- <fo:block-container width="18.3mm" border-bottom="1.25pt solid black">
469
+ <fo:block font-weight="bold" margin-bottom="7.5pt" font-size="12pt" margin-top="4pt" role="SKIP">
470
+ <fo:block-container width="18.3mm" border-bottom="1.25pt solid black" role="SKIP">
471
471
  <fo:block line-height="75%">
472
472
  <!-- <xsl:call-template name="getLocalizedString">
473
473
  <xsl:with-param name="key">table_of_contents</xsl:with-param>
@@ -483,10 +483,10 @@
483
483
  <!-- ============================= -->
484
484
 
485
485
  <!-- element with title -->
486
- <xsl:template match="*[iho:title]" mode="contents">
486
+ <xsl:template match="*[iho:title or iho:fmt-title]" mode="contents">
487
487
  <xsl:variable name="level">
488
488
  <xsl:call-template name="getLevel">
489
- <xsl:with-param name="depth" select="iho:title/@depth"/>
489
+ <xsl:with-param name="depth" select="iho:fmt-title/@depth | iho:title/@depth"/>
490
490
  </xsl:call-template>
491
491
  </xsl:variable>
492
492
 
@@ -881,7 +881,7 @@
881
881
  <xsl:text>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</xsl:text>
882
882
  </xsl:variable>
883
883
 
884
- <xsl:strip-space elements="iho:xref"/>
884
+ <!-- <xsl:strip-space elements="iho:xref"/> -->
885
885
 
886
886
  <xsl:variable name="namespace_full" select="namespace-uri(/*)"/> <!-- example: https://www.metanorma.org/ns/iso -->
887
887
  <xsl:variable name="root_element" select="local-name(/*)"/> <!-- example: iso-standard -->
@@ -1868,6 +1868,10 @@
1868
1868
 
1869
1869
  <xsl:template name="refine_termnote-name-style">
1870
1870
 
1871
+ <!-- <xsl:if test="$namespace = 'ieee'">
1872
+ <xsl:attribute name="padding-right">0mm</xsl:attribute>
1873
+ </xsl:if> -->
1874
+
1871
1875
  </xsl:template>
1872
1876
 
1873
1877
  <xsl:attribute-set name="termnote-p-style">
@@ -2551,9 +2555,21 @@
2551
2555
  <xsl:template name="processTables_Contents">
2552
2556
  <tables>
2553
2557
  <xsl:for-each select="//*[local-name() = 'table'][not(ancestor::*[local-name() = 'metanorma-extension'])][@id and *[local-name() = 'name'] and normalize-space(@id) != '']">
2554
- <table id="{@id}" alt-text="{*[local-name() = 'name']}">
2555
- <xsl:copy-of select="*[local-name() = 'name']"/>
2556
- </table>
2558
+ <xsl:choose>
2559
+ <xsl:when test="*[local-name() = 'fmt-name']">
2560
+ <xsl:variable name="fmt_name">
2561
+ <xsl:apply-templates select="*[local-name() = 'fmt-name']" mode="update_xml_step1"/>
2562
+ </xsl:variable>
2563
+ <table id="{@id}" alt-text="{normalize-space($fmt_name)}">
2564
+ <xsl:copy-of select="$fmt_name"/>
2565
+ </table>
2566
+ </xsl:when>
2567
+ <xsl:otherwise>
2568
+ <table id="{@id}" alt-text="{*[local-name() = 'name']}">
2569
+ <xsl:copy-of select="*[local-name() = 'name']"/>
2570
+ </table>
2571
+ </xsl:otherwise>
2572
+ </xsl:choose>
2557
2573
  </xsl:for-each>
2558
2574
  </tables>
2559
2575
  </xsl:template>
@@ -2561,9 +2577,21 @@
2561
2577
  <xsl:template name="processFigures_Contents">
2562
2578
  <figures>
2563
2579
  <xsl:for-each select="//*[local-name() = 'figure'][@id and *[local-name() = 'name'] and not(@unnumbered = 'true') and normalize-space(@id) != ''] | //*[@id and starts-with(*[local-name() = 'name'], 'Figure ') and normalize-space(@id) != '']">
2564
- <figure id="{@id}" alt-text="{*[local-name() = 'name']}">
2565
- <xsl:copy-of select="*[local-name() = 'name']"/>
2566
- </figure>
2580
+ <xsl:choose>
2581
+ <xsl:when test="*[local-name() = 'fmt-name']">
2582
+ <xsl:variable name="fmt_name">
2583
+ <xsl:apply-templates select="*[local-name() = 'fmt-name']" mode="update_xml_step1"/>
2584
+ </xsl:variable>
2585
+ <figure id="{@id}" alt-text="{normalize-space($fmt_name)}">
2586
+ <xsl:copy-of select="$fmt_name"/>
2587
+ </figure>
2588
+ </xsl:when>
2589
+ <xsl:otherwise>
2590
+ <figure id="{@id}" alt-text="{*[local-name() = 'name']}">
2591
+ <xsl:copy-of select="*[local-name() = 'name']"/>
2592
+ </figure>
2593
+ </xsl:otherwise>
2594
+ </xsl:choose>
2567
2595
  </xsl:for-each>
2568
2596
  </figures>
2569
2597
  </xsl:template>
@@ -7385,6 +7413,8 @@
7385
7413
 
7386
7414
  <fo:inline xsl:use-attribute-sets="note-name-style" role="SKIP">
7387
7415
 
7416
+ <xsl:apply-templates select="*[local-name() = 'name']/*[local-name() = 'tab']" mode="tab"/>
7417
+
7388
7418
  <xsl:call-template name="refine_note-name-style"/>
7389
7419
 
7390
7420
  <!-- if 'p' contains all text in 'add' first and last elements in first p are 'add' -->
@@ -7441,10 +7471,6 @@
7441
7471
 
7442
7472
  <fo:inline xsl:use-attribute-sets="termnote-name-style">
7443
7473
 
7444
- <xsl:if test="not(*[local-name() = 'name']/following-sibling::node()[1][self::text()][normalize-space()=''])">
7445
- <xsl:attribute name="padding-right">1mm</xsl:attribute>
7446
- </xsl:if>
7447
-
7448
7474
  <xsl:call-template name="refine_termnote-name-style"/>
7449
7475
 
7450
7476
  <!-- if 'p' contains all text in 'add' first and last elements in first p are 'add' -->
@@ -7591,17 +7617,29 @@
7591
7617
  <!-- Example: Dimensions in millimeters -->
7592
7618
  <xsl:apply-templates select="*[local-name() = 'note'][@type = 'units']"/>
7593
7619
 
7620
+ <xsl:variable name="show_figure_key_in_block_container">
7621
+ true
7622
+ </xsl:variable>
7623
+
7594
7624
  <fo:block xsl:use-attribute-sets="figure-style" role="SKIP">
7595
7625
  <xsl:apply-templates select="node()[not(local-name() = 'name') and not(local-name() = 'note' and @type = 'units')]"/>
7596
7626
  </fo:block>
7597
- <xsl:for-each select="*[local-name() = 'note'][not(@type = 'units')]">
7598
- <xsl:call-template name="note"/>
7599
- </xsl:for-each>
7600
- <xsl:call-template name="fn_display_figure"/>
7627
+
7628
+ <xsl:if test="normalize-space($show_figure_key_in_block_container) = 'true'">
7629
+ <xsl:call-template name="showFigureKey"/>
7630
+ </xsl:if>
7601
7631
 
7602
7632
  <xsl:apply-templates select="*[local-name() = 'name']"/> <!-- show figure's name AFTER image -->
7603
7633
 
7604
7634
  </fo:block-container>
7635
+
7636
+ </xsl:template>
7637
+
7638
+ <xsl:template name="showFigureKey">
7639
+ <xsl:for-each select="*[local-name() = 'note'][not(@type = 'units')]">
7640
+ <xsl:call-template name="note"/>
7641
+ </xsl:for-each>
7642
+ <xsl:call-template name="fn_display_figure"/>
7605
7643
  </xsl:template>
7606
7644
 
7607
7645
  <xsl:template match="*[local-name() = 'figure'][@class = 'pseudocode']">
@@ -7797,6 +7835,22 @@
7797
7835
  </xsl:if>
7798
7836
  </xsl:template>
7799
7837
 
7838
+ <xsl:template name="getImageSrc">
7839
+ <xsl:choose>
7840
+ <xsl:when test="not(starts-with(@src, 'data:'))">
7841
+ <xsl:choose>
7842
+ <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
7843
+ <xsl:value-of select="@src"/>
7844
+ </xsl:when>
7845
+ <xsl:otherwise>
7846
+ <xsl:value-of select="concat($basepath, @src)"/>
7847
+ </xsl:otherwise>
7848
+ </xsl:choose>
7849
+ </xsl:when>
7850
+ <xsl:otherwise><xsl:value-of select="@src"/></xsl:otherwise>
7851
+ </xsl:choose>
7852
+ </xsl:template>
7853
+
7800
7854
  <xsl:template name="getImageScale">
7801
7855
  <xsl:param name="indent"/>
7802
7856
  <xsl:variable name="indent_left">
@@ -7806,19 +7860,7 @@
7806
7860
  </xsl:choose>
7807
7861
  </xsl:variable>
7808
7862
  <xsl:variable name="img_src">
7809
- <xsl:choose>
7810
- <xsl:when test="not(starts-with(@src, 'data:'))">
7811
- <xsl:choose>
7812
- <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
7813
- <xsl:value-of select="@src"/>
7814
- </xsl:when>
7815
- <xsl:otherwise>
7816
- <xsl:value-of select="concat($basepath, @src)"/>
7817
- </xsl:otherwise>
7818
- </xsl:choose>
7819
- </xsl:when>
7820
- <xsl:otherwise><xsl:value-of select="@src"/></xsl:otherwise>
7821
- </xsl:choose>
7863
+ <xsl:call-template name="getImageSrc"/>
7822
7864
  </xsl:variable>
7823
7865
 
7824
7866
  <xsl:variable name="image_width_effective">
@@ -7826,10 +7868,15 @@
7826
7868
  <xsl:value-of select="$width_effective - number($indent_left)"/>
7827
7869
 
7828
7870
  </xsl:variable>
7871
+ <xsl:variable name="image_height_effective" select="$height_effective - number($indent_left)"/>
7829
7872
  <!-- <xsl:message>width_effective=<xsl:value-of select="$width_effective"/></xsl:message>
7830
7873
  <xsl:message>indent_left=<xsl:value-of select="$indent_left"/></xsl:message>
7831
7874
  <xsl:message>image_width_effective=<xsl:value-of select="$image_width_effective"/> for <xsl:value-of select="ancestor::ogc:p[1]/@id"/></xsl:message> -->
7832
- <xsl:variable name="scale" select="java:org.metanorma.fop.utils.ImageUtils.getImageScale($img_src, $image_width_effective, $height_effective)"/>
7875
+ <xsl:variable name="scale">
7876
+
7877
+ <xsl:value-of select="java:org.metanorma.fop.utils.ImageUtils.getImageScale($img_src, $image_width_effective, $height_effective)"/>
7878
+
7879
+ </xsl:variable>
7833
7880
  <xsl:value-of select="$scale"/>
7834
7881
  </xsl:template>
7835
7882
 
@@ -8382,20 +8429,48 @@
8382
8429
  <xsl:template match="*[local-name() = 'emf']"/>
8383
8430
 
8384
8431
  <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'name'] | *[local-name() = 'table']/*[local-name() = 'name'] | *[local-name() = 'permission']/*[local-name() = 'name'] | *[local-name() = 'recommendation']/*[local-name() = 'name'] | *[local-name() = 'requirement']/*[local-name() = 'name']" mode="contents">
8432
+ <xsl:if test="not(following-sibling::*[1][local-name() = 'fmt-name'])">
8433
+ <xsl:apply-templates mode="contents"/>
8434
+ <xsl:text> </xsl:text>
8435
+ </xsl:if>
8436
+ </xsl:template>
8437
+
8438
+ <xsl:template match="*[local-name() = 'title'][following-sibling::*[1][local-name() = 'fmt-title']]" mode="contents"/>
8439
+
8440
+ <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'fmt-name'] | *[local-name() = 'table']/*[local-name() = 'fmt-name'] | *[local-name() = 'permission']/*[local-name() = 'fmt-name'] | *[local-name() = 'recommendation']/*[local-name() = 'fmt-name'] | *[local-name() = 'requirement']/*[local-name() = 'fmt-name']" mode="contents">
8385
8441
  <xsl:apply-templates mode="contents"/>
8386
8442
  <xsl:text> </xsl:text>
8387
8443
  </xsl:template>
8388
8444
 
8389
8445
  <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'name'] | *[local-name() = 'table']/*[local-name() = 'name'] | *[local-name() = 'permission']/*[local-name() = 'name'] | *[local-name() = 'recommendation']/*[local-name() = 'name'] | *[local-name() = 'requirement']/*[local-name() = 'name'] | *[local-name() = 'sourcecode']/*[local-name() = 'name']" mode="bookmarks">
8446
+ <xsl:if test="not(following-sibling::*[1][local-name() = 'fmt-name'])">
8447
+ <xsl:apply-templates mode="bookmarks"/>
8448
+ <xsl:text> </xsl:text>
8449
+ </xsl:if>
8450
+ </xsl:template>
8451
+
8452
+ <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'fmt-name'] | *[local-name() = 'table']/*[local-name() = 'fmt-name'] | *[local-name() = 'permission']/*[local-name() = 'fmt-name'] | *[local-name() = 'recommendation']/*[local-name() = 'fmt-name'] | *[local-name() = 'requirement']/*[local-name() = 'fmt-name'] | *[local-name() = 'sourcecode']/*[local-name() = 'fmt-name']" mode="bookmarks">
8390
8453
  <xsl:apply-templates mode="bookmarks"/>
8391
8454
  <xsl:text> </xsl:text>
8392
8455
  </xsl:template>
8393
8456
 
8394
8457
  <xsl:template match="*[local-name() = 'figure' or local-name() = 'table' or local-name() = 'permission' or local-name() = 'recommendation' or local-name() = 'requirement']/*[local-name() = 'name']/text()" mode="contents" priority="2">
8458
+ <xsl:if test="not(../following-sibling::*[1][local-name() = 'fmt-name'])">
8459
+ <xsl:value-of select="."/>
8460
+ </xsl:if>
8461
+ </xsl:template>
8462
+
8463
+ <xsl:template match="*[local-name() = 'figure' or local-name() = 'table' or local-name() = 'permission' or local-name() = 'recommendation' or local-name() = 'requirement']/*[local-name() = 'fmt-name']/text()" mode="contents" priority="2">
8395
8464
  <xsl:value-of select="."/>
8396
8465
  </xsl:template>
8397
8466
 
8398
8467
  <xsl:template match="*[local-name() = 'figure' or local-name() = 'table' or local-name() = 'permission' or local-name() = 'recommendation' or local-name() = 'requirement' or local-name() = 'sourcecode']/*[local-name() = 'name']//text()" mode="bookmarks" priority="2">
8468
+ <xsl:if test="not(../following-sibling::*[1][local-name() = 'fmt-name'])">
8469
+ <xsl:value-of select="."/>
8470
+ </xsl:if>
8471
+ </xsl:template>
8472
+
8473
+ <xsl:template match="*[local-name() = 'figure' or local-name() = 'table' or local-name() = 'permission' or local-name() = 'recommendation' or local-name() = 'requirement' or local-name() = 'sourcecode']/*[local-name() = 'fmt-name']//text()" mode="bookmarks" priority="2">
8399
8474
  <xsl:value-of select="."/>
8400
8475
  </xsl:template>
8401
8476
 
@@ -8416,7 +8491,7 @@
8416
8491
  </xsl:template>
8417
8492
 
8418
8493
  <!-- special case: ignore section-title if @depth different than @depth of parent clause, or @depth of parent clause = 1 -->
8419
- <xsl:template match="*[local-name() = 'clause']/*[local-name() = 'p'][@type = 'section-title' and (@depth != ../*[local-name() = 'title']/@depth or ../*[local-name() = 'title']/@depth = 1)]" priority="3" mode="contents"/>
8494
+ <xsl:template match="*[local-name() = 'clause']/*[local-name() = 'p'][@type = 'section-title' and (@depth != ../*[local-name() = 'title' or local-name() = 'fmt-title']/@depth or ../*[local-name() = 'title' or local-name() = 'fmt-title']/@depth = 1)]" priority="3" mode="contents"/>
8420
8495
 
8421
8496
  <xsl:template match="*[local-name() = 'p'][@type = 'floating-title' or @type = 'section-title']" priority="2" name="contents_section-title" mode="contents">
8422
8497
  <xsl:variable name="level">
@@ -8428,6 +8503,9 @@
8428
8503
  <xsl:variable name="section">
8429
8504
  <xsl:choose>
8430
8505
  <xsl:when test="@type = 'section-title'"/>
8506
+ <xsl:when test="*[local-name() = 'span'][@class = 'fmt-caption-delim']">
8507
+ <xsl:value-of select="*[local-name() = 'span'][@class = 'fmt-caption-delim'][1]/preceding-sibling::node()"/>
8508
+ </xsl:when>
8431
8509
  <xsl:otherwise>
8432
8510
  <xsl:value-of select="*[local-name() = 'tab'][1]/preceding-sibling::node()"/>
8433
8511
  </xsl:otherwise>
@@ -8450,6 +8528,19 @@
8450
8528
 
8451
8529
  <xsl:variable name="title">
8452
8530
  <xsl:choose>
8531
+ <!-- https://github.com/metanorma/mn-native-pdf/issues/770 -->
8532
+ <xsl:when test="*[local-name() = 'span'][@class = 'fmt-caption-delim']">
8533
+ <xsl:choose>
8534
+ <xsl:when test="@type = 'section-title'">
8535
+ <xsl:value-of select="*[local-name() = 'span'][@class = 'fmt-caption-delim'][1]/preceding-sibling::node()"/>
8536
+ <xsl:text>: </xsl:text>
8537
+ <xsl:copy-of select="*[local-name() = 'span'][@class = 'fmt-caption-delim'][1]/following-sibling::node()[not(local-name = 'fmt-xref-label')]"/>
8538
+ </xsl:when>
8539
+ <xsl:otherwise>
8540
+ <xsl:copy-of select="*[local-name() = 'span'][@class = 'fmt-caption-delim'][1]/following-sibling::node()[not(local-name = 'fmt-xref-label')]"/>
8541
+ </xsl:otherwise>
8542
+ </xsl:choose>
8543
+ </xsl:when>
8453
8544
  <xsl:when test="*[local-name() = 'tab']">
8454
8545
  <xsl:choose>
8455
8546
  <xsl:when test="@type = 'section-title'">
@@ -8485,7 +8576,7 @@
8485
8576
  <xsl:apply-templates mode="bookmarks"/>
8486
8577
  </xsl:template>
8487
8578
 
8488
- <xsl:template match="*[local-name() = 'title' or local-name() = 'name']//*[local-name() = 'stem']" mode="contents">
8579
+ <xsl:template match="*[local-name() = 'title' or local-name() = 'name' or local-name() = 'fmt-title' or local-name() = 'fmt-name']//*[local-name() = 'stem']" mode="contents">
8489
8580
  <xsl:apply-templates select="."/>
8490
8581
  </xsl:template>
8491
8582
 
@@ -8498,6 +8589,10 @@
8498
8589
  <xsl:apply-templates mode="contents"/>
8499
8590
  </xsl:template>
8500
8591
 
8592
+ <xsl:template match="*[local-name() = 'semx']" mode="contents">
8593
+ <xsl:apply-templates mode="contents"/>
8594
+ </xsl:template>
8595
+
8501
8596
  <xsl:template match="*[local-name() = 'stem']" mode="bookmarks">
8502
8597
  <xsl:apply-templates mode="bookmarks"/>
8503
8598
  </xsl:template>
@@ -8507,9 +8602,14 @@
8507
8602
  <xsl:apply-templates mode="bookmarks"/>
8508
8603
  </xsl:template>
8509
8604
 
8605
+ <xsl:template match="*[local-name() = 'semx']" mode="bookmarks">
8606
+ <xsl:apply-templates mode="bookmarks"/>
8607
+ </xsl:template>
8608
+
8510
8609
  <!-- Bookmarks -->
8511
8610
  <xsl:template name="addBookmarks">
8512
8611
  <xsl:param name="contents"/>
8612
+ <xsl:param name="contents_addon"/>
8513
8613
  <xsl:variable name="contents_nodes" select="xalan:nodeset($contents)"/>
8514
8614
  <xsl:if test="$contents_nodes//item">
8515
8615
  <fo:bookmark-tree>
@@ -8607,6 +8707,9 @@
8607
8707
  </xsl:otherwise>
8608
8708
  </xsl:choose>
8609
8709
 
8710
+ <!-- for $namespace = 'nist-sp' $namespace = 'ogc' $namespace = 'ogc-white-paper' -->
8711
+ <xsl:copy-of select="$contents_addon"/>
8712
+
8610
8713
  </fo:bookmark-tree>
8611
8714
  </xsl:if>
8612
8715
  </xsl:template>
@@ -8760,6 +8863,16 @@
8760
8863
  <!-- ====== -->
8761
8864
  <!-- ====== -->
8762
8865
  <xsl:template match="*[local-name() = 'title']" mode="contents_item">
8866
+ <xsl:param name="mode">bookmarks</xsl:param>
8867
+ <xsl:if test="not(following-sibling::*[1][local-name() = 'fmt-title'])">
8868
+ <xsl:apply-templates mode="contents_item">
8869
+ <xsl:with-param name="mode" select="$mode"/>
8870
+ </xsl:apply-templates>
8871
+ <!-- <xsl:text> </xsl:text> -->
8872
+ </xsl:if>
8873
+ </xsl:template>
8874
+
8875
+ <xsl:template match="*[local-name() = 'fmt-title']" mode="contents_item">
8763
8876
  <xsl:param name="mode">bookmarks</xsl:param>
8764
8877
  <xsl:apply-templates mode="contents_item">
8765
8878
  <xsl:with-param name="mode" select="$mode"/>
@@ -8767,12 +8880,38 @@
8767
8880
  <!-- <xsl:text> </xsl:text> -->
8768
8881
  </xsl:template>
8769
8882
 
8883
+ <xsl:template match="*[local-name() = 'span'][ @class = 'fmt-caption-label' or @class = 'fmt-element-name' or @class = 'fmt-caption-delim']" mode="contents_item" priority="3">
8884
+ <xsl:apply-templates mode="contents_item"/>
8885
+ </xsl:template>
8886
+
8887
+ <xsl:template match="*[local-name() = 'semx']" mode="contents_item">
8888
+ <xsl:apply-templates mode="contents_item"/>
8889
+ </xsl:template>
8890
+
8891
+ <xsl:template match="*[local-name() = 'fmt-xref-label']" mode="contents_item"/>
8892
+
8770
8893
  <xsl:template name="getSection">
8771
- <xsl:value-of select="*[local-name() = 'title']/*[local-name() = 'tab'][1]/preceding-sibling::node()"/>
8894
+ <xsl:choose>
8895
+ <xsl:when test="*[local-name() = 'fmt-title']">
8896
+ <xsl:variable name="fmt_title_section">
8897
+ <xsl:copy-of select="*[local-name() = 'fmt-title']//*[local-name() = 'span'][@class = 'fmt-caption-delim'][*[local-name() = 'tab']][1]/preceding-sibling::node()[not(local-name() = 'review')]"/>
8898
+ </xsl:variable>
8899
+ <xsl:value-of select="normalize-space($fmt_title_section)"/>
8900
+ </xsl:when>
8901
+ <xsl:otherwise>
8902
+ <xsl:value-of select="*[local-name() = 'title']/*[local-name() = 'tab'][1]/preceding-sibling::node()"/>
8903
+ </xsl:otherwise>
8904
+ </xsl:choose>
8772
8905
  </xsl:template>
8773
8906
 
8774
8907
  <xsl:template name="getName">
8775
8908
  <xsl:choose>
8909
+ <xsl:when test="*[local-name() = 'fmt-title']//*[local-name() = 'span'][@class = 'fmt-caption-delim'][*[local-name() = 'tab']]">
8910
+ <xsl:copy-of select="*[local-name() = 'fmt-title']//*[local-name() = 'span'][@class = 'fmt-caption-delim'][*[local-name() = 'tab']][1]/following-sibling::node()"/>
8911
+ </xsl:when>
8912
+ <xsl:when test="*[local-name() = 'fmt-title']">
8913
+ <xsl:copy-of select="*[local-name() = 'fmt-title']/node()"/>
8914
+ </xsl:when>
8776
8915
  <xsl:when test="*[local-name() = 'title']/*[local-name() = 'tab']">
8777
8916
  <xsl:copy-of select="*[local-name() = 'title']/*[local-name() = 'tab'][1]/following-sibling::node()"/>
8778
8917
  </xsl:when>
@@ -8879,6 +9018,15 @@
8879
9018
  </xsl:template>
8880
9019
 
8881
9020
  <xsl:template match="*[local-name() = 'name']" mode="contents_item">
9021
+ <xsl:param name="mode">bookmarks</xsl:param>
9022
+ <xsl:if test="not(following-sibling::*[1][local-name() = 'fmt-name'])">
9023
+ <xsl:apply-templates mode="contents_item">
9024
+ <xsl:with-param name="mode" select="$mode"/>
9025
+ </xsl:apply-templates>
9026
+ </xsl:if>
9027
+ </xsl:template>
9028
+
9029
+ <xsl:template match="*[local-name() = 'fmt-name']" mode="contents_item">
8882
9030
  <xsl:param name="mode">bookmarks</xsl:param>
8883
9031
  <xsl:apply-templates mode="contents_item">
8884
9032
  <xsl:with-param name="mode" select="$mode"/>
@@ -9716,107 +9864,108 @@
9716
9864
  -->
9717
9865
  <xsl:template match="*[local-name() = 'example']">
9718
9866
 
9719
- <fo:block-container id="{@id}" xsl:use-attribute-sets="example-style" role="SKIP">
9720
-
9721
- <xsl:call-template name="setBlockSpanAll"/>
9867
+ <fo:block-container id="{@id}" xsl:use-attribute-sets="example-style" role="SKIP">
9722
9868
 
9723
- <xsl:call-template name="refine_example-style"/>
9869
+ <xsl:call-template name="setBlockSpanAll"/>
9724
9870
 
9725
- <xsl:variable name="fo_element">
9726
- <xsl:if test=".//*[local-name() = 'table'] or .//*[local-name() = 'dl'] or *[not(local-name() = 'name')][1][local-name() = 'sourcecode']">block</xsl:if>
9727
- inline
9728
- </xsl:variable>
9871
+ <xsl:call-template name="refine_example-style"/>
9729
9872
 
9730
- <fo:block-container margin-left="0mm" role="SKIP">
9873
+ <xsl:variable name="fo_element">
9874
+ <xsl:if test=".//*[local-name() = 'table'] or .//*[local-name() = 'dl'] or *[not(local-name() = 'name')][1][local-name() = 'sourcecode']">block</xsl:if>
9875
+ inline
9876
+ </xsl:variable>
9731
9877
 
9732
- <xsl:choose>
9878
+ <fo:block-container margin-left="0mm" role="SKIP">
9733
9879
 
9734
- <xsl:when test="contains(normalize-space($fo_element), 'block')">
9880
+ <xsl:choose>
9735
9881
 
9736
- <!-- display name 'EXAMPLE' in a separate block -->
9737
- <fo:block>
9738
- <xsl:apply-templates select="*[local-name()='name']">
9739
- <xsl:with-param name="fo_element" select="$fo_element"/>
9740
- </xsl:apply-templates>
9741
- </fo:block>
9882
+ <xsl:when test="contains(normalize-space($fo_element), 'block')">
9742
9883
 
9743
- <fo:block-container xsl:use-attribute-sets="example-body-style" role="SKIP">
9744
- <fo:block-container margin-left="0mm" margin-right="0mm" role="SKIP">
9745
- <xsl:variable name="example_body">
9746
- <xsl:apply-templates select="node()[not(local-name() = 'name')]">
9884
+ <!-- display name 'EXAMPLE' in a separate block -->
9885
+ <fo:block>
9886
+ <xsl:apply-templates select="*[local-name()='name']">
9747
9887
  <xsl:with-param name="fo_element" select="$fo_element"/>
9748
9888
  </xsl:apply-templates>
9749
- </xsl:variable>
9750
- <xsl:choose>
9751
- <xsl:when test="xalan:nodeset($example_body)/*">
9752
- <xsl:copy-of select="$example_body"/>
9753
- </xsl:when>
9754
- <xsl:otherwise><fo:block/><!-- prevent empty block-container --></xsl:otherwise>
9755
- </xsl:choose>
9756
- </fo:block-container>
9757
- </fo:block-container>
9758
- </xsl:when> <!-- end block -->
9889
+ </fo:block>
9759
9890
 
9760
- <xsl:when test="contains(normalize-space($fo_element), 'list')">
9891
+ <fo:block-container xsl:use-attribute-sets="example-body-style" role="SKIP">
9892
+ <fo:block-container margin-left="0mm" margin-right="0mm" role="SKIP">
9893
+ <xsl:variable name="example_body">
9894
+ <xsl:apply-templates select="node()[not(local-name() = 'name')]">
9895
+ <xsl:with-param name="fo_element" select="$fo_element"/>
9896
+ </xsl:apply-templates>
9897
+ </xsl:variable>
9898
+ <xsl:choose>
9899
+ <xsl:when test="xalan:nodeset($example_body)/*">
9900
+ <xsl:copy-of select="$example_body"/>
9901
+ </xsl:when>
9902
+ <xsl:otherwise><fo:block/><!-- prevent empty block-container --></xsl:otherwise>
9903
+ </xsl:choose>
9904
+ </fo:block-container>
9905
+ </fo:block-container>
9906
+ </xsl:when> <!-- end block -->
9761
9907
 
9762
- <xsl:variable name="provisional_distance_between_starts_">
9763
- 7
9764
- </xsl:variable>
9765
- <xsl:variable name="provisional_distance_between_starts" select="normalize-space($provisional_distance_between_starts_)"/>
9766
- <xsl:variable name="indent_">
9767
- 0
9768
- </xsl:variable>
9769
- <xsl:variable name="indent" select="normalize-space($indent_)"/>
9908
+ <xsl:when test="contains(normalize-space($fo_element), 'list')">
9770
9909
 
9771
- <fo:list-block provisional-distance-between-starts="{$provisional_distance_between_starts}mm">
9772
- <fo:list-item>
9773
- <fo:list-item-label start-indent="{$indent}mm" end-indent="label-end()">
9774
- <fo:block>
9775
- <xsl:apply-templates select="*[local-name()='name']">
9776
- <xsl:with-param name="fo_element">block</xsl:with-param>
9777
- </xsl:apply-templates>
9778
- </fo:block>
9779
- </fo:list-item-label>
9780
- <fo:list-item-body start-indent="body-start()">
9781
- <fo:block>
9782
- <xsl:apply-templates select="node()[not(local-name() = 'name')]">
9910
+ <xsl:variable name="provisional_distance_between_starts_">
9911
+ 7
9912
+ </xsl:variable>
9913
+ <xsl:variable name="provisional_distance_between_starts" select="normalize-space($provisional_distance_between_starts_)"/>
9914
+ <xsl:variable name="indent_">
9915
+ 0
9916
+ </xsl:variable>
9917
+ <xsl:variable name="indent" select="normalize-space($indent_)"/>
9918
+
9919
+ <fo:list-block provisional-distance-between-starts="{$provisional_distance_between_starts}mm">
9920
+ <fo:list-item>
9921
+ <fo:list-item-label start-indent="{$indent}mm" end-indent="label-end()">
9922
+ <fo:block>
9923
+ <xsl:apply-templates select="*[local-name()='name']">
9924
+ <xsl:with-param name="fo_element">block</xsl:with-param>
9925
+ </xsl:apply-templates>
9926
+ </fo:block>
9927
+ </fo:list-item-label>
9928
+ <fo:list-item-body start-indent="body-start()">
9929
+ <fo:block>
9930
+ <xsl:apply-templates select="node()[not(local-name() = 'name')]">
9931
+ <xsl:with-param name="fo_element" select="$fo_element"/>
9932
+ </xsl:apply-templates>
9933
+ </fo:block>
9934
+ </fo:list-item-body>
9935
+ </fo:list-item>
9936
+ </fo:list-block>
9937
+ </xsl:when> <!-- end list -->
9938
+
9939
+ <xsl:otherwise> <!-- inline -->
9940
+
9941
+ <!-- display 'EXAMPLE' and first element in the same line -->
9942
+ <fo:block>
9943
+ <xsl:apply-templates select="*[local-name()='name']">
9944
+ <xsl:with-param name="fo_element" select="$fo_element"/>
9945
+ </xsl:apply-templates>
9946
+ <fo:inline>
9947
+ <xsl:apply-templates select="*[not(local-name() = 'name')][1]">
9783
9948
  <xsl:with-param name="fo_element" select="$fo_element"/>
9784
9949
  </xsl:apply-templates>
9785
- </fo:block>
9786
- </fo:list-item-body>
9787
- </fo:list-item>
9788
- </fo:list-block>
9789
- </xsl:when> <!-- end list -->
9790
-
9791
- <xsl:otherwise> <!-- inline -->
9950
+ </fo:inline>
9951
+ </fo:block>
9792
9952
 
9793
- <!-- display 'EXAMPLE' and first element in the same line -->
9794
- <fo:block>
9795
- <xsl:apply-templates select="*[local-name()='name']">
9796
- <xsl:with-param name="fo_element" select="$fo_element"/>
9797
- </xsl:apply-templates>
9798
- <fo:inline>
9799
- <xsl:apply-templates select="*[not(local-name() = 'name')][1]">
9800
- <xsl:with-param name="fo_element" select="$fo_element"/>
9801
- </xsl:apply-templates>
9802
- </fo:inline>
9803
- </fo:block>
9953
+ <xsl:if test="*[not(local-name() = 'name')][position() &gt; 1]">
9954
+ <!-- display further elements in blocks -->
9955
+ <fo:block-container xsl:use-attribute-sets="example-body-style" role="SKIP">
9956
+ <fo:block-container margin-left="0mm" margin-right="0mm" role="SKIP">
9957
+ <xsl:apply-templates select="*[not(local-name() = 'name')][position() &gt; 1]">
9958
+ <xsl:with-param name="fo_element" select="'block'"/>
9959
+ </xsl:apply-templates>
9960
+ </fo:block-container>
9961
+ </fo:block-container>
9962
+ </xsl:if>
9963
+ </xsl:otherwise> <!-- end inline -->
9804
9964
 
9805
- <xsl:if test="*[not(local-name() = 'name')][position() &gt; 1]">
9806
- <!-- display further elements in blocks -->
9807
- <fo:block-container xsl:use-attribute-sets="example-body-style" role="SKIP">
9808
- <fo:block-container margin-left="0mm" margin-right="0mm" role="SKIP">
9809
- <xsl:apply-templates select="*[not(local-name() = 'name')][position() &gt; 1]">
9810
- <xsl:with-param name="fo_element" select="'block'"/>
9811
- </xsl:apply-templates>
9812
- </fo:block-container>
9813
- </fo:block-container>
9814
- </xsl:if>
9815
- </xsl:otherwise> <!-- end inline -->
9965
+ </xsl:choose>
9966
+ </fo:block-container>
9967
+ </fo:block-container>
9816
9968
 
9817
- </xsl:choose>
9818
- </fo:block-container>
9819
- </fo:block-container>
9820
9969
  </xsl:template>
9821
9970
 
9822
9971
  <xsl:template match="*[local-name() = 'example']/*[local-name() = 'name']">
@@ -10200,6 +10349,15 @@
10200
10349
 
10201
10350
  </xsl:template> <!-- tab -->
10202
10351
 
10352
+ <xsl:template match="*[local-name() = 'note']/*[local-name() = 'name']/*[local-name() = 'tab']" priority="2"/>
10353
+ <xsl:template match="*[local-name() = 'termnote']/*[local-name() = 'name']/*[local-name() = 'tab']" priority="2"/>
10354
+
10355
+ <xsl:template match="*[local-name() = 'note']/*[local-name() = 'name']/*[local-name() = 'tab']" mode="tab">
10356
+
10357
+ <xsl:attribute name="padding-right">2mm</xsl:attribute>
10358
+
10359
+ </xsl:template>
10360
+
10203
10361
  <xsl:template name="insertNonBreakSpaces">
10204
10362
  <xsl:param name="count"/>
10205
10363
  <xsl:if test="$count &gt; 0">
@@ -11737,6 +11895,10 @@
11737
11895
  <!-- - Remove semantic xml part -->
11738
11896
  <!-- - Remove image/emf (EMF vector image for Word) -->
11739
11897
  <!-- - add @id, redundant for table auto-layout algorithm -->
11898
+ <!-- - process 'passthrough' element -->
11899
+ <!-- - split math by element with @linebreak into maths -->
11900
+ <!-- - rename fmt-title to title, fmt-name to name and another changes to convert new presentation XML to -->
11901
+ <!-- - old XML without significant changes in XSLT -->
11740
11902
  <!-- =========================================================================== -->
11741
11903
  <xsl:template match="@*|node()" mode="update_xml_step1">
11742
11904
  <xsl:copy>
@@ -11744,6 +11906,12 @@
11744
11906
  </xsl:copy>
11745
11907
  </xsl:template>
11746
11908
 
11909
+ <xsl:template match="@*|node()" mode="update_xml_pres">
11910
+ <xsl:copy>
11911
+ <xsl:apply-templates select="@*|node()" mode="update_xml_pres"/>
11912
+ </xsl:copy>
11913
+ </xsl:template>
11914
+
11747
11915
  <!-- change section's order based on @displayorder value -->
11748
11916
  <xsl:template match="*[local-name() = 'preface']" mode="update_xml_step1">
11749
11917
  <xsl:copy>
@@ -11820,7 +11988,7 @@
11820
11988
  </xsl:template>
11821
11989
 
11822
11990
  <!-- Example with 'class': <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
11823
- <xsl:template match="*[local-name() = 'span'][@style or @class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']" mode="update_xml_step1" priority="2">
11991
+ <xsl:template match="*[local-name() = 'span'][@style or @class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear' or @class = 'horizontal' or @class = 'norotate' or @class = 'halffontsize']" mode="update_xml_step1" priority="2">
11824
11992
  <xsl:copy>
11825
11993
  <xsl:copy-of select="@*"/>
11826
11994
  <xsl:apply-templates mode="update_xml_step1"/>
@@ -11839,14 +12007,17 @@
11839
12007
 
11840
12008
  <!-- remove semantic xml -->
11841
12009
  <xsl:template match="*[local-name() = 'metanorma-extension']/*[local-name() = 'metanorma']/*[local-name() = 'source']" mode="update_xml_step1"/>
12010
+ <xsl:template match="*[local-name() = 'metanorma-extension']/*[local-name() = 'metanorma']/*[local-name() = 'source']" mode="update_xml_pres"/>
11842
12011
 
11843
12012
  <!-- remove image/emf -->
11844
12013
  <xsl:template match="*[local-name() = 'image']/*[local-name() = 'emf']" mode="update_xml_step1"/>
12014
+ <xsl:template match="*[local-name() = 'image']/*[local-name() = 'emf']" mode="update_xml_pres"/>
11845
12015
 
11846
12016
  <!-- remove preprocess-xslt -->
11847
12017
  <xsl:template match="*[local-name() = 'preprocess-xslt']" mode="update_xml_step1"/>
12018
+ <xsl:template match="*[local-name() = 'preprocess-xslt']" mode="update_xml_pres"/>
11848
12019
 
11849
- <xsl:template match="*[local-name() = 'stem'][not(.//*[local-name() = 'passthrough']) and not(.//*[@linebreak])] | *[local-name() = 'image'][not(.//*[local-name() = 'passthrough'])] | *[local-name() = 'sourcecode'][not(.//*[local-name() = 'passthrough'])] | *[local-name() = 'bibdata'][not(.//*[local-name() = 'passthrough'])] | *[local-name() = 'localized-strings']" mode="update_xml_step1">
12020
+ <xsl:template match="*[local-name() = 'stem'][not(.//*[local-name() = 'passthrough']) and not(.//*[@linebreak])] | *[local-name() = 'image'][not(.//*[local-name() = 'passthrough'])] | *[local-name() = 'sourcecode'][not(.//*[local-name() = 'passthrough']) and not(.//*[local-name() = 'fmt-name'])] | *[local-name() = 'bibdata'][not(.//*[local-name() = 'passthrough'])] | *[local-name() = 'localized-strings']" mode="update_xml_step1">
11850
12021
  <xsl:copy-of select="."/>
11851
12022
  </xsl:template>
11852
12023
 
@@ -11928,6 +12099,77 @@
11928
12099
  <xsl:copy-of select="$maths"/>
11929
12100
  </xsl:template>
11930
12101
 
12102
+ <!-- update new Presentation XML -->
12103
+ <xsl:template match="*[local-name() = 'title'][following-sibling::*[1][local-name() = 'fmt-title']]" mode="update_xml_step1"/>
12104
+ <xsl:template match="*[local-name() = 'title'][following-sibling::*[1][local-name() = 'fmt-title']]" mode="update_xml_pres"/>
12105
+ <xsl:template match="*[local-name() = 'name'][following-sibling::*[1][local-name() = 'fmt-name']]" mode="update_xml_step1"/>
12106
+ <xsl:template match="*[local-name() = 'name'][following-sibling::*[1][local-name() = 'fmt-name']]" mode="update_xml_pres"/>
12107
+ <xsl:template match="*[local-name() = 'section-title'][following-sibling::*[1][local-name() = 'p'][@type = 'section-title' or @type = 'floating-title']]" mode="update_xml_step1"/>
12108
+ <xsl:template match="*[local-name() = 'section-title'][following-sibling::*[1][local-name() = 'p'][@type = 'section-title' or @type = 'floating-title']]" mode="update_xml_pres"/>
12109
+
12110
+ <xsl:template match="*[local-name() = 'p'][@type = 'section-title' or @type = 'floating-title'][preceding-sibling::*[1][local-name() = 'section-title']]" mode="update_xml_step1">
12111
+ <xsl:copy>
12112
+ <xsl:apply-templates select="@*" mode="update_xml_step1"/>
12113
+ <xsl:copy-of select="preceding-sibling::*[1][local-name() = 'section-title']/@depth"/>
12114
+ <xsl:apply-templates select="node()" mode="update_xml_step1"/>
12115
+ </xsl:copy>
12116
+ </xsl:template>
12117
+ <xsl:template match="*[local-name() = 'p'][@type = 'section-title' or @type = 'floating-title'][preceding-sibling::*[1][local-name() = 'section-title']]" mode="update_xml_pres">
12118
+ <xsl:copy>
12119
+ <xsl:apply-templates select="@*" mode="update_xml_pres"/>
12120
+ <xsl:copy-of select="preceding-sibling::*[1][local-name() = 'section-title']/@depth"/>
12121
+ <xsl:apply-templates select="node()" mode="update_xml_pres"/>
12122
+ </xsl:copy>
12123
+ </xsl:template>
12124
+
12125
+ <xsl:template match="*[local-name() = 'fmt-title']"/>
12126
+ <xsl:template match="*[local-name() = 'fmt-title']" mode="update_xml_step1">
12127
+ <xsl:element name="title" namespace="{$namespace_full}">
12128
+ <xsl:copy-of select="@*"/>
12129
+ <xsl:apply-templates mode="update_xml_step1"/>
12130
+ </xsl:element>
12131
+ </xsl:template>
12132
+ <xsl:template match="*[local-name() = 'fmt-title']" mode="update_xml_pres">
12133
+ <xsl:element name="title" namespace="{$namespace_full}">
12134
+ <xsl:copy-of select="@*"/>
12135
+ <xsl:apply-templates mode="update_xml_pres"/>
12136
+ </xsl:element>
12137
+ </xsl:template>
12138
+
12139
+ <xsl:template match="*[local-name() = 'fmt-name']"/>
12140
+ <xsl:template match="*[local-name() = 'fmt-name']" mode="update_xml_step1">
12141
+ <xsl:element name="name" namespace="{$namespace_full}">
12142
+ <xsl:copy-of select="@*"/>
12143
+ <xsl:apply-templates mode="update_xml_step1"/>
12144
+ </xsl:element>
12145
+ </xsl:template>
12146
+ <xsl:template match="*[local-name() = 'fmt-name']" mode="update_xml_pres">
12147
+ <xsl:element name="name" namespace="{$namespace_full}">
12148
+ <xsl:copy-of select="@*"/>
12149
+ <xsl:apply-templates mode="update_xml_pres"/>
12150
+ </xsl:element>
12151
+ </xsl:template>
12152
+
12153
+ <xsl:template match="*[local-name() = 'span'][ @class = 'fmt-caption-label' or @class = 'fmt-element-name' or @class = 'fmt-caption-delim' or @class = 'fmt-autonum-delim']" mode="update_xml_step1" priority="3">
12154
+ <xsl:apply-templates mode="update_xml_step1"/>
12155
+ </xsl:template>
12156
+ <xsl:template match="*[local-name() = 'span'][ @class = 'fmt-caption-label' or @class = 'fmt-element-name' or @class = 'fmt-caption-delim' or @class = 'fmt-autonum-delim']" mode="update_xml_pres" priority="3">
12157
+ <xsl:apply-templates mode="update_xml_pres"/>
12158
+ </xsl:template>
12159
+
12160
+ <xsl:template match="*[local-name() = 'semx']" mode="update_xml_step1">
12161
+ <xsl:apply-templates mode="update_xml_step1"/>
12162
+ </xsl:template>
12163
+ <xsl:template match="*[local-name() = 'semx']" mode="update_xml_pres">
12164
+ <xsl:apply-templates mode="update_xml_pres"/>
12165
+ </xsl:template>
12166
+
12167
+ <xsl:template match="*[local-name() = 'fmt-xref-label']"/>
12168
+ <xsl:template match="*[local-name() = 'fmt-xref-label']" mode="update_xml_step1"/>
12169
+ <xsl:template match="*[local-name() = 'fmt-xref-label']" mode="update_xml_pres"/>
12170
+
12171
+ <!-- END: update new Presentation XML -->
12172
+
11931
12173
  <!-- =========================================================================== -->
11932
12174
  <!-- END STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
11933
12175
  <!-- =========================================================================== -->
@@ -12120,7 +12362,7 @@
12120
12362
  <xsl:variable name="non_white_space">[^\s\u3000-\u9FFF]</xsl:variable>
12121
12363
  <xsl:variable name="regex_dots_units">((\b((<xsl:value-of select="$non_white_space"/>{1,3}\.<xsl:value-of select="$non_white_space"/>+)|(<xsl:value-of select="$non_white_space"/>+\.<xsl:value-of select="$non_white_space"/>{1,3}))\b)|(\.<xsl:value-of select="$non_white_space"/>{1,3})\b)</xsl:variable>
12122
12364
 
12123
- <xsl:template match="text()[not(ancestor::*[local-name() = 'bibdata'] or ancestor::*[local-name() = 'link'][not(contains(.,' '))] or ancestor::*[local-name() = 'sourcecode'] or ancestor::*[local-name() = 'math'] or ancestor::*[local-name() = 'svg'] or starts-with(., 'http://') or starts-with(., 'https://') or starts-with(., 'www.') or normalize-space() = '' )]" name="keep_together_standard_number" mode="update_xml_enclose_keep-together_within-line">
12365
+ <xsl:template match="text()[not(ancestor::*[local-name() = 'bibdata'] or ancestor::*[local-name() = 'link'][not(contains(.,' '))] or ancestor::*[local-name() = 'sourcecode'] or ancestor::*[local-name() = 'math'] or ancestor::*[local-name() = 'svg'] or ancestor::*[local-name() = 'name'] or starts-with(., 'http://') or starts-with(., 'https://') or starts-with(., 'www.') or normalize-space() = '' )]" name="keep_together_standard_number" mode="update_xml_enclose_keep-together_within-line">
12124
12366
 
12125
12367
  <xsl:variable name="parent" select="local-name(..)"/>
12126
12368
 
@@ -12699,6 +12941,7 @@
12699
12941
  </pdf:catalog>
12700
12942
  <x:xmpmeta xmlns:x="adobe:ns:meta/">
12701
12943
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
12944
+ <!-- Commented after upgrade to Apache FOP 2.10
12702
12945
  <rdf:Description xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/" xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#" xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#" rdf:about="">
12703
12946
  <pdfaExtension:schemas>
12704
12947
  <rdf:Bag>
@@ -12731,7 +12974,7 @@
12731
12974
  </rdf:li>
12732
12975
  </rdf:Bag>
12733
12976
  </pdfaExtension:schemas>
12734
- </rdf:Description>
12977
+ </rdf:Description> -->
12735
12978
  <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" rdf:about="">
12736
12979
  <!-- Dublin Core properties go here -->
12737
12980
  <dc:title>
@@ -12778,7 +13021,7 @@
12778
13021
  <xsl:variable name="dc_description">
12779
13022
  <xsl:variable name="abstract">
12780
13023
 
12781
- <xsl:copy-of select="//*[contains(local-name(), '-standard')]/*[local-name() = 'preface']/*[local-name() = 'abstract']//text()[not(ancestor::*[local-name() = 'title'])]"/>
13024
+ <xsl:copy-of select="//*[contains(local-name(), '-standard')]/*[local-name() = 'preface']/*[local-name() = 'abstract']//text()[not(ancestor::*[local-name() = 'fmt-title']) and not(ancestor::*[local-name() = 'title']) and not(ancestor::*[local-name() = 'fmt-xref-label'])]"/>
12782
13025
 
12783
13026
  </xsl:variable>
12784
13027
  <rdf:Alt>
@@ -13323,31 +13566,123 @@
13323
13566
 
13324
13567
  <!-- END: insert cover page image -->
13325
13568
 
13326
- <xsl:variable name="regex_ja_spec">[\uFF08\uFF09]</xsl:variable>
13569
+ <!-- https://github.com/metanorma/docs/blob/main/109.adoc -->
13570
+ <xsl:variable name="regex_ja_spec_">[
13571
+ <!-- Rotate 90° clockwise -->
13572
+ \u0028 <!-- U+0028 LEFT PARENTHESIS (() -->
13573
+ \uFF08 <!-- U+FF08 FULLWIDTH LEFT PARENTHESIS (() -->
13574
+ \u0029 <!-- U+0029 RIGHT PARENTHESIS ()) -->
13575
+ \uFF09 <!-- U+FF09 FULLWIDTH RIGHT PARENTHESIS ()) -->
13576
+ \u007B <!-- U+007B LEFT CURLY BRACKET ({) -->
13577
+ \uFF5B <!-- U+FF5B FULLWIDTH LEFT CURLY BRACKET ({) -->
13578
+ \u007D <!-- U+007D RIGHT CURLY BRACKET (}) -->
13579
+ \uFF5D <!-- U+FF5D FULLWIDTH RIGHT CURLY BRACKET (}) -->
13580
+ \u3014 <!-- U+3014 LEFT TORTOISE SHELL BRACKET (〔) -->
13581
+ \u3015 <!-- U+3015 RIGHT TORTOISE SHELL BRACKET (〕) -->
13582
+ \u3010 <!-- U+3010 LEFT BLACK LENTICULAR BRACKET (【) -->
13583
+ \u3011 <!-- U+3011 RIGHT BLACK LENTICULAR BRACKET (】) -->
13584
+ \u300A <!-- U+300A LEFT DOUBLE ANGLE BRACKET (《) -->
13585
+ \u300B <!-- U+300B RIGHT DOUBLE ANGLE BRACKET (》) -->
13586
+ \uFF62 <!-- U+FF62 HALFWIDTH LEFT CORNER BRACKET (「) -->
13587
+ \u300C <!-- U+300C LEFT CORNER BRACKET (「) -->
13588
+ \uFF63 <!-- U+FF63 HALFWIDTH RIGHT CORNER BRACKET (」) -->
13589
+ \u300D <!-- U+300D RIGHT CORNER BRACKET (」) -->
13590
+ \u300E <!-- U+300E LEFT WHITE CORNER BRACKET (『) -->
13591
+ \u300F <!-- U+300F RIGHT WHITE CORNER BRACKET (』) -->
13592
+ \u005B <!-- U+005B LEFT SQUARE BRACKET ([) -->
13593
+ \uFF3B <!-- U+FF3B FULLWIDTH LEFT SQUARE BRACKET ([) -->
13594
+ \u005D <!-- U+005D RIGHT SQUARE BRACKET (]) -->
13595
+ \uFF3D <!-- U+FF3D FULLWIDTH RIGHT SQUARE BRACKET (]) -->
13596
+ \u3008 <!-- U+3008 LEFT ANGLE BRACKET (〈) -->
13597
+ \u3009 <!-- U+3009 RIGHT ANGLE BRACKET (〉) -->
13598
+ \u3016 <!-- U+3016 LEFT WHITE LENTICULAR BRACKET (〖) -->
13599
+ \u3017 <!-- U+3017 RIGHT WHITE LENTICULAR BRACKET (〗) -->
13600
+
13601
+ \u301A <!-- U+301A LEFT WHITE SQUARE BRACKET (〚) -->
13602
+ \u301B <!-- U+301B RIGHT WHITE SQUARE BRACKET (〛) -->
13603
+ \u301C <!-- U+301C WAVE DASH (〜) -->
13604
+ \u3030 <!-- U+3030 WAVY DASH (〰 )-->
13605
+ \u30FC <!-- U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK (ー) -->
13606
+ \u2329 <!-- U+2329 LEFT-POINTING ANGLE BRACKET (〈) -->
13607
+ \u232A <!-- U+232A RIGHT-POINTING ANGLE BRACKET (〉) -->
13608
+ \u3018 <!-- U+3018 LEFT WHITE TORTOISE SHELL BRACKET (〘) -->
13609
+ \u3019 <!-- U+3019 RIGHT WHITE TORTOISE SHELL BRACKET (〙) -->
13610
+ \u30A0 <!-- U+30A0 KATAKANA-HIRAGANA DOUBLE HYPHEN (゠) -->
13611
+ \uFE59 <!-- U+FE59 SMALL LEFT PARENTHESIS (﹙) -->
13612
+ \uFE5A <!-- U+FE5A SMALL RIGHT PARENTHESIS (﹚) -->
13613
+ \uFE5B <!-- U+FE5B SMALL LEFT CURLY BRACKET (﹛) -->
13614
+ \uFE5C <!-- U+FE5C SMALL RIGHT CURLY BRACKET (﹜) -->
13615
+ \uFE5D <!-- U+FE5D SMALL LEFT TORTOISE SHELL BRACKET (﹝) -->
13616
+ \uFE5E <!-- U+FE5E SMALL RIGHT TORTOISE SHELL BRACKET (﹞) -->
13617
+ \uFF5C <!-- U+FF5C FULLWIDTH VERTICAL LINE (|) -->
13618
+ \uFF5F <!-- U+FF5F FULLWIDTH LEFT WHITE PARENTHESIS (⦅) -->
13619
+ \uFF60 <!-- U+FF60 FULLWIDTH RIGHT WHITE PARENTHESIS (⦆) -->
13620
+ \uFFE3 <!-- U+FFE3 FULLWIDTH MACRON ( ̄) -->
13621
+ \uFF3F <!-- U+FF3F FULLWIDTH LOW LINE (_) -->
13622
+ \uFF5E <!-- U+FF5E FULLWIDTH TILDE (~) -->
13623
+ <!-- Rotate 180° -->
13624
+ \u309C <!-- U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK (゜) -->
13625
+ \u3002 <!-- U+3002 IDEOGRAPHIC FULL STOP (。) -->
13626
+ \uFE52 <!-- U+FE52 SMALL FULL STOP (﹒) -->
13627
+ \uFF0E <!-- U+FF0E FULLWIDTH FULL STOP (.) -->
13628
+ ]</xsl:variable>
13629
+ <xsl:variable name="regex_ja_spec"><xsl:value-of select="translate(normalize-space($regex_ja_spec_), ' ', '')"/></xsl:variable>
13327
13630
  <xsl:template name="insertVerticalChar">
13328
13631
  <xsl:param name="str"/>
13329
13632
  <xsl:param name="writing-mode">lr-tb</xsl:param>
13330
13633
  <xsl:param name="reference-orientation">90</xsl:param>
13331
- <xsl:if test="string-length($str) &gt; 0">
13332
- <fo:inline-container text-align="center" alignment-baseline="central" width="1em" margin="0" padding="0" text-indent="0mm" last-line-end-indent="0mm" start-indent="0mm" end-indent="0mm">
13333
- <xsl:if test="normalize-space($writing-mode) != ''">
13334
- <xsl:attribute name="writing-mode"><xsl:value-of select="$writing-mode"/></xsl:attribute>
13335
- <xsl:attribute name="reference-orientation">90</xsl:attribute>
13336
- </xsl:if>
13337
- <xsl:variable name="char" select="substring($str,1,1)"/>
13338
- <xsl:if test="normalize-space(java:matches(java:java.lang.String.new($char), concat('(', $regex_ja_spec, '{1,})'))) = 'true'">
13339
- <xsl:attribute name="reference-orientation">0</xsl:attribute>
13634
+ <xsl:param name="add_zero_width_space">false</xsl:param>
13635
+ <xsl:choose>
13636
+ <xsl:when test="ancestor::*[local-name() = 'span'][@class = 'norotate']">
13637
+ <xsl:value-of select="$str"/>
13638
+ </xsl:when>
13639
+ <xsl:otherwise>
13640
+ <xsl:if test="string-length($str) &gt; 0">
13641
+ <xsl:variable name="horizontal_mode" select="normalize-space(ancestor::*[local-name() = 'span'][@class = 'horizontal'] and 1 = 1)"/>
13642
+ <xsl:variable name="char" select="substring($str,1,1)"/>
13643
+ <fo:inline-container text-align="center" alignment-baseline="central" width="1em" margin="0" padding="0" text-indent="0mm" last-line-end-indent="0mm" start-indent="0mm" end-indent="0mm">
13644
+ <xsl:if test="normalize-space($writing-mode) != ''">
13645
+ <xsl:attribute name="writing-mode"><xsl:value-of select="$writing-mode"/></xsl:attribute>
13646
+ <xsl:attribute name="reference-orientation">90</xsl:attribute>
13647
+ </xsl:if>
13648
+ <xsl:if test="normalize-space(java:matches(java:java.lang.String.new($char), concat('(', $regex_ja_spec, '{1,})'))) = 'true'">
13649
+ <xsl:attribute name="reference-orientation">0</xsl:attribute>
13650
+ </xsl:if>
13651
+ <xsl:if test="$char = '゜' or $char = '。' or $char = '﹒' or $char = '.'">
13652
+ <!-- Rotate 180°:
13653
+ U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK (゜)
13654
+ U+3002 IDEOGRAPHIC FULL STOP (。)
13655
+ U+FE52 SMALL FULL STOP (﹒)
13656
+ U+FF0E FULLWIDTH FULL STOP (.)
13657
+ -->
13658
+ <xsl:attribute name="reference-orientation">-90</xsl:attribute>
13659
+ </xsl:if>
13660
+ <fo:block-container width="1em">
13661
+ <fo:block line-height="1em">
13662
+ <xsl:choose>
13663
+ <xsl:when test="$horizontal_mode = 'true'">
13664
+ <xsl:value-of select="$str"/>
13665
+ </xsl:when>
13666
+ <xsl:otherwise>
13667
+ <xsl:value-of select="$char"/>
13668
+ </xsl:otherwise>
13669
+ </xsl:choose>
13670
+ </fo:block>
13671
+ </fo:block-container>
13672
+ </fo:inline-container>
13673
+ <xsl:if test="$add_zero_width_space = 'true' and ($char = ',' or $char = '.' or $char = ' ' or $char = '·' or $char = ')' or $char = ']' or $char = '}')"><xsl:value-of select="$zero_width_space"/></xsl:if>
13674
+
13675
+ <xsl:if test="$horizontal_mode = 'false'">
13676
+ <xsl:call-template name="insertVerticalChar">
13677
+ <xsl:with-param name="str" select="substring($str, 2)"/>
13678
+ <xsl:with-param name="writing-mode" select="$writing-mode"/>
13679
+ <xsl:with-param name="reference-orientation" select="$reference-orientation"/>
13680
+ <xsl:with-param name="add_zero_width_space" select="$add_zero_width_space"/>
13681
+ </xsl:call-template>
13682
+ </xsl:if>
13340
13683
  </xsl:if>
13341
- <fo:block-container width="1em">
13342
- <fo:block line-height="1em"><xsl:value-of select="$char"/></fo:block>
13343
- </fo:block-container>
13344
- </fo:inline-container>
13345
- <xsl:call-template name="insertVerticalChar">
13346
- <xsl:with-param name="str" select="substring($str, 2)"/>
13347
- <xsl:with-param name="writing-mode" select="$writing-mode"/>
13348
- <xsl:with-param name="reference-orientation" select="$reference-orientation"/>
13349
- </xsl:call-template>
13350
- </xsl:if>
13684
+ </xsl:otherwise>
13685
+ </xsl:choose>
13351
13686
  </xsl:template>
13352
13687
 
13353
13688
  <xsl:template name="number-to-words">