metanorma-un 0.8.6 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/isodoc/un/html/html_unece_plenary_titlepage.html +3 -0
- data/lib/isodoc/un/html/html_unece_titlepage.html +1 -0
- data/lib/isodoc/un/html/word_unece_plenary_titlepage.html +4 -0
- data/lib/isodoc/un/html/word_unece_titlepage.html +3 -0
- data/lib/isodoc/un/init.rb +1 -1
- data/lib/isodoc/un/presentation_xml_convert.rb +15 -24
- data/lib/isodoc/un/un.plenary-attachment.xsl +554 -181
- data/lib/isodoc/un/un.plenary.xsl +554 -181
- data/lib/isodoc/un/un.recommendation.xsl +554 -181
- data/lib/isodoc/un/xref.rb +21 -16
- data/lib/metanorma/un/biblio.rng +62 -10
- data/lib/metanorma/un/converter.rb +5 -5
- data/lib/metanorma/un/isodoc.rng +56 -0
- data/lib/metanorma/un/un.rng +10 -0
- data/lib/metanorma/un/version.rb +1 -1
- data/metanorma-unece.gemspec +1 -1
- metadata +4 -4
@@ -36,7 +36,13 @@
|
|
36
36
|
|
37
37
|
<xsl:template match="/">
|
38
38
|
<xsl:call-template name="namespaceCheck"/>
|
39
|
-
<fo:root
|
39
|
+
<fo:root xml:lang="{$lang}">
|
40
|
+
<xsl:variable name="root-style">
|
41
|
+
<root-style xsl:use-attribute-sets="root-style"/>
|
42
|
+
</xsl:variable>
|
43
|
+
<xsl:call-template name="insertRootStyle">
|
44
|
+
<xsl:with-param name="root-style" select="$root-style"/>
|
45
|
+
</xsl:call-template>
|
40
46
|
<fo:layout-master-set>
|
41
47
|
<!-- Cover page -->
|
42
48
|
<fo:simple-page-master master-name="cover-page" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
|
@@ -896,7 +902,7 @@
|
|
896
902
|
<xsl:text>iVBORw0KGgoAAAANSUhEUgAAAUgAAAEfCAYAAAAjn198AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA8BpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4M0JCQjMxNzJBNjcxMUVBQjQ3MkM1NDNGQjcxMjlFQyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4M0JCQjMxNjJBNjcxMUVBQjQ3MkM1NDNGQjcxMjlFQyIgeG1wOkNyZWF0b3JUb29sPSJBY3JvYmF0IFBERk1ha2VyIDE4IGZvciBXb3JkIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InV1aWQ6OTM1MzU0ZmUtYzRmYS00Y2I4LTlkOGMtYjk0M2E4OTk2YzhiIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOjhlMzkwMGEzLTMwZWUtNGRlNy04NDc0LTlhZTA5ZTFjZjhmMiIvPiA8ZGM6Y3JlYXRvcj4gPHJkZjpTZXE+IDxyZGY6bGk+U3RlcGhl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</xsl:text>
|
897
903
|
</xsl:variable>
|
898
904
|
|
899
|
-
<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">
|
905
|
+
<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">
|
900
906
|
<xsl:call-template name="getLang"/>
|
901
907
|
</xsl:variable><xsl:variable name="pageWidth_">
|
902
908
|
210
|
@@ -911,20 +917,7 @@
|
|
911
917
|
</xsl:variable><xsl:variable name="marginTop" select="normalize-space($marginTop_)"/><xsl:variable name="marginBottom_">
|
912
918
|
34
|
913
919
|
</xsl:variable><xsl:variable name="marginBottom" select="normalize-space($marginBottom_)"/><xsl:variable name="titles_">
|
914
|
-
|
915
|
-
<title-edition lang="en">
|
916
|
-
|
917
|
-
<xsl:text>Edition </xsl:text>
|
918
|
-
|
919
|
-
</title-edition>
|
920
920
|
|
921
|
-
<title-edition lang="fr">
|
922
|
-
<xsl:text>Édition </xsl:text>
|
923
|
-
</title-edition>
|
924
|
-
|
925
|
-
<title-edition lang="ru">
|
926
|
-
<xsl:text>Издание </xsl:text>
|
927
|
-
</title-edition>
|
928
921
|
|
929
922
|
<!-- These titles of Table of contents renders different than determined in localized-strings -->
|
930
923
|
<title-toc lang="en">
|
@@ -1005,7 +998,7 @@
|
|
1005
998
|
</xsl:variable><xsl:variable name="bibdata">
|
1006
999
|
<xsl:copy-of select="//*[contains(local-name(), '-standard')]/*[local-name() = 'bibdata']"/>
|
1007
1000
|
<xsl:copy-of select="//*[contains(local-name(), '-standard')]/*[local-name() = 'localized-strings']"/>
|
1008
|
-
</xsl:variable><xsl:variable name="linebreak">
</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">
|
1001
|
+
</xsl:variable><xsl:variable name="linebreak">
</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">
|
1009
1002
|
<xsl:param name="name"/>
|
1010
1003
|
<xsl:param name="lang"/>
|
1011
1004
|
<xsl:variable name="lang_">
|
@@ -1048,7 +1041,30 @@
|
|
1048
1041
|
<xsl:attribute name="font-family">Times New Roman, STIX Two Math, Source Han Sans</xsl:attribute>
|
1049
1042
|
<xsl:attribute name="font-size">10pt</xsl:attribute>
|
1050
1043
|
|
1051
|
-
</xsl:attribute-set><xsl:
|
1044
|
+
</xsl:attribute-set><xsl:template name="insertRootStyle">
|
1045
|
+
<xsl:param name="root-style"/>
|
1046
|
+
<xsl:variable name="root-style_" select="xalan:nodeset($root-style)"/>
|
1047
|
+
|
1048
|
+
<xsl:variable name="additional_fonts_">
|
1049
|
+
<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']">
|
1050
|
+
<xsl:value-of select="."/><xsl:if test="position() != last()">, </xsl:if>
|
1051
|
+
</xsl:for-each>
|
1052
|
+
</xsl:variable>
|
1053
|
+
<xsl:variable name="additional_fonts" select="normalize-space($additional_fonts_)"/>
|
1054
|
+
|
1055
|
+
<xsl:for-each select="$root-style_/root-style/@*">
|
1056
|
+
<xsl:choose>
|
1057
|
+
<xsl:when test="local-name() = 'font-family' and $additional_fonts != ''">
|
1058
|
+
<xsl:attribute name="{local-name()}">
|
1059
|
+
<xsl:value-of select="."/>, <xsl:value-of select="$additional_fonts"/>
|
1060
|
+
</xsl:attribute>
|
1061
|
+
</xsl:when>
|
1062
|
+
<xsl:otherwise>
|
1063
|
+
<xsl:copy-of select="."/>
|
1064
|
+
</xsl:otherwise>
|
1065
|
+
</xsl:choose>
|
1066
|
+
</xsl:for-each>
|
1067
|
+
</xsl:template><xsl:attribute-set name="copyright-statement-style">
|
1052
1068
|
|
1053
1069
|
</xsl:attribute-set><xsl:attribute-set name="copyright-statement-title-style">
|
1054
1070
|
|
@@ -1102,7 +1118,6 @@
|
|
1102
1118
|
|
1103
1119
|
|
1104
1120
|
</xsl:attribute-set><xsl:attribute-set name="sourcecode-container-style">
|
1105
|
-
<xsl:attribute name="margin-left">0mm</xsl:attribute>
|
1106
1121
|
|
1107
1122
|
</xsl:attribute-set><xsl:attribute-set name="sourcecode-style">
|
1108
1123
|
<xsl:attribute name="white-space">pre</xsl:attribute>
|
@@ -1182,6 +1197,7 @@
|
|
1182
1197
|
|
1183
1198
|
|
1184
1199
|
|
1200
|
+
|
1185
1201
|
</xsl:attribute-set><xsl:attribute-set name="example-name-style">
|
1186
1202
|
|
1187
1203
|
|
@@ -1549,7 +1565,7 @@
|
|
1549
1565
|
|
1550
1566
|
|
1551
1567
|
|
1552
|
-
</xsl:attribute-set><xsl:attribute-set name="termnote-name-style">
|
1568
|
+
</xsl:attribute-set><xsl:attribute-set name="termnote-name-style">
|
1553
1569
|
|
1554
1570
|
|
1555
1571
|
|
@@ -2247,10 +2263,41 @@
|
|
2247
2263
|
<xsl:sort select="@displayorder" data-type="number"/>
|
2248
2264
|
<xsl:apply-templates select="."/>
|
2249
2265
|
</xsl:for-each>
|
2250
|
-
</xsl:template><xsl:template match="text()">
|
2251
|
-
|
2266
|
+
</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">
|
2267
|
+
|
2268
|
+
<xsl:variable name="regex_standard_reference">([A-Z]{2,}(/[A-Z]{2,})* \d+(-\d+)*(:\d{4})?)</xsl:variable>
|
2269
|
+
<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))"/>
|
2270
|
+
<xsl:call-template name="replace_fo_inline_tags">
|
2271
|
+
<xsl:with-param name="tag_open" select="$tag_fo_inline_keep-together_within-line_open"/>
|
2272
|
+
<xsl:with-param name="tag_close" select="$tag_fo_inline_keep-together_within-line_close"/>
|
2273
|
+
<xsl:with-param name="text" select="$text"/>
|
2274
|
+
</xsl:call-template>
|
2275
|
+
|
2276
|
+
</xsl:template><xsl:template name="replace_fo_inline_tags">
|
2277
|
+
<xsl:param name="tag_open"/>
|
2278
|
+
<xsl:param name="tag_close"/>
|
2279
|
+
<xsl:param name="text"/>
|
2280
|
+
<xsl:choose>
|
2281
|
+
<xsl:when test="contains($text, $tag_open)">
|
2282
|
+
<xsl:value-of select="substring-before($text, $tag_open)"/>
|
2283
|
+
<!-- <xsl:text disable-output-escaping="yes"><fo:inline keep-together.within-line="always"></xsl:text> -->
|
2284
|
+
<xsl:variable name="text_after" select="substring-after($text, $tag_open)"/>
|
2285
|
+
<fo:inline keep-together.within-line="always">
|
2286
|
+
<xsl:value-of select="substring-before($text_after, $tag_close)"/>
|
2287
|
+
</fo:inline>
|
2288
|
+
<!-- <xsl:text disable-output-escaping="yes"></fo:inline></xsl:text> -->
|
2289
|
+
<xsl:call-template name="replace_fo_inline_tags">
|
2290
|
+
<xsl:with-param name="tag_open" select="$tag_open"/>
|
2291
|
+
<xsl:with-param name="tag_close" select="$tag_close"/>
|
2292
|
+
<xsl:with-param name="text" select="substring-after($text_after, $tag_close)"/>
|
2293
|
+
</xsl:call-template>
|
2294
|
+
</xsl:when>
|
2295
|
+
<xsl:otherwise><xsl:value-of select="$text"/></xsl:otherwise>
|
2296
|
+
</xsl:choose>
|
2252
2297
|
</xsl:template><xsl:template match="*[local-name()='br']">
|
2253
2298
|
<xsl:value-of select="$linebreak"/>
|
2299
|
+
</xsl:template><xsl:template match="*[local-name() = 'keep-together_within-line']">
|
2300
|
+
<fo:inline keep-together.within-line="always"><xsl:apply-templates/></fo:inline>
|
2254
2301
|
</xsl:template><xsl:template match="*[local-name()='copyright-statement']">
|
2255
2302
|
<fo:block xsl:use-attribute-sets="copyright-statement-style">
|
2256
2303
|
<xsl:apply-templates/>
|
@@ -2316,8 +2363,23 @@
|
|
2316
2363
|
</xsl:call-template>
|
2317
2364
|
|
2318
2365
|
</xsl:template><xsl:template match="*[local-name()='td']//text() | *[local-name()='th']//text() | *[local-name()='dt']//text() | *[local-name()='dd']//text()" priority="1">
|
2319
|
-
|
2320
|
-
|
2366
|
+
<xsl:choose>
|
2367
|
+
<xsl:when test="parent::*[local-name() = 'keep-together_within-line']">
|
2368
|
+
<xsl:value-of select="."/>
|
2369
|
+
</xsl:when>
|
2370
|
+
<xsl:otherwise>
|
2371
|
+
<xsl:call-template name="addZeroWidthSpacesToTextNodes"/>
|
2372
|
+
</xsl:otherwise>
|
2373
|
+
</xsl:choose>
|
2374
|
+
</xsl:template><xsl:template name="addZeroWidthSpacesToTextNodes">
|
2375
|
+
<xsl:variable name="text"><text><xsl:call-template name="text"/></text></xsl:variable>
|
2376
|
+
<!-- <xsl:copy-of select="$text"/> -->
|
2377
|
+
<xsl:for-each select="xalan:nodeset($text)/text/node()">
|
2378
|
+
<xsl:choose>
|
2379
|
+
<xsl:when test="self::text()"><xsl:call-template name="add-zero-spaces-java"/></xsl:when>
|
2380
|
+
<xsl:otherwise><xsl:copy-of select="."/></xsl:otherwise> <!-- copy 'as-is' for <fo:inline keep-together.within-line="always" ... -->
|
2381
|
+
</xsl:choose>
|
2382
|
+
</xsl:for-each>
|
2321
2383
|
</xsl:template><xsl:template match="*[local-name()='table']" name="table">
|
2322
2384
|
|
2323
2385
|
<xsl:variable name="table-preamble">
|
@@ -2455,16 +2517,9 @@
|
|
2455
2517
|
</xsl:for-each>
|
2456
2518
|
</xsl:when>
|
2457
2519
|
<xsl:otherwise>
|
2458
|
-
<xsl:
|
2459
|
-
<xsl:
|
2460
|
-
|
2461
|
-
<fo:table-column column-width="proportional-column-width(2)"/>
|
2462
|
-
</xsl:when>
|
2463
|
-
<xsl:otherwise>
|
2464
|
-
<fo:table-column column-width="proportional-column-width({.})"/>
|
2465
|
-
</xsl:otherwise>
|
2466
|
-
</xsl:choose>
|
2467
|
-
</xsl:for-each>
|
2520
|
+
<xsl:call-template name="insertTableColumnWidth">
|
2521
|
+
<xsl:with-param name="colwidths" select="$colwidths"/>
|
2522
|
+
</xsl:call-template>
|
2468
2523
|
</xsl:otherwise>
|
2469
2524
|
</xsl:choose>
|
2470
2525
|
|
@@ -2625,6 +2680,7 @@
|
|
2625
2680
|
<xsl:with-param name="text" select="$td_text"/>
|
2626
2681
|
</xsl:call-template>
|
2627
2682
|
</xsl:variable>
|
2683
|
+
<!-- <xsl:message>string_with_added_zerospaces=<xsl:value-of select="$string_with_added_zerospaces"/></xsl:message> -->
|
2628
2684
|
<xsl:call-template name="tokenize">
|
2629
2685
|
<!-- <xsl:with-param name="text" select="translate(td[$curr-col],'- —:', ' ')"/> -->
|
2630
2686
|
<!-- 2009 thinspace -->
|
@@ -2637,6 +2693,7 @@
|
|
2637
2693
|
<xsl:with-param name="words" select="xalan:nodeset($words)"/>
|
2638
2694
|
</xsl:call-template>
|
2639
2695
|
</xsl:variable>
|
2696
|
+
<!-- <xsl:message>max_length=<xsl:value-of select="$max_length"/></xsl:message> -->
|
2640
2697
|
<width>
|
2641
2698
|
<xsl:variable name="divider">
|
2642
2699
|
<xsl:choose>
|
@@ -2669,6 +2726,10 @@
|
|
2669
2726
|
<xsl:with-param name="table" select="$table"/>
|
2670
2727
|
</xsl:call-template>
|
2671
2728
|
</xsl:if>
|
2729
|
+
</xsl:template><xsl:template match="*[@keep-together.within-line]/text()" priority="2" mode="td_text">
|
2730
|
+
<!-- <xsl:message>DEBUG t1=<xsl:value-of select="."/></xsl:message>
|
2731
|
+
<xsl:message>DEBUG t2=<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),'.','X')"/></xsl:message> -->
|
2732
|
+
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),'.','X')"/>
|
2672
2733
|
</xsl:template><xsl:template match="text()" mode="td_text">
|
2673
2734
|
<xsl:value-of select="translate(., $zero_width_space, ' ')"/><xsl:text> </xsl:text>
|
2674
2735
|
</xsl:template><xsl:template match="*[local-name()='termsource']" mode="td_text">
|
@@ -2770,16 +2831,9 @@
|
|
2770
2831
|
</xsl:for-each>
|
2771
2832
|
</xsl:when>
|
2772
2833
|
<xsl:otherwise>
|
2773
|
-
<xsl:
|
2774
|
-
<xsl:
|
2775
|
-
|
2776
|
-
<fo:table-column column-width="proportional-column-width(2)"/>
|
2777
|
-
</xsl:when>
|
2778
|
-
<xsl:otherwise>
|
2779
|
-
<fo:table-column column-width="proportional-column-width({.})"/>
|
2780
|
-
</xsl:otherwise>
|
2781
|
-
</xsl:choose>
|
2782
|
-
</xsl:for-each>
|
2834
|
+
<xsl:call-template name="insertTableColumnWidth">
|
2835
|
+
<xsl:with-param name="colwidths" select="$colwidths"/>
|
2836
|
+
</xsl:call-template>
|
2783
2837
|
</xsl:otherwise>
|
2784
2838
|
</xsl:choose>
|
2785
2839
|
|
@@ -3344,8 +3398,10 @@
|
|
3344
3398
|
<!-- and (not(../@class) or ../@class !='pseudocode') -->
|
3345
3399
|
</xsl:variable>
|
3346
3400
|
|
3401
|
+
<xsl:variable name="onlyOneComponent" select="normalize-space($parent = 'formula' and count(*[local-name()='dt']) = 1)"/>
|
3402
|
+
|
3347
3403
|
<xsl:choose>
|
3348
|
-
<xsl:when test="$
|
3404
|
+
<xsl:when test="$onlyOneComponent = 'true'"> <!-- only one component -->
|
3349
3405
|
|
3350
3406
|
<fo:block margin-bottom="12pt" text-align="left">
|
3351
3407
|
|
@@ -3360,7 +3416,7 @@
|
|
3360
3416
|
<xsl:apply-templates select="*[local-name()='dd']/*" mode="inline"/>
|
3361
3417
|
</fo:block>
|
3362
3418
|
|
3363
|
-
</xsl:when>
|
3419
|
+
</xsl:when> <!-- END: only one component -->
|
3364
3420
|
<xsl:when test="$parent = 'formula'"> <!-- a few components -->
|
3365
3421
|
<fo:block margin-bottom="12pt" text-align="left">
|
3366
3422
|
|
@@ -3374,8 +3430,8 @@
|
|
3374
3430
|
</xsl:variable>
|
3375
3431
|
<xsl:value-of select="$title-where"/>
|
3376
3432
|
</fo:block>
|
3377
|
-
</xsl:when>
|
3378
|
-
<xsl:when test="$parent = 'figure' and (not(../@class) or ../@class !='pseudocode')">
|
3433
|
+
</xsl:when> <!-- END: a few components -->
|
3434
|
+
<xsl:when test="$parent = 'figure' and (not(../@class) or ../@class !='pseudocode')"> <!-- definition list in a figure -->
|
3379
3435
|
<fo:block font-weight="bold" text-align="left" margin-bottom="12pt" keep-with-next="always">
|
3380
3436
|
|
3381
3437
|
|
@@ -3388,11 +3444,11 @@
|
|
3388
3444
|
</xsl:variable>
|
3389
3445
|
<xsl:value-of select="$title-key"/>
|
3390
3446
|
</fo:block>
|
3391
|
-
</xsl:when>
|
3447
|
+
</xsl:when> <!-- END: definition list in a figure -->
|
3392
3448
|
</xsl:choose>
|
3393
3449
|
|
3394
3450
|
<!-- a few components -->
|
3395
|
-
<xsl:if test="
|
3451
|
+
<xsl:if test="$onlyOneComponent = 'false'">
|
3396
3452
|
<fo:block>
|
3397
3453
|
|
3398
3454
|
|
@@ -3431,21 +3487,28 @@
|
|
3431
3487
|
<xsl:apply-templates mode="dl"/>
|
3432
3488
|
</tbody>
|
3433
3489
|
</xsl:variable>
|
3434
|
-
<!-- html-table<xsl:copy-of select="$html-table"/> -->
|
3490
|
+
<!-- DEBUG: html-table<xsl:copy-of select="$html-table"/> -->
|
3435
3491
|
<xsl:variable name="colwidths">
|
3436
3492
|
<xsl:call-template name="calculate-column-widths">
|
3437
3493
|
<xsl:with-param name="cols-count" select="2"/>
|
3438
3494
|
<xsl:with-param name="table" select="$html-table"/>
|
3439
3495
|
</xsl:call-template>
|
3440
3496
|
</xsl:variable>
|
3441
|
-
<!-- colwidths=<xsl:copy-of select="$colwidths"/> -->
|
3497
|
+
<!-- DEBUG: colwidths=<xsl:copy-of select="$colwidths"/> -->
|
3442
3498
|
<xsl:variable name="maxlength_dt">
|
3443
3499
|
<xsl:call-template name="getMaxLength_dt"/>
|
3444
3500
|
</xsl:variable>
|
3501
|
+
<xsl:variable name="isContainsKeepTogetherTag_">
|
3502
|
+
false
|
3503
|
+
</xsl:variable>
|
3504
|
+
<xsl:variable name="isContainsKeepTogetherTag" select="normalize-space($isContainsKeepTogetherTag_)"/>
|
3505
|
+
<!-- isContainsExpressReference=<xsl:value-of select="$isContainsExpressReference"/> -->
|
3445
3506
|
<xsl:call-template name="setColumnWidth_dl">
|
3446
3507
|
<xsl:with-param name="colwidths" select="$colwidths"/>
|
3447
3508
|
<xsl:with-param name="maxlength_dt" select="$maxlength_dt"/>
|
3509
|
+
<xsl:with-param name="isContainsKeepTogetherTag" select="$isContainsKeepTogetherTag"/>
|
3448
3510
|
</xsl:call-template>
|
3511
|
+
|
3449
3512
|
<fo:table-body>
|
3450
3513
|
<xsl:apply-templates>
|
3451
3514
|
<xsl:with-param name="key_iso" select="normalize-space($key_iso)"/>
|
@@ -3454,12 +3517,13 @@
|
|
3454
3517
|
</fo:table>
|
3455
3518
|
</fo:block>
|
3456
3519
|
</fo:block>
|
3457
|
-
</xsl:if>
|
3520
|
+
</xsl:if> <!-- END: a few components -->
|
3458
3521
|
</fo:block-container>
|
3459
3522
|
</fo:block-container>
|
3460
3523
|
</xsl:template><xsl:template name="setColumnWidth_dl">
|
3461
3524
|
<xsl:param name="colwidths"/>
|
3462
3525
|
<xsl:param name="maxlength_dt"/>
|
3526
|
+
<xsl:param name="isContainsKeepTogetherTag"/>
|
3463
3527
|
<xsl:choose>
|
3464
3528
|
<xsl:when test="ancestor::*[local-name()='dl']"><!-- second level, i.e. inlined table -->
|
3465
3529
|
<fo:table-column column-width="50%"/>
|
@@ -3467,6 +3531,11 @@
|
|
3467
3531
|
</xsl:when>
|
3468
3532
|
<xsl:otherwise>
|
3469
3533
|
<xsl:choose>
|
3534
|
+
<xsl:when test="$isContainsKeepTogetherTag">
|
3535
|
+
<xsl:call-template name="insertTableColumnWidth">
|
3536
|
+
<xsl:with-param name="colwidths" select="$colwidths"/>
|
3537
|
+
</xsl:call-template>
|
3538
|
+
</xsl:when>
|
3470
3539
|
<!-- to set width check most wide chars like `W` -->
|
3471
3540
|
<xsl:when test="normalize-space($maxlength_dt) != '' and number($maxlength_dt) <= 2"> <!-- if dt contains short text like t90, a, etc -->
|
3472
3541
|
<fo:table-column column-width="7%"/>
|
@@ -3497,20 +3566,25 @@
|
|
3497
3566
|
<fo:table-column column-width="60%"/>
|
3498
3567
|
</xsl:when>
|
3499
3568
|
<xsl:otherwise>
|
3500
|
-
<xsl:
|
3501
|
-
<xsl:
|
3502
|
-
|
3503
|
-
<fo:table-column column-width="proportional-column-width(2)"/>
|
3504
|
-
</xsl:when>
|
3505
|
-
<xsl:otherwise>
|
3506
|
-
<fo:table-column column-width="proportional-column-width({.})"/>
|
3507
|
-
</xsl:otherwise>
|
3508
|
-
</xsl:choose>
|
3509
|
-
</xsl:for-each>
|
3569
|
+
<xsl:call-template name="insertTableColumnWidth">
|
3570
|
+
<xsl:with-param name="colwidths" select="$colwidths"/>
|
3571
|
+
</xsl:call-template>
|
3510
3572
|
</xsl:otherwise>
|
3511
3573
|
</xsl:choose>
|
3512
3574
|
</xsl:otherwise>
|
3513
3575
|
</xsl:choose>
|
3576
|
+
</xsl:template><xsl:template name="insertTableColumnWidth">
|
3577
|
+
<xsl:param name="colwidths"/>
|
3578
|
+
<xsl:for-each select="xalan:nodeset($colwidths)//column">
|
3579
|
+
<xsl:choose>
|
3580
|
+
<xsl:when test=". = 1 or . = 0">
|
3581
|
+
<fo:table-column column-width="proportional-column-width(2)"/>
|
3582
|
+
</xsl:when>
|
3583
|
+
<xsl:otherwise>
|
3584
|
+
<fo:table-column column-width="proportional-column-width({.})"/>
|
3585
|
+
</xsl:otherwise>
|
3586
|
+
</xsl:choose>
|
3587
|
+
</xsl:for-each>
|
3514
3588
|
</xsl:template><xsl:template name="getMaxLength_dt">
|
3515
3589
|
<xsl:variable name="lengths">
|
3516
3590
|
<xsl:for-each select="*[local-name()='dt']">
|
@@ -3534,7 +3608,6 @@
|
|
3534
3608
|
<xsl:value-of select="$maxLength"/>
|
3535
3609
|
</xsl:template><xsl:template match="*[local-name()='dl']/*[local-name()='note']" priority="2">
|
3536
3610
|
<xsl:param name="key_iso"/>
|
3537
|
-
|
3538
3611
|
<!-- <tr>
|
3539
3612
|
<td>NOTE</td>
|
3540
3613
|
<td>
|
@@ -3542,18 +3615,30 @@
|
|
3542
3615
|
</td>
|
3543
3616
|
</tr>
|
3544
3617
|
-->
|
3545
|
-
|
3618
|
+
<!-- OLD Variant -->
|
3619
|
+
<!-- <fo:table-row>
|
3546
3620
|
<fo:table-cell>
|
3547
3621
|
<fo:block margin-top="6pt">
|
3548
3622
|
<xsl:if test="normalize-space($key_iso) = 'true'">
|
3549
3623
|
<xsl:attribute name="margin-top">0</xsl:attribute>
|
3550
3624
|
</xsl:if>
|
3551
|
-
<xsl:apply-templates select="*[local-name() = 'name']"/>
|
3625
|
+
<xsl:apply-templates select="*[local-name() = 'name']" />
|
3552
3626
|
</fo:block>
|
3553
3627
|
</fo:table-cell>
|
3554
3628
|
<fo:table-cell>
|
3555
3629
|
<fo:block>
|
3556
|
-
<xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
|
3630
|
+
<xsl:apply-templates select="node()[not(local-name() = 'name')]" />
|
3631
|
+
</fo:block>
|
3632
|
+
</fo:table-cell>
|
3633
|
+
</fo:table-row> -->
|
3634
|
+
<!-- <tr>
|
3635
|
+
<td number-columns-spanned="2">NOTE <xsl:apply-templates /> </td>
|
3636
|
+
</tr>
|
3637
|
+
-->
|
3638
|
+
<fo:table-row>
|
3639
|
+
<fo:table-cell number-columns-spanned="2">
|
3640
|
+
<fo:block>
|
3641
|
+
<xsl:call-template name="note"/>
|
3557
3642
|
</fo:block>
|
3558
3643
|
</fo:table-cell>
|
3559
3644
|
</fo:table-row>
|
@@ -3655,13 +3740,15 @@
|
|
3655
3740
|
<xsl:choose>
|
3656
3741
|
<xsl:when test="$font-size = 'inherit'"><xsl:value-of select="$font-size"/></xsl:when>
|
3657
3742
|
<xsl:when test="contains($font-size, '%')"><xsl:value-of select="$font-size"/></xsl:when>
|
3658
|
-
<xsl:when test="ancestor::*[local-name()='note']"><xsl:value-of select="$font-size * 0.91"/>pt</xsl:when>
|
3743
|
+
<xsl:when test="ancestor::*[local-name()='note'] or ancestor::*[local-name()='example']"><xsl:value-of select="$font-size * 0.91"/>pt</xsl:when>
|
3659
3744
|
<xsl:otherwise><xsl:value-of select="$font-size"/>pt</xsl:otherwise>
|
3660
3745
|
</xsl:choose>
|
3661
3746
|
</xsl:attribute>
|
3662
3747
|
</xsl:if>
|
3663
3748
|
<xsl:apply-templates/>
|
3664
3749
|
</fo:inline>
|
3750
|
+
</xsl:template><xsl:template match="*[local-name()='tt']/text()" priority="2">
|
3751
|
+
<xsl:call-template name="add_spaces_to_sourcecode"/>
|
3665
3752
|
</xsl:template><xsl:template match="*[local-name()='underline']">
|
3666
3753
|
<fo:inline text-decoration="underline">
|
3667
3754
|
<xsl:apply-templates/>
|
@@ -3809,41 +3896,50 @@
|
|
3809
3896
|
<fo:block break-after="page"/>
|
3810
3897
|
<fo:block> </fo:block>
|
3811
3898
|
<fo:block break-after="page"/>
|
3899
|
+
</xsl:template><xsl:template match="*[local-name() = 'span']">
|
3900
|
+
<xsl:apply-templates/>
|
3812
3901
|
</xsl:template><xsl:template name="tokenize">
|
3813
3902
|
<xsl:param name="text"/>
|
3814
3903
|
<xsl:param name="separator" select="' '"/>
|
3815
3904
|
<xsl:choose>
|
3816
3905
|
<xsl:when test="not(contains($text, $separator))">
|
3817
3906
|
<word>
|
3818
|
-
<xsl:variable name="str_no_en_chars" select="normalize-space(translate($text, $en_chars, ''))"/>
|
3819
|
-
<xsl:variable name="len_str_no_en_chars" select="string-length($str_no_en_chars)"/>
|
3820
3907
|
<xsl:variable name="len_str_tmp" select="string-length(normalize-space($text))"/>
|
3821
|
-
<xsl:variable name="len_str">
|
3822
|
-
<xsl:choose>
|
3823
|
-
<xsl:when test="normalize-space(translate($text, $upper, '')) = ''"> <!-- english word in CAPITAL letters -->
|
3824
|
-
<xsl:value-of select="$len_str_tmp * 1.5"/>
|
3825
|
-
</xsl:when>
|
3826
|
-
<xsl:otherwise>
|
3827
|
-
<xsl:value-of select="$len_str_tmp"/>
|
3828
|
-
</xsl:otherwise>
|
3829
|
-
</xsl:choose>
|
3830
|
-
</xsl:variable>
|
3831
|
-
|
3832
|
-
<!-- <xsl:if test="$len_str_no_en_chars div $len_str > 0.8">
|
3833
|
-
<xsl:message>
|
3834
|
-
div=<xsl:value-of select="$len_str_no_en_chars div $len_str"/>
|
3835
|
-
len_str=<xsl:value-of select="$len_str"/>
|
3836
|
-
len_str_no_en_chars=<xsl:value-of select="$len_str_no_en_chars"/>
|
3837
|
-
</xsl:message>
|
3838
|
-
</xsl:if> -->
|
3839
|
-
<!-- <len_str_no_en_chars><xsl:value-of select="$len_str_no_en_chars"/></len_str_no_en_chars>
|
3840
|
-
<len_str><xsl:value-of select="$len_str"/></len_str> -->
|
3841
3908
|
<xsl:choose>
|
3842
|
-
<xsl:when test="$
|
3843
|
-
<xsl:value-of select="$
|
3909
|
+
<xsl:when test="normalize-space(translate($text, 'X', '')) = ''"> <!-- special case for keep-together.within-line -->
|
3910
|
+
<xsl:value-of select="$len_str_tmp"/>
|
3844
3911
|
</xsl:when>
|
3845
3912
|
<xsl:otherwise>
|
3846
|
-
<xsl:
|
3913
|
+
<xsl:variable name="str_no_en_chars" select="normalize-space(translate($text, $en_chars, ''))"/>
|
3914
|
+
<xsl:variable name="len_str_no_en_chars" select="string-length($str_no_en_chars)"/>
|
3915
|
+
<xsl:variable name="len_str">
|
3916
|
+
<xsl:choose>
|
3917
|
+
<xsl:when test="normalize-space(translate($text, $upper, '')) = ''"> <!-- english word in CAPITAL letters -->
|
3918
|
+
<xsl:value-of select="$len_str_tmp * 1.5"/>
|
3919
|
+
</xsl:when>
|
3920
|
+
<xsl:otherwise>
|
3921
|
+
<xsl:value-of select="$len_str_tmp"/>
|
3922
|
+
</xsl:otherwise>
|
3923
|
+
</xsl:choose>
|
3924
|
+
</xsl:variable>
|
3925
|
+
|
3926
|
+
<!-- <xsl:if test="$len_str_no_en_chars div $len_str > 0.8">
|
3927
|
+
<xsl:message>
|
3928
|
+
div=<xsl:value-of select="$len_str_no_en_chars div $len_str"/>
|
3929
|
+
len_str=<xsl:value-of select="$len_str"/>
|
3930
|
+
len_str_no_en_chars=<xsl:value-of select="$len_str_no_en_chars"/>
|
3931
|
+
</xsl:message>
|
3932
|
+
</xsl:if> -->
|
3933
|
+
<!-- <len_str_no_en_chars><xsl:value-of select="$len_str_no_en_chars"/></len_str_no_en_chars>
|
3934
|
+
<len_str><xsl:value-of select="$len_str"/></len_str> -->
|
3935
|
+
<xsl:choose>
|
3936
|
+
<xsl:when test="$len_str_no_en_chars div $len_str > 0.8"> <!-- means non-english string -->
|
3937
|
+
<xsl:value-of select="$len_str - $len_str_no_en_chars"/>
|
3938
|
+
</xsl:when>
|
3939
|
+
<xsl:otherwise>
|
3940
|
+
<xsl:value-of select="$len_str"/>
|
3941
|
+
</xsl:otherwise>
|
3942
|
+
</xsl:choose>
|
3847
3943
|
</xsl:otherwise>
|
3848
3944
|
</xsl:choose>
|
3849
3945
|
</word>
|
@@ -3929,24 +4025,28 @@
|
|
3929
4025
|
</xsl:template><xsl:template name="add-zero-spaces-equal">
|
3930
4026
|
<xsl:param name="text" select="."/>
|
3931
4027
|
<xsl:variable name="zero-space-after-equals">==========</xsl:variable>
|
4028
|
+
<xsl:variable name="regex_zero-space-after-equals">(==========)</xsl:variable>
|
3932
4029
|
<xsl:variable name="zero-space-after-equal">=</xsl:variable>
|
4030
|
+
<xsl:variable name="regex_zero-space-after-equal">(=)</xsl:variable>
|
3933
4031
|
<xsl:variable name="zero-space"></xsl:variable>
|
3934
4032
|
<xsl:choose>
|
3935
4033
|
<xsl:when test="contains($text, $zero-space-after-equals)">
|
3936
|
-
<xsl:value-of select="substring-before($text, $zero-space-after-equals)"/>
|
4034
|
+
<!-- <xsl:value-of select="substring-before($text, $zero-space-after-equals)"/>
|
3937
4035
|
<xsl:value-of select="$zero-space-after-equals"/>
|
3938
4036
|
<xsl:value-of select="$zero-space"/>
|
3939
4037
|
<xsl:call-template name="add-zero-spaces-equal">
|
3940
4038
|
<xsl:with-param name="text" select="substring-after($text, $zero-space-after-equals)"/>
|
3941
|
-
</xsl:call-template>
|
4039
|
+
</xsl:call-template> -->
|
4040
|
+
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),$regex_zero-space-after-equals,concat('$1',$zero_width_space))"/>
|
3942
4041
|
</xsl:when>
|
3943
4042
|
<xsl:when test="contains($text, $zero-space-after-equal)">
|
3944
|
-
<xsl:value-of select="substring-before($text, $zero-space-after-equal)"/>
|
4043
|
+
<!-- <xsl:value-of select="substring-before($text, $zero-space-after-equal)"/>
|
3945
4044
|
<xsl:value-of select="$zero-space-after-equal"/>
|
3946
4045
|
<xsl:value-of select="$zero-space"/>
|
3947
4046
|
<xsl:call-template name="add-zero-spaces-equal">
|
3948
4047
|
<xsl:with-param name="text" select="substring-after($text, $zero-space-after-equal)"/>
|
3949
|
-
</xsl:call-template>
|
4048
|
+
</xsl:call-template> -->
|
4049
|
+
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),$regex_zero-space-after-equal,concat('$1',$zero_width_space))"/>
|
3950
4050
|
</xsl:when>
|
3951
4051
|
<xsl:otherwise>
|
3952
4052
|
<xsl:value-of select="$text"/>
|
@@ -4114,6 +4214,9 @@
|
|
4114
4214
|
<xsl:variable name="isDeleted" select="@deleted"/>
|
4115
4215
|
|
4116
4216
|
<fo:inline xsl:use-attribute-sets="mathml-style">
|
4217
|
+
|
4218
|
+
|
4219
|
+
|
4117
4220
|
|
4118
4221
|
|
4119
4222
|
<xsl:call-template name="setTrackChangesStyles">
|
@@ -4121,48 +4224,80 @@
|
|
4121
4224
|
<xsl:with-param name="isDeleted" select="$isDeleted"/>
|
4122
4225
|
</xsl:call-template>
|
4123
4226
|
|
4227
|
+
<xsl:if test="$add_math_as_text = 'true'">
|
4228
|
+
<!-- insert helper tag -->
|
4229
|
+
<!-- set unique font-size (fiction) -->
|
4230
|
+
<xsl:variable name="font-size_sfx"><xsl:number level="any"/></xsl:variable>
|
4231
|
+
<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 -->
|
4232
|
+
</xsl:if>
|
4124
4233
|
|
4125
|
-
|
4126
|
-
|
4127
|
-
<xsl:apply-templates select="." mode="mathml"/>
|
4234
|
+
<xsl:variable name="mathml_content">
|
4235
|
+
<xsl:apply-templates select="." mode="mathml_actual_text"/>
|
4128
4236
|
</xsl:variable>
|
4129
|
-
<fo:instream-foreign-object fox:alt-text="Math">
|
4130
4237
|
|
4238
|
+
|
4239
|
+
<xsl:call-template name="mathml_instream_object">
|
4240
|
+
<xsl:with-param name="mathml_content" select="$mathml_content"/>
|
4241
|
+
</xsl:call-template>
|
4131
4242
|
|
4132
|
-
|
4133
|
-
<xsl:variable name="comment_text_following" select="following-sibling::node()[1][self::comment()]"/>
|
4134
|
-
<xsl:variable name="comment_text_">
|
4135
|
-
<xsl:choose>
|
4136
|
-
<xsl:when test="normalize-space($comment_text_following) != ''">
|
4137
|
-
<xsl:value-of select="$comment_text_following"/>
|
4138
|
-
</xsl:when>
|
4139
|
-
<xsl:otherwise>
|
4140
|
-
<xsl:value-of select="normalize-space(translate(.,' ',' '))"/>
|
4141
|
-
</xsl:otherwise>
|
4142
|
-
</xsl:choose>
|
4143
|
-
</xsl:variable>
|
4144
|
-
<xsl:variable name="comment_text" select="java:org.metanorma.fop.Util.unescape($comment_text_)"/>
|
4145
|
-
|
4146
|
-
<xsl:if test="normalize-space($comment_text) != ''">
|
4147
|
-
<!-- put Mathin Alternate Text -->
|
4148
|
-
<xsl:attribute name="fox:alt-text">
|
4149
|
-
<xsl:value-of select="java:org.metanorma.fop.Util.unescape($comment_text)"/>
|
4150
|
-
</xsl:attribute>
|
4151
|
-
</xsl:if>
|
4152
|
-
|
4153
|
-
<xsl:variable name="mathml_content">
|
4154
|
-
<xsl:apply-templates select="." mode="mathml_actual_text"/>
|
4155
|
-
</xsl:variable>
|
4156
|
-
<!-- put MathML in Actual Text -->
|
4157
|
-
<xsl:attribute name="fox:actual-text">
|
4158
|
-
<xsl:value-of select="$mathml_content"/>
|
4159
|
-
</xsl:attribute>
|
4160
|
-
|
4161
|
-
|
4162
|
-
|
4163
|
-
<xsl:copy-of select="xalan:nodeset($mathml)"/>
|
4164
|
-
</fo:instream-foreign-object>
|
4243
|
+
|
4165
4244
|
</fo:inline>
|
4245
|
+
</xsl:template><xsl:template name="getMathml_comment_text">
|
4246
|
+
<xsl:variable name="comment_text_following" select="following-sibling::node()[1][self::comment()]"/>
|
4247
|
+
<xsl:variable name="comment_text_">
|
4248
|
+
<xsl:choose>
|
4249
|
+
<xsl:when test="normalize-space($comment_text_following) != ''">
|
4250
|
+
<xsl:value-of select="$comment_text_following"/>
|
4251
|
+
</xsl:when>
|
4252
|
+
<xsl:otherwise>
|
4253
|
+
<xsl:value-of select="normalize-space(translate(.,' ',' '))"/>
|
4254
|
+
</xsl:otherwise>
|
4255
|
+
</xsl:choose>
|
4256
|
+
</xsl:variable>
|
4257
|
+
<xsl:variable name="comment_text_2" select="java:org.metanorma.fop.Util.unescape($comment_text_)"/>
|
4258
|
+
<xsl:variable name="comment_text" select="java:trim(java:java.lang.String.new($comment_text_2))"/>
|
4259
|
+
<xsl:value-of select="$comment_text"/>
|
4260
|
+
</xsl:template><xsl:template name="mathml_instream_object">
|
4261
|
+
<xsl:param name="comment_text"/>
|
4262
|
+
<xsl:param name="mathml_content"/>
|
4263
|
+
|
4264
|
+
<xsl:variable name="comment_text_">
|
4265
|
+
<xsl:choose>
|
4266
|
+
<xsl:when test="normalize-space($comment_text) != ''"><xsl:value-of select="$comment_text"/></xsl:when>
|
4267
|
+
<xsl:otherwise><xsl:call-template name="getMathml_comment_text"/></xsl:otherwise>
|
4268
|
+
</xsl:choose>
|
4269
|
+
</xsl:variable>
|
4270
|
+
|
4271
|
+
<xsl:variable name="mathml">
|
4272
|
+
<xsl:apply-templates select="." mode="mathml"/>
|
4273
|
+
</xsl:variable>
|
4274
|
+
|
4275
|
+
<fo:instream-foreign-object fox:alt-text="Math">
|
4276
|
+
|
4277
|
+
|
4278
|
+
|
4279
|
+
|
4280
|
+
|
4281
|
+
|
4282
|
+
|
4283
|
+
<!-- put MathML in Actual Text -->
|
4284
|
+
<!-- DEBUG: mathml_content=<xsl:value-of select="$mathml_content"/> -->
|
4285
|
+
<xsl:attribute name="fox:actual-text">
|
4286
|
+
<xsl:value-of select="$mathml_content"/>
|
4287
|
+
</xsl:attribute>
|
4288
|
+
|
4289
|
+
<!-- <xsl:if test="$add_math_as_text = 'true'"> -->
|
4290
|
+
<xsl:if test="normalize-space($comment_text_) != ''">
|
4291
|
+
<!-- put Mathin Alternate Text -->
|
4292
|
+
<xsl:attribute name="fox:alt-text">
|
4293
|
+
<xsl:value-of select="$comment_text_"/>
|
4294
|
+
</xsl:attribute>
|
4295
|
+
</xsl:if>
|
4296
|
+
<!-- </xsl:if> -->
|
4297
|
+
|
4298
|
+
<xsl:copy-of select="xalan:nodeset($mathml)"/>
|
4299
|
+
|
4300
|
+
</fo:instream-foreign-object>
|
4166
4301
|
</xsl:template><xsl:template match="mathml:*" mode="mathml_actual_text">
|
4167
4302
|
<!-- <xsl:text>a+b</xsl:text> -->
|
4168
4303
|
<xsl:text><</xsl:text>
|
@@ -4193,7 +4328,9 @@
|
|
4193
4328
|
<!-- replace start and end spaces to non-break space -->
|
4194
4329
|
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),'(^ )|( $)',' ')"/>
|
4195
4330
|
</xsl:copy>
|
4196
|
-
</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="
|
4331
|
+
</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">
|
4332
|
+
<xsl:value-of select="."/><xsl:value-of select="$zero_width_space"/>
|
4333
|
+
</xsl:template><xsl:template match="*[local-name()='localityStack']"/><xsl:template match="*[local-name()='link']" name="link">
|
4197
4334
|
<xsl:variable name="target">
|
4198
4335
|
<xsl:choose>
|
4199
4336
|
<xsl:when test="@updatetype = 'true'">
|
@@ -4440,7 +4577,12 @@
|
|
4440
4577
|
|
4441
4578
|
<fo:inline xsl:use-attribute-sets="termnote-name-style">
|
4442
4579
|
|
4580
|
+
<xsl:if test="not(*[local-name() = 'name']/following-sibling::node()[1][self::text()][normalize-space()=''])">
|
4581
|
+
<xsl:attribute name="padding-right">1mm</xsl:attribute>
|
4582
|
+
</xsl:if>
|
4583
|
+
|
4443
4584
|
|
4585
|
+
|
4444
4586
|
|
4445
4587
|
<!-- if 'p' contains all text in 'add' first and last elements in first p are 'add' -->
|
4446
4588
|
<!-- <xsl:if test="*[not(local-name()='name')][1][node()[normalize-space() != ''][1][local-name() = 'add'] and node()[normalize-space() != ''][last()][local-name() = 'add']]"> -->
|
@@ -4806,18 +4948,33 @@
|
|
4806
4948
|
</xsl:template><xsl:template match="*[local-name() = 'svg'][not(@width and @height)]" mode="svg_update">
|
4807
4949
|
<xsl:copy>
|
4808
4950
|
<xsl:apply-templates select="@*" mode="svg_update"/>
|
4809
|
-
<xsl:variable name="
|
4951
|
+
<xsl:variable name="viewbox_">
|
4810
4952
|
<xsl:call-template name="split">
|
4811
4953
|
<xsl:with-param name="pText" select="@viewBox"/>
|
4812
4954
|
<xsl:with-param name="sep" select="' '"/>
|
4813
4955
|
</xsl:call-template>
|
4814
4956
|
</xsl:variable>
|
4957
|
+
<xsl:variable name="viewbox" select="xalan:nodeset($viewbox_)"/>
|
4958
|
+
<xsl:variable name="width" select="normalize-space($viewbox//item[3])"/>
|
4959
|
+
<xsl:variable name="height" select="normalize-space($viewbox//item[4])"/>
|
4960
|
+
|
4815
4961
|
<xsl:attribute name="width">
|
4816
|
-
<xsl:
|
4962
|
+
<xsl:choose>
|
4963
|
+
<xsl:when test="$width != ''">
|
4964
|
+
<xsl:value-of select="round($width)"/>
|
4965
|
+
</xsl:when>
|
4966
|
+
<xsl:otherwise>400</xsl:otherwise> <!-- default width -->
|
4967
|
+
</xsl:choose>
|
4817
4968
|
</xsl:attribute>
|
4818
4969
|
<xsl:attribute name="height">
|
4819
|
-
<xsl:
|
4970
|
+
<xsl:choose>
|
4971
|
+
<xsl:when test="$height != ''">
|
4972
|
+
<xsl:value-of select="round($height)"/>
|
4973
|
+
</xsl:when>
|
4974
|
+
<xsl:otherwise>400</xsl:otherwise> <!-- default height -->
|
4975
|
+
</xsl:choose>
|
4820
4976
|
</xsl:attribute>
|
4977
|
+
|
4821
4978
|
<xsl:apply-templates mode="svg_update"/>
|
4822
4979
|
</xsl:copy>
|
4823
4980
|
</xsl:template><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'image'][*[local-name() = 'svg']]" priority="3">
|
@@ -5012,7 +5169,11 @@
|
|
5012
5169
|
<xsl:apply-templates mode="bookmarks"/>
|
5013
5170
|
</xsl:template><xsl:template match="*[local-name() = 'title' or local-name() = 'name']//*[local-name() = 'stem']" mode="contents">
|
5014
5171
|
<xsl:apply-templates select="."/>
|
5015
|
-
</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() = '
|
5172
|
+
</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">
|
5173
|
+
<xsl:apply-templates mode="contents"/>
|
5174
|
+
</xsl:template><xsl:template match="*[local-name() = 'stem']" mode="bookmarks">
|
5175
|
+
<xsl:apply-templates mode="bookmarks"/>
|
5176
|
+
</xsl:template><xsl:template match="*[local-name() = 'span']" mode="bookmarks">
|
5016
5177
|
<xsl:apply-templates mode="bookmarks"/>
|
5017
5178
|
</xsl:template><xsl:template name="addBookmarks">
|
5018
5179
|
<xsl:param name="contents"/>
|
@@ -5294,7 +5455,9 @@
|
|
5294
5455
|
<xsl:apply-templates/>
|
5295
5456
|
</xsl:otherwise>
|
5296
5457
|
</xsl:choose>
|
5297
|
-
</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() = '
|
5458
|
+
</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">
|
5459
|
+
<xsl:value-of select="."/>
|
5460
|
+
</xsl:template><xsl:template match="*[local-name() = 'tab']" mode="contents_item">
|
5298
5461
|
<xsl:text> </xsl:text>
|
5299
5462
|
</xsl:template><xsl:template match="*[local-name() = 'strong']" mode="contents_item">
|
5300
5463
|
<xsl:copy>
|
@@ -5325,9 +5488,22 @@
|
|
5325
5488
|
</xsl:when>
|
5326
5489
|
<xsl:otherwise><xsl:apply-templates mode="contents_item"/></xsl:otherwise>
|
5327
5490
|
</xsl:choose>
|
5491
|
+
</xsl:template><xsl:template match="text()" mode="contents_item">
|
5492
|
+
<xsl:call-template name="keep_together_standard_number"/>
|
5493
|
+
</xsl:template><xsl:template match="*[local-name() = 'span']" mode="contents_item">
|
5494
|
+
<xsl:apply-templates mode="contents_item"/>
|
5328
5495
|
</xsl:template><xsl:template match="*[local-name()='sourcecode']" name="sourcecode">
|
5329
5496
|
|
5330
5497
|
<fo:block-container xsl:use-attribute-sets="sourcecode-container-style">
|
5498
|
+
|
5499
|
+
<xsl:if test="not(ancestor::*[local-name() = 'li']) or ancestor::*[local-name() = 'example']">
|
5500
|
+
<xsl:attribute name="margin-left">0mm</xsl:attribute>
|
5501
|
+
</xsl:if>
|
5502
|
+
|
5503
|
+
<xsl:if test="ancestor::*[local-name() = 'example']">
|
5504
|
+
<xsl:attribute name="margin-right">0mm</xsl:attribute>
|
5505
|
+
</xsl:if>
|
5506
|
+
|
5331
5507
|
<xsl:copy-of select="@id"/>
|
5332
5508
|
|
5333
5509
|
<xsl:if test="parent::*[local-name() = 'note']">
|
@@ -5427,17 +5603,15 @@
|
|
5427
5603
|
|
5428
5604
|
<!-- split text by zero-width space -->
|
5429
5605
|
<xsl:variable name="text_step4">
|
5430
|
-
<xsl:call-template name="
|
5606
|
+
<xsl:call-template name="split_for_interspers">
|
5431
5607
|
<xsl:with-param name="pText" select="$text_step3"/>
|
5432
5608
|
<xsl:with-param name="sep" select="$zero_width_space"/>
|
5433
|
-
<xsl:with-param name="normalize-space">false</xsl:with-param>
|
5434
|
-
<xsl:with-param name="keep_sep">true</xsl:with-param>
|
5435
5609
|
</xsl:call-template>
|
5436
5610
|
</xsl:variable>
|
5437
5611
|
|
5438
|
-
<xsl:for-each select="xalan:nodeset($text_step4)/
|
5612
|
+
<xsl:for-each select="xalan:nodeset($text_step4)/node()">
|
5439
5613
|
<xsl:choose>
|
5440
|
-
<xsl:when test="
|
5614
|
+
<xsl:when test="local-name() = 'interspers'"> <!-- word with length more than 30 will be interspersed with zero-width space -->
|
5441
5615
|
<xsl:call-template name="interspers">
|
5442
5616
|
<xsl:with-param name="str" select="."/>
|
5443
5617
|
</xsl:call-template>
|
@@ -5448,6 +5622,30 @@
|
|
5448
5622
|
</xsl:choose>
|
5449
5623
|
</xsl:for-each>
|
5450
5624
|
|
5625
|
+
</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">
|
5626
|
+
<xsl:param name="pText" select="."/>
|
5627
|
+
<xsl:param name="sep" select="','"/>
|
5628
|
+
<!-- word with length more than 30 will be interspersed with zero-width space -->
|
5629
|
+
<xsl:variable name="regex" select="concat('([^', $zero_width_space, ']{31,})')"/> <!-- sequence of characters (more 31), that doesn't contains zero-width space -->
|
5630
|
+
<xsl:variable name="text" select="java:replaceAll(java:java.lang.String.new($pText),$regex,concat($interspers_tag_open,'$1',$interspers_tag_close))"/>
|
5631
|
+
<xsl:call-template name="replace_tag_interspers">
|
5632
|
+
<xsl:with-param name="text" select="$text"/>
|
5633
|
+
</xsl:call-template>
|
5634
|
+
</xsl:template><xsl:template name="replace_tag_interspers">
|
5635
|
+
<xsl:param name="text"/>
|
5636
|
+
<xsl:choose>
|
5637
|
+
<xsl:when test="contains($text, $interspers_tag_open)">
|
5638
|
+
<xsl:value-of select="substring-before($text, $interspers_tag_open)"/>
|
5639
|
+
<xsl:variable name="text_after" select="substring-after($text, $interspers_tag_open)"/>
|
5640
|
+
<interspers>
|
5641
|
+
<xsl:value-of select="substring-before($text_after, $interspers_tag_close)"/>
|
5642
|
+
</interspers>
|
5643
|
+
<xsl:call-template name="replace_tag_interspers">
|
5644
|
+
<xsl:with-param name="text" select="substring-after($text_after, $interspers_tag_close)"/>
|
5645
|
+
</xsl:call-template>
|
5646
|
+
</xsl:when>
|
5647
|
+
<xsl:otherwise><xsl:value-of select="$text"/></xsl:otherwise>
|
5648
|
+
</xsl:choose>
|
5451
5649
|
</xsl:template><xsl:template name="interspers">
|
5452
5650
|
<xsl:param name="str"/>
|
5453
5651
|
<xsl:param name="char" select="$zero_width_space"/>
|
@@ -5783,39 +5981,67 @@
|
|
5783
5981
|
</xsl:otherwise>
|
5784
5982
|
</xsl:choose>
|
5785
5983
|
</xsl:template><xsl:template match="*[local-name() = 'example']">
|
5786
|
-
|
5787
|
-
|
5984
|
+
|
5985
|
+
<fo:block-container id="{@id}" xsl:use-attribute-sets="example-style">
|
5986
|
+
|
5788
5987
|
|
5988
|
+
|
5789
5989
|
<xsl:variable name="fo_element">
|
5790
|
-
<xsl:if test=".//*[local-name() = 'table'] or .//*[local-name() = 'dl']">block</xsl:if>
|
5990
|
+
<xsl:if test=".//*[local-name() = 'table'] or .//*[local-name() = 'dl'] or *[not(local-name() = 'name')][1][local-name() = 'sourcecode']">block</xsl:if>
|
5791
5991
|
block
|
5792
5992
|
</xsl:variable>
|
5793
5993
|
|
5794
|
-
|
5795
|
-
<xsl:apply-templates select="*[local-name()='name']">
|
5796
|
-
<xsl:with-param name="fo_element" select="$fo_element"/>
|
5797
|
-
</xsl:apply-templates>
|
5994
|
+
<fo:block-container margin-left="0mm">
|
5798
5995
|
|
5799
|
-
|
5800
|
-
|
5801
|
-
<
|
5802
|
-
|
5803
|
-
|
5996
|
+
<xsl:choose>
|
5997
|
+
|
5998
|
+
<xsl:when test="contains(normalize-space($fo_element), 'block')">
|
5999
|
+
|
6000
|
+
<!-- display name 'EXAMPLE' in a separate block -->
|
6001
|
+
<fo:block>
|
6002
|
+
<xsl:apply-templates select="*[local-name()='name']">
|
5804
6003
|
<xsl:with-param name="fo_element" select="$fo_element"/>
|
5805
6004
|
</xsl:apply-templates>
|
6005
|
+
</fo:block>
|
6006
|
+
|
6007
|
+
<fo:block-container xsl:use-attribute-sets="example-body-style">
|
6008
|
+
<fo:block-container margin-left="0mm" margin-right="0mm">
|
6009
|
+
<xsl:apply-templates select="node()[not(local-name() = 'name')]">
|
6010
|
+
<xsl:with-param name="fo_element" select="$fo_element"/>
|
6011
|
+
</xsl:apply-templates>
|
6012
|
+
</fo:block-container>
|
5806
6013
|
</fo:block-container>
|
5807
|
-
</
|
5808
|
-
|
5809
|
-
|
5810
|
-
|
5811
|
-
|
5812
|
-
|
5813
|
-
|
5814
|
-
|
5815
|
-
|
5816
|
-
|
5817
|
-
|
5818
|
-
|
6014
|
+
</xsl:when> <!-- end block -->
|
6015
|
+
|
6016
|
+
<xsl:otherwise> <!-- inline -->
|
6017
|
+
|
6018
|
+
<!-- display 'EXAMPLE' and first element in the same line -->
|
6019
|
+
<fo:block>
|
6020
|
+
<xsl:apply-templates select="*[local-name()='name']">
|
6021
|
+
<xsl:with-param name="fo_element" select="$fo_element"/>
|
6022
|
+
</xsl:apply-templates>
|
6023
|
+
<fo:inline>
|
6024
|
+
<xsl:apply-templates select="*[not(local-name() = 'name')][1]">
|
6025
|
+
<xsl:with-param name="fo_element" select="$fo_element"/>
|
6026
|
+
</xsl:apply-templates>
|
6027
|
+
</fo:inline>
|
6028
|
+
</fo:block>
|
6029
|
+
|
6030
|
+
<xsl:if test="*[not(local-name() = 'name')][position() > 1]">
|
6031
|
+
<!-- display further elements in blocks -->
|
6032
|
+
<fo:block-container xsl:use-attribute-sets="example-body-style">
|
6033
|
+
<fo:block-container margin-left="0mm" margin-right="0mm">
|
6034
|
+
<xsl:apply-templates select="*[not(local-name() = 'name')][position() > 1]">
|
6035
|
+
<xsl:with-param name="fo_element" select="'block'"/>
|
6036
|
+
</xsl:apply-templates>
|
6037
|
+
</fo:block-container>
|
6038
|
+
</fo:block-container>
|
6039
|
+
</xsl:if>
|
6040
|
+
</xsl:otherwise> <!-- end inline -->
|
6041
|
+
|
6042
|
+
</xsl:choose>
|
6043
|
+
</fo:block-container>
|
6044
|
+
</fo:block-container>
|
5819
6045
|
</xsl:template><xsl:template match="*[local-name() = 'example']/*[local-name() = 'name']">
|
5820
6046
|
<xsl:param name="fo_element">block</xsl:param>
|
5821
6047
|
|
@@ -5847,14 +6073,20 @@
|
|
5847
6073
|
</xsl:variable>
|
5848
6074
|
<xsl:choose>
|
5849
6075
|
<xsl:when test="starts-with(normalize-space($element), 'block')">
|
5850
|
-
<fo:block
|
5851
|
-
|
5852
|
-
<xsl:
|
5853
|
-
|
5854
|
-
|
5855
|
-
|
5856
|
-
|
5857
|
-
|
6076
|
+
<fo:block-container>
|
6077
|
+
<xsl:if test="ancestor::*[local-name() = 'li'] and contains(normalize-space($fo_element), 'block')">
|
6078
|
+
<xsl:attribute name="margin-left">0mm</xsl:attribute>
|
6079
|
+
<xsl:attribute name="margin-right">0mm</xsl:attribute>
|
6080
|
+
</xsl:if>
|
6081
|
+
<fo:block xsl:use-attribute-sets="example-p-style">
|
6082
|
+
|
6083
|
+
<xsl:if test="$num = 1">
|
6084
|
+
<xsl:attribute name="margin-left">5mm</xsl:attribute>
|
6085
|
+
</xsl:if>
|
6086
|
+
|
6087
|
+
<xsl:apply-templates/>
|
6088
|
+
</fo:block>
|
6089
|
+
</fo:block-container>
|
5858
6090
|
</xsl:when>
|
5859
6091
|
<xsl:otherwise>
|
5860
6092
|
<fo:inline xsl:use-attribute-sets="example-p-style">
|
@@ -5899,7 +6131,7 @@
|
|
5899
6131
|
</xsl:otherwise>
|
5900
6132
|
</xsl:choose> -->
|
5901
6133
|
</fo:block>
|
5902
|
-
</xsl:template><xsl:template match="*[local-name() = 'termsource']/text()[starts-with(., '[SOURCE: Adapted from: ')]" priority="2">
|
6134
|
+
</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">
|
5903
6135
|
<xsl:text>[</xsl:text><xsl:value-of select="substring-after(., '[SOURCE: ')"/>
|
5904
6136
|
</xsl:template><xsl:template match="*[local-name() = 'termsource']/text()">
|
5905
6137
|
<xsl:if test="normalize-space() != ''">
|
@@ -5935,7 +6167,8 @@
|
|
5935
6167
|
<fo:inline><xsl:apply-templates/></fo:inline>
|
5936
6168
|
</xsl:template><xsl:template match="*[local-name() = 'modification']/text()">
|
5937
6169
|
<xsl:if test="normalize-space() != ''">
|
5938
|
-
<xsl:value-of select="."/>
|
6170
|
+
<!-- <xsl:value-of select="."/> -->
|
6171
|
+
<xsl:call-template name="text"/>
|
5939
6172
|
</xsl:if>
|
5940
6173
|
</xsl:template><xsl:template match="*[local-name() = 'quote']">
|
5941
6174
|
<fo:block-container margin-left="0mm">
|
@@ -6032,7 +6265,16 @@
|
|
6032
6265
|
</fo:inline>
|
6033
6266
|
</xsl:when>
|
6034
6267
|
<xsl:otherwise> <!-- if there is key('bibitems_hidden', $current_bibitemid) -->
|
6035
|
-
|
6268
|
+
|
6269
|
+
<!-- if in bibitem[@hidden='true'] there is url[@type='src'], then create hyperlink -->
|
6270
|
+
<xsl:variable name="uri_src" select="normalize-space($bibitems_hidden/*[local-name() ='bibitem'][@id = $current_bibitemid]/*[local-name() = 'uri'][@type = 'src'])"/>
|
6271
|
+
<xsl:choose>
|
6272
|
+
<xsl:when test="$uri_src != ''">
|
6273
|
+
<fo:basic-link external-destination="{$uri_src}" fox:alt-text="{$uri_src}"><xsl:apply-templates/></fo:basic-link>
|
6274
|
+
</xsl:when>
|
6275
|
+
<xsl:otherwise><fo:inline><xsl:apply-templates/></fo:inline></xsl:otherwise>
|
6276
|
+
</xsl:choose>
|
6277
|
+
|
6036
6278
|
</xsl:otherwise>
|
6037
6279
|
</xsl:choose>
|
6038
6280
|
</xsl:template><xsl:template match="*[local-name() = 'tab']">
|
@@ -6215,10 +6457,24 @@
|
|
6215
6457
|
|
6216
6458
|
</fo:block>
|
6217
6459
|
<xsl:apply-templates/>
|
6218
|
-
</xsl:template><xsl:template match="*[local-name() = 'review']">
|
6460
|
+
</xsl:template><xsl:template match="*[local-name() = 'review']"> <!-- 'review' will be processed in mn2pdf/review.xsl -->
|
6219
6461
|
<!-- comment 2019-11-29 -->
|
6220
6462
|
<!-- <fo:block font-weight="bold">Review:</fo:block>
|
6221
6463
|
<xsl:apply-templates /> -->
|
6464
|
+
|
6465
|
+
<xsl:variable name="id_from" select="normalize-space(current()/@from)"/>
|
6466
|
+
|
6467
|
+
<xsl:choose>
|
6468
|
+
<!-- if there isn't the attribute '@from', then -->
|
6469
|
+
<xsl:when test="$id_from = ''">
|
6470
|
+
<fo:block id="{@id}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
|
6471
|
+
</xsl:when>
|
6472
|
+
<!-- if there isn't element with id 'from', then create 'bookmark' here -->
|
6473
|
+
<xsl:when test="not(ancestor::*[contains(local-name(), '-standard')]//*[@id = $id_from])">
|
6474
|
+
<fo:block id="{@from}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
|
6475
|
+
</xsl:when>
|
6476
|
+
</xsl:choose>
|
6477
|
+
|
6222
6478
|
</xsl:template><xsl:template match="*[local-name() = 'name']/text()">
|
6223
6479
|
<!-- 0xA0 to space replacement -->
|
6224
6480
|
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),' ',' ')"/>
|
@@ -6575,7 +6831,10 @@
|
|
6575
6831
|
<!-- to split by '_' and other chars -->
|
6576
6832
|
<xsl:call-template name="add-zero-spaces-java"/>
|
6577
6833
|
</xsl:template><xsl:template match="*[local-name() = 'bookmark']" name="bookmark">
|
6578
|
-
<fo:inline id="{@id}" font-size="1pt"/>
|
6834
|
+
<!-- <fo:inline id="{@id}" font-size="1pt"/> -->
|
6835
|
+
<fo:inline id="{@id}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:inline>
|
6836
|
+
<!-- we need to add zero-width space, otherwise this fo:inline is missing in IF xml -->
|
6837
|
+
<xsl:if test="not(following-sibling::node()[normalize-space() != ''])"> </xsl:if>
|
6579
6838
|
</xsl:template><xsl:template match="*[local-name() = 'errata']">
|
6580
6839
|
<!-- <row>
|
6581
6840
|
<date>05-07-2013</date>
|
@@ -7095,6 +7354,120 @@
|
|
7095
7354
|
<xsl:apply-templates select="." mode="update_xml_step1"/>
|
7096
7355
|
</xsl:for-each>
|
7097
7356
|
</xsl:copy>
|
7357
|
+
</xsl:template><xsl:template match="*[local-name() = 'span']" mode="update_xml_step1">
|
7358
|
+
<xsl:apply-templates mode="update_xml_step1"/>
|
7359
|
+
</xsl:template><xsl:template match="@*|node()" mode="update_xml_enclose_keep-together_within-line">
|
7360
|
+
<xsl:copy>
|
7361
|
+
<xsl:apply-templates select="@*|node()" mode="update_xml_enclose_keep-together_within-line"/>
|
7362
|
+
</xsl:copy>
|
7363
|
+
</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">
|
7364
|
+
|
7365
|
+
<!-- enclose standard's number into tag 'keep-together_within-line' -->
|
7366
|
+
<xsl:variable name="regex_standard_reference">([A-Z]{2,}(/[A-Z]{2,})* \d+(-\d+)*(:\d{4})?)</xsl:variable>
|
7367
|
+
<xsl:variable name="tag_keep-together_within-line_open">###<xsl:value-of select="$element_name_keep-together_within-line"/>###</xsl:variable>
|
7368
|
+
<xsl:variable name="tag_keep-together_within-line_close">###/<xsl:value-of select="$element_name_keep-together_within-line"/>###</xsl:variable>
|
7369
|
+
<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))"/>
|
7370
|
+
<xsl:variable name="text"><text><xsl:call-template name="replace_text_tags">
|
7371
|
+
<xsl:with-param name="tag_open" select="$tag_keep-together_within-line_open"/>
|
7372
|
+
<xsl:with-param name="tag_close" select="$tag_keep-together_within-line_close"/>
|
7373
|
+
<xsl:with-param name="text" select="$text_"/>
|
7374
|
+
</xsl:call-template></text></xsl:variable>
|
7375
|
+
|
7376
|
+
<xsl:variable name="parent" select="local-name(..)"/>
|
7377
|
+
|
7378
|
+
<xsl:variable name="text2">
|
7379
|
+
<text><xsl:for-each select="xalan:nodeset($text)/text/node()">
|
7380
|
+
<xsl:copy-of select="."/>
|
7381
|
+
</xsl:for-each></text>
|
7382
|
+
</xsl:variable>
|
7383
|
+
|
7384
|
+
<!-- keep-together_within-line for: a/b, aaa/b, a/bbb, /b -->
|
7385
|
+
<xsl:variable name="regex_solidus_units">((\b((\S{1,3}\/\S+)|(\S+\/\S{1,3}))\b)|(\/\S{1,3})\b)</xsl:variable>
|
7386
|
+
<xsl:variable name="text3">
|
7387
|
+
<text><xsl:for-each select="xalan:nodeset($text2)/text/node()">
|
7388
|
+
<xsl:choose>
|
7389
|
+
<xsl:when test="self::text()">
|
7390
|
+
<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))"/>
|
7391
|
+
<xsl:variable name="text_units"><text><xsl:call-template name="replace_text_tags">
|
7392
|
+
<xsl:with-param name="tag_open" select="$tag_keep-together_within-line_open"/>
|
7393
|
+
<xsl:with-param name="tag_close" select="$tag_keep-together_within-line_close"/>
|
7394
|
+
<xsl:with-param name="text" select="$text_units_"/>
|
7395
|
+
</xsl:call-template></text></xsl:variable>
|
7396
|
+
<xsl:copy-of select="xalan:nodeset($text_units)/text/node()"/>
|
7397
|
+
</xsl:when>
|
7398
|
+
<xsl:otherwise><xsl:copy-of select="."/></xsl:otherwise> <!-- copy 'as-is' for <fo:inline keep-together.within-line="always" ... -->
|
7399
|
+
</xsl:choose>
|
7400
|
+
</xsl:for-each></text>
|
7401
|
+
</xsl:variable>
|
7402
|
+
|
7403
|
+
<xsl:choose>
|
7404
|
+
<xsl:when test="ancestor::*[local-name() = 'td' or local-name() = 'th']">
|
7405
|
+
<!-- keep-together_within-line for: a.b, aaa.b, a.bbb, .b in table's cell ONLY -->
|
7406
|
+
<xsl:variable name="regex_dots_units">((\b((\S{1,3}\.\S+)|(\S+\.\S{1,3}))\b)|(\.\S{1,3})\b)</xsl:variable>
|
7407
|
+
<xsl:for-each select="xalan:nodeset($text3)/text/node()">
|
7408
|
+
<xsl:choose>
|
7409
|
+
<xsl:when test="self::text()">
|
7410
|
+
<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))"/>
|
7411
|
+
<xsl:variable name="text_dots"><text><xsl:call-template name="replace_text_tags">
|
7412
|
+
<xsl:with-param name="tag_open" select="$tag_keep-together_within-line_open"/>
|
7413
|
+
<xsl:with-param name="tag_close" select="$tag_keep-together_within-line_close"/>
|
7414
|
+
<xsl:with-param name="text" select="$text_dots_"/>
|
7415
|
+
</xsl:call-template></text></xsl:variable>
|
7416
|
+
<xsl:copy-of select="xalan:nodeset($text_dots)/text/node()"/>
|
7417
|
+
</xsl:when>
|
7418
|
+
<xsl:otherwise><xsl:copy-of select="."/></xsl:otherwise> <!-- copy 'as-is' for <fo:inline keep-together.within-line="always" ... -->
|
7419
|
+
</xsl:choose>
|
7420
|
+
</xsl:for-each>
|
7421
|
+
</xsl:when>
|
7422
|
+
<xsl:otherwise><xsl:copy-of select="xalan:nodeset($text3)/text/node()"/></xsl:otherwise>
|
7423
|
+
</xsl:choose>
|
7424
|
+
|
7425
|
+
</xsl:template><xsl:template name="replace_text_tags">
|
7426
|
+
<xsl:param name="tag_open"/>
|
7427
|
+
<xsl:param name="tag_close"/>
|
7428
|
+
<xsl:param name="text"/>
|
7429
|
+
<xsl:choose>
|
7430
|
+
<xsl:when test="contains($text, $tag_open)">
|
7431
|
+
<xsl:value-of select="substring-before($text, $tag_open)"/>
|
7432
|
+
<xsl:variable name="text_after" select="substring-after($text, $tag_open)"/>
|
7433
|
+
|
7434
|
+
<xsl:element name="{substring-before(substring-after($tag_open, '###'),'###')}">
|
7435
|
+
<xsl:value-of select="substring-before($text_after, $tag_close)"/>
|
7436
|
+
</xsl:element>
|
7437
|
+
|
7438
|
+
<xsl:call-template name="replace_text_tags">
|
7439
|
+
<xsl:with-param name="tag_open" select="$tag_open"/>
|
7440
|
+
<xsl:with-param name="tag_close" select="$tag_close"/>
|
7441
|
+
<xsl:with-param name="text" select="substring-after($text_after, $tag_close)"/>
|
7442
|
+
</xsl:call-template>
|
7443
|
+
</xsl:when>
|
7444
|
+
<xsl:otherwise><xsl:value-of select="$text"/></xsl:otherwise>
|
7445
|
+
</xsl:choose>
|
7446
|
+
</xsl:template><xsl:template name="printEdition">
|
7447
|
+
<xsl:variable name="edition_i18n" select="normalize-space((//*[contains(local-name(), '-standard')])[1]/*[local-name() = 'bibdata']/*[local-name() = 'edition'][normalize-space(@language) != ''])"/>
|
7448
|
+
<xsl:text> </xsl:text>
|
7449
|
+
<xsl:choose>
|
7450
|
+
<xsl:when test="$edition_i18n != ''">
|
7451
|
+
<!-- Example: <edition language="fr">deuxième édition</edition> -->
|
7452
|
+
<xsl:call-template name="capitalize">
|
7453
|
+
<xsl:with-param name="str" select="$edition_i18n"/>
|
7454
|
+
</xsl:call-template>
|
7455
|
+
</xsl:when>
|
7456
|
+
<xsl:otherwise>
|
7457
|
+
<xsl:variable name="edition" select="normalize-space((//*[contains(local-name(), '-standard')])[1]/*[local-name() = 'bibdata']/*[local-name() = 'edition'])"/>
|
7458
|
+
<xsl:if test="$edition != ''"> <!-- Example: 1.3 -->
|
7459
|
+
<xsl:call-template name="capitalize">
|
7460
|
+
<xsl:with-param name="str">
|
7461
|
+
<xsl:call-template name="getLocalizedString">
|
7462
|
+
<xsl:with-param name="key">edition</xsl:with-param>
|
7463
|
+
</xsl:call-template>
|
7464
|
+
</xsl:with-param>
|
7465
|
+
</xsl:call-template>
|
7466
|
+
<xsl:text> </xsl:text>
|
7467
|
+
<xsl:value-of select="$edition"/>
|
7468
|
+
</xsl:if>
|
7469
|
+
</xsl:otherwise>
|
7470
|
+
</xsl:choose>
|
7098
7471
|
</xsl:template><xsl:template name="convertDate">
|
7099
7472
|
<xsl:param name="date"/>
|
7100
7473
|
<xsl:param name="format" select="'short'"/>
|