metanorma-itu 2.5.9 → 2.5.11

Sign up to get free protection for your applications and to get access to all the features.
@@ -1381,7 +1381,7 @@
1381
1381
 
1382
1382
  <xsl:for-each select="xalan:nodeset($updated_xml_with_pages)"> <!-- set context to preface/sections -->
1383
1383
 
1384
- <xsl:for-each select=".//*[local-name() = 'page_sequence'][parent::*[local-name() = 'preface']][normalize-space() != '' or .//image or .//svg]">
1384
+ <xsl:for-each select=".//*[local-name() = 'page_sequence'][parent::*[local-name() = 'preface']][normalize-space() != '' or .//*[local-name() = 'image'] or .//*[local-name() = 'svg']]">
1385
1385
 
1386
1386
  <fo:page-sequence master-reference="document-preface" format="i" force-page-count="no-force">
1387
1387
 
@@ -1492,7 +1492,7 @@
1492
1492
  </fo:page-sequence>
1493
1493
  </xsl:for-each> <!-- END: preface pages -->
1494
1494
 
1495
- <xsl:for-each select=".//*[local-name() = 'page_sequence'][not(parent::*[local-name() = 'preface'])][normalize-space() != '' or .//image or .//svg]">
1495
+ <xsl:for-each select=".//*[local-name() = 'page_sequence'][not(parent::*[local-name() = 'preface'])][normalize-space() != '' or .//*[local-name() = 'image'] or .//*[local-name() = 'svg']]">
1496
1496
 
1497
1497
  <!-- BODY -->
1498
1498
  <fo:page-sequence master-reference="document" force-page-count="no-force">
@@ -6109,7 +6109,9 @@
6109
6109
  <fo:block role="SKIP">
6110
6110
 
6111
6111
  <xsl:if test="$isGenerateTableIF = 'true'">
6112
- <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
6112
+
6113
+ <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
6114
+
6113
6115
  </xsl:if>
6114
6116
 
6115
6117
  <xsl:apply-templates/>
@@ -7172,7 +7174,17 @@
7172
7174
  <xsl:call-template name="refine_dt-cell-style"/>
7173
7175
 
7174
7176
  <fo:block xsl:use-attribute-sets="dt-block-style" role="SKIP">
7175
- <xsl:copy-of select="@id"/>
7177
+
7178
+ <xsl:choose>
7179
+ <xsl:when test="$isGenerateTableIF = 'true'">
7180
+
7181
+ <xsl:copy-of select="@id"/>
7182
+
7183
+ </xsl:when>
7184
+ <xsl:otherwise>
7185
+ <xsl:copy-of select="@id"/>
7186
+ </xsl:otherwise>
7187
+ </xsl:choose>
7176
7188
 
7177
7189
  <xsl:if test="normalize-space($key_iso) = 'true'">
7178
7190
  <xsl:attribute name="margin-top">0</xsl:attribute>
@@ -7204,7 +7216,9 @@
7204
7216
  <fo:block role="SKIP">
7205
7217
 
7206
7218
  <xsl:if test="$isGenerateTableIF = 'true'">
7207
- <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
7219
+
7220
+ <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
7221
+
7208
7222
  </xsl:if>
7209
7223
 
7210
7224
  <xsl:attribute name="text-align">justify</xsl:attribute>
@@ -8448,6 +8462,14 @@
8448
8462
  </xsl:for-each>
8449
8463
  </xsl:variable>
8450
8464
 
8465
+ <!-- <xsl:if test="$debug = 'true'">
8466
+ <redirect:write file="{generate-id()}_words_with_width_sorted.xml">
8467
+ <td_text><xsl:copy-of select="$td_text"/></td_text>
8468
+ <words_with_width><xsl:copy-of select="$words_with_width"/></words_with_width>
8469
+ <xsl:copy-of select="$words_with_width_sorted"/>
8470
+ </redirect:write>
8471
+ </xsl:if> -->
8472
+
8451
8473
  <xsl:variable name="words">
8452
8474
  <xsl:for-each select=".//*[local-name() = 'image' or local-name() = 'stem']">
8453
8475
  <word>
@@ -8573,6 +8595,7 @@
8573
8595
  <xsl:if test="ancestor::*[local-name() = 'tt']"><tag>tt</tag></xsl:if>
8574
8596
  <xsl:if test="ancestor::*[local-name() = 'sourcecode']"><tag>sourcecode</tag></xsl:if>
8575
8597
  <xsl:if test="ancestor::*[local-name() = 'keep-together_within-line']"><tag>keep-together_within-line</tag></xsl:if>
8598
+ <xsl:if test="ancestor::*[local-name() = 'font_en_vertical']"><tag>font_en_vertical</tag></xsl:if>
8576
8599
  </tags>
8577
8600
  </xsl:template>
8578
8601
  <!-- =============================== -->
@@ -9113,7 +9136,16 @@
9113
9136
  </xsl:when>
9114
9137
  <xsl:otherwise>
9115
9138
  <!-- output text from <link>text</link> -->
9116
- <xsl:apply-templates/>
9139
+ <xsl:choose>
9140
+ <xsl:when test="starts-with(., 'http://') or starts-with(., 'https://') or starts-with(., 'www.')">
9141
+ <xsl:call-template name="add-zero-spaces-link-java">
9142
+ <xsl:with-param name="text" select="."/>
9143
+ </xsl:call-template>
9144
+ </xsl:when>
9145
+ <xsl:otherwise>
9146
+ <xsl:apply-templates/>
9147
+ </xsl:otherwise>
9148
+ </xsl:choose>
9117
9149
  </xsl:otherwise>
9118
9150
  </xsl:choose>
9119
9151
  </fo:basic-link>
@@ -9756,16 +9788,29 @@
9756
9788
  <xsl:template name="getImageSrc">
9757
9789
  <xsl:choose>
9758
9790
  <xsl:when test="not(starts-with(@src, 'data:'))">
9791
+ <xsl:call-template name="getImageSrcExternal"/>
9792
+ </xsl:when>
9793
+ <xsl:otherwise><xsl:value-of select="@src"/></xsl:otherwise>
9794
+ </xsl:choose>
9795
+ </xsl:template>
9796
+
9797
+ <xsl:template name="getImageSrcExternal">
9798
+ <xsl:choose>
9799
+ <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
9800
+ <xsl:value-of select="@src"/>
9801
+ </xsl:when>
9802
+ <xsl:otherwise>
9803
+ <xsl:variable name="src_with_basepath" select="concat($basepath, @src)"/>
9804
+ <xsl:variable name="file_exists" select="normalize-space(java:exists(java:java.io.File.new($src_with_basepath)))"/>
9759
9805
  <xsl:choose>
9760
- <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
9761
- <xsl:value-of select="@src"/>
9806
+ <xsl:when test="$file_exists = 'true'">
9807
+ <xsl:value-of select="$src_with_basepath"/>
9762
9808
  </xsl:when>
9763
9809
  <xsl:otherwise>
9764
- <xsl:value-of select="concat($basepath, @src)"/>
9810
+ <xsl:value-of select="@src"/>
9765
9811
  </xsl:otherwise>
9766
9812
  </xsl:choose>
9767
- </xsl:when>
9768
- <xsl:otherwise><xsl:value-of select="@src"/></xsl:otherwise>
9813
+ </xsl:otherwise>
9769
9814
  </xsl:choose>
9770
9815
  </xsl:template>
9771
9816
 
@@ -9813,14 +9858,8 @@
9813
9858
  <xsl:value-of select="concat('url(file:///',$basepath, $src_png, ')')"/>
9814
9859
  </xsl:when>
9815
9860
  <xsl:when test="not(starts-with(@src, 'data:'))">
9816
- <xsl:choose>
9817
- <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
9818
- <xsl:value-of select="concat('url(file:///', @src, ')')"/>
9819
- </xsl:when>
9820
- <xsl:otherwise>
9821
- <xsl:value-of select="concat('url(file:///',$basepath, @src, ')')"/>
9822
- </xsl:otherwise>
9823
- </xsl:choose>
9861
+ <xsl:variable name="src_external"><xsl:call-template name="getImageSrcExternal"/></xsl:variable>
9862
+ <xsl:value-of select="concat('url(file:///', $src_external, ')')"/>
9824
9863
  </xsl:when>
9825
9864
  <xsl:otherwise>
9826
9865
  <xsl:value-of select="@src"/>
@@ -9841,16 +9880,8 @@
9841
9880
  </svg>
9842
9881
  </xsl:when>
9843
9882
  <xsl:when test="not(starts-with(@src, 'data:'))">
9844
- <xsl:variable name="src">
9845
- <xsl:choose>
9846
- <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
9847
- <xsl:value-of select="concat('url(file:///', @src, ')')"/>
9848
- </xsl:when>
9849
- <xsl:otherwise>
9850
- <xsl:value-of select="concat('url(file:///',$basepath, @src, ')')"/>
9851
- </xsl:otherwise>
9852
- </xsl:choose>
9853
- </xsl:variable>
9883
+ <xsl:variable name="src_external"><xsl:call-template name="getImageSrcExternal"/></xsl:variable>
9884
+ <xsl:variable name="src" select="concat('url(file:///', $src_external, ')')"/>
9854
9885
  <xsl:variable name="file" select="java:java.io.File.new(@src)"/>
9855
9886
  <xsl:variable name="bufferedImage" select="java:javax.imageio.ImageIO.read($file)"/>
9856
9887
  <xsl:variable name="width" select="java:getWidth($bufferedImage)"/>
@@ -14001,7 +14032,9 @@
14001
14032
  <xsl:template name="add_id">
14002
14033
  <xsl:if test="not(@id)">
14003
14034
  <!-- add @id - first element with @id plus '_element_name' -->
14004
- <xsl:attribute name="id"><xsl:value-of select="(.//*[@id])[1]/@id"/>_<xsl:value-of select="local-name()"/></xsl:attribute>
14035
+ <xsl:variable name="prefix_id_" select="(.//*[@id])[1]/@id"/>
14036
+ <xsl:variable name="prefix_id"><xsl:value-of select="$prefix_id_"/><xsl:if test="normalize-space($prefix_id_) = ''"><xsl:value-of select="generate-id()"/></xsl:if></xsl:variable>
14037
+ <xsl:attribute name="id"><xsl:value-of select="$prefix_id"/>_<xsl:value-of select="local-name()"/></xsl:attribute>
14005
14038
  </xsl:if>
14006
14039
  </xsl:template>
14007
14040
 
@@ -15306,6 +15339,7 @@
15306
15339
  <xsl:param name="formatted">false</xsl:param>
15307
15340
  <xsl:param name="lang"/>
15308
15341
  <xsl:param name="returnEmptyIfNotFound">false</xsl:param>
15342
+ <xsl:param name="bibdata_updated"/>
15309
15343
 
15310
15344
  <xsl:variable name="curr_lang">
15311
15345
  <xsl:choose>
@@ -15319,6 +15353,9 @@
15319
15353
 
15320
15354
  <xsl:variable name="data_value">
15321
15355
  <xsl:choose>
15356
+ <xsl:when test="$formatted = 'true' and string-length($bibdata_updated) != ''">
15357
+ <xsl:apply-templates select="xalan:nodeset($bibdata_updated)//*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
15358
+ </xsl:when>
15322
15359
  <xsl:when test="$formatted = 'true'">
15323
15360
  <xsl:apply-templates select="xalan:nodeset($bibdata)//*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
15324
15361
  </xsl:when>
@@ -15490,14 +15527,8 @@
15490
15527
  <xsl:value-of select="$src"/>
15491
15528
  </xsl:when>
15492
15529
  <xsl:otherwise>
15493
- <xsl:choose>
15494
- <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
15495
- <xsl:value-of select="concat('url(file:///', @src, ')')"/>
15496
- </xsl:when>
15497
- <xsl:otherwise>
15498
- <xsl:value-of select="concat('url(file:///',$basepath, $src, ')')"/>
15499
- </xsl:otherwise>
15500
- </xsl:choose>
15530
+ <xsl:variable name="src_external"><xsl:call-template name="getImageSrcExternal"/></xsl:variable>
15531
+ <xsl:value-of select="concat('url(file:///', $src_external, ')')"/>
15501
15532
  </xsl:otherwise>
15502
15533
  </xsl:choose>
15503
15534
  </xsl:template>
@@ -15519,15 +15550,23 @@
15519
15550
  <!-- END: insert cover page image -->
15520
15551
 
15521
15552
  <!-- https://github.com/metanorma/docs/blob/main/109.adoc -->
15553
+ <xsl:variable name="regex_ja_spec_half_width_">
15554
+ \u0028 <!-- U+0028 LEFT PARENTHESIS (() -->
15555
+ \u0029 <!-- U+0029 RIGHT PARENTHESIS ()) -->
15556
+ \u007B <!-- U+007B LEFT CURLY BRACKET ({) -->
15557
+ \u007D <!-- U+007D RIGHT CURLY BRACKET (}) -->
15558
+ \uFF62 <!-- U+FF62 HALFWIDTH LEFT CORNER BRACKET (「) -->
15559
+ \uFF63 <!-- U+FF63 HALFWIDTH RIGHT CORNER BRACKET (」) -->
15560
+ \u005B <!-- U+005B LEFT SQUARE BRACKET ([) -->
15561
+ \u005D <!-- U+005D RIGHT SQUARE BRACKET (]) -->
15562
+ </xsl:variable>
15563
+ <xsl:variable name="regex_ja_spec_half_width" select="translate(normalize-space($regex_ja_spec_half_width_), ' ', '')"/>
15522
15564
  <xsl:variable name="regex_ja_spec_">[
15523
15565
  <!-- Rotate 90° clockwise -->
15524
- \u0028 <!-- U+0028 LEFT PARENTHESIS (() -->
15566
+ <xsl:value-of select="$regex_ja_spec_half_width"/>
15525
15567
  \uFF08 <!-- U+FF08 FULLWIDTH LEFT PARENTHESIS (() -->
15526
- \u0029 <!-- U+0029 RIGHT PARENTHESIS ()) -->
15527
15568
  \uFF09 <!-- U+FF09 FULLWIDTH RIGHT PARENTHESIS ()) -->
15528
- \u007B <!-- U+007B LEFT CURLY BRACKET ({) -->
15529
15569
  \uFF5B <!-- U+FF5B FULLWIDTH LEFT CURLY BRACKET ({) -->
15530
- \u007D <!-- U+007D RIGHT CURLY BRACKET (}) -->
15531
15570
  \uFF5D <!-- U+FF5D FULLWIDTH RIGHT CURLY BRACKET (}) -->
15532
15571
  \u3014 <!-- U+3014 LEFT TORTOISE SHELL BRACKET (〔) -->
15533
15572
  \u3015 <!-- U+3015 RIGHT TORTOISE SHELL BRACKET (〕) -->
@@ -15535,21 +15574,16 @@
15535
15574
  \u3011 <!-- U+3011 RIGHT BLACK LENTICULAR BRACKET (】) -->
15536
15575
  \u300A <!-- U+300A LEFT DOUBLE ANGLE BRACKET (《) -->
15537
15576
  \u300B <!-- U+300B RIGHT DOUBLE ANGLE BRACKET (》) -->
15538
- \uFF62 <!-- U+FF62 HALFWIDTH LEFT CORNER BRACKET (「) -->
15539
15577
  \u300C <!-- U+300C LEFT CORNER BRACKET (「) -->
15540
- \uFF63 <!-- U+FF63 HALFWIDTH RIGHT CORNER BRACKET (」) -->
15541
15578
  \u300D <!-- U+300D RIGHT CORNER BRACKET (」) -->
15542
15579
  \u300E <!-- U+300E LEFT WHITE CORNER BRACKET (『) -->
15543
15580
  \u300F <!-- U+300F RIGHT WHITE CORNER BRACKET (』) -->
15544
- \u005B <!-- U+005B LEFT SQUARE BRACKET ([) -->
15545
15581
  \uFF3B <!-- U+FF3B FULLWIDTH LEFT SQUARE BRACKET ([) -->
15546
- \u005D <!-- U+005D RIGHT SQUARE BRACKET (]) -->
15547
15582
  \uFF3D <!-- U+FF3D FULLWIDTH RIGHT SQUARE BRACKET (]) -->
15548
15583
  \u3008 <!-- U+3008 LEFT ANGLE BRACKET (〈) -->
15549
15584
  \u3009 <!-- U+3009 RIGHT ANGLE BRACKET (〉) -->
15550
15585
  \u3016 <!-- U+3016 LEFT WHITE LENTICULAR BRACKET (〖) -->
15551
15586
  \u3017 <!-- U+3017 RIGHT WHITE LENTICULAR BRACKET (〗) -->
15552
-
15553
15587
  \u301A <!-- U+301A LEFT WHITE SQUARE BRACKET (〚) -->
15554
15588
  \u301B <!-- U+301B RIGHT WHITE SQUARE BRACKET (〛) -->
15555
15589
  \u301C <!-- U+301C WAVE DASH (〜) -->
@@ -15581,6 +15615,7 @@
15581
15615
  <xsl:variable name="regex_ja_spec"><xsl:value-of select="translate(normalize-space($regex_ja_spec_), ' ', '')"/></xsl:variable>
15582
15616
  <xsl:template name="insertVerticalChar">
15583
15617
  <xsl:param name="str"/>
15618
+ <xsl:param name="char_prev"/>
15584
15619
  <xsl:param name="writing-mode">lr-tb</xsl:param>
15585
15620
  <xsl:param name="reference-orientation">90</xsl:param>
15586
15621
  <xsl:param name="add_zero_width_space">false</xsl:param>
@@ -15590,53 +15625,99 @@
15590
15625
  </xsl:when>
15591
15626
  <xsl:otherwise>
15592
15627
  <xsl:if test="string-length($str) &gt; 0">
15593
- <xsl:variable name="horizontal_mode" select="normalize-space(ancestor::*[local-name() = 'span'][@class = 'horizontal'] and 1 = 1)"/>
15628
+
15629
+ <!-- <xsl:variable name="horizontal_mode" select="normalize-space(ancestor::*[local-name() = 'span'][@class = 'horizontal'] and 1 = 1)"/> -->
15594
15630
  <xsl:variable name="char" select="substring($str,1,1)"/>
15595
- <fo:inline-container text-align="center" alignment-baseline="central" width="1em" margin="0" padding="0" text-indent="0mm" last-line-end-indent="0mm" start-indent="0mm" end-indent="0mm">
15596
- <xsl:if test="normalize-space($writing-mode) != ''">
15597
- <xsl:attribute name="writing-mode"><xsl:value-of select="$writing-mode"/></xsl:attribute>
15598
- <xsl:attribute name="reference-orientation">90</xsl:attribute>
15599
- </xsl:if>
15600
- <xsl:if test="normalize-space(java:matches(java:java.lang.String.new($char), concat('(', $regex_ja_spec, '{1,})'))) = 'true'">
15601
- <xsl:attribute name="reference-orientation">0</xsl:attribute>
15602
- </xsl:if>
15603
- <xsl:if test="$char = '゜' or $char = '。' or $char = '﹒' or $char = '.'">
15604
- <!-- Rotate 180°:
15605
- U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK (゜)
15606
- U+3002 IDEOGRAPHIC FULL STOP (。)
15607
- U+FE52 SMALL FULL STOP (﹒)
15608
- U+FF0E FULLWIDTH FULL STOP ()
15609
- -->
15610
- <xsl:attribute name="reference-orientation">-90</xsl:attribute>
15611
- </xsl:if>
15612
- <fo:block-container width="1em">
15613
- <fo:block line-height="1em">
15614
- <xsl:choose>
15615
- <xsl:when test="$horizontal_mode = 'true'">
15616
- <xsl:value-of select="$str"/>
15617
- </xsl:when>
15618
- <xsl:otherwise>
15631
+ <xsl:variable name="char_next" select="substring($str,2,1)"/>
15632
+
15633
+ <xsl:variable name="char_half_width" select="normalize-space(java:matches(java:java.lang.String.new($char), concat('([', $regex_ja_spec_half_width, ']{1,})')))"/>
15634
+
15635
+ <xsl:choose>
15636
+ <xsl:when test="$char_half_width = 'true'">
15637
+ <fo:inline>
15638
+ <xsl:attribute name="baseline-shift">7%</xsl:attribute>
15639
+ <xsl:value-of select="$char"/>
15640
+ </fo:inline>
15641
+ </xsl:when>
15642
+ <xsl:otherwise>
15643
+ <!-- namespace-uri(ancestor::*[local-name() = 'title']) != '' to skip title from $contents -->
15644
+ <xsl:if test="namespace-uri(ancestor::*[local-name() = 'title']) != '' and ($char_prev = '' and ../preceding-sibling::node())">
15645
+ <fo:inline padding-left="1mm"><xsl:value-of select="$zero_width_space"/></fo:inline>
15646
+ </xsl:if>
15647
+ <fo:inline-container text-align="center" alignment-baseline="central" width="1em" margin="0" padding="0" text-indent="0mm" last-line-end-indent="0mm" start-indent="0mm" end-indent="0mm" role="SKIP" text-align-last="center">
15648
+ <xsl:if test="normalize-space($writing-mode) != ''">
15649
+ <xsl:attribute name="writing-mode"><xsl:value-of select="$writing-mode"/></xsl:attribute>
15650
+ <xsl:attribute name="reference-orientation">90</xsl:attribute>
15651
+ </xsl:if>
15652
+ <xsl:if test="normalize-space(java:matches(java:java.lang.String.new($char), concat('(', $regex_ja_spec, '{1,})'))) = 'true'">
15653
+ <xsl:attribute name="reference-orientation">0</xsl:attribute>
15654
+ </xsl:if>
15655
+ <xsl:if test="$char = '゜' or $char = '。' or $char = '﹒' or $char = '.'">
15656
+ <!-- Rotate 180°:
15657
+ U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK (゜)
15658
+ U+3002 IDEOGRAPHIC FULL STOP (。)
15659
+ U+FE52 SMALL FULL STOP (﹒)
15660
+ U+FF0E FULLWIDTH FULL STOP (.)
15661
+ -->
15662
+ <xsl:attribute name="reference-orientation">-90</xsl:attribute>
15663
+ </xsl:if>
15664
+ <fo:block-container width="1em" role="SKIP"><!-- border="0.5pt solid blue" -->
15665
+ <fo:block line-height="1em" role="SKIP">
15666
+ <!-- <xsl:choose>
15667
+ <xsl:when test="$horizontal_mode = 'true'">
15668
+ <xsl:value-of select="$str"/>
15669
+ </xsl:when>
15670
+ <xsl:otherwise>
15671
+ <xsl:value-of select="$char"/>
15672
+ </xsl:otherwise>
15673
+ </xsl:choose> -->
15619
15674
  <xsl:value-of select="$char"/>
15620
- </xsl:otherwise>
15621
- </xsl:choose>
15622
- </fo:block>
15623
- </fo:block-container>
15624
- </fo:inline-container>
15625
- <xsl:if test="$add_zero_width_space = 'true' and ($char = ',' or $char = '.' or $char = ' ' or $char = '·' or $char = ')' or $char = ']' or $char = '}')"><xsl:value-of select="$zero_width_space"/></xsl:if>
15626
-
15627
- <xsl:if test="$horizontal_mode = 'false'">
15628
- <xsl:call-template name="insertVerticalChar">
15629
- <xsl:with-param name="str" select="substring($str, 2)"/>
15630
- <xsl:with-param name="writing-mode" select="$writing-mode"/>
15631
- <xsl:with-param name="reference-orientation" select="$reference-orientation"/>
15632
- <xsl:with-param name="add_zero_width_space" select="$add_zero_width_space"/>
15633
- </xsl:call-template>
15634
- </xsl:if>
15675
+ </fo:block>
15676
+ </fo:block-container>
15677
+ </fo:inline-container>
15678
+ <xsl:if test="namespace-uri(ancestor::*[local-name() = 'title']) != '' and ($char_next != '' or ../following-sibling::node())">
15679
+ <fo:inline padding-left="1mm"><xsl:value-of select="$zero_width_space"/></fo:inline>
15680
+ </xsl:if>
15681
+ </xsl:otherwise>
15682
+ </xsl:choose>
15683
+
15684
+ <xsl:if test="$add_zero_width_space = 'true' and ($char = ',' or $char = '.' or $char = ' ' or $char = '·' or $char = ')' or $char = ']' or $char = '}' or $char = '/')"><xsl:value-of select="$zero_width_space"/></xsl:if>
15685
+ <!-- <xsl:if test="$horizontal_mode = 'false'"> -->
15686
+ <xsl:call-template name="insertVerticalChar">
15687
+ <xsl:with-param name="str" select="substring($str, 2)"/>
15688
+ <xsl:with-param name="char_prev" select="$char"/>
15689
+ <xsl:with-param name="writing-mode" select="$writing-mode"/>
15690
+ <xsl:with-param name="reference-orientation" select="$reference-orientation"/>
15691
+ <xsl:with-param name="add_zero_width_space" select="$add_zero_width_space"/>
15692
+ </xsl:call-template>
15693
+ <!-- </xsl:if> -->
15635
15694
  </xsl:if>
15636
15695
  </xsl:otherwise>
15637
15696
  </xsl:choose>
15638
15697
  </xsl:template>
15639
15698
 
15699
+ <xsl:template name="insertHorizontalChars">
15700
+ <xsl:param name="str"/>
15701
+ <xsl:param name="writing-mode">lr-tb</xsl:param>
15702
+ <xsl:param name="reference-orientation">90</xsl:param>
15703
+ <xsl:param name="add_zero_width_space">false</xsl:param>
15704
+ <xsl:choose>
15705
+ <xsl:otherwise>
15706
+ <fo:inline-container text-align="center" alignment-baseline="central" width="1em" margin="0" padding="0" text-indent="0mm" last-line-end-indent="0mm" start-indent="0mm" end-indent="0mm" role="SKIP">
15707
+ <xsl:if test="normalize-space($writing-mode) != ''">
15708
+ <xsl:attribute name="writing-mode"><xsl:value-of select="$writing-mode"/></xsl:attribute>
15709
+ <xsl:attribute name="reference-orientation">90</xsl:attribute>
15710
+ </xsl:if>
15711
+ <fo:block-container width="1em" role="SKIP"> <!-- border="0.5pt solid green" -->
15712
+ <fo:block line-height="1em" role="SKIP">
15713
+ <xsl:value-of select="$str"/>
15714
+ </fo:block>
15715
+ </fo:block-container>
15716
+ </fo:inline-container>
15717
+ </xsl:otherwise>
15718
+ </xsl:choose>
15719
+ </xsl:template>
15720
+
15640
15721
  <xsl:template name="number-to-words">
15641
15722
  <xsl:param name="number"/>
15642
15723
  <xsl:param name="first"/>