metanorma-bipm 2.1.13 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
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.