metanorma-bipm 2.1.13 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c8a36d5f02fd20de1a1a7957a96b18448f30f6184685c7bb63b81489827f4ff2
4
- data.tar.gz: f45ac4cb256a62540ebcebd834fb550bb318ac503cc4fedd1b1836f55d69a6d9
3
+ metadata.gz: 5473d53c218ef9be08f8d8664f388c27684eca2af7bc86e4c501d9d922d50f64
4
+ data.tar.gz: 0dd3d6d95f9e7975e3f76e00c9b486b5c97a753ce45cd1af450b82cf80ddad5b
5
5
  SHA512:
6
- metadata.gz: b4f34561eaa8da2a435314bf1dc9f292f858314b4f68e8b5f5527f3d0a418b216d0cfe745a766128357c193a00f1f026187731c538db0b16c58f8db3306fc7bd
7
- data.tar.gz: 6de1b279002240ab5a754620d724235200e4a2aac52eb008cf47c784f9dfa444c934c339385e54fd17e150f3c05f418b5d336d1659382a3f5902b356e0b1fe81
6
+ metadata.gz: 8e9aeb4d4752a121f6dc00049988937cf6eadb7e3833e5df79d574dcb74fa1bbeff911a33e70f63bcc880cf1cf50f8f3eaf1b3099b494b78f7db299c1a71ade1
7
+ data.tar.gz: 54655f2d26b574f6e8231cf945505905d733ab08512e109f9e10fa1d96622f0bf8e581099ac8d08fab8d8ddca5dca66740d95603a6b10aa1153a59d4339d3a2a
@@ -6492,6 +6492,10 @@
6492
6492
  <xsl:variable name="footnote_inline">
6493
6493
  <fo:inline xsl:use-attribute-sets="fn-num-style">
6494
6494
 
6495
+ <xsl:if test="following-sibling::*[1][local-name() = 'fn']">
6496
+ <xsl:attribute name="padding-right">0.5mm</xsl:attribute>
6497
+ </xsl:if>
6498
+
6495
6499
  <fo:basic-link internal-destination="{$ref_id}" fox:alt-text="footnote {$current_fn_number}">
6496
6500
  <xsl:value-of select="$current_fn_number_text"/>
6497
6501
  </fo:basic-link>
@@ -7649,6 +7653,23 @@
7649
7653
  <xsl:apply-templates/>
7650
7654
  </xsl:template>
7651
7655
 
7656
+ <!-- Don't break standard's numbers -->
7657
+ <!-- Example : <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
7658
+ <xsl:template match="*[local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']" priority="2">
7659
+ <xsl:choose>
7660
+ <xsl:when test="ancestor::*[local-name() = 'table']"><xsl:apply-templates/></xsl:when>
7661
+ <xsl:when test="following-sibling::*[2][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']">
7662
+ <fo:inline keep-with-next.within-line="always"><xsl:apply-templates/></fo:inline>
7663
+ </xsl:when>
7664
+ <xsl:otherwise>
7665
+ <xsl:apply-templates/>
7666
+ </xsl:otherwise>
7667
+ </xsl:choose>
7668
+ </xsl:template>
7669
+ <xsl:template match="text()[not(ancestor::*[local-name() = 'table']) and preceding-sibling::*[1][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear'] and following-sibling::*[1][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']]" priority="2">
7670
+ <fo:inline keep-with-next.within-line="always"><xsl:value-of select="."/></fo:inline>
7671
+ </xsl:template>
7672
+
7652
7673
  <!-- ========================= -->
7653
7674
  <!-- END Rich text formatting -->
7654
7675
  <!-- ========================= -->
@@ -8044,7 +8065,7 @@
8044
8065
  <xsl:choose>
8045
8066
  <xsl:when test="@colspan">
8046
8067
  <xsl:variable name="td">
8047
- <xsl:element name="td">
8068
+ <xsl:element name="{local-name()}">
8048
8069
  <xsl:attribute name="divide"><xsl:value-of select="@colspan"/></xsl:attribute>
8049
8070
  <xsl:if test="local-name()='th'">
8050
8071
  <xsl:attribute name="font-weight">bold</xsl:attribute>
@@ -8059,7 +8080,7 @@
8059
8080
  </xsl:call-template>
8060
8081
  </xsl:when>
8061
8082
  <xsl:otherwise>
8062
- <xsl:element name="td">
8083
+ <xsl:element name="{local-name()}">
8063
8084
  <xsl:apply-templates select="@*" mode="simple-table-colspan"/>
8064
8085
  <xsl:if test="local-name()='th'">
8065
8086
  <xsl:attribute name="font-weight">bold</xsl:attribute>
@@ -8126,7 +8147,7 @@
8126
8147
  <xsl:variable name="currentRow" select="."/>
8127
8148
 
8128
8149
  <xsl:variable name="normalizedTDs">
8129
- <xsl:for-each select="xalan:nodeset($previousRow)//td">
8150
+ <xsl:for-each select="xalan:nodeset($previousRow)//*[self::td or self::th]">
8130
8151
  <xsl:choose>
8131
8152
  <xsl:when test="@rowspan &gt; 1">
8132
8153
  <xsl:copy>
@@ -8138,7 +8159,7 @@
8138
8159
  </xsl:copy>
8139
8160
  </xsl:when>
8140
8161
  <xsl:otherwise>
8141
- <xsl:copy-of select="$currentRow/td[1 + count(current()/preceding-sibling::td[not(@rowspan) or (@rowspan = 1)])]"/>
8162
+ <xsl:copy-of select="$currentRow/*[self::td or self::th][1 + count(current()/preceding-sibling::*[self::td or self::th][not(@rowspan) or (@rowspan = 1)])]"/>
8142
8163
  </xsl:otherwise>
8143
8164
  </xsl:choose>
8144
8165
  </xsl:for-each>
@@ -8853,12 +8874,6 @@
8853
8874
 
8854
8875
  <fo:block-container margin-left="0mm">
8855
8876
 
8856
- <!-- <xsl:if test="$namespace = 'iho'">
8857
- <xsl:if test="ancestor::iho:td">
8858
- <xsl:attribute name="font-size">12pt</xsl:attribute>
8859
- </xsl:if>
8860
- </xsl:if> -->
8861
-
8862
8877
  <fo:block>
8863
8878
 
8864
8879
  <xsl:if test="@parent-type = 'quote'">
@@ -9385,6 +9400,31 @@
9385
9400
  <xsl:apply-templates mode="svg_update"/>
9386
9401
  </xsl:copy>
9387
9402
  </xsl:template>
9403
+
9404
+ <!-- regex for 'display: inline-block;' -->
9405
+ <xsl:variable name="regex_svg_style_notsupported">display(\s|\h)*:(\s|\h)*inline-block(\s|\h)*;</xsl:variable>
9406
+ <xsl:template match="*[local-name() = 'svg']//*[local-name() = 'style']/text()" mode="svg_update">
9407
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.), $regex_svg_style_notsupported, '')"/>
9408
+ </xsl:template>
9409
+
9410
+ <!-- replace
9411
+ stroke="rgba(r, g, b, alpha)" to
9412
+ stroke="rgb(r,g,b)" stroke-opacity="alpha", and
9413
+ fill="rgba(r, g, b, alpha)" to
9414
+ fill="rgb(r,g,b)" fill-opacity="alpha" -->
9415
+ <xsl:template match="@*[local-name() = 'stroke' or local-name() = 'fill'][starts-with(normalize-space(.), 'rgba')]" mode="svg_update">
9416
+ <xsl:variable name="components_">
9417
+ <xsl:call-template name="split">
9418
+ <xsl:with-param name="pText" select="substring-before(substring-after(., '('), ')')"/>
9419
+ <xsl:with-param name="sep" select="','"/>
9420
+ </xsl:call-template>
9421
+ </xsl:variable>
9422
+ <xsl:variable name="components" select="xalan:nodeset($components_)"/>
9423
+ <xsl:variable name="att_name" select="local-name()"/>
9424
+ <xsl:attribute name="{$att_name}"><xsl:value-of select="concat('rgb(', $components/item[1], ',', $components/item[2], ',', $components/item[3], ')')"/></xsl:attribute>
9425
+ <xsl:attribute name="{$att_name}-opacity"><xsl:value-of select="$components/item[4]"/></xsl:attribute>
9426
+ </xsl:template>
9427
+
9388
9428
  <!-- ============== -->
9389
9429
  <!-- END: svg_update -->
9390
9430
  <!-- ============== -->
@@ -12343,7 +12383,9 @@
12343
12383
  <!-- Update xml -->
12344
12384
  <!-- ===================================== -->
12345
12385
  <!-- =========================================================================== -->
12346
- <!-- STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
12386
+ <!-- STEP1: -->
12387
+ <!-- - Re-order elements in 'preface', 'sections' based on @displayorder -->
12388
+ <!-- - Ignore 'span' without style -->
12347
12389
  <!-- =========================================================================== -->
12348
12390
  <xsl:template match="@*|node()" mode="update_xml_step1">
12349
12391
  <xsl:copy>
@@ -12426,7 +12468,8 @@
12426
12468
  </xsl:copy>
12427
12469
  </xsl:template>
12428
12470
 
12429
- <xsl:template match="*[local-name() = 'span'][@style]" mode="update_xml_step1" priority="2">
12471
+ <!-- Example with 'class': <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
12472
+ <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">
12430
12473
  <xsl:copy>
12431
12474
  <xsl:copy-of select="@*"/>
12432
12475
  <xsl:apply-templates mode="update_xml_step1"/>
@@ -6492,6 +6492,10 @@
6492
6492
  <xsl:variable name="footnote_inline">
6493
6493
  <fo:inline xsl:use-attribute-sets="fn-num-style">
6494
6494
 
6495
+ <xsl:if test="following-sibling::*[1][local-name() = 'fn']">
6496
+ <xsl:attribute name="padding-right">0.5mm</xsl:attribute>
6497
+ </xsl:if>
6498
+
6495
6499
  <fo:basic-link internal-destination="{$ref_id}" fox:alt-text="footnote {$current_fn_number}">
6496
6500
  <xsl:value-of select="$current_fn_number_text"/>
6497
6501
  </fo:basic-link>
@@ -7649,6 +7653,23 @@
7649
7653
  <xsl:apply-templates/>
7650
7654
  </xsl:template>
7651
7655
 
7656
+ <!-- Don't break standard's numbers -->
7657
+ <!-- Example : <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
7658
+ <xsl:template match="*[local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']" priority="2">
7659
+ <xsl:choose>
7660
+ <xsl:when test="ancestor::*[local-name() = 'table']"><xsl:apply-templates/></xsl:when>
7661
+ <xsl:when test="following-sibling::*[2][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']">
7662
+ <fo:inline keep-with-next.within-line="always"><xsl:apply-templates/></fo:inline>
7663
+ </xsl:when>
7664
+ <xsl:otherwise>
7665
+ <xsl:apply-templates/>
7666
+ </xsl:otherwise>
7667
+ </xsl:choose>
7668
+ </xsl:template>
7669
+ <xsl:template match="text()[not(ancestor::*[local-name() = 'table']) and preceding-sibling::*[1][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear'] and following-sibling::*[1][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']]" priority="2">
7670
+ <fo:inline keep-with-next.within-line="always"><xsl:value-of select="."/></fo:inline>
7671
+ </xsl:template>
7672
+
7652
7673
  <!-- ========================= -->
7653
7674
  <!-- END Rich text formatting -->
7654
7675
  <!-- ========================= -->
@@ -8044,7 +8065,7 @@
8044
8065
  <xsl:choose>
8045
8066
  <xsl:when test="@colspan">
8046
8067
  <xsl:variable name="td">
8047
- <xsl:element name="td">
8068
+ <xsl:element name="{local-name()}">
8048
8069
  <xsl:attribute name="divide"><xsl:value-of select="@colspan"/></xsl:attribute>
8049
8070
  <xsl:if test="local-name()='th'">
8050
8071
  <xsl:attribute name="font-weight">bold</xsl:attribute>
@@ -8059,7 +8080,7 @@
8059
8080
  </xsl:call-template>
8060
8081
  </xsl:when>
8061
8082
  <xsl:otherwise>
8062
- <xsl:element name="td">
8083
+ <xsl:element name="{local-name()}">
8063
8084
  <xsl:apply-templates select="@*" mode="simple-table-colspan"/>
8064
8085
  <xsl:if test="local-name()='th'">
8065
8086
  <xsl:attribute name="font-weight">bold</xsl:attribute>
@@ -8126,7 +8147,7 @@
8126
8147
  <xsl:variable name="currentRow" select="."/>
8127
8148
 
8128
8149
  <xsl:variable name="normalizedTDs">
8129
- <xsl:for-each select="xalan:nodeset($previousRow)//td">
8150
+ <xsl:for-each select="xalan:nodeset($previousRow)//*[self::td or self::th]">
8130
8151
  <xsl:choose>
8131
8152
  <xsl:when test="@rowspan &gt; 1">
8132
8153
  <xsl:copy>
@@ -8138,7 +8159,7 @@
8138
8159
  </xsl:copy>
8139
8160
  </xsl:when>
8140
8161
  <xsl:otherwise>
8141
- <xsl:copy-of select="$currentRow/td[1 + count(current()/preceding-sibling::td[not(@rowspan) or (@rowspan = 1)])]"/>
8162
+ <xsl:copy-of select="$currentRow/*[self::td or self::th][1 + count(current()/preceding-sibling::*[self::td or self::th][not(@rowspan) or (@rowspan = 1)])]"/>
8142
8163
  </xsl:otherwise>
8143
8164
  </xsl:choose>
8144
8165
  </xsl:for-each>
@@ -8853,12 +8874,6 @@
8853
8874
 
8854
8875
  <fo:block-container margin-left="0mm">
8855
8876
 
8856
- <!-- <xsl:if test="$namespace = 'iho'">
8857
- <xsl:if test="ancestor::iho:td">
8858
- <xsl:attribute name="font-size">12pt</xsl:attribute>
8859
- </xsl:if>
8860
- </xsl:if> -->
8861
-
8862
8877
  <fo:block>
8863
8878
 
8864
8879
  <xsl:if test="@parent-type = 'quote'">
@@ -9385,6 +9400,31 @@
9385
9400
  <xsl:apply-templates mode="svg_update"/>
9386
9401
  </xsl:copy>
9387
9402
  </xsl:template>
9403
+
9404
+ <!-- regex for 'display: inline-block;' -->
9405
+ <xsl:variable name="regex_svg_style_notsupported">display(\s|\h)*:(\s|\h)*inline-block(\s|\h)*;</xsl:variable>
9406
+ <xsl:template match="*[local-name() = 'svg']//*[local-name() = 'style']/text()" mode="svg_update">
9407
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.), $regex_svg_style_notsupported, '')"/>
9408
+ </xsl:template>
9409
+
9410
+ <!-- replace
9411
+ stroke="rgba(r, g, b, alpha)" to
9412
+ stroke="rgb(r,g,b)" stroke-opacity="alpha", and
9413
+ fill="rgba(r, g, b, alpha)" to
9414
+ fill="rgb(r,g,b)" fill-opacity="alpha" -->
9415
+ <xsl:template match="@*[local-name() = 'stroke' or local-name() = 'fill'][starts-with(normalize-space(.), 'rgba')]" mode="svg_update">
9416
+ <xsl:variable name="components_">
9417
+ <xsl:call-template name="split">
9418
+ <xsl:with-param name="pText" select="substring-before(substring-after(., '('), ')')"/>
9419
+ <xsl:with-param name="sep" select="','"/>
9420
+ </xsl:call-template>
9421
+ </xsl:variable>
9422
+ <xsl:variable name="components" select="xalan:nodeset($components_)"/>
9423
+ <xsl:variable name="att_name" select="local-name()"/>
9424
+ <xsl:attribute name="{$att_name}"><xsl:value-of select="concat('rgb(', $components/item[1], ',', $components/item[2], ',', $components/item[3], ')')"/></xsl:attribute>
9425
+ <xsl:attribute name="{$att_name}-opacity"><xsl:value-of select="$components/item[4]"/></xsl:attribute>
9426
+ </xsl:template>
9427
+
9388
9428
  <!-- ============== -->
9389
9429
  <!-- END: svg_update -->
9390
9430
  <!-- ============== -->
@@ -12343,7 +12383,9 @@
12343
12383
  <!-- Update xml -->
12344
12384
  <!-- ===================================== -->
12345
12385
  <!-- =========================================================================== -->
12346
- <!-- STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
12386
+ <!-- STEP1: -->
12387
+ <!-- - Re-order elements in 'preface', 'sections' based on @displayorder -->
12388
+ <!-- - Ignore 'span' without style -->
12347
12389
  <!-- =========================================================================== -->
12348
12390
  <xsl:template match="@*|node()" mode="update_xml_step1">
12349
12391
  <xsl:copy>
@@ -12426,7 +12468,8 @@
12426
12468
  </xsl:copy>
12427
12469
  </xsl:template>
12428
12470
 
12429
- <xsl:template match="*[local-name() = 'span'][@style]" mode="update_xml_step1" priority="2">
12471
+ <!-- Example with 'class': <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
12472
+ <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">
12430
12473
  <xsl:copy>
12431
12474
  <xsl:copy-of select="@*"/>
12432
12475
  <xsl:apply-templates mode="update_xml_step1"/>
@@ -6492,6 +6492,10 @@
6492
6492
  <xsl:variable name="footnote_inline">
6493
6493
  <fo:inline xsl:use-attribute-sets="fn-num-style">
6494
6494
 
6495
+ <xsl:if test="following-sibling::*[1][local-name() = 'fn']">
6496
+ <xsl:attribute name="padding-right">0.5mm</xsl:attribute>
6497
+ </xsl:if>
6498
+
6495
6499
  <fo:basic-link internal-destination="{$ref_id}" fox:alt-text="footnote {$current_fn_number}">
6496
6500
  <xsl:value-of select="$current_fn_number_text"/>
6497
6501
  </fo:basic-link>
@@ -7649,6 +7653,23 @@
7649
7653
  <xsl:apply-templates/>
7650
7654
  </xsl:template>
7651
7655
 
7656
+ <!-- Don't break standard's numbers -->
7657
+ <!-- Example : <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
7658
+ <xsl:template match="*[local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']" priority="2">
7659
+ <xsl:choose>
7660
+ <xsl:when test="ancestor::*[local-name() = 'table']"><xsl:apply-templates/></xsl:when>
7661
+ <xsl:when test="following-sibling::*[2][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']">
7662
+ <fo:inline keep-with-next.within-line="always"><xsl:apply-templates/></fo:inline>
7663
+ </xsl:when>
7664
+ <xsl:otherwise>
7665
+ <xsl:apply-templates/>
7666
+ </xsl:otherwise>
7667
+ </xsl:choose>
7668
+ </xsl:template>
7669
+ <xsl:template match="text()[not(ancestor::*[local-name() = 'table']) and preceding-sibling::*[1][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear'] and following-sibling::*[1][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']]" priority="2">
7670
+ <fo:inline keep-with-next.within-line="always"><xsl:value-of select="."/></fo:inline>
7671
+ </xsl:template>
7672
+
7652
7673
  <!-- ========================= -->
7653
7674
  <!-- END Rich text formatting -->
7654
7675
  <!-- ========================= -->
@@ -8044,7 +8065,7 @@
8044
8065
  <xsl:choose>
8045
8066
  <xsl:when test="@colspan">
8046
8067
  <xsl:variable name="td">
8047
- <xsl:element name="td">
8068
+ <xsl:element name="{local-name()}">
8048
8069
  <xsl:attribute name="divide"><xsl:value-of select="@colspan"/></xsl:attribute>
8049
8070
  <xsl:if test="local-name()='th'">
8050
8071
  <xsl:attribute name="font-weight">bold</xsl:attribute>
@@ -8059,7 +8080,7 @@
8059
8080
  </xsl:call-template>
8060
8081
  </xsl:when>
8061
8082
  <xsl:otherwise>
8062
- <xsl:element name="td">
8083
+ <xsl:element name="{local-name()}">
8063
8084
  <xsl:apply-templates select="@*" mode="simple-table-colspan"/>
8064
8085
  <xsl:if test="local-name()='th'">
8065
8086
  <xsl:attribute name="font-weight">bold</xsl:attribute>
@@ -8126,7 +8147,7 @@
8126
8147
  <xsl:variable name="currentRow" select="."/>
8127
8148
 
8128
8149
  <xsl:variable name="normalizedTDs">
8129
- <xsl:for-each select="xalan:nodeset($previousRow)//td">
8150
+ <xsl:for-each select="xalan:nodeset($previousRow)//*[self::td or self::th]">
8130
8151
  <xsl:choose>
8131
8152
  <xsl:when test="@rowspan &gt; 1">
8132
8153
  <xsl:copy>
@@ -8138,7 +8159,7 @@
8138
8159
  </xsl:copy>
8139
8160
  </xsl:when>
8140
8161
  <xsl:otherwise>
8141
- <xsl:copy-of select="$currentRow/td[1 + count(current()/preceding-sibling::td[not(@rowspan) or (@rowspan = 1)])]"/>
8162
+ <xsl:copy-of select="$currentRow/*[self::td or self::th][1 + count(current()/preceding-sibling::*[self::td or self::th][not(@rowspan) or (@rowspan = 1)])]"/>
8142
8163
  </xsl:otherwise>
8143
8164
  </xsl:choose>
8144
8165
  </xsl:for-each>
@@ -8853,12 +8874,6 @@
8853
8874
 
8854
8875
  <fo:block-container margin-left="0mm">
8855
8876
 
8856
- <!-- <xsl:if test="$namespace = 'iho'">
8857
- <xsl:if test="ancestor::iho:td">
8858
- <xsl:attribute name="font-size">12pt</xsl:attribute>
8859
- </xsl:if>
8860
- </xsl:if> -->
8861
-
8862
8877
  <fo:block>
8863
8878
 
8864
8879
  <xsl:if test="@parent-type = 'quote'">
@@ -9385,6 +9400,31 @@
9385
9400
  <xsl:apply-templates mode="svg_update"/>
9386
9401
  </xsl:copy>
9387
9402
  </xsl:template>
9403
+
9404
+ <!-- regex for 'display: inline-block;' -->
9405
+ <xsl:variable name="regex_svg_style_notsupported">display(\s|\h)*:(\s|\h)*inline-block(\s|\h)*;</xsl:variable>
9406
+ <xsl:template match="*[local-name() = 'svg']//*[local-name() = 'style']/text()" mode="svg_update">
9407
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.), $regex_svg_style_notsupported, '')"/>
9408
+ </xsl:template>
9409
+
9410
+ <!-- replace
9411
+ stroke="rgba(r, g, b, alpha)" to
9412
+ stroke="rgb(r,g,b)" stroke-opacity="alpha", and
9413
+ fill="rgba(r, g, b, alpha)" to
9414
+ fill="rgb(r,g,b)" fill-opacity="alpha" -->
9415
+ <xsl:template match="@*[local-name() = 'stroke' or local-name() = 'fill'][starts-with(normalize-space(.), 'rgba')]" mode="svg_update">
9416
+ <xsl:variable name="components_">
9417
+ <xsl:call-template name="split">
9418
+ <xsl:with-param name="pText" select="substring-before(substring-after(., '('), ')')"/>
9419
+ <xsl:with-param name="sep" select="','"/>
9420
+ </xsl:call-template>
9421
+ </xsl:variable>
9422
+ <xsl:variable name="components" select="xalan:nodeset($components_)"/>
9423
+ <xsl:variable name="att_name" select="local-name()"/>
9424
+ <xsl:attribute name="{$att_name}"><xsl:value-of select="concat('rgb(', $components/item[1], ',', $components/item[2], ',', $components/item[3], ')')"/></xsl:attribute>
9425
+ <xsl:attribute name="{$att_name}-opacity"><xsl:value-of select="$components/item[4]"/></xsl:attribute>
9426
+ </xsl:template>
9427
+
9388
9428
  <!-- ============== -->
9389
9429
  <!-- END: svg_update -->
9390
9430
  <!-- ============== -->
@@ -12343,7 +12383,9 @@
12343
12383
  <!-- Update xml -->
12344
12384
  <!-- ===================================== -->
12345
12385
  <!-- =========================================================================== -->
12346
- <!-- STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
12386
+ <!-- STEP1: -->
12387
+ <!-- - Re-order elements in 'preface', 'sections' based on @displayorder -->
12388
+ <!-- - Ignore 'span' without style -->
12347
12389
  <!-- =========================================================================== -->
12348
12390
  <xsl:template match="@*|node()" mode="update_xml_step1">
12349
12391
  <xsl:copy>
@@ -12426,7 +12468,8 @@
12426
12468
  </xsl:copy>
12427
12469
  </xsl:template>
12428
12470
 
12429
- <xsl:template match="*[local-name() = 'span'][@style]" mode="update_xml_step1" priority="2">
12471
+ <!-- Example with 'class': <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
12472
+ <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">
12430
12473
  <xsl:copy>
12431
12474
  <xsl:copy-of select="@*"/>
12432
12475
  <xsl:apply-templates mode="update_xml_step1"/>
@@ -6492,6 +6492,10 @@
6492
6492
  <xsl:variable name="footnote_inline">
6493
6493
  <fo:inline xsl:use-attribute-sets="fn-num-style">
6494
6494
 
6495
+ <xsl:if test="following-sibling::*[1][local-name() = 'fn']">
6496
+ <xsl:attribute name="padding-right">0.5mm</xsl:attribute>
6497
+ </xsl:if>
6498
+
6495
6499
  <fo:basic-link internal-destination="{$ref_id}" fox:alt-text="footnote {$current_fn_number}">
6496
6500
  <xsl:value-of select="$current_fn_number_text"/>
6497
6501
  </fo:basic-link>
@@ -7649,6 +7653,23 @@
7649
7653
  <xsl:apply-templates/>
7650
7654
  </xsl:template>
7651
7655
 
7656
+ <!-- Don't break standard's numbers -->
7657
+ <!-- Example : <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
7658
+ <xsl:template match="*[local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']" priority="2">
7659
+ <xsl:choose>
7660
+ <xsl:when test="ancestor::*[local-name() = 'table']"><xsl:apply-templates/></xsl:when>
7661
+ <xsl:when test="following-sibling::*[2][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']">
7662
+ <fo:inline keep-with-next.within-line="always"><xsl:apply-templates/></fo:inline>
7663
+ </xsl:when>
7664
+ <xsl:otherwise>
7665
+ <xsl:apply-templates/>
7666
+ </xsl:otherwise>
7667
+ </xsl:choose>
7668
+ </xsl:template>
7669
+ <xsl:template match="text()[not(ancestor::*[local-name() = 'table']) and preceding-sibling::*[1][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear'] and following-sibling::*[1][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']]" priority="2">
7670
+ <fo:inline keep-with-next.within-line="always"><xsl:value-of select="."/></fo:inline>
7671
+ </xsl:template>
7672
+
7652
7673
  <!-- ========================= -->
7653
7674
  <!-- END Rich text formatting -->
7654
7675
  <!-- ========================= -->
@@ -8044,7 +8065,7 @@
8044
8065
  <xsl:choose>
8045
8066
  <xsl:when test="@colspan">
8046
8067
  <xsl:variable name="td">
8047
- <xsl:element name="td">
8068
+ <xsl:element name="{local-name()}">
8048
8069
  <xsl:attribute name="divide"><xsl:value-of select="@colspan"/></xsl:attribute>
8049
8070
  <xsl:if test="local-name()='th'">
8050
8071
  <xsl:attribute name="font-weight">bold</xsl:attribute>
@@ -8059,7 +8080,7 @@
8059
8080
  </xsl:call-template>
8060
8081
  </xsl:when>
8061
8082
  <xsl:otherwise>
8062
- <xsl:element name="td">
8083
+ <xsl:element name="{local-name()}">
8063
8084
  <xsl:apply-templates select="@*" mode="simple-table-colspan"/>
8064
8085
  <xsl:if test="local-name()='th'">
8065
8086
  <xsl:attribute name="font-weight">bold</xsl:attribute>
@@ -8126,7 +8147,7 @@
8126
8147
  <xsl:variable name="currentRow" select="."/>
8127
8148
 
8128
8149
  <xsl:variable name="normalizedTDs">
8129
- <xsl:for-each select="xalan:nodeset($previousRow)//td">
8150
+ <xsl:for-each select="xalan:nodeset($previousRow)//*[self::td or self::th]">
8130
8151
  <xsl:choose>
8131
8152
  <xsl:when test="@rowspan &gt; 1">
8132
8153
  <xsl:copy>
@@ -8138,7 +8159,7 @@
8138
8159
  </xsl:copy>
8139
8160
  </xsl:when>
8140
8161
  <xsl:otherwise>
8141
- <xsl:copy-of select="$currentRow/td[1 + count(current()/preceding-sibling::td[not(@rowspan) or (@rowspan = 1)])]"/>
8162
+ <xsl:copy-of select="$currentRow/*[self::td or self::th][1 + count(current()/preceding-sibling::*[self::td or self::th][not(@rowspan) or (@rowspan = 1)])]"/>
8142
8163
  </xsl:otherwise>
8143
8164
  </xsl:choose>
8144
8165
  </xsl:for-each>
@@ -8853,12 +8874,6 @@
8853
8874
 
8854
8875
  <fo:block-container margin-left="0mm">
8855
8876
 
8856
- <!-- <xsl:if test="$namespace = 'iho'">
8857
- <xsl:if test="ancestor::iho:td">
8858
- <xsl:attribute name="font-size">12pt</xsl:attribute>
8859
- </xsl:if>
8860
- </xsl:if> -->
8861
-
8862
8877
  <fo:block>
8863
8878
 
8864
8879
  <xsl:if test="@parent-type = 'quote'">
@@ -9385,6 +9400,31 @@
9385
9400
  <xsl:apply-templates mode="svg_update"/>
9386
9401
  </xsl:copy>
9387
9402
  </xsl:template>
9403
+
9404
+ <!-- regex for 'display: inline-block;' -->
9405
+ <xsl:variable name="regex_svg_style_notsupported">display(\s|\h)*:(\s|\h)*inline-block(\s|\h)*;</xsl:variable>
9406
+ <xsl:template match="*[local-name() = 'svg']//*[local-name() = 'style']/text()" mode="svg_update">
9407
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.), $regex_svg_style_notsupported, '')"/>
9408
+ </xsl:template>
9409
+
9410
+ <!-- replace
9411
+ stroke="rgba(r, g, b, alpha)" to
9412
+ stroke="rgb(r,g,b)" stroke-opacity="alpha", and
9413
+ fill="rgba(r, g, b, alpha)" to
9414
+ fill="rgb(r,g,b)" fill-opacity="alpha" -->
9415
+ <xsl:template match="@*[local-name() = 'stroke' or local-name() = 'fill'][starts-with(normalize-space(.), 'rgba')]" mode="svg_update">
9416
+ <xsl:variable name="components_">
9417
+ <xsl:call-template name="split">
9418
+ <xsl:with-param name="pText" select="substring-before(substring-after(., '('), ')')"/>
9419
+ <xsl:with-param name="sep" select="','"/>
9420
+ </xsl:call-template>
9421
+ </xsl:variable>
9422
+ <xsl:variable name="components" select="xalan:nodeset($components_)"/>
9423
+ <xsl:variable name="att_name" select="local-name()"/>
9424
+ <xsl:attribute name="{$att_name}"><xsl:value-of select="concat('rgb(', $components/item[1], ',', $components/item[2], ',', $components/item[3], ')')"/></xsl:attribute>
9425
+ <xsl:attribute name="{$att_name}-opacity"><xsl:value-of select="$components/item[4]"/></xsl:attribute>
9426
+ </xsl:template>
9427
+
9388
9428
  <!-- ============== -->
9389
9429
  <!-- END: svg_update -->
9390
9430
  <!-- ============== -->
@@ -12343,7 +12383,9 @@
12343
12383
  <!-- Update xml -->
12344
12384
  <!-- ===================================== -->
12345
12385
  <!-- =========================================================================== -->
12346
- <!-- STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
12386
+ <!-- STEP1: -->
12387
+ <!-- - Re-order elements in 'preface', 'sections' based on @displayorder -->
12388
+ <!-- - Ignore 'span' without style -->
12347
12389
  <!-- =========================================================================== -->
12348
12390
  <xsl:template match="@*|node()" mode="update_xml_step1">
12349
12391
  <xsl:copy>
@@ -12426,7 +12468,8 @@
12426
12468
  </xsl:copy>
12427
12469
  </xsl:template>
12428
12470
 
12429
- <xsl:template match="*[local-name() = 'span'][@style]" mode="update_xml_step1" priority="2">
12471
+ <!-- Example with 'class': <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
12472
+ <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">
12430
12473
  <xsl:copy>
12431
12474
  <xsl:copy-of select="@*"/>
12432
12475
  <xsl:apply-templates mode="update_xml_step1"/>
@@ -14,12 +14,12 @@ module IsoDoc
14
14
  return
15
15
  end
16
16
  i = docxml.at(ns("//indexsect")) ||
17
- docxml.root.add_child("<indexsect #{add_id}><title>#{@i18n.index}"\
17
+ docxml.root.add_child("<indexsect #{add_id}><title>#{@i18n.index}" \
18
18
  "</title></indexsect>").first
19
19
  index = sort_indexterms(
20
20
  docxml.xpath(ns("//index")),
21
21
  docxml.xpath(ns("//index-xref[@also = 'false']")),
22
- docxml.xpath(ns("//index-xref[@also = 'true']"))
22
+ docxml.xpath(ns("//index-xref[@also = 'true']")),
23
23
  )
24
24
  index1(docxml, i, index)
25
25
  end
@@ -27,7 +27,9 @@ module IsoDoc
27
27
  def index1(docxml, i, index)
28
28
  index.keys.sort.each do |k|
29
29
  c = i.add_child "<clause #{add_id}><title>#{k}</title><ul></ul></clause>"
30
- words = index[k].keys.each_with_object({}) { |w, v| v[sortable(w).downcase] = w }
30
+ words = index[k].keys.each_with_object({}) do |w, v|
31
+ v[sortable(w).downcase] = w
32
+ end
31
33
  words.keys.localize(@lang.to_sym).sort.to_a.each do |w|
32
34
  c.first.at(ns("./ul")).add_child index_entries(words, index[k], w)
33
35
  end
@@ -64,12 +66,13 @@ module IsoDoc
64
66
  ret = index_entries_head(words[secondary],
65
67
  index.dig(words[secondary], nil),
66
68
  index_entries_opt)
67
- words3 = index[words[secondary]]&.keys&.reject { |k| k.nil? }
69
+ words3 = index[words[secondary]]&.keys&.reject(&:nil?)
68
70
  &.each_with_object({}) { |w, v| v[w.downcase] = w }
69
71
  unless words3.empty?
70
72
  ret += "<ul>"
71
73
  words3.keys.localize(@lang.to_sym).sort.to_a.each do |w|
72
- ret += (index_entries_head(words3[w], index[words[secondary]][words3[w]], index_entries_opt) + "</li>")
74
+ ret += (index_entries_head(words3[w],
75
+ index[words[secondary]][words3[w]], index_entries_opt) + "</li>")
73
76
  end
74
77
  ret += "</ul>"
75
78
  end
@@ -79,10 +82,18 @@ module IsoDoc
79
82
  def index_entries_head(head, entries, opt)
80
83
  ret = "<li>#{head}"
81
84
  xref = entries&.dig(:xref)&.join(", ")
82
- see_sort = entries&.dig(:see)&.each_with_object({}) { |w, v| v[sortable(w).downcase] = w }
83
- see = see_sort&.keys&.localize(@lang.to_sym)&.sort&.to_a&.map { |k| see_sort[k] }&.join(", ")
84
- also_sort = entries&.dig(:also)&.each_with_object({}) { |w, v| v[sortable(w).downcase] = w }
85
- also = also_sort&.keys&.localize(@lang.to_sym)&.sort&.to_a&.map { |k| also_sort[k] }&.join(", ")
85
+ see_sort = entries&.dig(:see)&.each_with_object({}) do |w, v|
86
+ v[sortable(w).downcase] = w
87
+ end
88
+ see = see_sort&.keys&.localize(@lang.to_sym)&.sort&.to_a&.map do |k|
89
+ see_sort[k]
90
+ end&.join(", ")
91
+ also_sort = entries&.dig(:also)&.each_with_object({}) do |w, v|
92
+ v[sortable(w).downcase] = w
93
+ end
94
+ also = also_sort&.keys&.localize(@lang.to_sym)&.sort&.to_a&.map do |k|
95
+ also_sort[k]
96
+ end&.join(", ")
86
97
  ret += "#{opt[:xref_lbl]} #{xref}" if xref
87
98
  ret += "#{opt[:see_lbl]} #{see}" if see
88
99
  ret += "#{opt[:also_lbl]} #{also}" if also
@@ -107,16 +118,16 @@ module IsoDoc
107
118
  end
108
119
  end
109
120
 
110
- def extract_indexsee(v, terms, label)
111
- terms.each_with_object(v) do |t, v|
112
- term = t&.at(ns("./primary"))&.children&.to_xml
113
- term2 = t&.at(ns("./secondary"))&.children&.to_xml
114
- term3 = t&.at(ns("./tertiary"))&.children&.to_xml
121
+ def extract_indexsee(idx, terms, label)
122
+ terms.each_with_object(idx) do |t, v|
123
+ term = to_xml(t.at(ns("./primary"))&.children)
124
+ term2 = to_xml(t.at(ns("./secondary"))&.children)
125
+ term3 = to_xml(t.at(ns("./tertiary"))&.children)
115
126
  v[term] ||= {}
116
127
  v[term][term2] ||= {}
117
128
  v[term][term2][term3] ||= {}
118
129
  v[term][term2][term3][label] ||= []
119
- v[term][term2][term3][label] << t&.at(ns("./target"))&.children&.to_xml
130
+ v[term][term2][term3][label] << to_xml(t.at(ns("./target"))&.children)
120
131
  t.remove
121
132
  end
122
133
  end
@@ -129,9 +140,9 @@ module IsoDoc
129
140
  # attributes are decoded into UTF-8, elements in extract_indexsee are still in entities
130
141
  def extract_indexterms(terms)
131
142
  terms.each_with_object({}) do |t, v|
132
- term = t&.at(ns("./primary"))&.children&.to_xml
133
- term2 = t&.at(ns("./secondary"))&.children&.to_xml
134
- term3 = t&.at(ns("./tertiary"))&.children&.to_xml
143
+ term = to_xml(t.at(ns("./primary"))&.children)
144
+ term2 = to_xml(t.at(ns("./secondary"))&.children)
145
+ term3 = to_xml(t.at(ns("./tertiary"))&.children)
135
146
  index2bookmark(t)
136
147
  v[term] ||= {}
137
148
  v[term][term2] ||= {}
@@ -4371,6 +4371,10 @@
4371
4371
  <xsl:variable name="footnote_inline">
4372
4372
  <fo:inline xsl:use-attribute-sets="fn-num-style">
4373
4373
 
4374
+ <xsl:if test="following-sibling::*[1][local-name() = 'fn']">
4375
+ <xsl:attribute name="padding-right">0.5mm</xsl:attribute>
4376
+ </xsl:if>
4377
+
4374
4378
  <fo:basic-link internal-destination="{$ref_id}" fox:alt-text="footnote {$current_fn_number}">
4375
4379
  <xsl:value-of select="$current_fn_number_text"/>
4376
4380
  </fo:basic-link>
@@ -5541,6 +5545,23 @@
5541
5545
  <xsl:apply-templates/>
5542
5546
  </xsl:template>
5543
5547
 
5548
+ <!-- Don't break standard's numbers -->
5549
+ <!-- Example : <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
5550
+ <xsl:template match="*[local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']" priority="2">
5551
+ <xsl:choose>
5552
+ <xsl:when test="ancestor::*[local-name() = 'table']"><xsl:apply-templates/></xsl:when>
5553
+ <xsl:when test="following-sibling::*[2][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']">
5554
+ <fo:inline keep-with-next.within-line="always"><xsl:apply-templates/></fo:inline>
5555
+ </xsl:when>
5556
+ <xsl:otherwise>
5557
+ <xsl:apply-templates/>
5558
+ </xsl:otherwise>
5559
+ </xsl:choose>
5560
+ </xsl:template>
5561
+ <xsl:template match="text()[not(ancestor::*[local-name() = 'table']) and preceding-sibling::*[1][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear'] and following-sibling::*[1][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']]" priority="2">
5562
+ <fo:inline keep-with-next.within-line="always"><xsl:value-of select="."/></fo:inline>
5563
+ </xsl:template>
5564
+
5544
5565
  <!-- ========================= -->
5545
5566
  <!-- END Rich text formatting -->
5546
5567
  <!-- ========================= -->
@@ -5936,7 +5957,7 @@
5936
5957
  <xsl:choose>
5937
5958
  <xsl:when test="@colspan">
5938
5959
  <xsl:variable name="td">
5939
- <xsl:element name="td">
5960
+ <xsl:element name="{local-name()}">
5940
5961
  <xsl:attribute name="divide"><xsl:value-of select="@colspan"/></xsl:attribute>
5941
5962
  <xsl:if test="local-name()='th'">
5942
5963
  <xsl:attribute name="font-weight">bold</xsl:attribute>
@@ -5951,7 +5972,7 @@
5951
5972
  </xsl:call-template>
5952
5973
  </xsl:when>
5953
5974
  <xsl:otherwise>
5954
- <xsl:element name="td">
5975
+ <xsl:element name="{local-name()}">
5955
5976
  <xsl:apply-templates select="@*" mode="simple-table-colspan"/>
5956
5977
  <xsl:if test="local-name()='th'">
5957
5978
  <xsl:attribute name="font-weight">bold</xsl:attribute>
@@ -6018,7 +6039,7 @@
6018
6039
  <xsl:variable name="currentRow" select="."/>
6019
6040
 
6020
6041
  <xsl:variable name="normalizedTDs">
6021
- <xsl:for-each select="xalan:nodeset($previousRow)//td">
6042
+ <xsl:for-each select="xalan:nodeset($previousRow)//*[self::td or self::th]">
6022
6043
  <xsl:choose>
6023
6044
  <xsl:when test="@rowspan &gt; 1">
6024
6045
  <xsl:copy>
@@ -6030,7 +6051,7 @@
6030
6051
  </xsl:copy>
6031
6052
  </xsl:when>
6032
6053
  <xsl:otherwise>
6033
- <xsl:copy-of select="$currentRow/td[1 + count(current()/preceding-sibling::td[not(@rowspan) or (@rowspan = 1)])]"/>
6054
+ <xsl:copy-of select="$currentRow/*[self::td or self::th][1 + count(current()/preceding-sibling::*[self::td or self::th][not(@rowspan) or (@rowspan = 1)])]"/>
6034
6055
  </xsl:otherwise>
6035
6056
  </xsl:choose>
6036
6057
  </xsl:for-each>
@@ -6707,12 +6728,6 @@
6707
6728
 
6708
6729
  <fo:block-container margin-left="0mm">
6709
6730
 
6710
- <!-- <xsl:if test="$namespace = 'iho'">
6711
- <xsl:if test="ancestor::iho:td">
6712
- <xsl:attribute name="font-size">12pt</xsl:attribute>
6713
- </xsl:if>
6714
- </xsl:if> -->
6715
-
6716
6731
  <fo:block>
6717
6732
 
6718
6733
  <fo:inline xsl:use-attribute-sets="note-name-style">
@@ -7216,6 +7231,31 @@
7216
7231
  <xsl:apply-templates mode="svg_update"/>
7217
7232
  </xsl:copy>
7218
7233
  </xsl:template>
7234
+
7235
+ <!-- regex for 'display: inline-block;' -->
7236
+ <xsl:variable name="regex_svg_style_notsupported">display(\s|\h)*:(\s|\h)*inline-block(\s|\h)*;</xsl:variable>
7237
+ <xsl:template match="*[local-name() = 'svg']//*[local-name() = 'style']/text()" mode="svg_update">
7238
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.), $regex_svg_style_notsupported, '')"/>
7239
+ </xsl:template>
7240
+
7241
+ <!-- replace
7242
+ stroke="rgba(r, g, b, alpha)" to
7243
+ stroke="rgb(r,g,b)" stroke-opacity="alpha", and
7244
+ fill="rgba(r, g, b, alpha)" to
7245
+ fill="rgb(r,g,b)" fill-opacity="alpha" -->
7246
+ <xsl:template match="@*[local-name() = 'stroke' or local-name() = 'fill'][starts-with(normalize-space(.), 'rgba')]" mode="svg_update">
7247
+ <xsl:variable name="components_">
7248
+ <xsl:call-template name="split">
7249
+ <xsl:with-param name="pText" select="substring-before(substring-after(., '('), ')')"/>
7250
+ <xsl:with-param name="sep" select="','"/>
7251
+ </xsl:call-template>
7252
+ </xsl:variable>
7253
+ <xsl:variable name="components" select="xalan:nodeset($components_)"/>
7254
+ <xsl:variable name="att_name" select="local-name()"/>
7255
+ <xsl:attribute name="{$att_name}"><xsl:value-of select="concat('rgb(', $components/item[1], ',', $components/item[2], ',', $components/item[3], ')')"/></xsl:attribute>
7256
+ <xsl:attribute name="{$att_name}-opacity"><xsl:value-of select="$components/item[4]"/></xsl:attribute>
7257
+ </xsl:template>
7258
+
7219
7259
  <!-- ============== -->
7220
7260
  <!-- END: svg_update -->
7221
7261
  <!-- ============== -->
@@ -10163,7 +10203,9 @@
10163
10203
  <!-- Update xml -->
10164
10204
  <!-- ===================================== -->
10165
10205
  <!-- =========================================================================== -->
10166
- <!-- STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
10206
+ <!-- STEP1: -->
10207
+ <!-- - Re-order elements in 'preface', 'sections' based on @displayorder -->
10208
+ <!-- - Ignore 'span' without style -->
10167
10209
  <!-- =========================================================================== -->
10168
10210
  <xsl:template match="@*|node()" mode="update_xml_step1">
10169
10211
  <xsl:copy>
@@ -10246,7 +10288,8 @@
10246
10288
  </xsl:copy>
10247
10289
  </xsl:template>
10248
10290
 
10249
- <xsl:template match="*[local-name() = 'span'][@style]" mode="update_xml_step1" priority="2">
10291
+ <!-- Example with 'class': <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
10292
+ <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">
10250
10293
  <xsl:copy>
10251
10294
  <xsl:copy-of select="@*"/>
10252
10295
  <xsl:apply-templates mode="update_xml_step1"/>
@@ -9,7 +9,7 @@ module IsoDoc
9
9
  module BIPM
10
10
  class PresentationXMLConvert < IsoDoc::Generic::PresentationXMLConvert
11
11
  def convert1(docxml, filename, dir)
12
- @jcgm = docxml&.at(ns("//bibdata/ext/editorialgroup/committee/"\
12
+ @jcgm = docxml&.at(ns("//bibdata/ext/editorialgroup/committee/" \
13
13
  "@acronym"))&.value == "JCGM"
14
14
  @iso = IsoDoc::Iso::PresentationXMLConvert
15
15
  .new({ language: @lang, script: @script })
@@ -18,9 +18,8 @@ module IsoDoc
18
18
  super
19
19
  end
20
20
 
21
- def eref_localities1(target, type, from, upto, node, lang = "en")
22
- @jcgm and return @iso.eref_localities1(target, type, from, upto,
23
- node, lang)
21
+ def eref_localities1(opt)
22
+ @jcgm and return @iso.eref_localities1(opt)
24
23
  super
25
24
  end
26
25
 
@@ -46,7 +45,7 @@ module IsoDoc
46
45
 
47
46
  lbl = @xrefs.anchor(elem["id"], :label)
48
47
  t = elem.at(ns("./title")) and
49
- t.children = "<strong>#{t.children.to_xml}</strong>"
48
+ t.children = "<strong>#{to_xml(t.children)}</strong>"
50
49
  prefix_name(elem, ".<tab/>", lbl, "title")
51
50
  end
52
51
 
@@ -118,7 +117,7 @@ module IsoDoc
118
117
  end
119
118
 
120
119
  def bibdata_titles(bibdata)
121
- return unless app = bibdata.at(ns("//bibdata/ext/"\
120
+ return unless app = bibdata.at(ns("//bibdata/ext/" \
122
121
  "structuredidentifier/part"))
123
122
 
124
123
  bibdata.xpath(ns("//bibdata/title[@type = 'part']")).each do |t|
@@ -126,7 +125,7 @@ module IsoDoc
126
125
  t["type"] = "part-with-numbering"
127
126
  part = t["language"] == "en" ? "Part" : "Partie"
128
127
  # not looking up in YAML
129
- t.children = l10n("#{part} #{app.text}: #{t.children.to_xml}",
128
+ t.children = l10n("#{part} #{app.text}: #{to_xml(t.children)}",
130
129
  t["language"])
131
130
  end
132
131
  end
@@ -204,9 +203,9 @@ module IsoDoc
204
203
 
205
204
  def termsource1(elem)
206
205
  while elem&.next_element&.name == "termsource"
207
- elem << "; #{elem.next_element.remove.children.to_xml}"
206
+ elem << "; #{to_xml(elem.next_element.remove.children)}"
208
207
  end
209
- elem.children = l10n("[#{@i18n.source} #{elem.children.to_xml.strip}]")
208
+ elem.children = l10n("[#{@i18n.source} #{to_xml(elem.children).strip}]")
210
209
  end
211
210
 
212
211
  include Init
@@ -683,6 +683,9 @@
683
683
  </define>
684
684
  <define name="underline">
685
685
  <element name="underline">
686
+ <optional>
687
+ <attribute name="style"/>
688
+ </optional>
686
689
  <zeroOrMore>
687
690
  <ref name="PureTextElement"/>
688
691
  </zeroOrMore>
@@ -47,7 +47,7 @@
47
47
  </element>
48
48
  </define>
49
49
  <define name="DocumentType">
50
- <value>document</value>
50
+ <text/>
51
51
  </define>
52
52
  <define name="docsubtype">
53
53
  <element name="subdoctype">
@@ -2653,6 +2653,7 @@
2653
2653
  <value>full</value>
2654
2654
  <value>short</value>
2655
2655
  <value>id</value>
2656
+ <value>modspec</value>
2656
2657
  </choice>
2657
2658
  </define>
2658
2659
  <define name="erefTypeWithConnective">
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module BIPM
3
- VERSION = "2.1.13".freeze
3
+ VERSION = "2.2.0".freeze
4
4
  end
5
5
  end
@@ -27,8 +27,8 @@ Gem::Specification.new do |spec|
27
27
  spec.require_paths = ["lib"]
28
28
  spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
29
29
 
30
- spec.add_dependency "metanorma-generic", "~> 2.2.2"
31
- spec.add_dependency "metanorma-iso", "~> 2.2.0"
30
+ spec.add_dependency "metanorma-generic", "~> 2.3.0"
31
+ spec.add_dependency "metanorma-iso", "~> 2.3.0"
32
32
 
33
33
  spec.add_development_dependency "debug"
34
34
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-bipm
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.13
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-11-21 00:00:00.000000000 Z
11
+ date: 2022-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metanorma-generic
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.2.2
19
+ version: 2.3.0
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.2.2
26
+ version: 2.3.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: metanorma-iso
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 2.2.0
33
+ version: 2.3.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 2.2.0
40
+ version: 2.3.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: debug
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -297,7 +297,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
297
297
  - !ruby/object:Gem::Version
298
298
  version: '0'
299
299
  requirements: []
300
- rubygems_version: 3.3.7
300
+ rubygems_version: 3.3.26
301
301
  signing_key:
302
302
  specification_version: 4
303
303
  summary: metanorma-bipm lets you write BIPM standards in Metanorma.