metanorma-iec 2.0.6 → 2.1.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.
@@ -114,7 +114,13 @@
114
114
  <xsl:call-template name="namespaceCheck"/>
115
115
  <!-- https://stackoverflow.com/questions/25261949/xsl-fo-letter-spacing-with-text-align -->
116
116
  <!-- https://xmlgraphics.apache.org/fop/knownissues.html -->
117
- <fo:root xsl:use-attribute-sets="root-style" xml:lang="{$lang}">
117
+ <fo:root xml:lang="{$lang}">
118
+ <xsl:variable name="root-style">
119
+ <root-style xsl:use-attribute-sets="root-style"/>
120
+ </xsl:variable>
121
+ <xsl:call-template name="insertRootStyle">
122
+ <xsl:with-param name="root-style" select="$root-style"/>
123
+ </xsl:call-template>
118
124
  <fo:layout-master-set>
119
125
  <!-- cover pages -->
120
126
  <fo:simple-page-master master-name="cover" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
@@ -930,14 +936,16 @@
930
936
  <fo:inline keep-together.within-line="always" font-size="25pt" font-weight="bold" color="{$color_gray}" border-bottom="0.5pt solid {$color_gray}" padding-bottom="3.5mm" baseline-shift="5.5mm"><fo:leader leader-pattern="space"/><xsl:value-of select="//iec:iec-standard/iec:bibdata/iec:docidentifier[@type = 'iso' or @type = 'ISO']"/></fo:inline>
931
937
  </fo:block>
932
938
  <fo:block font-size="10.5pt" text-align="right" margin-top="0.5mm">
933
- <xsl:variable name="title-edition">
934
- <xsl:call-template name="getTitle">
935
- <xsl:with-param name="name" select="'title-edition'"/>
936
- </xsl:call-template>
937
- </xsl:variable>
938
- <xsl:value-of select="$title-edition"/>
939
+ <xsl:call-template name="capitalize">
940
+ <xsl:with-param name="str">
941
+ <xsl:call-template name="getLocalizedString">
942
+ <xsl:with-param name="key">edition</xsl:with-param>
943
+ </xsl:call-template>
944
+ </xsl:with-param>
945
+ </xsl:call-template>
946
+ <xsl:text> </xsl:text>
939
947
  <fo:inline>
940
- <xsl:variable name="edition" select="//iec:iec-standard/iec:bibdata/iec:edition"/>
948
+ <xsl:variable name="edition" select="//iec:iec-standard/iec:bibdata/iec:edition[normalize-space(@language) = '']"/>
941
949
  <xsl:value-of select="$edition"/>
942
950
  <xsl:if test="not(contains($edition, '.'))">.0</xsl:if>
943
951
  </fo:inline>
@@ -1922,7 +1930,7 @@
1922
1930
  </xsl:copy>
1923
1931
  </xsl:template> -->
1924
1932
 
1925
- <xsl:param name="svg_images"/><xsl:variable name="images" select="document($svg_images)"/><xsl:param name="basepath"/><xsl:param name="external_index"/><xsl:param name="syntax-highlight">false</xsl:param><xsl:variable name="lang">
1933
+ <xsl:param name="svg_images"/><xsl:variable name="images" select="document($svg_images)"/><xsl:param name="basepath"/><xsl:param name="external_index"/><xsl:param name="syntax-highlight">false</xsl:param><xsl:param name="add_math_as_text">true</xsl:param><xsl:variable name="lang">
1926
1934
  <xsl:call-template name="getLang"/>
1927
1935
  </xsl:variable><xsl:variable name="pageWidth_">
1928
1936
  210
@@ -1937,20 +1945,7 @@
1937
1945
  </xsl:variable><xsl:variable name="marginTop" select="normalize-space($marginTop_)"/><xsl:variable name="marginBottom_">
1938
1946
  15
1939
1947
  </xsl:variable><xsl:variable name="marginBottom" select="normalize-space($marginBottom_)"/><xsl:variable name="titles_">
1940
-
1941
- <title-edition lang="en">
1942
-
1943
- <xsl:text>Edition </xsl:text>
1944
-
1945
- </title-edition>
1946
1948
 
1947
- <title-edition lang="fr">
1948
- <xsl:text>Édition </xsl:text>
1949
- </title-edition>
1950
-
1951
- <title-edition lang="ru">
1952
- <xsl:text>Издание </xsl:text>
1953
- </title-edition>
1954
1949
 
1955
1950
  <!-- These titles of Table of contents renders different than determined in localized-strings -->
1956
1951
  <title-toc lang="en">
@@ -2035,7 +2030,7 @@
2035
2030
  </xsl:variable><xsl:variable name="bibdata">
2036
2031
  <xsl:copy-of select="//*[contains(local-name(), '-standard')]/*[local-name() = 'bibdata']"/>
2037
2032
  <xsl:copy-of select="//*[contains(local-name(), '-standard')]/*[local-name() = 'localized-strings']"/>
2038
- </xsl:variable><xsl:variable name="linebreak">&#8232;</xsl:variable><xsl:variable name="tab_zh"> </xsl:variable><xsl:variable name="non_breaking_hyphen">‑</xsl:variable><xsl:variable name="thin_space"> </xsl:variable><xsl:variable name="zero_width_space">​</xsl:variable><xsl:variable name="en_dash">–</xsl:variable><xsl:template name="getTitle">
2033
+ </xsl:variable><xsl:variable name="linebreak">&#8232;</xsl:variable><xsl:variable name="tab_zh"> </xsl:variable><xsl:variable name="non_breaking_hyphen">‑</xsl:variable><xsl:variable name="thin_space"> </xsl:variable><xsl:variable name="zero_width_space">​</xsl:variable><xsl:variable name="hair_space"> </xsl:variable><xsl:variable name="en_dash">–</xsl:variable><xsl:template name="getTitle">
2039
2034
  <xsl:param name="name"/>
2040
2035
  <xsl:param name="lang"/>
2041
2036
  <xsl:variable name="lang_">
@@ -2078,7 +2073,30 @@
2078
2073
 
2079
2074
 
2080
2075
 
2081
- </xsl:attribute-set><xsl:attribute-set name="copyright-statement-style">
2076
+ </xsl:attribute-set><xsl:template name="insertRootStyle">
2077
+ <xsl:param name="root-style"/>
2078
+ <xsl:variable name="root-style_" select="xalan:nodeset($root-style)"/>
2079
+
2080
+ <xsl:variable name="additional_fonts_">
2081
+ <xsl:for-each select="//*[contains(local-name(), '-standard')][1]/*[local-name() = 'misc-container']/*[local-name() = 'presentation-metadata'][*[local-name() = 'name'] = 'fonts']/*[local-name() = 'value'] | //*[contains(local-name(), '-standard')][1]/*[local-name() = 'presentation-metadata'][*[local-name() = 'name'] = 'fonts']/*[local-name() = 'value']">
2082
+ <xsl:value-of select="."/><xsl:if test="position() != last()">, </xsl:if>
2083
+ </xsl:for-each>
2084
+ </xsl:variable>
2085
+ <xsl:variable name="additional_fonts" select="normalize-space($additional_fonts_)"/>
2086
+
2087
+ <xsl:for-each select="$root-style_/root-style/@*">
2088
+ <xsl:choose>
2089
+ <xsl:when test="local-name() = 'font-family' and $additional_fonts != ''">
2090
+ <xsl:attribute name="{local-name()}">
2091
+ <xsl:value-of select="."/>, <xsl:value-of select="$additional_fonts"/>
2092
+ </xsl:attribute>
2093
+ </xsl:when>
2094
+ <xsl:otherwise>
2095
+ <xsl:copy-of select="."/>
2096
+ </xsl:otherwise>
2097
+ </xsl:choose>
2098
+ </xsl:for-each>
2099
+ </xsl:template><xsl:attribute-set name="copyright-statement-style">
2082
2100
 
2083
2101
  </xsl:attribute-set><xsl:attribute-set name="copyright-statement-title-style">
2084
2102
 
@@ -2136,7 +2154,6 @@
2136
2154
 
2137
2155
 
2138
2156
  </xsl:attribute-set><xsl:attribute-set name="sourcecode-container-style">
2139
- <xsl:attribute name="margin-left">0mm</xsl:attribute>
2140
2157
 
2141
2158
  </xsl:attribute-set><xsl:attribute-set name="sourcecode-style">
2142
2159
  <xsl:attribute name="white-space">pre</xsl:attribute>
@@ -2224,6 +2241,7 @@
2224
2241
  <xsl:attribute name="margin-left">10mm</xsl:attribute>
2225
2242
 
2226
2243
 
2244
+
2227
2245
  </xsl:attribute-set><xsl:attribute-set name="example-name-style">
2228
2246
 
2229
2247
 
@@ -2620,7 +2638,7 @@
2620
2638
 
2621
2639
 
2622
2640
 
2623
- </xsl:attribute-set><xsl:attribute-set name="termnote-name-style">
2641
+ </xsl:attribute-set><xsl:attribute-set name="termnote-name-style">
2624
2642
 
2625
2643
 
2626
2644
 
@@ -3343,10 +3361,41 @@
3343
3361
  <xsl:sort select="@displayorder" data-type="number"/>
3344
3362
  <xsl:apply-templates select="."/>
3345
3363
  </xsl:for-each>
3346
- </xsl:template><xsl:template match="text()">
3347
- <xsl:value-of select="."/>
3364
+ </xsl:template><xsl:variable name="tag_fo_inline_keep-together_within-line_open">###fo:inline keep-together_within-line###</xsl:variable><xsl:variable name="tag_fo_inline_keep-together_within-line_close">###/fo:inline keep-together_within-line###</xsl:variable><xsl:template match="text()" name="text">
3365
+
3366
+ <xsl:variable name="regex_standard_reference">([A-Z]{2,}(/[A-Z]{2,})* \d+(-\d+)*(:\d{4})?)</xsl:variable>
3367
+ <xsl:variable name="text" select="java:replaceAll(java:java.lang.String.new(.),$regex_standard_reference,concat($tag_fo_inline_keep-together_within-line_open,'$1',$tag_fo_inline_keep-together_within-line_close))"/>
3368
+ <xsl:call-template name="replace_fo_inline_tags">
3369
+ <xsl:with-param name="tag_open" select="$tag_fo_inline_keep-together_within-line_open"/>
3370
+ <xsl:with-param name="tag_close" select="$tag_fo_inline_keep-together_within-line_close"/>
3371
+ <xsl:with-param name="text" select="$text"/>
3372
+ </xsl:call-template>
3373
+
3374
+ </xsl:template><xsl:template name="replace_fo_inline_tags">
3375
+ <xsl:param name="tag_open"/>
3376
+ <xsl:param name="tag_close"/>
3377
+ <xsl:param name="text"/>
3378
+ <xsl:choose>
3379
+ <xsl:when test="contains($text, $tag_open)">
3380
+ <xsl:value-of select="substring-before($text, $tag_open)"/>
3381
+ <!-- <xsl:text disable-output-escaping="yes">&lt;fo:inline keep-together.within-line="always"&gt;</xsl:text> -->
3382
+ <xsl:variable name="text_after" select="substring-after($text, $tag_open)"/>
3383
+ <fo:inline keep-together.within-line="always">
3384
+ <xsl:value-of select="substring-before($text_after, $tag_close)"/>
3385
+ </fo:inline>
3386
+ <!-- <xsl:text disable-output-escaping="yes">&lt;/fo:inline&gt;</xsl:text> -->
3387
+ <xsl:call-template name="replace_fo_inline_tags">
3388
+ <xsl:with-param name="tag_open" select="$tag_open"/>
3389
+ <xsl:with-param name="tag_close" select="$tag_close"/>
3390
+ <xsl:with-param name="text" select="substring-after($text_after, $tag_close)"/>
3391
+ </xsl:call-template>
3392
+ </xsl:when>
3393
+ <xsl:otherwise><xsl:value-of select="$text"/></xsl:otherwise>
3394
+ </xsl:choose>
3348
3395
  </xsl:template><xsl:template match="*[local-name()='br']">
3349
3396
  <xsl:value-of select="$linebreak"/>
3397
+ </xsl:template><xsl:template match="*[local-name() = 'keep-together_within-line']">
3398
+ <fo:inline keep-together.within-line="always"><xsl:apply-templates/></fo:inline>
3350
3399
  </xsl:template><xsl:template match="*[local-name()='copyright-statement']">
3351
3400
  <fo:block xsl:use-attribute-sets="copyright-statement-style">
3352
3401
  <xsl:apply-templates/>
@@ -3415,8 +3464,23 @@
3415
3464
  </fo:block>
3416
3465
 
3417
3466
  </xsl:template><xsl:template match="*[local-name()='td']//text() | *[local-name()='th']//text() | *[local-name()='dt']//text() | *[local-name()='dd']//text()" priority="1">
3418
- <!-- <xsl:call-template name="add-zero-spaces"/> -->
3419
- <xsl:call-template name="add-zero-spaces-java"/>
3467
+ <xsl:choose>
3468
+ <xsl:when test="parent::*[local-name() = 'keep-together_within-line']">
3469
+ <xsl:value-of select="."/>
3470
+ </xsl:when>
3471
+ <xsl:otherwise>
3472
+ <xsl:call-template name="addZeroWidthSpacesToTextNodes"/>
3473
+ </xsl:otherwise>
3474
+ </xsl:choose>
3475
+ </xsl:template><xsl:template name="addZeroWidthSpacesToTextNodes">
3476
+ <xsl:variable name="text"><text><xsl:call-template name="text"/></text></xsl:variable>
3477
+ <!-- <xsl:copy-of select="$text"/> -->
3478
+ <xsl:for-each select="xalan:nodeset($text)/text/node()">
3479
+ <xsl:choose>
3480
+ <xsl:when test="self::text()"><xsl:call-template name="add-zero-spaces-java"/></xsl:when>
3481
+ <xsl:otherwise><xsl:copy-of select="."/></xsl:otherwise> <!-- copy 'as-is' for <fo:inline keep-together.within-line="always" ... -->
3482
+ </xsl:choose>
3483
+ </xsl:for-each>
3420
3484
  </xsl:template><xsl:template match="*[local-name()='table']" name="table">
3421
3485
 
3422
3486
  <xsl:variable name="table-preamble">
@@ -3544,16 +3608,9 @@
3544
3608
  </xsl:for-each>
3545
3609
  </xsl:when>
3546
3610
  <xsl:otherwise>
3547
- <xsl:for-each select="xalan:nodeset($colwidths)//column">
3548
- <xsl:choose>
3549
- <xsl:when test=". = 1 or . = 0">
3550
- <fo:table-column column-width="proportional-column-width(2)"/>
3551
- </xsl:when>
3552
- <xsl:otherwise>
3553
- <fo:table-column column-width="proportional-column-width({.})"/>
3554
- </xsl:otherwise>
3555
- </xsl:choose>
3556
- </xsl:for-each>
3611
+ <xsl:call-template name="insertTableColumnWidth">
3612
+ <xsl:with-param name="colwidths" select="$colwidths"/>
3613
+ </xsl:call-template>
3557
3614
  </xsl:otherwise>
3558
3615
  </xsl:choose>
3559
3616
 
@@ -3717,6 +3774,7 @@
3717
3774
  <xsl:with-param name="text" select="$td_text"/>
3718
3775
  </xsl:call-template>
3719
3776
  </xsl:variable>
3777
+ <!-- <xsl:message>string_with_added_zerospaces=<xsl:value-of select="$string_with_added_zerospaces"/></xsl:message> -->
3720
3778
  <xsl:call-template name="tokenize">
3721
3779
  <!-- <xsl:with-param name="text" select="translate(td[$curr-col],'- —:', ' ')"/> -->
3722
3780
  <!-- 2009 thinspace -->
@@ -3729,6 +3787,7 @@
3729
3787
  <xsl:with-param name="words" select="xalan:nodeset($words)"/>
3730
3788
  </xsl:call-template>
3731
3789
  </xsl:variable>
3790
+ <!-- <xsl:message>max_length=<xsl:value-of select="$max_length"/></xsl:message> -->
3732
3791
  <width>
3733
3792
  <xsl:variable name="divider">
3734
3793
  <xsl:choose>
@@ -3761,6 +3820,10 @@
3761
3820
  <xsl:with-param name="table" select="$table"/>
3762
3821
  </xsl:call-template>
3763
3822
  </xsl:if>
3823
+ </xsl:template><xsl:template match="*[@keep-together.within-line]/text()" priority="2" mode="td_text">
3824
+ <!-- <xsl:message>DEBUG t1=<xsl:value-of select="."/></xsl:message>
3825
+ <xsl:message>DEBUG t2=<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),'.','X')"/></xsl:message> -->
3826
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),'.','X')"/>
3764
3827
  </xsl:template><xsl:template match="text()" mode="td_text">
3765
3828
  <xsl:value-of select="translate(., $zero_width_space, ' ')"/><xsl:text> </xsl:text>
3766
3829
  </xsl:template><xsl:template match="*[local-name()='termsource']" mode="td_text">
@@ -3862,16 +3925,9 @@
3862
3925
  </xsl:for-each>
3863
3926
  </xsl:when>
3864
3927
  <xsl:otherwise>
3865
- <xsl:for-each select="xalan:nodeset($colwidths)//column">
3866
- <xsl:choose>
3867
- <xsl:when test=". = 1 or . = 0">
3868
- <fo:table-column column-width="proportional-column-width(2)"/>
3869
- </xsl:when>
3870
- <xsl:otherwise>
3871
- <fo:table-column column-width="proportional-column-width({.})"/>
3872
- </xsl:otherwise>
3873
- </xsl:choose>
3874
- </xsl:for-each>
3928
+ <xsl:call-template name="insertTableColumnWidth">
3929
+ <xsl:with-param name="colwidths" select="$colwidths"/>
3930
+ </xsl:call-template>
3875
3931
  </xsl:otherwise>
3876
3932
  </xsl:choose>
3877
3933
 
@@ -4438,8 +4494,10 @@
4438
4494
  <!-- and (not(../@class) or ../@class !='pseudocode') -->
4439
4495
  </xsl:variable>
4440
4496
 
4497
+ <xsl:variable name="onlyOneComponent" select="normalize-space($parent = 'formula' and count(*[local-name()='dt']) = 1)"/>
4498
+
4441
4499
  <xsl:choose>
4442
- <xsl:when test="$parent = 'formula' and count(*[local-name()='dt']) = 1"> <!-- only one component -->
4500
+ <xsl:when test="$onlyOneComponent = 'true'"> <!-- only one component -->
4443
4501
 
4444
4502
  <fo:block text-align="left">
4445
4503
 
@@ -4461,7 +4519,7 @@
4461
4519
  <xsl:apply-templates select="*[local-name()='dd']/*" mode="inline"/>
4462
4520
  </fo:block>
4463
4521
 
4464
- </xsl:when>
4522
+ </xsl:when> <!-- END: only one component -->
4465
4523
  <xsl:when test="$parent = 'formula'"> <!-- a few components -->
4466
4524
  <fo:block margin-bottom="12pt" text-align="left">
4467
4525
 
@@ -4477,8 +4535,8 @@
4477
4535
  </xsl:variable>
4478
4536
  <xsl:value-of select="$title-where"/>
4479
4537
  </fo:block>
4480
- </xsl:when>
4481
- <xsl:when test="$parent = 'figure' and (not(../@class) or ../@class !='pseudocode')">
4538
+ </xsl:when> <!-- END: a few components -->
4539
+ <xsl:when test="$parent = 'figure' and (not(../@class) or ../@class !='pseudocode')"> <!-- definition list in a figure -->
4482
4540
  <fo:block font-weight="bold" text-align="left" margin-bottom="12pt" keep-with-next="always">
4483
4541
 
4484
4542
 
@@ -4494,11 +4552,11 @@
4494
4552
  </xsl:variable>
4495
4553
  <xsl:value-of select="$title-key"/>
4496
4554
  </fo:block>
4497
- </xsl:when>
4555
+ </xsl:when> <!-- END: definition list in a figure -->
4498
4556
  </xsl:choose>
4499
4557
 
4500
4558
  <!-- a few components -->
4501
- <xsl:if test="not($parent = 'formula' and count(*[local-name()='dt']) = 1)">
4559
+ <xsl:if test="$onlyOneComponent = 'false'">
4502
4560
  <fo:block>
4503
4561
 
4504
4562
 
@@ -4539,21 +4597,28 @@
4539
4597
  <xsl:apply-templates mode="dl"/>
4540
4598
  </tbody>
4541
4599
  </xsl:variable>
4542
- <!-- html-table<xsl:copy-of select="$html-table"/> -->
4600
+ <!-- DEBUG: html-table<xsl:copy-of select="$html-table"/> -->
4543
4601
  <xsl:variable name="colwidths">
4544
4602
  <xsl:call-template name="calculate-column-widths">
4545
4603
  <xsl:with-param name="cols-count" select="2"/>
4546
4604
  <xsl:with-param name="table" select="$html-table"/>
4547
4605
  </xsl:call-template>
4548
4606
  </xsl:variable>
4549
- <!-- colwidths=<xsl:copy-of select="$colwidths"/> -->
4607
+ <!-- DEBUG: colwidths=<xsl:copy-of select="$colwidths"/> -->
4550
4608
  <xsl:variable name="maxlength_dt">
4551
4609
  <xsl:call-template name="getMaxLength_dt"/>
4552
4610
  </xsl:variable>
4611
+ <xsl:variable name="isContainsKeepTogetherTag_">
4612
+ false
4613
+ </xsl:variable>
4614
+ <xsl:variable name="isContainsKeepTogetherTag" select="normalize-space($isContainsKeepTogetherTag_)"/>
4615
+ <!-- isContainsExpressReference=<xsl:value-of select="$isContainsExpressReference"/> -->
4553
4616
  <xsl:call-template name="setColumnWidth_dl">
4554
4617
  <xsl:with-param name="colwidths" select="$colwidths"/>
4555
4618
  <xsl:with-param name="maxlength_dt" select="$maxlength_dt"/>
4619
+ <xsl:with-param name="isContainsKeepTogetherTag" select="$isContainsKeepTogetherTag"/>
4556
4620
  </xsl:call-template>
4621
+
4557
4622
  <fo:table-body>
4558
4623
  <xsl:apply-templates>
4559
4624
  <xsl:with-param name="key_iso" select="normalize-space($key_iso)"/>
@@ -4562,12 +4627,13 @@
4562
4627
  </fo:table>
4563
4628
  </fo:block>
4564
4629
  </fo:block>
4565
- </xsl:if>
4630
+ </xsl:if> <!-- END: a few components -->
4566
4631
  </fo:block-container>
4567
4632
  </fo:block-container>
4568
4633
  </xsl:template><xsl:template name="setColumnWidth_dl">
4569
4634
  <xsl:param name="colwidths"/>
4570
4635
  <xsl:param name="maxlength_dt"/>
4636
+ <xsl:param name="isContainsKeepTogetherTag"/>
4571
4637
  <xsl:choose>
4572
4638
  <xsl:when test="ancestor::*[local-name()='dl']"><!-- second level, i.e. inlined table -->
4573
4639
  <fo:table-column column-width="50%"/>
@@ -4575,6 +4641,11 @@
4575
4641
  </xsl:when>
4576
4642
  <xsl:otherwise>
4577
4643
  <xsl:choose>
4644
+ <xsl:when test="$isContainsKeepTogetherTag">
4645
+ <xsl:call-template name="insertTableColumnWidth">
4646
+ <xsl:with-param name="colwidths" select="$colwidths"/>
4647
+ </xsl:call-template>
4648
+ </xsl:when>
4578
4649
  <!-- to set width check most wide chars like `W` -->
4579
4650
  <xsl:when test="normalize-space($maxlength_dt) != '' and number($maxlength_dt) &lt;= 2"> <!-- if dt contains short text like t90, a, etc -->
4580
4651
  <fo:table-column column-width="7%"/>
@@ -4605,20 +4676,25 @@
4605
4676
  <fo:table-column column-width="60%"/>
4606
4677
  </xsl:when>
4607
4678
  <xsl:otherwise>
4608
- <xsl:for-each select="xalan:nodeset($colwidths)//column">
4609
- <xsl:choose>
4610
- <xsl:when test=". = 1 or . = 0">
4611
- <fo:table-column column-width="proportional-column-width(2)"/>
4612
- </xsl:when>
4613
- <xsl:otherwise>
4614
- <fo:table-column column-width="proportional-column-width({.})"/>
4615
- </xsl:otherwise>
4616
- </xsl:choose>
4617
- </xsl:for-each>
4679
+ <xsl:call-template name="insertTableColumnWidth">
4680
+ <xsl:with-param name="colwidths" select="$colwidths"/>
4681
+ </xsl:call-template>
4618
4682
  </xsl:otherwise>
4619
4683
  </xsl:choose>
4620
4684
  </xsl:otherwise>
4621
4685
  </xsl:choose>
4686
+ </xsl:template><xsl:template name="insertTableColumnWidth">
4687
+ <xsl:param name="colwidths"/>
4688
+ <xsl:for-each select="xalan:nodeset($colwidths)//column">
4689
+ <xsl:choose>
4690
+ <xsl:when test=". = 1 or . = 0">
4691
+ <fo:table-column column-width="proportional-column-width(2)"/>
4692
+ </xsl:when>
4693
+ <xsl:otherwise>
4694
+ <fo:table-column column-width="proportional-column-width({.})"/>
4695
+ </xsl:otherwise>
4696
+ </xsl:choose>
4697
+ </xsl:for-each>
4622
4698
  </xsl:template><xsl:template name="getMaxLength_dt">
4623
4699
  <xsl:variable name="lengths">
4624
4700
  <xsl:for-each select="*[local-name()='dt']">
@@ -4642,7 +4718,6 @@
4642
4718
  <xsl:value-of select="$maxLength"/>
4643
4719
  </xsl:template><xsl:template match="*[local-name()='dl']/*[local-name()='note']" priority="2">
4644
4720
  <xsl:param name="key_iso"/>
4645
-
4646
4721
  <!-- <tr>
4647
4722
  <td>NOTE</td>
4648
4723
  <td>
@@ -4650,18 +4725,30 @@
4650
4725
  </td>
4651
4726
  </tr>
4652
4727
  -->
4653
- <fo:table-row>
4728
+ <!-- OLD Variant -->
4729
+ <!-- <fo:table-row>
4654
4730
  <fo:table-cell>
4655
4731
  <fo:block margin-top="6pt">
4656
4732
  <xsl:if test="normalize-space($key_iso) = 'true'">
4657
4733
  <xsl:attribute name="margin-top">0</xsl:attribute>
4658
4734
  </xsl:if>
4659
- <xsl:apply-templates select="*[local-name() = 'name']"/>
4735
+ <xsl:apply-templates select="*[local-name() = 'name']" />
4660
4736
  </fo:block>
4661
4737
  </fo:table-cell>
4662
4738
  <fo:table-cell>
4663
4739
  <fo:block>
4664
- <xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
4740
+ <xsl:apply-templates select="node()[not(local-name() = 'name')]" />
4741
+ </fo:block>
4742
+ </fo:table-cell>
4743
+ </fo:table-row> -->
4744
+ <!-- <tr>
4745
+ <td number-columns-spanned="2">NOTE <xsl:apply-templates /> </td>
4746
+ </tr>
4747
+ -->
4748
+ <fo:table-row>
4749
+ <fo:table-cell number-columns-spanned="2">
4750
+ <fo:block>
4751
+ <xsl:call-template name="note"/>
4665
4752
  </fo:block>
4666
4753
  </fo:table-cell>
4667
4754
  </fo:table-row>
@@ -4763,13 +4850,15 @@
4763
4850
  <xsl:choose>
4764
4851
  <xsl:when test="$font-size = 'inherit'"><xsl:value-of select="$font-size"/></xsl:when>
4765
4852
  <xsl:when test="contains($font-size, '%')"><xsl:value-of select="$font-size"/></xsl:when>
4766
- <xsl:when test="ancestor::*[local-name()='note']"><xsl:value-of select="$font-size * 0.91"/>pt</xsl:when>
4853
+ <xsl:when test="ancestor::*[local-name()='note'] or ancestor::*[local-name()='example']"><xsl:value-of select="$font-size * 0.91"/>pt</xsl:when>
4767
4854
  <xsl:otherwise><xsl:value-of select="$font-size"/>pt</xsl:otherwise>
4768
4855
  </xsl:choose>
4769
4856
  </xsl:attribute>
4770
4857
  </xsl:if>
4771
4858
  <xsl:apply-templates/>
4772
4859
  </fo:inline>
4860
+ </xsl:template><xsl:template match="*[local-name()='tt']/text()" priority="2">
4861
+ <xsl:call-template name="add_spaces_to_sourcecode"/>
4773
4862
  </xsl:template><xsl:template match="*[local-name()='underline']">
4774
4863
  <fo:inline text-decoration="underline">
4775
4864
  <xsl:apply-templates/>
@@ -4917,41 +5006,50 @@
4917
5006
  <fo:block break-after="page"/>
4918
5007
  <fo:block> </fo:block>
4919
5008
  <fo:block break-after="page"/>
5009
+ </xsl:template><xsl:template match="*[local-name() = 'span']">
5010
+ <xsl:apply-templates/>
4920
5011
  </xsl:template><xsl:template name="tokenize">
4921
5012
  <xsl:param name="text"/>
4922
5013
  <xsl:param name="separator" select="' '"/>
4923
5014
  <xsl:choose>
4924
5015
  <xsl:when test="not(contains($text, $separator))">
4925
5016
  <word>
4926
- <xsl:variable name="str_no_en_chars" select="normalize-space(translate($text, $en_chars, ''))"/>
4927
- <xsl:variable name="len_str_no_en_chars" select="string-length($str_no_en_chars)"/>
4928
5017
  <xsl:variable name="len_str_tmp" select="string-length(normalize-space($text))"/>
4929
- <xsl:variable name="len_str">
4930
- <xsl:choose>
4931
- <xsl:when test="normalize-space(translate($text, $upper, '')) = ''"> <!-- english word in CAPITAL letters -->
4932
- <xsl:value-of select="$len_str_tmp * 1.5"/>
4933
- </xsl:when>
4934
- <xsl:otherwise>
4935
- <xsl:value-of select="$len_str_tmp"/>
4936
- </xsl:otherwise>
4937
- </xsl:choose>
4938
- </xsl:variable>
4939
-
4940
- <!-- <xsl:if test="$len_str_no_en_chars div $len_str &gt; 0.8">
4941
- <xsl:message>
4942
- div=<xsl:value-of select="$len_str_no_en_chars div $len_str"/>
4943
- len_str=<xsl:value-of select="$len_str"/>
4944
- len_str_no_en_chars=<xsl:value-of select="$len_str_no_en_chars"/>
4945
- </xsl:message>
4946
- </xsl:if> -->
4947
- <!-- <len_str_no_en_chars><xsl:value-of select="$len_str_no_en_chars"/></len_str_no_en_chars>
4948
- <len_str><xsl:value-of select="$len_str"/></len_str> -->
4949
5018
  <xsl:choose>
4950
- <xsl:when test="$len_str_no_en_chars div $len_str &gt; 0.8"> <!-- means non-english string -->
4951
- <xsl:value-of select="$len_str - $len_str_no_en_chars"/>
5019
+ <xsl:when test="normalize-space(translate($text, 'X', '')) = ''"> <!-- special case for keep-together.within-line -->
5020
+ <xsl:value-of select="$len_str_tmp"/>
4952
5021
  </xsl:when>
4953
5022
  <xsl:otherwise>
4954
- <xsl:value-of select="$len_str"/>
5023
+ <xsl:variable name="str_no_en_chars" select="normalize-space(translate($text, $en_chars, ''))"/>
5024
+ <xsl:variable name="len_str_no_en_chars" select="string-length($str_no_en_chars)"/>
5025
+ <xsl:variable name="len_str">
5026
+ <xsl:choose>
5027
+ <xsl:when test="normalize-space(translate($text, $upper, '')) = ''"> <!-- english word in CAPITAL letters -->
5028
+ <xsl:value-of select="$len_str_tmp * 1.5"/>
5029
+ </xsl:when>
5030
+ <xsl:otherwise>
5031
+ <xsl:value-of select="$len_str_tmp"/>
5032
+ </xsl:otherwise>
5033
+ </xsl:choose>
5034
+ </xsl:variable>
5035
+
5036
+ <!-- <xsl:if test="$len_str_no_en_chars div $len_str &gt; 0.8">
5037
+ <xsl:message>
5038
+ div=<xsl:value-of select="$len_str_no_en_chars div $len_str"/>
5039
+ len_str=<xsl:value-of select="$len_str"/>
5040
+ len_str_no_en_chars=<xsl:value-of select="$len_str_no_en_chars"/>
5041
+ </xsl:message>
5042
+ </xsl:if> -->
5043
+ <!-- <len_str_no_en_chars><xsl:value-of select="$len_str_no_en_chars"/></len_str_no_en_chars>
5044
+ <len_str><xsl:value-of select="$len_str"/></len_str> -->
5045
+ <xsl:choose>
5046
+ <xsl:when test="$len_str_no_en_chars div $len_str &gt; 0.8"> <!-- means non-english string -->
5047
+ <xsl:value-of select="$len_str - $len_str_no_en_chars"/>
5048
+ </xsl:when>
5049
+ <xsl:otherwise>
5050
+ <xsl:value-of select="$len_str"/>
5051
+ </xsl:otherwise>
5052
+ </xsl:choose>
4955
5053
  </xsl:otherwise>
4956
5054
  </xsl:choose>
4957
5055
  </word>
@@ -5037,24 +5135,28 @@
5037
5135
  </xsl:template><xsl:template name="add-zero-spaces-equal">
5038
5136
  <xsl:param name="text" select="."/>
5039
5137
  <xsl:variable name="zero-space-after-equals">==========</xsl:variable>
5138
+ <xsl:variable name="regex_zero-space-after-equals">(==========)</xsl:variable>
5040
5139
  <xsl:variable name="zero-space-after-equal">=</xsl:variable>
5140
+ <xsl:variable name="regex_zero-space-after-equal">(=)</xsl:variable>
5041
5141
  <xsl:variable name="zero-space">​</xsl:variable>
5042
5142
  <xsl:choose>
5043
5143
  <xsl:when test="contains($text, $zero-space-after-equals)">
5044
- <xsl:value-of select="substring-before($text, $zero-space-after-equals)"/>
5144
+ <!-- <xsl:value-of select="substring-before($text, $zero-space-after-equals)"/>
5045
5145
  <xsl:value-of select="$zero-space-after-equals"/>
5046
5146
  <xsl:value-of select="$zero-space"/>
5047
5147
  <xsl:call-template name="add-zero-spaces-equal">
5048
5148
  <xsl:with-param name="text" select="substring-after($text, $zero-space-after-equals)"/>
5049
- </xsl:call-template>
5149
+ </xsl:call-template> -->
5150
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),$regex_zero-space-after-equals,concat('$1',$zero_width_space))"/>
5050
5151
  </xsl:when>
5051
5152
  <xsl:when test="contains($text, $zero-space-after-equal)">
5052
- <xsl:value-of select="substring-before($text, $zero-space-after-equal)"/>
5153
+ <!-- <xsl:value-of select="substring-before($text, $zero-space-after-equal)"/>
5053
5154
  <xsl:value-of select="$zero-space-after-equal"/>
5054
5155
  <xsl:value-of select="$zero-space"/>
5055
5156
  <xsl:call-template name="add-zero-spaces-equal">
5056
5157
  <xsl:with-param name="text" select="substring-after($text, $zero-space-after-equal)"/>
5057
- </xsl:call-template>
5158
+ </xsl:call-template> -->
5159
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),$regex_zero-space-after-equal,concat('$1',$zero_width_space))"/>
5058
5160
  </xsl:when>
5059
5161
  <xsl:otherwise>
5060
5162
  <xsl:value-of select="$text"/>
@@ -5222,6 +5324,9 @@
5222
5324
  <xsl:variable name="isDeleted" select="@deleted"/>
5223
5325
 
5224
5326
  <fo:inline xsl:use-attribute-sets="mathml-style">
5327
+
5328
+
5329
+
5225
5330
 
5226
5331
 
5227
5332
  <xsl:call-template name="setTrackChangesStyles">
@@ -5229,48 +5334,80 @@
5229
5334
  <xsl:with-param name="isDeleted" select="$isDeleted"/>
5230
5335
  </xsl:call-template>
5231
5336
 
5337
+ <xsl:if test="$add_math_as_text = 'true'">
5338
+ <!-- insert helper tag -->
5339
+ <!-- set unique font-size (fiction) -->
5340
+ <xsl:variable name="font-size_sfx"><xsl:number level="any"/></xsl:variable>
5341
+ <fo:inline color="white" font-size="1.{$font-size_sfx}pt" font-style="normal" font-weight="normal"><xsl:value-of select="$zero_width_space"/></fo:inline> <!-- zero width space -->
5342
+ </xsl:if>
5232
5343
 
5233
-
5234
- <xsl:variable name="mathml">
5235
- <xsl:apply-templates select="." mode="mathml"/>
5344
+ <xsl:variable name="mathml_content">
5345
+ <xsl:apply-templates select="." mode="mathml_actual_text"/>
5236
5346
  </xsl:variable>
5237
- <fo:instream-foreign-object fox:alt-text="Math">
5238
5347
 
5348
+
5349
+ <xsl:call-template name="mathml_instream_object">
5350
+ <xsl:with-param name="mathml_content" select="$mathml_content"/>
5351
+ </xsl:call-template>
5239
5352
 
5240
-
5241
- <xsl:variable name="comment_text_following" select="following-sibling::node()[1][self::comment()]"/>
5242
- <xsl:variable name="comment_text_">
5243
- <xsl:choose>
5244
- <xsl:when test="normalize-space($comment_text_following) != ''">
5245
- <xsl:value-of select="$comment_text_following"/>
5246
- </xsl:when>
5247
- <xsl:otherwise>
5248
- <xsl:value-of select="normalize-space(translate(.,' ⁢',' '))"/>
5249
- </xsl:otherwise>
5250
- </xsl:choose>
5251
- </xsl:variable>
5252
- <xsl:variable name="comment_text" select="java:org.metanorma.fop.Util.unescape($comment_text_)"/>
5253
-
5254
- <xsl:if test="normalize-space($comment_text) != ''">
5255
- <!-- put Mathin Alternate Text -->
5256
- <xsl:attribute name="fox:alt-text">
5257
- <xsl:value-of select="java:org.metanorma.fop.Util.unescape($comment_text)"/>
5258
- </xsl:attribute>
5259
- </xsl:if>
5260
-
5261
- <xsl:variable name="mathml_content">
5262
- <xsl:apply-templates select="." mode="mathml_actual_text"/>
5263
- </xsl:variable>
5264
- <!-- put MathML in Actual Text -->
5265
- <xsl:attribute name="fox:actual-text">
5266
- <xsl:value-of select="$mathml_content"/>
5267
- </xsl:attribute>
5268
-
5269
-
5270
-
5271
- <xsl:copy-of select="xalan:nodeset($mathml)"/>
5272
- </fo:instream-foreign-object>
5353
+
5273
5354
  </fo:inline>
5355
+ </xsl:template><xsl:template name="getMathml_comment_text">
5356
+ <xsl:variable name="comment_text_following" select="following-sibling::node()[1][self::comment()]"/>
5357
+ <xsl:variable name="comment_text_">
5358
+ <xsl:choose>
5359
+ <xsl:when test="normalize-space($comment_text_following) != ''">
5360
+ <xsl:value-of select="$comment_text_following"/>
5361
+ </xsl:when>
5362
+ <xsl:otherwise>
5363
+ <xsl:value-of select="normalize-space(translate(.,' ⁢',' '))"/>
5364
+ </xsl:otherwise>
5365
+ </xsl:choose>
5366
+ </xsl:variable>
5367
+ <xsl:variable name="comment_text_2" select="java:org.metanorma.fop.Util.unescape($comment_text_)"/>
5368
+ <xsl:variable name="comment_text" select="java:trim(java:java.lang.String.new($comment_text_2))"/>
5369
+ <xsl:value-of select="$comment_text"/>
5370
+ </xsl:template><xsl:template name="mathml_instream_object">
5371
+ <xsl:param name="comment_text"/>
5372
+ <xsl:param name="mathml_content"/>
5373
+
5374
+ <xsl:variable name="comment_text_">
5375
+ <xsl:choose>
5376
+ <xsl:when test="normalize-space($comment_text) != ''"><xsl:value-of select="$comment_text"/></xsl:when>
5377
+ <xsl:otherwise><xsl:call-template name="getMathml_comment_text"/></xsl:otherwise>
5378
+ </xsl:choose>
5379
+ </xsl:variable>
5380
+
5381
+ <xsl:variable name="mathml">
5382
+ <xsl:apply-templates select="." mode="mathml"/>
5383
+ </xsl:variable>
5384
+
5385
+ <fo:instream-foreign-object fox:alt-text="Math">
5386
+
5387
+
5388
+
5389
+
5390
+
5391
+
5392
+
5393
+ <!-- put MathML in Actual Text -->
5394
+ <!-- DEBUG: mathml_content=<xsl:value-of select="$mathml_content"/> -->
5395
+ <xsl:attribute name="fox:actual-text">
5396
+ <xsl:value-of select="$mathml_content"/>
5397
+ </xsl:attribute>
5398
+
5399
+ <!-- <xsl:if test="$add_math_as_text = 'true'"> -->
5400
+ <xsl:if test="normalize-space($comment_text_) != ''">
5401
+ <!-- put Mathin Alternate Text -->
5402
+ <xsl:attribute name="fox:alt-text">
5403
+ <xsl:value-of select="$comment_text_"/>
5404
+ </xsl:attribute>
5405
+ </xsl:if>
5406
+ <!-- </xsl:if> -->
5407
+
5408
+ <xsl:copy-of select="xalan:nodeset($mathml)"/>
5409
+
5410
+ </fo:instream-foreign-object>
5274
5411
  </xsl:template><xsl:template match="mathml:*" mode="mathml_actual_text">
5275
5412
  <!-- <xsl:text>a+b</xsl:text> -->
5276
5413
  <xsl:text>&lt;</xsl:text>
@@ -5301,7 +5438,9 @@
5301
5438
  <!-- replace start and end spaces to non-break space -->
5302
5439
  <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),'(^ )|( $)',' ')"/>
5303
5440
  </xsl:copy>
5304
- </xsl:template><xsl:template match="mathml:math/*[local-name()='unit']" mode="mathml"/><xsl:template match="mathml:math/*[local-name()='prefix']" mode="mathml"/><xsl:template match="mathml:math/*[local-name()='dimension']" mode="mathml"/><xsl:template match="mathml:math/*[local-name()='quantity']" mode="mathml"/><xsl:template match="*[local-name()='localityStack']"/><xsl:template match="*[local-name()='link']" name="link">
5441
+ </xsl:template><xsl:template match="mathml:math/*[local-name()='unit']" mode="mathml"/><xsl:template match="mathml:math/*[local-name()='prefix']" mode="mathml"/><xsl:template match="mathml:math/*[local-name()='dimension']" mode="mathml"/><xsl:template match="mathml:math/*[local-name()='quantity']" mode="mathml"/><xsl:template match="mathml:mtd/mathml:mo/text()[. = '/']" mode="mathml">
5442
+ <xsl:value-of select="."/><xsl:value-of select="$zero_width_space"/>
5443
+ </xsl:template><xsl:template match="*[local-name()='localityStack']"/><xsl:template match="*[local-name()='link']" name="link">
5305
5444
  <xsl:variable name="target">
5306
5445
  <xsl:choose>
5307
5446
  <xsl:when test="@updatetype = 'true'">
@@ -5534,7 +5673,12 @@
5534
5673
 
5535
5674
  <fo:inline xsl:use-attribute-sets="termnote-name-style">
5536
5675
 
5676
+ <xsl:if test="not(*[local-name() = 'name']/following-sibling::node()[1][self::text()][normalize-space()=''])">
5677
+ <xsl:attribute name="padding-right">1mm</xsl:attribute>
5678
+ </xsl:if>
5679
+
5537
5680
 
5681
+
5538
5682
 
5539
5683
  <!-- if 'p' contains all text in 'add' first and last elements in first p are 'add' -->
5540
5684
  <!-- <xsl:if test="*[not(local-name()='name')][1][node()[normalize-space() != ''][1][local-name() = 'add'] and node()[normalize-space() != ''][last()][local-name() = 'add']]"> -->
@@ -5893,18 +6037,33 @@
5893
6037
  </xsl:template><xsl:template match="*[local-name() = 'svg'][not(@width and @height)]" mode="svg_update">
5894
6038
  <xsl:copy>
5895
6039
  <xsl:apply-templates select="@*" mode="svg_update"/>
5896
- <xsl:variable name="viewbox">
6040
+ <xsl:variable name="viewbox_">
5897
6041
  <xsl:call-template name="split">
5898
6042
  <xsl:with-param name="pText" select="@viewBox"/>
5899
6043
  <xsl:with-param name="sep" select="' '"/>
5900
6044
  </xsl:call-template>
5901
6045
  </xsl:variable>
6046
+ <xsl:variable name="viewbox" select="xalan:nodeset($viewbox_)"/>
6047
+ <xsl:variable name="width" select="normalize-space($viewbox//item[3])"/>
6048
+ <xsl:variable name="height" select="normalize-space($viewbox//item[4])"/>
6049
+
5902
6050
  <xsl:attribute name="width">
5903
- <xsl:value-of select="round(xalan:nodeset($viewbox)//item[3])"/>
6051
+ <xsl:choose>
6052
+ <xsl:when test="$width != ''">
6053
+ <xsl:value-of select="round($width)"/>
6054
+ </xsl:when>
6055
+ <xsl:otherwise>400</xsl:otherwise> <!-- default width -->
6056
+ </xsl:choose>
5904
6057
  </xsl:attribute>
5905
6058
  <xsl:attribute name="height">
5906
- <xsl:value-of select="round(xalan:nodeset($viewbox)//item[4])"/>
6059
+ <xsl:choose>
6060
+ <xsl:when test="$height != ''">
6061
+ <xsl:value-of select="round($height)"/>
6062
+ </xsl:when>
6063
+ <xsl:otherwise>400</xsl:otherwise> <!-- default height -->
6064
+ </xsl:choose>
5907
6065
  </xsl:attribute>
6066
+
5908
6067
  <xsl:apply-templates mode="svg_update"/>
5909
6068
  </xsl:copy>
5910
6069
  </xsl:template><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'image'][*[local-name() = 'svg']]" priority="3">
@@ -6099,7 +6258,11 @@
6099
6258
  <xsl:apply-templates mode="bookmarks"/>
6100
6259
  </xsl:template><xsl:template match="*[local-name() = 'title' or local-name() = 'name']//*[local-name() = 'stem']" mode="contents">
6101
6260
  <xsl:apply-templates select="."/>
6102
- </xsl:template><xsl:template match="*[local-name() = 'references'][@hidden='true']" mode="contents" priority="3"/><xsl:template match="*[local-name() = 'references']/*[local-name() = 'bibitem']" mode="contents"/><xsl:template match="*[local-name() = 'stem']" mode="bookmarks">
6261
+ </xsl:template><xsl:template match="*[local-name() = 'references'][@hidden='true']" mode="contents" priority="3"/><xsl:template match="*[local-name() = 'references']/*[local-name() = 'bibitem']" mode="contents"/><xsl:template match="*[local-name() = 'span']" mode="contents">
6262
+ <xsl:apply-templates mode="contents"/>
6263
+ </xsl:template><xsl:template match="*[local-name() = 'stem']" mode="bookmarks">
6264
+ <xsl:apply-templates mode="bookmarks"/>
6265
+ </xsl:template><xsl:template match="*[local-name() = 'span']" mode="bookmarks">
6103
6266
  <xsl:apply-templates mode="bookmarks"/>
6104
6267
  </xsl:template><xsl:template name="addBookmarks">
6105
6268
  <xsl:param name="contents"/>
@@ -6390,7 +6553,9 @@
6390
6553
  <xsl:apply-templates/>
6391
6554
  </xsl:otherwise>
6392
6555
  </xsl:choose>
6393
- </xsl:template><xsl:template match="*[local-name() = 'fn']" mode="contents"/><xsl:template match="*[local-name() = 'fn']" mode="bookmarks"/><xsl:template match="*[local-name() = 'fn']" mode="contents_item"/><xsl:template match="*[local-name() = 'tab']" mode="contents_item">
6556
+ </xsl:template><xsl:template match="*[local-name() = 'fn']" mode="contents"/><xsl:template match="*[local-name() = 'fn']" mode="bookmarks"/><xsl:template match="*[local-name() = 'fn']" mode="contents_item"/><xsl:template match="*[local-name() = 'xref']" mode="contents">
6557
+ <xsl:value-of select="."/>
6558
+ </xsl:template><xsl:template match="*[local-name() = 'tab']" mode="contents_item">
6394
6559
  <xsl:text> </xsl:text>
6395
6560
  </xsl:template><xsl:template match="*[local-name() = 'strong']" mode="contents_item">
6396
6561
  <xsl:copy>
@@ -6421,9 +6586,22 @@
6421
6586
  </xsl:when>
6422
6587
  <xsl:otherwise><xsl:apply-templates mode="contents_item"/></xsl:otherwise>
6423
6588
  </xsl:choose>
6589
+ </xsl:template><xsl:template match="text()" mode="contents_item">
6590
+ <xsl:call-template name="keep_together_standard_number"/>
6591
+ </xsl:template><xsl:template match="*[local-name() = 'span']" mode="contents_item">
6592
+ <xsl:apply-templates mode="contents_item"/>
6424
6593
  </xsl:template><xsl:template match="*[local-name()='sourcecode']" name="sourcecode">
6425
6594
 
6426
6595
  <fo:block-container xsl:use-attribute-sets="sourcecode-container-style">
6596
+
6597
+ <xsl:if test="not(ancestor::*[local-name() = 'li']) or ancestor::*[local-name() = 'example']">
6598
+ <xsl:attribute name="margin-left">0mm</xsl:attribute>
6599
+ </xsl:if>
6600
+
6601
+ <xsl:if test="ancestor::*[local-name() = 'example']">
6602
+ <xsl:attribute name="margin-right">0mm</xsl:attribute>
6603
+ </xsl:if>
6604
+
6427
6605
  <xsl:copy-of select="@id"/>
6428
6606
 
6429
6607
  <xsl:if test="parent::*[local-name() = 'note']">
@@ -6523,17 +6701,15 @@
6523
6701
 
6524
6702
  <!-- split text by zero-width space -->
6525
6703
  <xsl:variable name="text_step4">
6526
- <xsl:call-template name="split">
6704
+ <xsl:call-template name="split_for_interspers">
6527
6705
  <xsl:with-param name="pText" select="$text_step3"/>
6528
6706
  <xsl:with-param name="sep" select="$zero_width_space"/>
6529
- <xsl:with-param name="normalize-space">false</xsl:with-param>
6530
- <xsl:with-param name="keep_sep">true</xsl:with-param>
6531
6707
  </xsl:call-template>
6532
6708
  </xsl:variable>
6533
6709
 
6534
- <xsl:for-each select="xalan:nodeset($text_step4)/item">
6710
+ <xsl:for-each select="xalan:nodeset($text_step4)/node()">
6535
6711
  <xsl:choose>
6536
- <xsl:when test="string-length() &gt; 30"> <!-- word with length more than 30 will be interspersed with zero-width space -->
6712
+ <xsl:when test="local-name() = 'interspers'"> <!-- word with length more than 30 will be interspersed with zero-width space -->
6537
6713
  <xsl:call-template name="interspers">
6538
6714
  <xsl:with-param name="str" select="."/>
6539
6715
  </xsl:call-template>
@@ -6544,6 +6720,30 @@
6544
6720
  </xsl:choose>
6545
6721
  </xsl:for-each>
6546
6722
 
6723
+ </xsl:template><xsl:variable name="interspers_tag_open">###interspers123###</xsl:variable><xsl:variable name="interspers_tag_close">###/interspers123###</xsl:variable><xsl:template name="split_for_interspers">
6724
+ <xsl:param name="pText" select="."/>
6725
+ <xsl:param name="sep" select="','"/>
6726
+ <!-- word with length more than 30 will be interspersed with zero-width space -->
6727
+ <xsl:variable name="regex" select="concat('([^', $zero_width_space, ']{31,})')"/> <!-- sequence of characters (more 31), that doesn't contains zero-width space -->
6728
+ <xsl:variable name="text" select="java:replaceAll(java:java.lang.String.new($pText),$regex,concat($interspers_tag_open,'$1',$interspers_tag_close))"/>
6729
+ <xsl:call-template name="replace_tag_interspers">
6730
+ <xsl:with-param name="text" select="$text"/>
6731
+ </xsl:call-template>
6732
+ </xsl:template><xsl:template name="replace_tag_interspers">
6733
+ <xsl:param name="text"/>
6734
+ <xsl:choose>
6735
+ <xsl:when test="contains($text, $interspers_tag_open)">
6736
+ <xsl:value-of select="substring-before($text, $interspers_tag_open)"/>
6737
+ <xsl:variable name="text_after" select="substring-after($text, $interspers_tag_open)"/>
6738
+ <interspers>
6739
+ <xsl:value-of select="substring-before($text_after, $interspers_tag_close)"/>
6740
+ </interspers>
6741
+ <xsl:call-template name="replace_tag_interspers">
6742
+ <xsl:with-param name="text" select="substring-after($text_after, $interspers_tag_close)"/>
6743
+ </xsl:call-template>
6744
+ </xsl:when>
6745
+ <xsl:otherwise><xsl:value-of select="$text"/></xsl:otherwise>
6746
+ </xsl:choose>
6547
6747
  </xsl:template><xsl:template name="interspers">
6548
6748
  <xsl:param name="str"/>
6549
6749
  <xsl:param name="char" select="$zero_width_space"/>
@@ -6879,11 +7079,13 @@
6879
7079
  </xsl:otherwise>
6880
7080
  </xsl:choose>
6881
7081
  </xsl:template><xsl:template match="*[local-name() = 'example']">
6882
- <fo:block id="{@id}" xsl:use-attribute-sets="example-style">
6883
-
7082
+
7083
+ <fo:block-container id="{@id}" xsl:use-attribute-sets="example-style">
7084
+
6884
7085
 
7086
+
6885
7087
  <xsl:variable name="fo_element">
6886
- <xsl:if test=".//*[local-name() = 'table'] or .//*[local-name() = 'dl']">block</xsl:if>
7088
+ <xsl:if test=".//*[local-name() = 'table'] or .//*[local-name() = 'dl'] or *[not(local-name() = 'name')][1][local-name() = 'sourcecode']">block</xsl:if>
6887
7089
 
6888
7090
  <xsl:choose>
6889
7091
  <!-- if example contains only one (except 'name') element (paragraph for example), then display it on the same line as EXAMPLE title -->
@@ -6893,31 +7095,57 @@
6893
7095
 
6894
7096
  </xsl:variable>
6895
7097
 
6896
- <!-- display 'EXAMPLE' -->
6897
- <xsl:apply-templates select="*[local-name()='name']">
6898
- <xsl:with-param name="fo_element" select="$fo_element"/>
6899
- </xsl:apply-templates>
7098
+ <fo:block-container margin-left="0mm">
6900
7099
 
6901
- <xsl:choose>
6902
- <xsl:when test="contains(normalize-space($fo_element), 'block')">
6903
- <fo:block-container xsl:use-attribute-sets="example-body-style">
6904
- <fo:block-container margin-left="0mm" margin-right="0mm">
6905
- <xsl:apply-templates select="node()[not(local-name() = 'name')]">
7100
+ <xsl:choose>
7101
+
7102
+ <xsl:when test="contains(normalize-space($fo_element), 'block')">
7103
+
7104
+ <!-- display name 'EXAMPLE' in a separate block -->
7105
+ <fo:block>
7106
+ <xsl:apply-templates select="*[local-name()='name']">
6906
7107
  <xsl:with-param name="fo_element" select="$fo_element"/>
6907
7108
  </xsl:apply-templates>
7109
+ </fo:block>
7110
+
7111
+ <fo:block-container xsl:use-attribute-sets="example-body-style">
7112
+ <fo:block-container margin-left="0mm" margin-right="0mm">
7113
+ <xsl:apply-templates select="node()[not(local-name() = 'name')]">
7114
+ <xsl:with-param name="fo_element" select="$fo_element"/>
7115
+ </xsl:apply-templates>
7116
+ </fo:block-container>
6908
7117
  </fo:block-container>
6909
- </fo:block-container>
6910
- </xsl:when>
6911
- <xsl:otherwise>
6912
- <fo:inline>
6913
- <xsl:apply-templates select="node()[not(local-name() = 'name')]">
6914
- <xsl:with-param name="fo_element" select="$fo_element"/>
6915
- </xsl:apply-templates>
6916
- </fo:inline>
6917
- </xsl:otherwise>
6918
- </xsl:choose>
6919
-
6920
- </fo:block>
7118
+ </xsl:when> <!-- end block -->
7119
+
7120
+ <xsl:otherwise> <!-- inline -->
7121
+
7122
+ <!-- display 'EXAMPLE' and first element in the same line -->
7123
+ <fo:block>
7124
+ <xsl:apply-templates select="*[local-name()='name']">
7125
+ <xsl:with-param name="fo_element" select="$fo_element"/>
7126
+ </xsl:apply-templates>
7127
+ <fo:inline>
7128
+ <xsl:apply-templates select="*[not(local-name() = 'name')][1]">
7129
+ <xsl:with-param name="fo_element" select="$fo_element"/>
7130
+ </xsl:apply-templates>
7131
+ </fo:inline>
7132
+ </fo:block>
7133
+
7134
+ <xsl:if test="*[not(local-name() = 'name')][position() &gt; 1]">
7135
+ <!-- display further elements in blocks -->
7136
+ <fo:block-container xsl:use-attribute-sets="example-body-style">
7137
+ <fo:block-container margin-left="0mm" margin-right="0mm">
7138
+ <xsl:apply-templates select="*[not(local-name() = 'name')][position() &gt; 1]">
7139
+ <xsl:with-param name="fo_element" select="'block'"/>
7140
+ </xsl:apply-templates>
7141
+ </fo:block-container>
7142
+ </fo:block-container>
7143
+ </xsl:if>
7144
+ </xsl:otherwise> <!-- end inline -->
7145
+
7146
+ </xsl:choose>
7147
+ </fo:block-container>
7148
+ </fo:block-container>
6921
7149
  </xsl:template><xsl:template match="*[local-name() = 'example']/*[local-name() = 'name']">
6922
7150
  <xsl:param name="fo_element">block</xsl:param>
6923
7151
 
@@ -6949,10 +7177,16 @@
6949
7177
  </xsl:variable>
6950
7178
  <xsl:choose>
6951
7179
  <xsl:when test="starts-with(normalize-space($element), 'block')">
6952
- <fo:block xsl:use-attribute-sets="example-p-style">
6953
-
6954
- <xsl:apply-templates/>
6955
- </fo:block>
7180
+ <fo:block-container>
7181
+ <xsl:if test="ancestor::*[local-name() = 'li'] and contains(normalize-space($fo_element), 'block')">
7182
+ <xsl:attribute name="margin-left">0mm</xsl:attribute>
7183
+ <xsl:attribute name="margin-right">0mm</xsl:attribute>
7184
+ </xsl:if>
7185
+ <fo:block xsl:use-attribute-sets="example-p-style">
7186
+
7187
+ <xsl:apply-templates/>
7188
+ </fo:block>
7189
+ </fo:block-container>
6956
7190
  </xsl:when>
6957
7191
  <xsl:otherwise>
6958
7192
  <fo:inline xsl:use-attribute-sets="example-p-style">
@@ -6997,7 +7231,7 @@
6997
7231
  </xsl:otherwise>
6998
7232
  </xsl:choose> -->
6999
7233
  </fo:block>
7000
- </xsl:template><xsl:template match="*[local-name() = 'termsource']/text()[starts-with(., '[SOURCE: Adapted from: ')]" priority="2">
7234
+ </xsl:template><xsl:template match="*[local-name() = 'termsource']/text()[starts-with(., '[SOURCE: Adapted from: ') or starts-with(., '[SOURCE: Quoted from: ') or starts-with(., '[SOURCE: Modified from: ')]" priority="2">
7001
7235
  <xsl:text>[</xsl:text><xsl:value-of select="substring-after(., '[SOURCE: ')"/>
7002
7236
  </xsl:template><xsl:template match="*[local-name() = 'termsource']/text()">
7003
7237
  <xsl:if test="normalize-space() != ''">
@@ -7033,7 +7267,8 @@
7033
7267
  <fo:inline><xsl:apply-templates/></fo:inline>
7034
7268
  </xsl:template><xsl:template match="*[local-name() = 'modification']/text()">
7035
7269
  <xsl:if test="normalize-space() != ''">
7036
- <xsl:value-of select="."/>
7270
+ <!-- <xsl:value-of select="."/> -->
7271
+ <xsl:call-template name="text"/>
7037
7272
  </xsl:if>
7038
7273
  </xsl:template><xsl:template match="*[local-name() = 'quote']">
7039
7274
  <fo:block-container margin-left="0mm">
@@ -7130,7 +7365,16 @@
7130
7365
  </fo:inline>
7131
7366
  </xsl:when>
7132
7367
  <xsl:otherwise> <!-- if there is key('bibitems_hidden', $current_bibitemid) -->
7133
- <fo:inline><xsl:apply-templates/></fo:inline>
7368
+
7369
+ <!-- if in bibitem[@hidden='true'] there is url[@type='src'], then create hyperlink -->
7370
+ <xsl:variable name="uri_src" select="normalize-space($bibitems_hidden/*[local-name() ='bibitem'][@id = $current_bibitemid]/*[local-name() = 'uri'][@type = 'src'])"/>
7371
+ <xsl:choose>
7372
+ <xsl:when test="$uri_src != ''">
7373
+ <fo:basic-link external-destination="{$uri_src}" fox:alt-text="{$uri_src}"><xsl:apply-templates/></fo:basic-link>
7374
+ </xsl:when>
7375
+ <xsl:otherwise><fo:inline><xsl:apply-templates/></fo:inline></xsl:otherwise>
7376
+ </xsl:choose>
7377
+
7134
7378
  </xsl:otherwise>
7135
7379
  </xsl:choose>
7136
7380
  </xsl:template><xsl:template match="*[local-name() = 'tab']">
@@ -7307,10 +7551,24 @@
7307
7551
 
7308
7552
  </fo:block>
7309
7553
  <xsl:apply-templates/>
7310
- </xsl:template><xsl:template match="*[local-name() = 'review']">
7554
+ </xsl:template><xsl:template match="*[local-name() = 'review']"> <!-- 'review' will be processed in mn2pdf/review.xsl -->
7311
7555
  <!-- comment 2019-11-29 -->
7312
7556
  <!-- <fo:block font-weight="bold">Review:</fo:block>
7313
7557
  <xsl:apply-templates /> -->
7558
+
7559
+ <xsl:variable name="id_from" select="normalize-space(current()/@from)"/>
7560
+
7561
+ <xsl:choose>
7562
+ <!-- if there isn't the attribute '@from', then -->
7563
+ <xsl:when test="$id_from = ''">
7564
+ <fo:block id="{@id}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
7565
+ </xsl:when>
7566
+ <!-- if there isn't element with id 'from', then create 'bookmark' here -->
7567
+ <xsl:when test="not(ancestor::*[contains(local-name(), '-standard')]//*[@id = $id_from])">
7568
+ <fo:block id="{@from}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
7569
+ </xsl:when>
7570
+ </xsl:choose>
7571
+
7314
7572
  </xsl:template><xsl:template match="*[local-name() = 'name']/text()">
7315
7573
  <!-- 0xA0 to space replacement -->
7316
7574
  <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),' ',' ')"/>
@@ -7676,7 +7934,10 @@
7676
7934
  <!-- to split by '_' and other chars -->
7677
7935
  <xsl:call-template name="add-zero-spaces-java"/>
7678
7936
  </xsl:template><xsl:template match="*[local-name() = 'bookmark']" name="bookmark">
7679
- <fo:inline id="{@id}" font-size="1pt"/>
7937
+ <!-- <fo:inline id="{@id}" font-size="1pt"/> -->
7938
+ <fo:inline id="{@id}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:inline>
7939
+ <!-- we need to add zero-width space, otherwise this fo:inline is missing in IF xml -->
7940
+ <xsl:if test="not(following-sibling::node()[normalize-space() != ''])"> </xsl:if>
7680
7941
  </xsl:template><xsl:template match="*[local-name() = 'errata']">
7681
7942
  <!-- <row>
7682
7943
  <date>05-07-2013</date>
@@ -8222,6 +8483,120 @@
8222
8483
  <xsl:apply-templates select="." mode="update_xml_step1"/>
8223
8484
  </xsl:for-each>
8224
8485
  </xsl:copy>
8486
+ </xsl:template><xsl:template match="*[local-name() = 'span']" mode="update_xml_step1">
8487
+ <xsl:apply-templates mode="update_xml_step1"/>
8488
+ </xsl:template><xsl:template match="@*|node()" mode="update_xml_enclose_keep-together_within-line">
8489
+ <xsl:copy>
8490
+ <xsl:apply-templates select="@*|node()" mode="update_xml_enclose_keep-together_within-line"/>
8491
+ </xsl:copy>
8492
+ </xsl:template><xsl:variable name="express_reference_separators">_.\</xsl:variable><xsl:variable name="express_reference_characters" select="concat($upper,$lower,'1234567890',$express_reference_separators)"/><xsl:variable name="element_name_keep-together_within-line">keep-together_within-line</xsl:variable><xsl:template match="text()[not(ancestor::*[local-name() = 'bibdata'] or ancestor::*[local-name() = 'sourcecode'] or ancestor::*[local-name() = 'math'])]" name="keep_together_standard_number" mode="update_xml_enclose_keep-together_within-line">
8493
+
8494
+ <!-- enclose standard's number into tag 'keep-together_within-line' -->
8495
+ <xsl:variable name="regex_standard_reference">([A-Z]{2,}(/[A-Z]{2,})* \d+(-\d+)*(:\d{4})?)</xsl:variable>
8496
+ <xsl:variable name="tag_keep-together_within-line_open">###<xsl:value-of select="$element_name_keep-together_within-line"/>###</xsl:variable>
8497
+ <xsl:variable name="tag_keep-together_within-line_close">###/<xsl:value-of select="$element_name_keep-together_within-line"/>###</xsl:variable>
8498
+ <xsl:variable name="text_" select="java:replaceAll(java:java.lang.String.new(.),$regex_standard_reference,concat($tag_keep-together_within-line_open,'$1',$tag_keep-together_within-line_close))"/>
8499
+ <xsl:variable name="text"><text><xsl:call-template name="replace_text_tags">
8500
+ <xsl:with-param name="tag_open" select="$tag_keep-together_within-line_open"/>
8501
+ <xsl:with-param name="tag_close" select="$tag_keep-together_within-line_close"/>
8502
+ <xsl:with-param name="text" select="$text_"/>
8503
+ </xsl:call-template></text></xsl:variable>
8504
+
8505
+ <xsl:variable name="parent" select="local-name(..)"/>
8506
+
8507
+ <xsl:variable name="text2">
8508
+ <text><xsl:for-each select="xalan:nodeset($text)/text/node()">
8509
+ <xsl:copy-of select="."/>
8510
+ </xsl:for-each></text>
8511
+ </xsl:variable>
8512
+
8513
+ <!-- keep-together_within-line for: a/b, aaa/b, a/bbb, /b -->
8514
+ <xsl:variable name="regex_solidus_units">((\b((\S{1,3}\/\S+)|(\S+\/\S{1,3}))\b)|(\/\S{1,3})\b)</xsl:variable>
8515
+ <xsl:variable name="text3">
8516
+ <text><xsl:for-each select="xalan:nodeset($text2)/text/node()">
8517
+ <xsl:choose>
8518
+ <xsl:when test="self::text()">
8519
+ <xsl:variable name="text_units_" select="java:replaceAll(java:java.lang.String.new(.),$regex_solidus_units,concat($tag_keep-together_within-line_open,'$1',$tag_keep-together_within-line_close))"/>
8520
+ <xsl:variable name="text_units"><text><xsl:call-template name="replace_text_tags">
8521
+ <xsl:with-param name="tag_open" select="$tag_keep-together_within-line_open"/>
8522
+ <xsl:with-param name="tag_close" select="$tag_keep-together_within-line_close"/>
8523
+ <xsl:with-param name="text" select="$text_units_"/>
8524
+ </xsl:call-template></text></xsl:variable>
8525
+ <xsl:copy-of select="xalan:nodeset($text_units)/text/node()"/>
8526
+ </xsl:when>
8527
+ <xsl:otherwise><xsl:copy-of select="."/></xsl:otherwise> <!-- copy 'as-is' for <fo:inline keep-together.within-line="always" ... -->
8528
+ </xsl:choose>
8529
+ </xsl:for-each></text>
8530
+ </xsl:variable>
8531
+
8532
+ <xsl:choose>
8533
+ <xsl:when test="ancestor::*[local-name() = 'td' or local-name() = 'th']">
8534
+ <!-- keep-together_within-line for: a.b, aaa.b, a.bbb, .b in table's cell ONLY -->
8535
+ <xsl:variable name="regex_dots_units">((\b((\S{1,3}\.\S+)|(\S+\.\S{1,3}))\b)|(\.\S{1,3})\b)</xsl:variable>
8536
+ <xsl:for-each select="xalan:nodeset($text3)/text/node()">
8537
+ <xsl:choose>
8538
+ <xsl:when test="self::text()">
8539
+ <xsl:variable name="text_dots_" select="java:replaceAll(java:java.lang.String.new(.),$regex_dots_units,concat($tag_keep-together_within-line_open,'$1',$tag_keep-together_within-line_close))"/>
8540
+ <xsl:variable name="text_dots"><text><xsl:call-template name="replace_text_tags">
8541
+ <xsl:with-param name="tag_open" select="$tag_keep-together_within-line_open"/>
8542
+ <xsl:with-param name="tag_close" select="$tag_keep-together_within-line_close"/>
8543
+ <xsl:with-param name="text" select="$text_dots_"/>
8544
+ </xsl:call-template></text></xsl:variable>
8545
+ <xsl:copy-of select="xalan:nodeset($text_dots)/text/node()"/>
8546
+ </xsl:when>
8547
+ <xsl:otherwise><xsl:copy-of select="."/></xsl:otherwise> <!-- copy 'as-is' for <fo:inline keep-together.within-line="always" ... -->
8548
+ </xsl:choose>
8549
+ </xsl:for-each>
8550
+ </xsl:when>
8551
+ <xsl:otherwise><xsl:copy-of select="xalan:nodeset($text3)/text/node()"/></xsl:otherwise>
8552
+ </xsl:choose>
8553
+
8554
+ </xsl:template><xsl:template name="replace_text_tags">
8555
+ <xsl:param name="tag_open"/>
8556
+ <xsl:param name="tag_close"/>
8557
+ <xsl:param name="text"/>
8558
+ <xsl:choose>
8559
+ <xsl:when test="contains($text, $tag_open)">
8560
+ <xsl:value-of select="substring-before($text, $tag_open)"/>
8561
+ <xsl:variable name="text_after" select="substring-after($text, $tag_open)"/>
8562
+
8563
+ <xsl:element name="{substring-before(substring-after($tag_open, '###'),'###')}">
8564
+ <xsl:value-of select="substring-before($text_after, $tag_close)"/>
8565
+ </xsl:element>
8566
+
8567
+ <xsl:call-template name="replace_text_tags">
8568
+ <xsl:with-param name="tag_open" select="$tag_open"/>
8569
+ <xsl:with-param name="tag_close" select="$tag_close"/>
8570
+ <xsl:with-param name="text" select="substring-after($text_after, $tag_close)"/>
8571
+ </xsl:call-template>
8572
+ </xsl:when>
8573
+ <xsl:otherwise><xsl:value-of select="$text"/></xsl:otherwise>
8574
+ </xsl:choose>
8575
+ </xsl:template><xsl:template name="printEdition">
8576
+ <xsl:variable name="edition_i18n" select="normalize-space((//*[contains(local-name(), '-standard')])[1]/*[local-name() = 'bibdata']/*[local-name() = 'edition'][normalize-space(@language) != ''])"/>
8577
+ <xsl:text> </xsl:text>
8578
+ <xsl:choose>
8579
+ <xsl:when test="$edition_i18n != ''">
8580
+ <!-- Example: <edition language="fr">deuxième édition</edition> -->
8581
+ <xsl:call-template name="capitalize">
8582
+ <xsl:with-param name="str" select="$edition_i18n"/>
8583
+ </xsl:call-template>
8584
+ </xsl:when>
8585
+ <xsl:otherwise>
8586
+ <xsl:variable name="edition" select="normalize-space((//*[contains(local-name(), '-standard')])[1]/*[local-name() = 'bibdata']/*[local-name() = 'edition'])"/>
8587
+ <xsl:if test="$edition != ''"> <!-- Example: 1.3 -->
8588
+ <xsl:call-template name="capitalize">
8589
+ <xsl:with-param name="str">
8590
+ <xsl:call-template name="getLocalizedString">
8591
+ <xsl:with-param name="key">edition</xsl:with-param>
8592
+ </xsl:call-template>
8593
+ </xsl:with-param>
8594
+ </xsl:call-template>
8595
+ <xsl:text> </xsl:text>
8596
+ <xsl:value-of select="$edition"/>
8597
+ </xsl:if>
8598
+ </xsl:otherwise>
8599
+ </xsl:choose>
8225
8600
  </xsl:template><xsl:template name="convertDate">
8226
8601
  <xsl:param name="date"/>
8227
8602
  <xsl:param name="format" select="'short'"/>