metanorma-csa 2.5.6 → 2.5.7
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 +4 -4
- data/lib/isodoc/csa/csa.standard.xsl +480 -145
- data/lib/isodoc/csa/presentation_xml_convert.rb +2 -6
- data/lib/metanorma/csa/isodoc.rng +1 -1
- data/lib/metanorma/csa/version.rb +1 -1
- data/metanorma-csa.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 18ba78a1f90fd32f7d54048ebd573e8157c6247380f56bd96451747de53acc1a
|
|
4
|
+
data.tar.gz: 456b9bc251cbfb34fbe2a1e01593a2649e6a955c517dc43f2c7a2e71bb69d7a7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 813f01ee203a58a9789255a753e93ebd52af51c0b1fe8db4a3587c811a867218a1e059ced4030ae11af87d72b8cb059c422fcf99119d67de9f0e122483b03a34
|
|
7
|
+
data.tar.gz: 42135f7bd9553964fe5525a8f76e74b1ed829bcf7201be9c24299f7c461e19bd6a40dcc0080e36d72e334e6598865ae254f37796744a1c40c9c245f37c00db13
|
|
@@ -117,11 +117,11 @@
|
|
|
117
117
|
<xsl:call-template name="insertHeaderFooter"/>
|
|
118
118
|
<fo:flow flow-name="xsl-region-body">
|
|
119
119
|
|
|
120
|
-
|
|
121
|
-
<redirect:write file="contents_{java:getTime(java:java.util.Date.new())}
|
|
120
|
+
<xsl:if test="$debug = 'true'">
|
|
121
|
+
<redirect:write file="contents_.xml"> <!-- {java:getTime(java:java.util.Date.new())} -->
|
|
122
122
|
<xsl:copy-of select="$contents"/>
|
|
123
123
|
</redirect:write>
|
|
124
|
-
</xsl:if>
|
|
124
|
+
</xsl:if>
|
|
125
125
|
|
|
126
126
|
<fo:block>
|
|
127
127
|
<fo:block>The permanent and official location for Cloud Security Alliance DevSecOps is</fo:block>
|
|
@@ -389,10 +389,10 @@
|
|
|
389
389
|
<!-- ============================= -->
|
|
390
390
|
|
|
391
391
|
<!-- element with title -->
|
|
392
|
-
<xsl:template match="*[csa:title]" mode="contents">
|
|
392
|
+
<xsl:template match="*[csa:title or csa:fmt-title]" mode="contents">
|
|
393
393
|
<xsl:variable name="level">
|
|
394
394
|
<xsl:call-template name="getLevel">
|
|
395
|
-
<xsl:with-param name="depth" select="csa:title/@depth"/>
|
|
395
|
+
<xsl:with-param name="depth" select="csa:fmt-title/@depth | csa:title/@depth"/>
|
|
396
396
|
</xsl:call-template>
|
|
397
397
|
</xsl:variable>
|
|
398
398
|
|
|
@@ -669,7 +669,7 @@
|
|
|
669
669
|
<xsl:text>iVBORw0KGgoAAAANSUhEUgAAASEAAAEhCAYAAAAwHRYbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3BpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYWRhN2RlNC04YzAyLTQ1N2UtYjUwNy0zNGYzY2RjNWE2ZGQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDUyNzBENDc3NjVCMTFFQTlDMDhGMEI2ODhENjUxQkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDUyNzBENDY3NjVCMTFFQTlDMDhGMEI2ODhENjUxQkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgSW5EZXNpZ24gMTQuMCAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOmZiZjFiODZmLTIzMjMtM2U0OS1hMDMzLTVlOGQxYThlNmI1YiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmlkOjFlMzVjZTE3LWU5NzAtNDQ1OS05ZjI0LTM1NzcwZWYzMjNjMiIvPiA8L3Jk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</xsl:text>
|
|
670
670
|
</xsl:variable>
|
|
671
671
|
|
|
672
|
-
<xsl:strip-space elements="csa:xref"/>
|
|
672
|
+
<!-- <xsl:strip-space elements="csa:xref"/> -->
|
|
673
673
|
|
|
674
674
|
<xsl:variable name="namespace_full" select="namespace-uri(/*)"/> <!-- example: https://www.metanorma.org/ns/iso -->
|
|
675
675
|
<xsl:variable name="root_element" select="local-name(/*)"/> <!-- example: iso-standard -->
|
|
@@ -1618,6 +1618,10 @@
|
|
|
1618
1618
|
|
|
1619
1619
|
<xsl:template name="refine_termnote-name-style">
|
|
1620
1620
|
|
|
1621
|
+
<!-- <xsl:if test="$namespace = 'ieee'">
|
|
1622
|
+
<xsl:attribute name="padding-right">0mm</xsl:attribute>
|
|
1623
|
+
</xsl:if> -->
|
|
1624
|
+
|
|
1621
1625
|
</xsl:template>
|
|
1622
1626
|
|
|
1623
1627
|
<xsl:attribute-set name="termnote-p-style">
|
|
@@ -2308,9 +2312,21 @@
|
|
|
2308
2312
|
<xsl:template name="processTables_Contents">
|
|
2309
2313
|
<tables>
|
|
2310
2314
|
<xsl:for-each select="//*[local-name() = 'table'][not(ancestor::*[local-name() = 'metanorma-extension'])][@id and *[local-name() = 'name'] and normalize-space(@id) != '']">
|
|
2311
|
-
<
|
|
2312
|
-
<xsl:
|
|
2313
|
-
|
|
2315
|
+
<xsl:choose>
|
|
2316
|
+
<xsl:when test="*[local-name() = 'fmt-name']">
|
|
2317
|
+
<xsl:variable name="fmt_name">
|
|
2318
|
+
<xsl:apply-templates select="*[local-name() = 'fmt-name']" mode="update_xml_step1"/>
|
|
2319
|
+
</xsl:variable>
|
|
2320
|
+
<table id="{@id}" alt-text="{normalize-space($fmt_name)}">
|
|
2321
|
+
<xsl:copy-of select="$fmt_name"/>
|
|
2322
|
+
</table>
|
|
2323
|
+
</xsl:when>
|
|
2324
|
+
<xsl:otherwise>
|
|
2325
|
+
<table id="{@id}" alt-text="{*[local-name() = 'name']}">
|
|
2326
|
+
<xsl:copy-of select="*[local-name() = 'name']"/>
|
|
2327
|
+
</table>
|
|
2328
|
+
</xsl:otherwise>
|
|
2329
|
+
</xsl:choose>
|
|
2314
2330
|
</xsl:for-each>
|
|
2315
2331
|
</tables>
|
|
2316
2332
|
</xsl:template>
|
|
@@ -2318,9 +2334,21 @@
|
|
|
2318
2334
|
<xsl:template name="processFigures_Contents">
|
|
2319
2335
|
<figures>
|
|
2320
2336
|
<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) != '']">
|
|
2321
|
-
<
|
|
2322
|
-
<xsl:
|
|
2323
|
-
|
|
2337
|
+
<xsl:choose>
|
|
2338
|
+
<xsl:when test="*[local-name() = 'fmt-name']">
|
|
2339
|
+
<xsl:variable name="fmt_name">
|
|
2340
|
+
<xsl:apply-templates select="*[local-name() = 'fmt-name']" mode="update_xml_step1"/>
|
|
2341
|
+
</xsl:variable>
|
|
2342
|
+
<figure id="{@id}" alt-text="{normalize-space($fmt_name)}">
|
|
2343
|
+
<xsl:copy-of select="$fmt_name"/>
|
|
2344
|
+
</figure>
|
|
2345
|
+
</xsl:when>
|
|
2346
|
+
<xsl:otherwise>
|
|
2347
|
+
<figure id="{@id}" alt-text="{*[local-name() = 'name']}">
|
|
2348
|
+
<xsl:copy-of select="*[local-name() = 'name']"/>
|
|
2349
|
+
</figure>
|
|
2350
|
+
</xsl:otherwise>
|
|
2351
|
+
</xsl:choose>
|
|
2324
2352
|
</xsl:for-each>
|
|
2325
2353
|
</figures>
|
|
2326
2354
|
</xsl:template>
|
|
@@ -7068,6 +7096,8 @@
|
|
|
7068
7096
|
|
|
7069
7097
|
<fo:inline xsl:use-attribute-sets="note-name-style" role="SKIP">
|
|
7070
7098
|
|
|
7099
|
+
<xsl:apply-templates select="*[local-name() = 'name']/*[local-name() = 'tab']" mode="tab"/>
|
|
7100
|
+
|
|
7071
7101
|
<xsl:call-template name="refine_note-name-style"/>
|
|
7072
7102
|
|
|
7073
7103
|
<!-- if 'p' contains all text in 'add' first and last elements in first p are 'add' -->
|
|
@@ -7124,10 +7154,6 @@
|
|
|
7124
7154
|
|
|
7125
7155
|
<fo:inline xsl:use-attribute-sets="termnote-name-style">
|
|
7126
7156
|
|
|
7127
|
-
<xsl:if test="not(*[local-name() = 'name']/following-sibling::node()[1][self::text()][normalize-space()=''])">
|
|
7128
|
-
<xsl:attribute name="padding-right">1mm</xsl:attribute>
|
|
7129
|
-
</xsl:if>
|
|
7130
|
-
|
|
7131
7157
|
<xsl:call-template name="refine_termnote-name-style"/>
|
|
7132
7158
|
|
|
7133
7159
|
<!-- if 'p' contains all text in 'add' first and last elements in first p are 'add' -->
|
|
@@ -7274,17 +7300,29 @@
|
|
|
7274
7300
|
<!-- Example: Dimensions in millimeters -->
|
|
7275
7301
|
<xsl:apply-templates select="*[local-name() = 'note'][@type = 'units']"/>
|
|
7276
7302
|
|
|
7303
|
+
<xsl:variable name="show_figure_key_in_block_container">
|
|
7304
|
+
true
|
|
7305
|
+
</xsl:variable>
|
|
7306
|
+
|
|
7277
7307
|
<fo:block xsl:use-attribute-sets="figure-style" role="SKIP">
|
|
7278
7308
|
<xsl:apply-templates select="node()[not(local-name() = 'name') and not(local-name() = 'note' and @type = 'units')]"/>
|
|
7279
7309
|
</fo:block>
|
|
7280
|
-
|
|
7281
|
-
|
|
7282
|
-
|
|
7283
|
-
|
|
7310
|
+
|
|
7311
|
+
<xsl:if test="normalize-space($show_figure_key_in_block_container) = 'true'">
|
|
7312
|
+
<xsl:call-template name="showFigureKey"/>
|
|
7313
|
+
</xsl:if>
|
|
7284
7314
|
|
|
7285
7315
|
<xsl:apply-templates select="*[local-name() = 'name']"/> <!-- show figure's name AFTER image -->
|
|
7286
7316
|
|
|
7287
7317
|
</fo:block-container>
|
|
7318
|
+
|
|
7319
|
+
</xsl:template>
|
|
7320
|
+
|
|
7321
|
+
<xsl:template name="showFigureKey">
|
|
7322
|
+
<xsl:for-each select="*[local-name() = 'note'][not(@type = 'units')]">
|
|
7323
|
+
<xsl:call-template name="note"/>
|
|
7324
|
+
</xsl:for-each>
|
|
7325
|
+
<xsl:call-template name="fn_display_figure"/>
|
|
7288
7326
|
</xsl:template>
|
|
7289
7327
|
|
|
7290
7328
|
<xsl:template match="*[local-name() = 'figure'][@class = 'pseudocode']">
|
|
@@ -7480,6 +7518,22 @@
|
|
|
7480
7518
|
</xsl:if>
|
|
7481
7519
|
</xsl:template>
|
|
7482
7520
|
|
|
7521
|
+
<xsl:template name="getImageSrc">
|
|
7522
|
+
<xsl:choose>
|
|
7523
|
+
<xsl:when test="not(starts-with(@src, 'data:'))">
|
|
7524
|
+
<xsl:choose>
|
|
7525
|
+
<xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
|
|
7526
|
+
<xsl:value-of select="@src"/>
|
|
7527
|
+
</xsl:when>
|
|
7528
|
+
<xsl:otherwise>
|
|
7529
|
+
<xsl:value-of select="concat($basepath, @src)"/>
|
|
7530
|
+
</xsl:otherwise>
|
|
7531
|
+
</xsl:choose>
|
|
7532
|
+
</xsl:when>
|
|
7533
|
+
<xsl:otherwise><xsl:value-of select="@src"/></xsl:otherwise>
|
|
7534
|
+
</xsl:choose>
|
|
7535
|
+
</xsl:template>
|
|
7536
|
+
|
|
7483
7537
|
<xsl:template name="getImageScale">
|
|
7484
7538
|
<xsl:param name="indent"/>
|
|
7485
7539
|
<xsl:variable name="indent_left">
|
|
@@ -7489,19 +7543,7 @@
|
|
|
7489
7543
|
</xsl:choose>
|
|
7490
7544
|
</xsl:variable>
|
|
7491
7545
|
<xsl:variable name="img_src">
|
|
7492
|
-
<xsl:
|
|
7493
|
-
<xsl:when test="not(starts-with(@src, 'data:'))">
|
|
7494
|
-
<xsl:choose>
|
|
7495
|
-
<xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
|
|
7496
|
-
<xsl:value-of select="@src"/>
|
|
7497
|
-
</xsl:when>
|
|
7498
|
-
<xsl:otherwise>
|
|
7499
|
-
<xsl:value-of select="concat($basepath, @src)"/>
|
|
7500
|
-
</xsl:otherwise>
|
|
7501
|
-
</xsl:choose>
|
|
7502
|
-
</xsl:when>
|
|
7503
|
-
<xsl:otherwise><xsl:value-of select="@src"/></xsl:otherwise>
|
|
7504
|
-
</xsl:choose>
|
|
7546
|
+
<xsl:call-template name="getImageSrc"/>
|
|
7505
7547
|
</xsl:variable>
|
|
7506
7548
|
|
|
7507
7549
|
<xsl:variable name="image_width_effective">
|
|
@@ -7509,10 +7551,15 @@
|
|
|
7509
7551
|
<xsl:value-of select="$width_effective - number($indent_left)"/>
|
|
7510
7552
|
|
|
7511
7553
|
</xsl:variable>
|
|
7554
|
+
<xsl:variable name="image_height_effective" select="$height_effective - number($indent_left)"/>
|
|
7512
7555
|
<!-- <xsl:message>width_effective=<xsl:value-of select="$width_effective"/></xsl:message>
|
|
7513
7556
|
<xsl:message>indent_left=<xsl:value-of select="$indent_left"/></xsl:message>
|
|
7514
7557
|
<xsl:message>image_width_effective=<xsl:value-of select="$image_width_effective"/> for <xsl:value-of select="ancestor::ogc:p[1]/@id"/></xsl:message> -->
|
|
7515
|
-
<xsl:variable name="scale"
|
|
7558
|
+
<xsl:variable name="scale">
|
|
7559
|
+
|
|
7560
|
+
<xsl:value-of select="java:org.metanorma.fop.utils.ImageUtils.getImageScale($img_src, $image_width_effective, $height_effective)"/>
|
|
7561
|
+
|
|
7562
|
+
</xsl:variable>
|
|
7516
7563
|
<xsl:value-of select="$scale"/>
|
|
7517
7564
|
</xsl:template>
|
|
7518
7565
|
|
|
@@ -8065,20 +8112,48 @@
|
|
|
8065
8112
|
<xsl:template match="*[local-name() = 'emf']"/>
|
|
8066
8113
|
|
|
8067
8114
|
<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">
|
|
8115
|
+
<xsl:if test="not(following-sibling::*[1][local-name() = 'fmt-name'])">
|
|
8116
|
+
<xsl:apply-templates mode="contents"/>
|
|
8117
|
+
<xsl:text> </xsl:text>
|
|
8118
|
+
</xsl:if>
|
|
8119
|
+
</xsl:template>
|
|
8120
|
+
|
|
8121
|
+
<xsl:template match="*[local-name() = 'title'][following-sibling::*[1][local-name() = 'fmt-title']]" mode="contents"/>
|
|
8122
|
+
|
|
8123
|
+
<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">
|
|
8068
8124
|
<xsl:apply-templates mode="contents"/>
|
|
8069
8125
|
<xsl:text> </xsl:text>
|
|
8070
8126
|
</xsl:template>
|
|
8071
8127
|
|
|
8072
8128
|
<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">
|
|
8129
|
+
<xsl:if test="not(following-sibling::*[1][local-name() = 'fmt-name'])">
|
|
8130
|
+
<xsl:apply-templates mode="bookmarks"/>
|
|
8131
|
+
<xsl:text> </xsl:text>
|
|
8132
|
+
</xsl:if>
|
|
8133
|
+
</xsl:template>
|
|
8134
|
+
|
|
8135
|
+
<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">
|
|
8073
8136
|
<xsl:apply-templates mode="bookmarks"/>
|
|
8074
8137
|
<xsl:text> </xsl:text>
|
|
8075
8138
|
</xsl:template>
|
|
8076
8139
|
|
|
8077
8140
|
<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">
|
|
8141
|
+
<xsl:if test="not(../following-sibling::*[1][local-name() = 'fmt-name'])">
|
|
8142
|
+
<xsl:value-of select="."/>
|
|
8143
|
+
</xsl:if>
|
|
8144
|
+
</xsl:template>
|
|
8145
|
+
|
|
8146
|
+
<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">
|
|
8078
8147
|
<xsl:value-of select="."/>
|
|
8079
8148
|
</xsl:template>
|
|
8080
8149
|
|
|
8081
8150
|
<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">
|
|
8151
|
+
<xsl:if test="not(../following-sibling::*[1][local-name() = 'fmt-name'])">
|
|
8152
|
+
<xsl:value-of select="."/>
|
|
8153
|
+
</xsl:if>
|
|
8154
|
+
</xsl:template>
|
|
8155
|
+
|
|
8156
|
+
<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">
|
|
8082
8157
|
<xsl:value-of select="."/>
|
|
8083
8158
|
</xsl:template>
|
|
8084
8159
|
|
|
@@ -8099,7 +8174,7 @@
|
|
|
8099
8174
|
</xsl:template>
|
|
8100
8175
|
|
|
8101
8176
|
<!-- special case: ignore section-title if @depth different than @depth of parent clause, or @depth of parent clause = 1 -->
|
|
8102
|
-
<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"/>
|
|
8177
|
+
<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"/>
|
|
8103
8178
|
|
|
8104
8179
|
<xsl:template match="*[local-name() = 'p'][@type = 'floating-title' or @type = 'section-title']" priority="2" name="contents_section-title" mode="contents">
|
|
8105
8180
|
<xsl:variable name="level">
|
|
@@ -8111,6 +8186,9 @@
|
|
|
8111
8186
|
<xsl:variable name="section">
|
|
8112
8187
|
<xsl:choose>
|
|
8113
8188
|
<xsl:when test="@type = 'section-title'"/>
|
|
8189
|
+
<xsl:when test="*[local-name() = 'span'][@class = 'fmt-caption-delim']">
|
|
8190
|
+
<xsl:value-of select="*[local-name() = 'span'][@class = 'fmt-caption-delim'][1]/preceding-sibling::node()"/>
|
|
8191
|
+
</xsl:when>
|
|
8114
8192
|
<xsl:otherwise>
|
|
8115
8193
|
<xsl:value-of select="*[local-name() = 'tab'][1]/preceding-sibling::node()"/>
|
|
8116
8194
|
</xsl:otherwise>
|
|
@@ -8133,6 +8211,19 @@
|
|
|
8133
8211
|
|
|
8134
8212
|
<xsl:variable name="title">
|
|
8135
8213
|
<xsl:choose>
|
|
8214
|
+
<!-- https://github.com/metanorma/mn-native-pdf/issues/770 -->
|
|
8215
|
+
<xsl:when test="*[local-name() = 'span'][@class = 'fmt-caption-delim']">
|
|
8216
|
+
<xsl:choose>
|
|
8217
|
+
<xsl:when test="@type = 'section-title'">
|
|
8218
|
+
<xsl:value-of select="*[local-name() = 'span'][@class = 'fmt-caption-delim'][1]/preceding-sibling::node()"/>
|
|
8219
|
+
<xsl:text>: </xsl:text>
|
|
8220
|
+
<xsl:copy-of select="*[local-name() = 'span'][@class = 'fmt-caption-delim'][1]/following-sibling::node()[not(local-name = 'fmt-xref-label')]"/>
|
|
8221
|
+
</xsl:when>
|
|
8222
|
+
<xsl:otherwise>
|
|
8223
|
+
<xsl:copy-of select="*[local-name() = 'span'][@class = 'fmt-caption-delim'][1]/following-sibling::node()[not(local-name = 'fmt-xref-label')]"/>
|
|
8224
|
+
</xsl:otherwise>
|
|
8225
|
+
</xsl:choose>
|
|
8226
|
+
</xsl:when>
|
|
8136
8227
|
<xsl:when test="*[local-name() = 'tab']">
|
|
8137
8228
|
<xsl:choose>
|
|
8138
8229
|
<xsl:when test="@type = 'section-title'">
|
|
@@ -8168,7 +8259,7 @@
|
|
|
8168
8259
|
<xsl:apply-templates mode="bookmarks"/>
|
|
8169
8260
|
</xsl:template>
|
|
8170
8261
|
|
|
8171
|
-
<xsl:template match="*[local-name() = 'title' or local-name() = 'name']//*[local-name() = 'stem']" mode="contents">
|
|
8262
|
+
<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">
|
|
8172
8263
|
<xsl:apply-templates select="."/>
|
|
8173
8264
|
</xsl:template>
|
|
8174
8265
|
|
|
@@ -8181,6 +8272,10 @@
|
|
|
8181
8272
|
<xsl:apply-templates mode="contents"/>
|
|
8182
8273
|
</xsl:template>
|
|
8183
8274
|
|
|
8275
|
+
<xsl:template match="*[local-name() = 'semx']" mode="contents">
|
|
8276
|
+
<xsl:apply-templates mode="contents"/>
|
|
8277
|
+
</xsl:template>
|
|
8278
|
+
|
|
8184
8279
|
<xsl:template match="*[local-name() = 'stem']" mode="bookmarks">
|
|
8185
8280
|
<xsl:apply-templates mode="bookmarks"/>
|
|
8186
8281
|
</xsl:template>
|
|
@@ -8190,9 +8285,14 @@
|
|
|
8190
8285
|
<xsl:apply-templates mode="bookmarks"/>
|
|
8191
8286
|
</xsl:template>
|
|
8192
8287
|
|
|
8288
|
+
<xsl:template match="*[local-name() = 'semx']" mode="bookmarks">
|
|
8289
|
+
<xsl:apply-templates mode="bookmarks"/>
|
|
8290
|
+
</xsl:template>
|
|
8291
|
+
|
|
8193
8292
|
<!-- Bookmarks -->
|
|
8194
8293
|
<xsl:template name="addBookmarks">
|
|
8195
8294
|
<xsl:param name="contents"/>
|
|
8295
|
+
<xsl:param name="contents_addon"/>
|
|
8196
8296
|
<xsl:variable name="contents_nodes" select="xalan:nodeset($contents)"/>
|
|
8197
8297
|
<xsl:if test="$contents_nodes//item">
|
|
8198
8298
|
<fo:bookmark-tree>
|
|
@@ -8290,6 +8390,9 @@
|
|
|
8290
8390
|
</xsl:otherwise>
|
|
8291
8391
|
</xsl:choose>
|
|
8292
8392
|
|
|
8393
|
+
<!-- for $namespace = 'nist-sp' $namespace = 'ogc' $namespace = 'ogc-white-paper' -->
|
|
8394
|
+
<xsl:copy-of select="$contents_addon"/>
|
|
8395
|
+
|
|
8293
8396
|
</fo:bookmark-tree>
|
|
8294
8397
|
</xsl:if>
|
|
8295
8398
|
</xsl:template>
|
|
@@ -8443,6 +8546,16 @@
|
|
|
8443
8546
|
<!-- ====== -->
|
|
8444
8547
|
<!-- ====== -->
|
|
8445
8548
|
<xsl:template match="*[local-name() = 'title']" mode="contents_item">
|
|
8549
|
+
<xsl:param name="mode">bookmarks</xsl:param>
|
|
8550
|
+
<xsl:if test="not(following-sibling::*[1][local-name() = 'fmt-title'])">
|
|
8551
|
+
<xsl:apply-templates mode="contents_item">
|
|
8552
|
+
<xsl:with-param name="mode" select="$mode"/>
|
|
8553
|
+
</xsl:apply-templates>
|
|
8554
|
+
<!-- <xsl:text> </xsl:text> -->
|
|
8555
|
+
</xsl:if>
|
|
8556
|
+
</xsl:template>
|
|
8557
|
+
|
|
8558
|
+
<xsl:template match="*[local-name() = 'fmt-title']" mode="contents_item">
|
|
8446
8559
|
<xsl:param name="mode">bookmarks</xsl:param>
|
|
8447
8560
|
<xsl:apply-templates mode="contents_item">
|
|
8448
8561
|
<xsl:with-param name="mode" select="$mode"/>
|
|
@@ -8450,12 +8563,38 @@
|
|
|
8450
8563
|
<!-- <xsl:text> </xsl:text> -->
|
|
8451
8564
|
</xsl:template>
|
|
8452
8565
|
|
|
8566
|
+
<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">
|
|
8567
|
+
<xsl:apply-templates mode="contents_item"/>
|
|
8568
|
+
</xsl:template>
|
|
8569
|
+
|
|
8570
|
+
<xsl:template match="*[local-name() = 'semx']" mode="contents_item">
|
|
8571
|
+
<xsl:apply-templates mode="contents_item"/>
|
|
8572
|
+
</xsl:template>
|
|
8573
|
+
|
|
8574
|
+
<xsl:template match="*[local-name() = 'fmt-xref-label']" mode="contents_item"/>
|
|
8575
|
+
|
|
8453
8576
|
<xsl:template name="getSection">
|
|
8454
|
-
<xsl:
|
|
8577
|
+
<xsl:choose>
|
|
8578
|
+
<xsl:when test="*[local-name() = 'fmt-title']">
|
|
8579
|
+
<xsl:variable name="fmt_title_section">
|
|
8580
|
+
<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')]"/>
|
|
8581
|
+
</xsl:variable>
|
|
8582
|
+
<xsl:value-of select="normalize-space($fmt_title_section)"/>
|
|
8583
|
+
</xsl:when>
|
|
8584
|
+
<xsl:otherwise>
|
|
8585
|
+
<xsl:value-of select="*[local-name() = 'title']/*[local-name() = 'tab'][1]/preceding-sibling::node()"/>
|
|
8586
|
+
</xsl:otherwise>
|
|
8587
|
+
</xsl:choose>
|
|
8455
8588
|
</xsl:template>
|
|
8456
8589
|
|
|
8457
8590
|
<xsl:template name="getName">
|
|
8458
8591
|
<xsl:choose>
|
|
8592
|
+
<xsl:when test="*[local-name() = 'fmt-title']//*[local-name() = 'span'][@class = 'fmt-caption-delim'][*[local-name() = 'tab']]">
|
|
8593
|
+
<xsl:copy-of select="*[local-name() = 'fmt-title']//*[local-name() = 'span'][@class = 'fmt-caption-delim'][*[local-name() = 'tab']][1]/following-sibling::node()"/>
|
|
8594
|
+
</xsl:when>
|
|
8595
|
+
<xsl:when test="*[local-name() = 'fmt-title']">
|
|
8596
|
+
<xsl:copy-of select="*[local-name() = 'fmt-title']/node()"/>
|
|
8597
|
+
</xsl:when>
|
|
8459
8598
|
<xsl:when test="*[local-name() = 'title']/*[local-name() = 'tab']">
|
|
8460
8599
|
<xsl:copy-of select="*[local-name() = 'title']/*[local-name() = 'tab'][1]/following-sibling::node()"/>
|
|
8461
8600
|
</xsl:when>
|
|
@@ -8562,6 +8701,15 @@
|
|
|
8562
8701
|
</xsl:template>
|
|
8563
8702
|
|
|
8564
8703
|
<xsl:template match="*[local-name() = 'name']" mode="contents_item">
|
|
8704
|
+
<xsl:param name="mode">bookmarks</xsl:param>
|
|
8705
|
+
<xsl:if test="not(following-sibling::*[1][local-name() = 'fmt-name'])">
|
|
8706
|
+
<xsl:apply-templates mode="contents_item">
|
|
8707
|
+
<xsl:with-param name="mode" select="$mode"/>
|
|
8708
|
+
</xsl:apply-templates>
|
|
8709
|
+
</xsl:if>
|
|
8710
|
+
</xsl:template>
|
|
8711
|
+
|
|
8712
|
+
<xsl:template match="*[local-name() = 'fmt-name']" mode="contents_item">
|
|
8565
8713
|
<xsl:param name="mode">bookmarks</xsl:param>
|
|
8566
8714
|
<xsl:apply-templates mode="contents_item">
|
|
8567
8715
|
<xsl:with-param name="mode" select="$mode"/>
|
|
@@ -9400,107 +9548,108 @@
|
|
|
9400
9548
|
-->
|
|
9401
9549
|
<xsl:template match="*[local-name() = 'example']">
|
|
9402
9550
|
|
|
9403
|
-
|
|
9551
|
+
<fo:block-container id="{@id}" xsl:use-attribute-sets="example-style" role="SKIP">
|
|
9404
9552
|
|
|
9405
|
-
|
|
9406
|
-
|
|
9407
|
-
<xsl:call-template name="refine_example-style"/>
|
|
9553
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
|
9408
9554
|
|
|
9409
|
-
|
|
9410
|
-
<xsl:if test=".//*[local-name() = 'table'] or .//*[local-name() = 'dl'] or *[not(local-name() = 'name')][1][local-name() = 'sourcecode']">block</xsl:if>
|
|
9411
|
-
block
|
|
9412
|
-
</xsl:variable>
|
|
9555
|
+
<xsl:call-template name="refine_example-style"/>
|
|
9413
9556
|
|
|
9414
|
-
|
|
9557
|
+
<xsl:variable name="fo_element">
|
|
9558
|
+
<xsl:if test=".//*[local-name() = 'table'] or .//*[local-name() = 'dl'] or *[not(local-name() = 'name')][1][local-name() = 'sourcecode']">block</xsl:if>
|
|
9559
|
+
block
|
|
9560
|
+
</xsl:variable>
|
|
9415
9561
|
|
|
9416
|
-
|
|
9562
|
+
<fo:block-container margin-left="0mm" role="SKIP">
|
|
9417
9563
|
|
|
9418
|
-
|
|
9564
|
+
<xsl:choose>
|
|
9419
9565
|
|
|
9420
|
-
|
|
9421
|
-
<fo:block>
|
|
9422
|
-
<xsl:apply-templates select="*[local-name()='name']">
|
|
9423
|
-
<xsl:with-param name="fo_element" select="$fo_element"/>
|
|
9424
|
-
</xsl:apply-templates>
|
|
9425
|
-
</fo:block>
|
|
9566
|
+
<xsl:when test="contains(normalize-space($fo_element), 'block')">
|
|
9426
9567
|
|
|
9427
|
-
|
|
9428
|
-
|
|
9429
|
-
|
|
9430
|
-
<xsl:apply-templates select="node()[not(local-name() = 'name')]">
|
|
9568
|
+
<!-- display name 'EXAMPLE' in a separate block -->
|
|
9569
|
+
<fo:block>
|
|
9570
|
+
<xsl:apply-templates select="*[local-name()='name']">
|
|
9431
9571
|
<xsl:with-param name="fo_element" select="$fo_element"/>
|
|
9432
9572
|
</xsl:apply-templates>
|
|
9573
|
+
</fo:block>
|
|
9574
|
+
|
|
9575
|
+
<fo:block-container xsl:use-attribute-sets="example-body-style" role="SKIP">
|
|
9576
|
+
<fo:block-container margin-left="0mm" margin-right="0mm" role="SKIP">
|
|
9577
|
+
<xsl:variable name="example_body">
|
|
9578
|
+
<xsl:apply-templates select="node()[not(local-name() = 'name')]">
|
|
9579
|
+
<xsl:with-param name="fo_element" select="$fo_element"/>
|
|
9580
|
+
</xsl:apply-templates>
|
|
9581
|
+
</xsl:variable>
|
|
9582
|
+
<xsl:choose>
|
|
9583
|
+
<xsl:when test="xalan:nodeset($example_body)/*">
|
|
9584
|
+
<xsl:copy-of select="$example_body"/>
|
|
9585
|
+
</xsl:when>
|
|
9586
|
+
<xsl:otherwise><fo:block/><!-- prevent empty block-container --></xsl:otherwise>
|
|
9587
|
+
</xsl:choose>
|
|
9588
|
+
</fo:block-container>
|
|
9589
|
+
</fo:block-container>
|
|
9590
|
+
</xsl:when> <!-- end block -->
|
|
9591
|
+
|
|
9592
|
+
<xsl:when test="contains(normalize-space($fo_element), 'list')">
|
|
9593
|
+
|
|
9594
|
+
<xsl:variable name="provisional_distance_between_starts_">
|
|
9595
|
+
7
|
|
9433
9596
|
</xsl:variable>
|
|
9434
|
-
<xsl:
|
|
9435
|
-
|
|
9436
|
-
|
|
9437
|
-
|
|
9438
|
-
|
|
9439
|
-
</xsl:choose>
|
|
9440
|
-
</fo:block-container>
|
|
9441
|
-
</fo:block-container>
|
|
9442
|
-
</xsl:when> <!-- end block -->
|
|
9597
|
+
<xsl:variable name="provisional_distance_between_starts" select="normalize-space($provisional_distance_between_starts_)"/>
|
|
9598
|
+
<xsl:variable name="indent_">
|
|
9599
|
+
0
|
|
9600
|
+
</xsl:variable>
|
|
9601
|
+
<xsl:variable name="indent" select="normalize-space($indent_)"/>
|
|
9443
9602
|
|
|
9444
|
-
|
|
9603
|
+
<fo:list-block provisional-distance-between-starts="{$provisional_distance_between_starts}mm">
|
|
9604
|
+
<fo:list-item>
|
|
9605
|
+
<fo:list-item-label start-indent="{$indent}mm" end-indent="label-end()">
|
|
9606
|
+
<fo:block>
|
|
9607
|
+
<xsl:apply-templates select="*[local-name()='name']">
|
|
9608
|
+
<xsl:with-param name="fo_element">block</xsl:with-param>
|
|
9609
|
+
</xsl:apply-templates>
|
|
9610
|
+
</fo:block>
|
|
9611
|
+
</fo:list-item-label>
|
|
9612
|
+
<fo:list-item-body start-indent="body-start()">
|
|
9613
|
+
<fo:block>
|
|
9614
|
+
<xsl:apply-templates select="node()[not(local-name() = 'name')]">
|
|
9615
|
+
<xsl:with-param name="fo_element" select="$fo_element"/>
|
|
9616
|
+
</xsl:apply-templates>
|
|
9617
|
+
</fo:block>
|
|
9618
|
+
</fo:list-item-body>
|
|
9619
|
+
</fo:list-item>
|
|
9620
|
+
</fo:list-block>
|
|
9621
|
+
</xsl:when> <!-- end list -->
|
|
9445
9622
|
|
|
9446
|
-
|
|
9447
|
-
7
|
|
9448
|
-
</xsl:variable>
|
|
9449
|
-
<xsl:variable name="provisional_distance_between_starts" select="normalize-space($provisional_distance_between_starts_)"/>
|
|
9450
|
-
<xsl:variable name="indent_">
|
|
9451
|
-
0
|
|
9452
|
-
</xsl:variable>
|
|
9453
|
-
<xsl:variable name="indent" select="normalize-space($indent_)"/>
|
|
9623
|
+
<xsl:otherwise> <!-- inline -->
|
|
9454
9624
|
|
|
9455
|
-
|
|
9456
|
-
|
|
9457
|
-
|
|
9458
|
-
|
|
9459
|
-
|
|
9460
|
-
|
|
9461
|
-
|
|
9462
|
-
</fo:block>
|
|
9463
|
-
</fo:list-item-label>
|
|
9464
|
-
<fo:list-item-body start-indent="body-start()">
|
|
9465
|
-
<fo:block>
|
|
9466
|
-
<xsl:apply-templates select="node()[not(local-name() = 'name')]">
|
|
9625
|
+
<!-- display 'EXAMPLE' and first element in the same line -->
|
|
9626
|
+
<fo:block>
|
|
9627
|
+
<xsl:apply-templates select="*[local-name()='name']">
|
|
9628
|
+
<xsl:with-param name="fo_element" select="$fo_element"/>
|
|
9629
|
+
</xsl:apply-templates>
|
|
9630
|
+
<fo:inline>
|
|
9631
|
+
<xsl:apply-templates select="*[not(local-name() = 'name')][1]">
|
|
9467
9632
|
<xsl:with-param name="fo_element" select="$fo_element"/>
|
|
9468
9633
|
</xsl:apply-templates>
|
|
9469
|
-
</fo:
|
|
9470
|
-
</fo:
|
|
9471
|
-
</fo:list-item>
|
|
9472
|
-
</fo:list-block>
|
|
9473
|
-
</xsl:when> <!-- end list -->
|
|
9474
|
-
|
|
9475
|
-
<xsl:otherwise> <!-- inline -->
|
|
9634
|
+
</fo:inline>
|
|
9635
|
+
</fo:block>
|
|
9476
9636
|
|
|
9477
|
-
|
|
9478
|
-
|
|
9479
|
-
|
|
9480
|
-
|
|
9481
|
-
|
|
9482
|
-
|
|
9483
|
-
|
|
9484
|
-
|
|
9485
|
-
|
|
9486
|
-
|
|
9487
|
-
|
|
9637
|
+
<xsl:if test="*[not(local-name() = 'name')][position() > 1]">
|
|
9638
|
+
<!-- display further elements in blocks -->
|
|
9639
|
+
<fo:block-container xsl:use-attribute-sets="example-body-style" role="SKIP">
|
|
9640
|
+
<fo:block-container margin-left="0mm" margin-right="0mm" role="SKIP">
|
|
9641
|
+
<xsl:apply-templates select="*[not(local-name() = 'name')][position() > 1]">
|
|
9642
|
+
<xsl:with-param name="fo_element" select="'block'"/>
|
|
9643
|
+
</xsl:apply-templates>
|
|
9644
|
+
</fo:block-container>
|
|
9645
|
+
</fo:block-container>
|
|
9646
|
+
</xsl:if>
|
|
9647
|
+
</xsl:otherwise> <!-- end inline -->
|
|
9488
9648
|
|
|
9489
|
-
|
|
9490
|
-
|
|
9491
|
-
|
|
9492
|
-
<fo:block-container margin-left="0mm" margin-right="0mm" role="SKIP">
|
|
9493
|
-
<xsl:apply-templates select="*[not(local-name() = 'name')][position() > 1]">
|
|
9494
|
-
<xsl:with-param name="fo_element" select="'block'"/>
|
|
9495
|
-
</xsl:apply-templates>
|
|
9496
|
-
</fo:block-container>
|
|
9497
|
-
</fo:block-container>
|
|
9498
|
-
</xsl:if>
|
|
9499
|
-
</xsl:otherwise> <!-- end inline -->
|
|
9649
|
+
</xsl:choose>
|
|
9650
|
+
</fo:block-container>
|
|
9651
|
+
</fo:block-container>
|
|
9500
9652
|
|
|
9501
|
-
</xsl:choose>
|
|
9502
|
-
</fo:block-container>
|
|
9503
|
-
</fo:block-container>
|
|
9504
9653
|
</xsl:template>
|
|
9505
9654
|
|
|
9506
9655
|
<xsl:template match="*[local-name() = 'example']/*[local-name() = 'name']">
|
|
@@ -9877,6 +10026,15 @@
|
|
|
9877
10026
|
|
|
9878
10027
|
</xsl:template> <!-- tab -->
|
|
9879
10028
|
|
|
10029
|
+
<xsl:template match="*[local-name() = 'note']/*[local-name() = 'name']/*[local-name() = 'tab']" priority="2"/>
|
|
10030
|
+
<xsl:template match="*[local-name() = 'termnote']/*[local-name() = 'name']/*[local-name() = 'tab']" priority="2"/>
|
|
10031
|
+
|
|
10032
|
+
<xsl:template match="*[local-name() = 'note']/*[local-name() = 'name']/*[local-name() = 'tab']" mode="tab">
|
|
10033
|
+
|
|
10034
|
+
<xsl:attribute name="padding-right">4mm</xsl:attribute>
|
|
10035
|
+
|
|
10036
|
+
</xsl:template>
|
|
10037
|
+
|
|
9880
10038
|
<xsl:template name="insertNonBreakSpaces">
|
|
9881
10039
|
<xsl:param name="count"/>
|
|
9882
10040
|
<xsl:if test="$count > 0">
|
|
@@ -11399,6 +11557,10 @@
|
|
|
11399
11557
|
<!-- - Remove semantic xml part -->
|
|
11400
11558
|
<!-- - Remove image/emf (EMF vector image for Word) -->
|
|
11401
11559
|
<!-- - add @id, redundant for table auto-layout algorithm -->
|
|
11560
|
+
<!-- - process 'passthrough' element -->
|
|
11561
|
+
<!-- - split math by element with @linebreak into maths -->
|
|
11562
|
+
<!-- - rename fmt-title to title, fmt-name to name and another changes to convert new presentation XML to -->
|
|
11563
|
+
<!-- - old XML without significant changes in XSLT -->
|
|
11402
11564
|
<!-- =========================================================================== -->
|
|
11403
11565
|
<xsl:template match="@*|node()" mode="update_xml_step1">
|
|
11404
11566
|
<xsl:copy>
|
|
@@ -11406,6 +11568,12 @@
|
|
|
11406
11568
|
</xsl:copy>
|
|
11407
11569
|
</xsl:template>
|
|
11408
11570
|
|
|
11571
|
+
<xsl:template match="@*|node()" mode="update_xml_pres">
|
|
11572
|
+
<xsl:copy>
|
|
11573
|
+
<xsl:apply-templates select="@*|node()" mode="update_xml_pres"/>
|
|
11574
|
+
</xsl:copy>
|
|
11575
|
+
</xsl:template>
|
|
11576
|
+
|
|
11409
11577
|
<!-- change section's order based on @displayorder value -->
|
|
11410
11578
|
<xsl:template match="*[local-name() = 'preface']" mode="update_xml_step1">
|
|
11411
11579
|
<xsl:copy>
|
|
@@ -11482,7 +11650,7 @@
|
|
|
11482
11650
|
</xsl:template>
|
|
11483
11651
|
|
|
11484
11652
|
<!-- Example with 'class': <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
|
|
11485
|
-
<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">
|
|
11653
|
+
<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">
|
|
11486
11654
|
<xsl:copy>
|
|
11487
11655
|
<xsl:copy-of select="@*"/>
|
|
11488
11656
|
<xsl:apply-templates mode="update_xml_step1"/>
|
|
@@ -11501,14 +11669,17 @@
|
|
|
11501
11669
|
|
|
11502
11670
|
<!-- remove semantic xml -->
|
|
11503
11671
|
<xsl:template match="*[local-name() = 'metanorma-extension']/*[local-name() = 'metanorma']/*[local-name() = 'source']" mode="update_xml_step1"/>
|
|
11672
|
+
<xsl:template match="*[local-name() = 'metanorma-extension']/*[local-name() = 'metanorma']/*[local-name() = 'source']" mode="update_xml_pres"/>
|
|
11504
11673
|
|
|
11505
11674
|
<!-- remove image/emf -->
|
|
11506
11675
|
<xsl:template match="*[local-name() = 'image']/*[local-name() = 'emf']" mode="update_xml_step1"/>
|
|
11676
|
+
<xsl:template match="*[local-name() = 'image']/*[local-name() = 'emf']" mode="update_xml_pres"/>
|
|
11507
11677
|
|
|
11508
11678
|
<!-- remove preprocess-xslt -->
|
|
11509
11679
|
<xsl:template match="*[local-name() = 'preprocess-xslt']" mode="update_xml_step1"/>
|
|
11680
|
+
<xsl:template match="*[local-name() = 'preprocess-xslt']" mode="update_xml_pres"/>
|
|
11510
11681
|
|
|
11511
|
-
<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">
|
|
11682
|
+
<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">
|
|
11512
11683
|
<xsl:copy-of select="."/>
|
|
11513
11684
|
</xsl:template>
|
|
11514
11685
|
|
|
@@ -11590,6 +11761,77 @@
|
|
|
11590
11761
|
<xsl:copy-of select="$maths"/>
|
|
11591
11762
|
</xsl:template>
|
|
11592
11763
|
|
|
11764
|
+
<!-- update new Presentation XML -->
|
|
11765
|
+
<xsl:template match="*[local-name() = 'title'][following-sibling::*[1][local-name() = 'fmt-title']]" mode="update_xml_step1"/>
|
|
11766
|
+
<xsl:template match="*[local-name() = 'title'][following-sibling::*[1][local-name() = 'fmt-title']]" mode="update_xml_pres"/>
|
|
11767
|
+
<xsl:template match="*[local-name() = 'name'][following-sibling::*[1][local-name() = 'fmt-name']]" mode="update_xml_step1"/>
|
|
11768
|
+
<xsl:template match="*[local-name() = 'name'][following-sibling::*[1][local-name() = 'fmt-name']]" mode="update_xml_pres"/>
|
|
11769
|
+
<xsl:template match="*[local-name() = 'section-title'][following-sibling::*[1][local-name() = 'p'][@type = 'section-title' or @type = 'floating-title']]" mode="update_xml_step1"/>
|
|
11770
|
+
<xsl:template match="*[local-name() = 'section-title'][following-sibling::*[1][local-name() = 'p'][@type = 'section-title' or @type = 'floating-title']]" mode="update_xml_pres"/>
|
|
11771
|
+
|
|
11772
|
+
<xsl:template match="*[local-name() = 'p'][@type = 'section-title' or @type = 'floating-title'][preceding-sibling::*[1][local-name() = 'section-title']]" mode="update_xml_step1">
|
|
11773
|
+
<xsl:copy>
|
|
11774
|
+
<xsl:apply-templates select="@*" mode="update_xml_step1"/>
|
|
11775
|
+
<xsl:copy-of select="preceding-sibling::*[1][local-name() = 'section-title']/@depth"/>
|
|
11776
|
+
<xsl:apply-templates select="node()" mode="update_xml_step1"/>
|
|
11777
|
+
</xsl:copy>
|
|
11778
|
+
</xsl:template>
|
|
11779
|
+
<xsl:template match="*[local-name() = 'p'][@type = 'section-title' or @type = 'floating-title'][preceding-sibling::*[1][local-name() = 'section-title']]" mode="update_xml_pres">
|
|
11780
|
+
<xsl:copy>
|
|
11781
|
+
<xsl:apply-templates select="@*" mode="update_xml_pres"/>
|
|
11782
|
+
<xsl:copy-of select="preceding-sibling::*[1][local-name() = 'section-title']/@depth"/>
|
|
11783
|
+
<xsl:apply-templates select="node()" mode="update_xml_pres"/>
|
|
11784
|
+
</xsl:copy>
|
|
11785
|
+
</xsl:template>
|
|
11786
|
+
|
|
11787
|
+
<xsl:template match="*[local-name() = 'fmt-title']"/>
|
|
11788
|
+
<xsl:template match="*[local-name() = 'fmt-title']" mode="update_xml_step1">
|
|
11789
|
+
<xsl:element name="title" namespace="{$namespace_full}">
|
|
11790
|
+
<xsl:copy-of select="@*"/>
|
|
11791
|
+
<xsl:apply-templates mode="update_xml_step1"/>
|
|
11792
|
+
</xsl:element>
|
|
11793
|
+
</xsl:template>
|
|
11794
|
+
<xsl:template match="*[local-name() = 'fmt-title']" mode="update_xml_pres">
|
|
11795
|
+
<xsl:element name="title" namespace="{$namespace_full}">
|
|
11796
|
+
<xsl:copy-of select="@*"/>
|
|
11797
|
+
<xsl:apply-templates mode="update_xml_pres"/>
|
|
11798
|
+
</xsl:element>
|
|
11799
|
+
</xsl:template>
|
|
11800
|
+
|
|
11801
|
+
<xsl:template match="*[local-name() = 'fmt-name']"/>
|
|
11802
|
+
<xsl:template match="*[local-name() = 'fmt-name']" mode="update_xml_step1">
|
|
11803
|
+
<xsl:element name="name" namespace="{$namespace_full}">
|
|
11804
|
+
<xsl:copy-of select="@*"/>
|
|
11805
|
+
<xsl:apply-templates mode="update_xml_step1"/>
|
|
11806
|
+
</xsl:element>
|
|
11807
|
+
</xsl:template>
|
|
11808
|
+
<xsl:template match="*[local-name() = 'fmt-name']" mode="update_xml_pres">
|
|
11809
|
+
<xsl:element name="name" namespace="{$namespace_full}">
|
|
11810
|
+
<xsl:copy-of select="@*"/>
|
|
11811
|
+
<xsl:apply-templates mode="update_xml_pres"/>
|
|
11812
|
+
</xsl:element>
|
|
11813
|
+
</xsl:template>
|
|
11814
|
+
|
|
11815
|
+
<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">
|
|
11816
|
+
<xsl:apply-templates mode="update_xml_step1"/>
|
|
11817
|
+
</xsl:template>
|
|
11818
|
+
<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">
|
|
11819
|
+
<xsl:apply-templates mode="update_xml_pres"/>
|
|
11820
|
+
</xsl:template>
|
|
11821
|
+
|
|
11822
|
+
<xsl:template match="*[local-name() = 'semx']" mode="update_xml_step1">
|
|
11823
|
+
<xsl:apply-templates mode="update_xml_step1"/>
|
|
11824
|
+
</xsl:template>
|
|
11825
|
+
<xsl:template match="*[local-name() = 'semx']" mode="update_xml_pres">
|
|
11826
|
+
<xsl:apply-templates mode="update_xml_pres"/>
|
|
11827
|
+
</xsl:template>
|
|
11828
|
+
|
|
11829
|
+
<xsl:template match="*[local-name() = 'fmt-xref-label']"/>
|
|
11830
|
+
<xsl:template match="*[local-name() = 'fmt-xref-label']" mode="update_xml_step1"/>
|
|
11831
|
+
<xsl:template match="*[local-name() = 'fmt-xref-label']" mode="update_xml_pres"/>
|
|
11832
|
+
|
|
11833
|
+
<!-- END: update new Presentation XML -->
|
|
11834
|
+
|
|
11593
11835
|
<!-- =========================================================================== -->
|
|
11594
11836
|
<!-- END STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
|
|
11595
11837
|
<!-- =========================================================================== -->
|
|
@@ -11782,7 +12024,7 @@
|
|
|
11782
12024
|
<xsl:variable name="non_white_space">[^\s\u3000-\u9FFF]</xsl:variable>
|
|
11783
12025
|
<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>
|
|
11784
12026
|
|
|
11785
|
-
<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">
|
|
12027
|
+
<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">
|
|
11786
12028
|
|
|
11787
12029
|
<xsl:variable name="parent" select="local-name(..)"/>
|
|
11788
12030
|
|
|
@@ -12361,6 +12603,7 @@
|
|
|
12361
12603
|
</pdf:catalog>
|
|
12362
12604
|
<x:xmpmeta xmlns:x="adobe:ns:meta/">
|
|
12363
12605
|
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
|
12606
|
+
<!-- Commented after upgrade to Apache FOP 2.10
|
|
12364
12607
|
<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="">
|
|
12365
12608
|
<pdfaExtension:schemas>
|
|
12366
12609
|
<rdf:Bag>
|
|
@@ -12393,7 +12636,7 @@
|
|
|
12393
12636
|
</rdf:li>
|
|
12394
12637
|
</rdf:Bag>
|
|
12395
12638
|
</pdfaExtension:schemas>
|
|
12396
|
-
</rdf:Description>
|
|
12639
|
+
</rdf:Description> -->
|
|
12397
12640
|
<rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" rdf:about="">
|
|
12398
12641
|
<!-- Dublin Core properties go here -->
|
|
12399
12642
|
<dc:title>
|
|
@@ -12440,7 +12683,7 @@
|
|
|
12440
12683
|
<xsl:variable name="dc_description">
|
|
12441
12684
|
<xsl:variable name="abstract">
|
|
12442
12685
|
|
|
12443
|
-
<xsl:copy-of select="//*[contains(local-name(), '-standard')]/*[local-name() = 'preface']/*[local-name() = 'abstract']//text()[not(ancestor::*[local-name() = 'title'])]"/>
|
|
12686
|
+
<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'])]"/>
|
|
12444
12687
|
|
|
12445
12688
|
</xsl:variable>
|
|
12446
12689
|
<rdf:Alt>
|
|
@@ -12985,31 +13228,123 @@
|
|
|
12985
13228
|
|
|
12986
13229
|
<!-- END: insert cover page image -->
|
|
12987
13230
|
|
|
12988
|
-
|
|
13231
|
+
<!-- https://github.com/metanorma/docs/blob/main/109.adoc -->
|
|
13232
|
+
<xsl:variable name="regex_ja_spec_">[
|
|
13233
|
+
<!-- Rotate 90° clockwise -->
|
|
13234
|
+
\u0028 <!-- U+0028 LEFT PARENTHESIS (() -->
|
|
13235
|
+
\uFF08 <!-- U+FF08 FULLWIDTH LEFT PARENTHESIS (() -->
|
|
13236
|
+
\u0029 <!-- U+0029 RIGHT PARENTHESIS ()) -->
|
|
13237
|
+
\uFF09 <!-- U+FF09 FULLWIDTH RIGHT PARENTHESIS ()) -->
|
|
13238
|
+
\u007B <!-- U+007B LEFT CURLY BRACKET ({) -->
|
|
13239
|
+
\uFF5B <!-- U+FF5B FULLWIDTH LEFT CURLY BRACKET ({) -->
|
|
13240
|
+
\u007D <!-- U+007D RIGHT CURLY BRACKET (}) -->
|
|
13241
|
+
\uFF5D <!-- U+FF5D FULLWIDTH RIGHT CURLY BRACKET (}) -->
|
|
13242
|
+
\u3014 <!-- U+3014 LEFT TORTOISE SHELL BRACKET (〔) -->
|
|
13243
|
+
\u3015 <!-- U+3015 RIGHT TORTOISE SHELL BRACKET (〕) -->
|
|
13244
|
+
\u3010 <!-- U+3010 LEFT BLACK LENTICULAR BRACKET (【) -->
|
|
13245
|
+
\u3011 <!-- U+3011 RIGHT BLACK LENTICULAR BRACKET (】) -->
|
|
13246
|
+
\u300A <!-- U+300A LEFT DOUBLE ANGLE BRACKET (《) -->
|
|
13247
|
+
\u300B <!-- U+300B RIGHT DOUBLE ANGLE BRACKET (》) -->
|
|
13248
|
+
\uFF62 <!-- U+FF62 HALFWIDTH LEFT CORNER BRACKET (「) -->
|
|
13249
|
+
\u300C <!-- U+300C LEFT CORNER BRACKET (「) -->
|
|
13250
|
+
\uFF63 <!-- U+FF63 HALFWIDTH RIGHT CORNER BRACKET (」) -->
|
|
13251
|
+
\u300D <!-- U+300D RIGHT CORNER BRACKET (」) -->
|
|
13252
|
+
\u300E <!-- U+300E LEFT WHITE CORNER BRACKET (『) -->
|
|
13253
|
+
\u300F <!-- U+300F RIGHT WHITE CORNER BRACKET (』) -->
|
|
13254
|
+
\u005B <!-- U+005B LEFT SQUARE BRACKET ([) -->
|
|
13255
|
+
\uFF3B <!-- U+FF3B FULLWIDTH LEFT SQUARE BRACKET ([) -->
|
|
13256
|
+
\u005D <!-- U+005D RIGHT SQUARE BRACKET (]) -->
|
|
13257
|
+
\uFF3D <!-- U+FF3D FULLWIDTH RIGHT SQUARE BRACKET (]) -->
|
|
13258
|
+
\u3008 <!-- U+3008 LEFT ANGLE BRACKET (〈) -->
|
|
13259
|
+
\u3009 <!-- U+3009 RIGHT ANGLE BRACKET (〉) -->
|
|
13260
|
+
\u3016 <!-- U+3016 LEFT WHITE LENTICULAR BRACKET (〖) -->
|
|
13261
|
+
\u3017 <!-- U+3017 RIGHT WHITE LENTICULAR BRACKET (〗) -->
|
|
13262
|
+
|
|
13263
|
+
\u301A <!-- U+301A LEFT WHITE SQUARE BRACKET (〚) -->
|
|
13264
|
+
\u301B <!-- U+301B RIGHT WHITE SQUARE BRACKET (〛) -->
|
|
13265
|
+
\u301C <!-- U+301C WAVE DASH (〜) -->
|
|
13266
|
+
\u3030 <!-- U+3030 WAVY DASH (〰 )-->
|
|
13267
|
+
\u30FC <!-- U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK (ー) -->
|
|
13268
|
+
\u2329 <!-- U+2329 LEFT-POINTING ANGLE BRACKET (〈) -->
|
|
13269
|
+
\u232A <!-- U+232A RIGHT-POINTING ANGLE BRACKET (〉) -->
|
|
13270
|
+
\u3018 <!-- U+3018 LEFT WHITE TORTOISE SHELL BRACKET (〘) -->
|
|
13271
|
+
\u3019 <!-- U+3019 RIGHT WHITE TORTOISE SHELL BRACKET (〙) -->
|
|
13272
|
+
\u30A0 <!-- U+30A0 KATAKANA-HIRAGANA DOUBLE HYPHEN (゠) -->
|
|
13273
|
+
\uFE59 <!-- U+FE59 SMALL LEFT PARENTHESIS (﹙) -->
|
|
13274
|
+
\uFE5A <!-- U+FE5A SMALL RIGHT PARENTHESIS (﹚) -->
|
|
13275
|
+
\uFE5B <!-- U+FE5B SMALL LEFT CURLY BRACKET (﹛) -->
|
|
13276
|
+
\uFE5C <!-- U+FE5C SMALL RIGHT CURLY BRACKET (﹜) -->
|
|
13277
|
+
\uFE5D <!-- U+FE5D SMALL LEFT TORTOISE SHELL BRACKET (﹝) -->
|
|
13278
|
+
\uFE5E <!-- U+FE5E SMALL RIGHT TORTOISE SHELL BRACKET (﹞) -->
|
|
13279
|
+
\uFF5C <!-- U+FF5C FULLWIDTH VERTICAL LINE (|) -->
|
|
13280
|
+
\uFF5F <!-- U+FF5F FULLWIDTH LEFT WHITE PARENTHESIS (⦅) -->
|
|
13281
|
+
\uFF60 <!-- U+FF60 FULLWIDTH RIGHT WHITE PARENTHESIS (⦆) -->
|
|
13282
|
+
\uFFE3 <!-- U+FFE3 FULLWIDTH MACRON ( ̄) -->
|
|
13283
|
+
\uFF3F <!-- U+FF3F FULLWIDTH LOW LINE (_) -->
|
|
13284
|
+
\uFF5E <!-- U+FF5E FULLWIDTH TILDE (~) -->
|
|
13285
|
+
<!-- Rotate 180° -->
|
|
13286
|
+
\u309C <!-- U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK (゜) -->
|
|
13287
|
+
\u3002 <!-- U+3002 IDEOGRAPHIC FULL STOP (。) -->
|
|
13288
|
+
\uFE52 <!-- U+FE52 SMALL FULL STOP (﹒) -->
|
|
13289
|
+
\uFF0E <!-- U+FF0E FULLWIDTH FULL STOP (.) -->
|
|
13290
|
+
]</xsl:variable>
|
|
13291
|
+
<xsl:variable name="regex_ja_spec"><xsl:value-of select="translate(normalize-space($regex_ja_spec_), ' ', '')"/></xsl:variable>
|
|
12989
13292
|
<xsl:template name="insertVerticalChar">
|
|
12990
13293
|
<xsl:param name="str"/>
|
|
12991
13294
|
<xsl:param name="writing-mode">lr-tb</xsl:param>
|
|
12992
13295
|
<xsl:param name="reference-orientation">90</xsl:param>
|
|
12993
|
-
<xsl:
|
|
12994
|
-
|
|
12995
|
-
|
|
12996
|
-
|
|
12997
|
-
|
|
12998
|
-
|
|
12999
|
-
<xsl:
|
|
13000
|
-
|
|
13001
|
-
<xsl:
|
|
13296
|
+
<xsl:param name="add_zero_width_space">false</xsl:param>
|
|
13297
|
+
<xsl:choose>
|
|
13298
|
+
<xsl:when test="ancestor::*[local-name() = 'span'][@class = 'norotate']">
|
|
13299
|
+
<xsl:value-of select="$str"/>
|
|
13300
|
+
</xsl:when>
|
|
13301
|
+
<xsl:otherwise>
|
|
13302
|
+
<xsl:if test="string-length($str) > 0">
|
|
13303
|
+
<xsl:variable name="horizontal_mode" select="normalize-space(ancestor::*[local-name() = 'span'][@class = 'horizontal'] and 1 = 1)"/>
|
|
13304
|
+
<xsl:variable name="char" select="substring($str,1,1)"/>
|
|
13305
|
+
<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">
|
|
13306
|
+
<xsl:if test="normalize-space($writing-mode) != ''">
|
|
13307
|
+
<xsl:attribute name="writing-mode"><xsl:value-of select="$writing-mode"/></xsl:attribute>
|
|
13308
|
+
<xsl:attribute name="reference-orientation">90</xsl:attribute>
|
|
13309
|
+
</xsl:if>
|
|
13310
|
+
<xsl:if test="normalize-space(java:matches(java:java.lang.String.new($char), concat('(', $regex_ja_spec, '{1,})'))) = 'true'">
|
|
13311
|
+
<xsl:attribute name="reference-orientation">0</xsl:attribute>
|
|
13312
|
+
</xsl:if>
|
|
13313
|
+
<xsl:if test="$char = '゜' or $char = '。' or $char = '﹒' or $char = '.'">
|
|
13314
|
+
<!-- Rotate 180°:
|
|
13315
|
+
U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK (゜)
|
|
13316
|
+
U+3002 IDEOGRAPHIC FULL STOP (。)
|
|
13317
|
+
U+FE52 SMALL FULL STOP (﹒)
|
|
13318
|
+
U+FF0E FULLWIDTH FULL STOP (.)
|
|
13319
|
+
-->
|
|
13320
|
+
<xsl:attribute name="reference-orientation">-90</xsl:attribute>
|
|
13321
|
+
</xsl:if>
|
|
13322
|
+
<fo:block-container width="1em">
|
|
13323
|
+
<fo:block line-height="1em">
|
|
13324
|
+
<xsl:choose>
|
|
13325
|
+
<xsl:when test="$horizontal_mode = 'true'">
|
|
13326
|
+
<xsl:value-of select="$str"/>
|
|
13327
|
+
</xsl:when>
|
|
13328
|
+
<xsl:otherwise>
|
|
13329
|
+
<xsl:value-of select="$char"/>
|
|
13330
|
+
</xsl:otherwise>
|
|
13331
|
+
</xsl:choose>
|
|
13332
|
+
</fo:block>
|
|
13333
|
+
</fo:block-container>
|
|
13334
|
+
</fo:inline-container>
|
|
13335
|
+
<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>
|
|
13336
|
+
|
|
13337
|
+
<xsl:if test="$horizontal_mode = 'false'">
|
|
13338
|
+
<xsl:call-template name="insertVerticalChar">
|
|
13339
|
+
<xsl:with-param name="str" select="substring($str, 2)"/>
|
|
13340
|
+
<xsl:with-param name="writing-mode" select="$writing-mode"/>
|
|
13341
|
+
<xsl:with-param name="reference-orientation" select="$reference-orientation"/>
|
|
13342
|
+
<xsl:with-param name="add_zero_width_space" select="$add_zero_width_space"/>
|
|
13343
|
+
</xsl:call-template>
|
|
13344
|
+
</xsl:if>
|
|
13002
13345
|
</xsl:if>
|
|
13003
|
-
|
|
13004
|
-
|
|
13005
|
-
</fo:block-container>
|
|
13006
|
-
</fo:inline-container>
|
|
13007
|
-
<xsl:call-template name="insertVerticalChar">
|
|
13008
|
-
<xsl:with-param name="str" select="substring($str, 2)"/>
|
|
13009
|
-
<xsl:with-param name="writing-mode" select="$writing-mode"/>
|
|
13010
|
-
<xsl:with-param name="reference-orientation" select="$reference-orientation"/>
|
|
13011
|
-
</xsl:call-template>
|
|
13012
|
-
</xsl:if>
|
|
13346
|
+
</xsl:otherwise>
|
|
13347
|
+
</xsl:choose>
|
|
13013
13348
|
</xsl:template>
|
|
13014
13349
|
|
|
13015
13350
|
<xsl:template name="number-to-words">
|
|
@@ -5,12 +5,8 @@ require "isodoc"
|
|
|
5
5
|
module IsoDoc
|
|
6
6
|
module Csa
|
|
7
7
|
class PresentationXMLConvert < IsoDoc::Generic::PresentationXMLConvert
|
|
8
|
-
def
|
|
9
|
-
|
|
10
|
-
if t = elem.at(ns("./title"))
|
|
11
|
-
t.children = "<strong>#{to_xml(t.children)}</strong>"
|
|
12
|
-
end
|
|
13
|
-
prefix_name(elem, "<br/>", lbl, "title")
|
|
8
|
+
def annex_delim(_elem)
|
|
9
|
+
"<br/>"
|
|
14
10
|
end
|
|
15
11
|
|
|
16
12
|
def middle_title(docxml); end
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
these elements; we just want one namespace for any child grammars
|
|
18
18
|
of this.
|
|
19
19
|
-->
|
|
20
|
-
<!-- VERSION v1.4.
|
|
20
|
+
<!-- VERSION v1.4.1 -->
|
|
21
21
|
<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
22
22
|
<include href="reqt.rng"/>
|
|
23
23
|
<include href="basicdoc.rng">
|
data/metanorma-csa.gemspec
CHANGED
|
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
|
|
|
29
29
|
spec.require_paths = ["lib"]
|
|
30
30
|
spec.required_ruby_version = Gem::Requirement.new(">= 3.1.0")
|
|
31
31
|
|
|
32
|
-
spec.add_dependency "metanorma-generic", "~> 2.7.
|
|
32
|
+
spec.add_dependency "metanorma-generic", "~> 2.7.3"
|
|
33
33
|
|
|
34
34
|
spec.add_development_dependency "debug"
|
|
35
35
|
spec.add_development_dependency "equivalent-xml", "~> 0.6"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: metanorma-csa
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.5.
|
|
4
|
+
version: 2.5.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-
|
|
11
|
+
date: 2024-12-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: metanorma-generic
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 2.7.
|
|
19
|
+
version: 2.7.3
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 2.7.
|
|
26
|
+
version: 2.7.3
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: debug
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|