metanorma-un 0.8.2 → 0.8.5

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.
@@ -2,11 +2,7 @@
2
2
 
3
3
  <xsl:output version="1.0" method="xml" encoding="UTF-8" indent="no"/>
4
4
 
5
- <xsl:param name="svg_images"/>
6
- <xsl:param name="external_index"/><!-- path to index xml, generated on 1st pass, based on FOP Intermediate Format -->
7
- <xsl:variable name="images" select="document($svg_images)"/>
8
- <xsl:param name="basepath"/>
9
-
5
+
10
6
  <xsl:key name="kfn" match="*[local-name() = 'fn'][not(ancestor::*[(local-name() = 'table' or local-name() = 'figure') and not(ancestor::*[local-name() = 'name'])])]" use="@reference"/>
11
7
 
12
8
 
@@ -14,24 +10,18 @@
14
10
 
15
11
 
16
12
  <xsl:variable name="debug">false</xsl:variable>
17
-
18
- <xsl:variable name="marginLeftRight1" select="40"/>
19
- <xsl:variable name="marginLeftRight2" select="40"/>
20
- <xsl:variable name="marginTop" select="30"/>
21
- <xsl:variable name="marginBottom" select="34"/>
22
13
 
23
- <xsl:variable name="contents">
14
+ <xsl:variable name="contents_">
24
15
  <contents>
25
16
  <xsl:apply-templates select="/un:un-standard/un:sections/*" mode="contents"/>
26
17
  <xsl:apply-templates select="/un:un-standard/un:annex" mode="contents"/>
27
18
  <xsl:apply-templates select="/un:un-standard/un:bibliography/un:references" mode="contents"/>
19
+ <xsl:call-template name="processTablesFigures_Contents"/>
28
20
  </contents>
29
21
  </xsl:variable>
22
+ <xsl:variable name="contents" select="xalan:nodeset($contents_)"/>
23
+
30
24
 
31
- <xsl:variable name="lang">
32
- <xsl:call-template name="getLang"/>
33
- </xsl:variable>
34
-
35
25
  <xsl:variable name="title" select="/un:un-standard/un:bibdata/un:title[@language = 'en' and @type = 'main']"/>
36
26
 
37
27
  <xsl:variable name="doctype" select="/un:un-standard/un:bibdata/un:ext/un:doctype"/>
@@ -210,7 +200,7 @@
210
200
  </xsl:variable>
211
201
  <fo:block font-size="9pt" text-align="right" font-style="italic" margin-bottom="6pt"><xsl:value-of select="$title-page"/></fo:block>
212
202
  <fo:block role="TOC">
213
- <xsl:for-each select="xalan:nodeset($contents)//item[not (@type = 'annex' or @parent = 'annex') and @display = 'true']">
203
+ <xsl:for-each select="$contents//item[not (@type = 'annex' or @parent = 'annex') and @display = 'true']">
214
204
 
215
205
  <fo:block role="TOCI">
216
206
 
@@ -248,9 +238,9 @@
248
238
 
249
239
  </xsl:for-each>
250
240
 
251
- <xsl:if test="xalan:nodeset($contents)//item[@type = 'annex' and @display = 'true']">
252
- <fo:block text-align="center" margin-top="12pt" margin-bottom="12pt">ANNEXES</fo:block>
253
- <xsl:for-each select="xalan:nodeset($contents)//item[@type = 'annex' and @display = 'true']">
241
+ <xsl:if test="$contents//item[@type = 'annex' and @display = 'true']">
242
+ <fo:block text-align="center" margin-top="12pt" margin-bottom="12pt" keep-with-next="always">ANNEXES</fo:block>
243
+ <xsl:for-each select="$contents//item[@type = 'annex' and @display = 'true']">
254
244
  <fo:block role="TOCI">
255
245
  <fo:block text-align-last="justify" margin-left="12mm" text-indent="-12mm">
256
246
  <fo:basic-link internal-destination="{@id}" fox:alt-text="{@section}">
@@ -280,6 +270,26 @@
280
270
  </xsl:for-each>
281
271
  </xsl:if>
282
272
 
273
+ <!-- List of Tables -->
274
+ <xsl:if test="$contents//tables/table">
275
+ <xsl:call-template name="insertListOf_Title">
276
+ <xsl:with-param name="title" select="$title-list-tables"/>
277
+ </xsl:call-template>
278
+ <xsl:for-each select="$contents//tables/table">
279
+ <xsl:call-template name="insertListOf_Item"/>
280
+ </xsl:for-each>
281
+ </xsl:if>
282
+
283
+ <!-- List of Figures -->
284
+ <xsl:if test="$contents//figures/figure">
285
+ <xsl:call-template name="insertListOf_Title">
286
+ <xsl:with-param name="title" select="$title-list-figures"/>
287
+ </xsl:call-template>
288
+ <xsl:for-each select="$contents//figures/figure">
289
+ <xsl:call-template name="insertListOf_Item"/>
290
+ </xsl:for-each>
291
+ </xsl:if>
292
+
283
293
  </fo:block>
284
294
  </fo:flow>
285
295
  </fo:page-sequence>
@@ -301,7 +311,7 @@
301
311
  <xsl:if test="$debug = 'true'">
302
312
  <xsl:text disable-output-escaping="yes">&lt;!--</xsl:text>
303
313
  DEBUG
304
- contents=<xsl:copy-of select="xalan:nodeset($contents)"/>
314
+ contents=<xsl:copy-of select="$contents"/>
305
315
  <xsl:text disable-output-escaping="yes">--&gt;</xsl:text>
306
316
  </xsl:if>
307
317
 
@@ -339,6 +349,30 @@
339
349
  </fo:page-sequence>
340
350
  </fo:root>
341
351
  </xsl:template>
352
+
353
+ <xsl:template name="insertListOf_Title">
354
+ <xsl:param name="title"/>
355
+ <fo:block text-align="center" margin-top="12pt" margin-bottom="12pt" keep-with-next="always">
356
+ <xsl:value-of select="$title"/>
357
+ </fo:block>
358
+ </xsl:template>
359
+
360
+ <xsl:template name="insertListOf_Item">
361
+ <fo:block role="TOCI">
362
+ <fo:block text-align-last="justify" margin-left="12mm" text-indent="-12mm">
363
+ <fo:basic-link internal-destination="{@id}">
364
+ <xsl:call-template name="setAltText">
365
+ <xsl:with-param name="value" select="@alt-text"/>
366
+ </xsl:call-template>
367
+ <xsl:apply-templates select="." mode="contents"/>
368
+ <fo:inline keep-together.within-line="always">
369
+ <fo:leader leader-pattern="dots"/>
370
+ <fo:page-number-citation ref-id="{@id}"/>
371
+ </fo:inline>
372
+ </fo:basic-link>
373
+ </fo:block>
374
+ </fo:block>
375
+ </xsl:template>
342
376
 
343
377
  <!-- ============================= -->
344
378
  <!-- CONTENTS -->
@@ -594,64 +628,7 @@
594
628
  <xsl:apply-templates/>
595
629
  </fo:block>
596
630
  </xsl:template>
597
-
598
- <xsl:template match="un:ul | un:ol" mode="ul_ol">
599
- <fo:list-block provisional-distance-between-starts="3mm" margin-left="7mm" text-indent="0mm">
600
- <xsl:apply-templates select="node()[not(local-name() = 'note')]"/>
601
- </fo:list-block>
602
- <xsl:apply-templates select="./un:note"/>
603
- </xsl:template>
604
-
605
-
606
- <xsl:template match="un:li">
607
- <xsl:variable name="level">
608
- <xsl:call-template name="getLevel"/>
609
- </xsl:variable>
610
- <fo:list-item>
611
- <fo:list-item-label end-indent="label-end()">
612
- <fo:block>
613
- <xsl:choose>
614
- <xsl:when test="local-name(..) = 'ul'">
615
- <xsl:call-template name="setULLabel"/>
616
- </xsl:when>
617
- <xsl:otherwise> <!-- for ordered lists -->
618
- <xsl:choose>
619
- <xsl:when test="../@type = 'arabic'">
620
- <xsl:number format="a)" lang="en"/>
621
- </xsl:when>
622
- <xsl:when test="../@type = 'alphabet'">
623
- <xsl:number format="1)"/>
624
- </xsl:when>
625
- <xsl:when test="ancestor::*[un:annex]">
626
- <xsl:choose>
627
- <xsl:when test="$level = 1">
628
- <xsl:number format="a)" lang="en"/>
629
- </xsl:when>
630
- <xsl:when test="$level = 2">
631
- <xsl:number format="i)"/>
632
- </xsl:when>
633
- <xsl:otherwise>
634
- <xsl:number format="1.)"/>
635
- </xsl:otherwise>
636
- </xsl:choose>
637
- </xsl:when>
638
- <xsl:otherwise>
639
- <xsl:number format="1."/>
640
- </xsl:otherwise>
641
- </xsl:choose>
642
- </xsl:otherwise>
643
- </xsl:choose>
644
- </fo:block>
645
- </fo:list-item-label>
646
- <fo:list-item-body start-indent="body-start()">
647
- <fo:block>
648
- <xsl:apply-templates select="node()[not(local-name() = 'note')]"/>
649
- <xsl:apply-templates select="./un:note"/>
650
- </fo:block>
651
- </fo:list-item-body>
652
- </fo:list-item>
653
- </xsl:template>
654
-
631
+
655
632
  <xsl:template match="un:li//un:p">
656
633
  <fo:block text-align="justify" margin-bottom="6pt">
657
634
  <xsl:apply-templates/>
@@ -873,50 +850,6 @@
873
850
 
874
851
 
875
852
 
876
- <xsl:template match="un:formula" name="formula-un" priority="2">
877
-
878
- <fo:block-container margin-left="0mm">
879
- <xsl:if test="parent::*[local-name() = 'note']">
880
- <xsl:attribute name="margin-left">
881
- <xsl:choose>
882
- <xsl:when test="not(ancestor::*[local-name() = 'table'])"><xsl:value-of select="$note-body-indent"/></xsl:when>
883
- <xsl:otherwise><xsl:value-of select="$note-body-indent-table"/></xsl:otherwise>
884
- </xsl:choose>
885
- </xsl:attribute>
886
- </xsl:if>
887
- <fo:block-container margin-left="0mm">
888
-
889
- <fo:block id="{@id}" margin-top="6pt">
890
- <fo:table table-layout="fixed" width="100%">
891
- <fo:table-column column-width="95%"/>
892
- <fo:table-column column-width="5%"/>
893
- <fo:table-body>
894
- <fo:table-row>
895
- <fo:table-cell>
896
- <fo:block text-align="center">
897
- <xsl:if test="ancestor::un:annex">
898
- <xsl:attribute name="text-align">left</xsl:attribute>
899
- <xsl:attribute name="margin-left">7mm</xsl:attribute>
900
- </xsl:if>
901
- <xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
902
- </fo:block>
903
- </fo:table-cell>
904
- <fo:table-cell> <!-- display-align="center" -->
905
- <fo:block text-align="right">
906
- <xsl:apply-templates select="un:name"/>
907
- </fo:block>
908
- </fo:table-cell>
909
- </fo:table-row>
910
- </fo:table-body>
911
- </fo:table>
912
- </fo:block>
913
-
914
- </fo:block-container>
915
- </fo:block-container>
916
- </xsl:template>
917
-
918
-
919
-
920
853
  <!-- ============================ -->
921
854
  <!-- ============================ -->
922
855
 
@@ -963,11 +896,21 @@
963
896
  <xsl:text>iVBORw0KGgoAAAANSUhEUgAAAUgAAAEfCAYAAAAjn198AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA8BpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4M0JCQjMxNzJBNjcxMUVBQjQ3MkM1NDNGQjcxMjlFQyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4M0JCQjMxNjJBNjcxMUVBQjQ3MkM1NDNGQjcxMjlFQyIgeG1wOkNyZWF0b3JUb29sPSJBY3JvYmF0IFBERk1ha2VyIDE4IGZvciBXb3JkIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InV1aWQ6OTM1MzU0ZmUtYzRmYS00Y2I4LTlkOGMtYjk0M2E4OTk2YzhiIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOjhlMzkwMGEzLTMwZWUtNGRlNy04NDc0LTlhZTA5ZTFjZjhmMiIvPiA8ZGM6Y3JlYXRvcj4gPHJkZjpTZXE+IDxyZGY6bGk+U3RlcGhl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</xsl:text>
964
897
  </xsl:variable>
965
898
 
966
- <xsl:variable name="pageWidth_">
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:key name="bibitems" match="*[local-name() = 'bibitem']" use="@id"/><xsl:key name="bibitems_hidden" match="*[local-name() = 'bibitem'][@hidden='true'] | *[local-name() = 'references'][@hidden='true']//*[local-name() = 'bibitem']" use="@id"/><xsl:variable name="lang">
900
+ <xsl:call-template name="getLang"/>
901
+ </xsl:variable><xsl:variable name="pageWidth_">
967
902
  210
968
903
  </xsl:variable><xsl:variable name="pageWidth" select="normalize-space($pageWidth_)"/><xsl:variable name="pageHeight_">
969
904
  297
970
- </xsl:variable><xsl:variable name="pageHeight" select="normalize-space($pageHeight_)"/><xsl:variable name="titles_">
905
+ </xsl:variable><xsl:variable name="pageHeight" select="normalize-space($pageHeight_)"/><xsl:variable name="marginLeftRight1_">
906
+ 40
907
+ </xsl:variable><xsl:variable name="marginLeftRight1" select="normalize-space($marginLeftRight1_)"/><xsl:variable name="marginLeftRight2_">
908
+ 40
909
+ </xsl:variable><xsl:variable name="marginLeftRight2" select="normalize-space($marginLeftRight2_)"/><xsl:variable name="marginTop_">
910
+ 30
911
+ </xsl:variable><xsl:variable name="marginTop" select="normalize-space($marginTop_)"/><xsl:variable name="marginBottom_">
912
+ 34
913
+ </xsl:variable><xsl:variable name="marginBottom" select="normalize-space($marginBottom_)"/><xsl:variable name="titles_">
971
914
 
972
915
  <title-edition lang="en">
973
916
 
@@ -979,6 +922,10 @@
979
922
  <xsl:text>Édition </xsl:text>
980
923
  </title-edition>
981
924
 
925
+ <title-edition lang="ru">
926
+ <xsl:text>Издание </xsl:text>
927
+ </title-edition>
928
+
982
929
  <!-- These titles of Table of contents renders different than determined in localized-strings -->
983
930
  <title-toc lang="en">
984
931
 
@@ -995,7 +942,7 @@
995
942
  <xsl:text>Contents</xsl:text>
996
943
 
997
944
  </title-toc>
998
-
945
+
999
946
  <title-descriptors lang="en">Descriptors</title-descriptors>
1000
947
 
1001
948
  <title-part lang="en">
@@ -1007,7 +954,11 @@
1007
954
 
1008
955
 
1009
956
 
1010
- </title-part>
957
+ </title-part>
958
+ <title-part lang="ru">
959
+
960
+
961
+ </title-part>
1011
962
  <title-part lang="zh">第 # 部分:</title-part>
1012
963
 
1013
964
  <title-subpart lang="en">Sub-part #</title-subpart>
@@ -1023,13 +974,38 @@
1023
974
 
1024
975
  <title-summary lang="en">Summary</title-summary>
1025
976
 
977
+ <title-continued lang="ru">(продолжение)</title-continued>
1026
978
  <title-continued lang="en">(continued)</title-continued>
1027
979
  <title-continued lang="fr">(continué)</title-continued>
1028
980
 
1029
- </xsl:variable><xsl:variable name="titles" select="xalan:nodeset($titles_)"/><xsl:variable name="bibdata">
981
+ </xsl:variable><xsl:variable name="titles" select="xalan:nodeset($titles_)"/><xsl:variable name="title-list-tables">
982
+ <xsl:variable name="toc_table_title" select="//*[contains(local-name(), '-standard')]/*[local-name() = 'misc-container']/*[local-name() = 'toc'][@type='table']/*[local-name() = 'title']"/>
983
+ <xsl:value-of select="$toc_table_title"/>
984
+ <xsl:if test="normalize-space($toc_table_title) = ''">
985
+ <xsl:call-template name="getTitle">
986
+ <xsl:with-param name="name" select="'title-list-tables'"/>
987
+ </xsl:call-template>
988
+ </xsl:if>
989
+ </xsl:variable><xsl:variable name="title-list-figures">
990
+ <xsl:variable name="toc_figure_title" select="//*[contains(local-name(), '-standard')]/*[local-name() = 'misc-container']/*[local-name() = 'toc'][@type='figure']/*[local-name() = 'title']"/>
991
+ <xsl:value-of select="$toc_figure_title"/>
992
+ <xsl:if test="normalize-space($toc_figure_title) = ''">
993
+ <xsl:call-template name="getTitle">
994
+ <xsl:with-param name="name" select="'title-list-figures'"/>
995
+ </xsl:call-template>
996
+ </xsl:if>
997
+ </xsl:variable><xsl:variable name="title-list-recommendations">
998
+ <xsl:variable name="toc_requirement_title" select="//*[contains(local-name(), '-standard')]/*[local-name() = 'misc-container']/*[local-name() = 'toc'][@type='requirement']/*[local-name() = 'title']"/>
999
+ <xsl:value-of select="$toc_requirement_title"/>
1000
+ <xsl:if test="normalize-space($toc_requirement_title) = ''">
1001
+ <xsl:call-template name="getTitle">
1002
+ <xsl:with-param name="name" select="'title-list-recommendations'"/>
1003
+ </xsl:call-template>
1004
+ </xsl:if>
1005
+ </xsl:variable><xsl:variable name="bibdata">
1030
1006
  <xsl:copy-of select="//*[contains(local-name(), '-standard')]/*[local-name() = 'bibdata']"/>
1031
1007
  <xsl:copy-of select="//*[contains(local-name(), '-standard')]/*[local-name() = 'localized-strings']"/>
1032
- </xsl:variable><xsl:variable name="tab_zh"> </xsl:variable><xsl:template name="getTitle">
1008
+ </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">
1033
1009
  <xsl:param name="name"/>
1034
1010
  <xsl:param name="lang"/>
1035
1011
  <xsl:variable name="lang_">
@@ -1052,7 +1028,7 @@
1052
1028
  <xsl:value-of select="$titles/*[local-name() = $name][@lang = 'en']"/>
1053
1029
  </xsl:otherwise>
1054
1030
  </xsl:choose>
1055
- </xsl:template><xsl:variable name="lower">abcdefghijklmnopqrstuvwxyz</xsl:variable><xsl:variable name="upper">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable><xsl:variable name="en_chars" select="concat($lower,$upper,',.`1234567890-=~!@#$%^*()_+[]{}\|?/')"/><xsl:variable name="linebreak" select="'&#8232;'"/><xsl:attribute-set name="root-style">
1031
+ </xsl:template><xsl:variable name="lower">abcdefghijklmnopqrstuvwxyz</xsl:variable><xsl:variable name="upper">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable><xsl:variable name="en_chars" select="concat($lower,$upper,',.`1234567890-=~!@#$%^*()_+[]{}\|?/')"/><xsl:attribute-set name="root-style">
1056
1032
 
1057
1033
 
1058
1034
 
@@ -1207,7 +1183,7 @@
1207
1183
 
1208
1184
 
1209
1185
  </xsl:attribute-set><xsl:attribute-set name="example-name-style">
1210
- <xsl:attribute name="keep-with-next">always</xsl:attribute>
1186
+
1211
1187
 
1212
1188
 
1213
1189
 
@@ -1221,6 +1197,7 @@
1221
1197
 
1222
1198
 
1223
1199
 
1200
+ <xsl:attribute name="keep-with-next">always</xsl:attribute>
1224
1201
  <xsl:attribute name="font-size">10pt</xsl:attribute>
1225
1202
  <xsl:attribute name="font-weight">bold</xsl:attribute>
1226
1203
  <xsl:attribute name="margin-bottom">12pt</xsl:attribute>
@@ -1578,7 +1555,8 @@
1578
1555
 
1579
1556
 
1580
1557
  </xsl:attribute-set><xsl:attribute-set name="quote-style">
1581
- <xsl:attribute name="role">BlockQuote</xsl:attribute>
1558
+ <xsl:attribute name="margin-left">12mm</xsl:attribute>
1559
+ <xsl:attribute name="margin-right">12mm</xsl:attribute>
1582
1560
 
1583
1561
 
1584
1562
 
@@ -1587,9 +1565,9 @@
1587
1565
 
1588
1566
 
1589
1567
  </xsl:attribute-set><xsl:attribute-set name="quote-source-style">
1568
+ <xsl:attribute name="text-align">right</xsl:attribute>
1590
1569
 
1591
1570
 
1592
-
1593
1571
  </xsl:attribute-set><xsl:attribute-set name="termsource-style">
1594
1572
 
1595
1573
 
@@ -1608,6 +1586,9 @@
1608
1586
 
1609
1587
  </xsl:attribute-set><xsl:attribute-set name="term-style">
1610
1588
 
1589
+ </xsl:attribute-set><xsl:attribute-set name="term-name-style">
1590
+ <xsl:attribute name="keep-with-next">always</xsl:attribute>
1591
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
1611
1592
  </xsl:attribute-set><xsl:attribute-set name="figure-style">
1612
1593
 
1613
1594
  </xsl:attribute-set><xsl:attribute-set name="figure-name-style">
@@ -1638,6 +1619,33 @@
1638
1619
 
1639
1620
 
1640
1621
  </xsl:attribute-set><xsl:attribute-set name="formula-style">
1622
+ <xsl:attribute name="margin-top">6pt</xsl:attribute>
1623
+ <xsl:attribute name="margin-bottom">12pt</xsl:attribute>
1624
+
1625
+
1626
+
1627
+
1628
+
1629
+
1630
+ </xsl:attribute-set><xsl:attribute-set name="formula-stem-block-style">
1631
+ <xsl:attribute name="text-align">center</xsl:attribute>
1632
+
1633
+
1634
+
1635
+
1636
+
1637
+
1638
+
1639
+
1640
+
1641
+
1642
+
1643
+ </xsl:attribute-set><xsl:attribute-set name="formula-stem-number-style">
1644
+ <xsl:attribute name="text-align">right</xsl:attribute>
1645
+
1646
+
1647
+
1648
+
1641
1649
 
1642
1650
  </xsl:attribute-set><xsl:attribute-set name="image-style">
1643
1651
  <xsl:attribute name="text-align">center</xsl:attribute>
@@ -1674,6 +1682,18 @@
1674
1682
  <xsl:attribute name="margin-bottom">12pt</xsl:attribute>
1675
1683
  <xsl:attribute name="keep-with-previous">always</xsl:attribute>
1676
1684
 
1685
+ </xsl:attribute-set><xsl:attribute-set name="preferred-block-style">
1686
+
1687
+
1688
+
1689
+
1690
+
1691
+
1692
+ </xsl:attribute-set><xsl:attribute-set name="preferred-term-style">
1693
+ <xsl:attribute name="keep-with-next">always</xsl:attribute>
1694
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
1695
+
1696
+
1677
1697
  </xsl:attribute-set><xsl:attribute-set name="domain-style">
1678
1698
 
1679
1699
  </xsl:attribute-set><xsl:attribute-set name="admitted-style">
@@ -1690,13 +1710,19 @@
1690
1710
  </xsl:attribute-set><xsl:variable name="color-added-text">
1691
1711
  <xsl:text>rgb(0, 255, 0)</xsl:text>
1692
1712
  </xsl:variable><xsl:attribute-set name="add-style">
1693
- <xsl:attribute name="color">red</xsl:attribute>
1694
- <xsl:attribute name="text-decoration">underline</xsl:attribute>
1695
- <!-- <xsl:attribute name="color">black</xsl:attribute>
1696
- <xsl:attribute name="background-color"><xsl:value-of select="$color-added-text"/></xsl:attribute>
1697
- <xsl:attribute name="padding-top">1mm</xsl:attribute>
1698
- <xsl:attribute name="padding-bottom">0.5mm</xsl:attribute> -->
1699
- </xsl:attribute-set><xsl:variable name="color-deleted-text">
1713
+
1714
+ <xsl:attribute name="color">red</xsl:attribute>
1715
+ <xsl:attribute name="text-decoration">underline</xsl:attribute>
1716
+ <!-- <xsl:attribute name="color">black</xsl:attribute>
1717
+ <xsl:attribute name="background-color"><xsl:value-of select="$color-added-text"/></xsl:attribute>
1718
+ <xsl:attribute name="padding-top">1mm</xsl:attribute>
1719
+ <xsl:attribute name="padding-bottom">0.5mm</xsl:attribute> -->
1720
+
1721
+ </xsl:attribute-set><xsl:variable name="add-style">
1722
+ <add-style xsl:use-attribute-sets="add-style"/>
1723
+ </xsl:variable><xsl:template name="append_add-style">
1724
+ <xsl:copy-of select="xalan:nodeset($add-style)/add-style/@*"/>
1725
+ </xsl:template><xsl:variable name="color-deleted-text">
1700
1726
  <xsl:text>red</xsl:text>
1701
1727
  </xsl:variable><xsl:attribute-set name="del-style">
1702
1728
  <xsl:attribute name="color"><xsl:value-of select="$color-deleted-text"/></xsl:attribute>
@@ -1707,6 +1733,37 @@
1707
1733
 
1708
1734
  </xsl:attribute-set><xsl:attribute-set name="list-style">
1709
1735
 
1736
+
1737
+
1738
+
1739
+
1740
+
1741
+
1742
+
1743
+
1744
+
1745
+
1746
+
1747
+
1748
+
1749
+
1750
+
1751
+
1752
+ <xsl:attribute name="provisional-distance-between-starts">3mm</xsl:attribute>
1753
+ <xsl:attribute name="margin-left">7mm</xsl:attribute>
1754
+ <xsl:attribute name="text-indent">0mm</xsl:attribute>
1755
+
1756
+ </xsl:attribute-set><xsl:attribute-set name="list-item-style">
1757
+
1758
+
1759
+ </xsl:attribute-set><xsl:attribute-set name="list-item-label-style">
1760
+
1761
+
1762
+
1763
+ </xsl:attribute-set><xsl:attribute-set name="list-item-body-style">
1764
+
1765
+
1766
+
1710
1767
  </xsl:attribute-set><xsl:attribute-set name="toc-style">
1711
1768
  <xsl:attribute name="line-height">135%</xsl:attribute>
1712
1769
  </xsl:attribute-set><xsl:attribute-set name="fn-reference-style">
@@ -1991,15 +2048,148 @@
1991
2048
 
1992
2049
 
1993
2050
 
2051
+ </xsl:attribute-set><xsl:attribute-set name="hljs-doctag">
2052
+ <xsl:attribute name="color">#d73a49</xsl:attribute>
2053
+ </xsl:attribute-set><xsl:attribute-set name="hljs-keyword">
2054
+ <xsl:attribute name="color">#d73a49</xsl:attribute>
2055
+ </xsl:attribute-set><xsl:attribute-set name="hljs-meta_hljs-keyword">
2056
+ <xsl:attribute name="color">#d73a49</xsl:attribute>
2057
+ </xsl:attribute-set><xsl:attribute-set name="hljs-template-tag">
2058
+ <xsl:attribute name="color">#d73a49</xsl:attribute>
2059
+ </xsl:attribute-set><xsl:attribute-set name="hljs-template-variable">
2060
+ <xsl:attribute name="color">#d73a49</xsl:attribute>
2061
+ </xsl:attribute-set><xsl:attribute-set name="hljs-type">
2062
+ <xsl:attribute name="color">#d73a49</xsl:attribute>
2063
+ </xsl:attribute-set><xsl:attribute-set name="hljs-variable_and_language_">
2064
+ <xsl:attribute name="color">#d73a49</xsl:attribute>
2065
+ </xsl:attribute-set><xsl:attribute-set name="hljs-title">
2066
+ <xsl:attribute name="color">#6f42c1</xsl:attribute>
2067
+ </xsl:attribute-set><xsl:attribute-set name="hljs-title_and_class_">
2068
+ <xsl:attribute name="color">#6f42c1</xsl:attribute>
2069
+ </xsl:attribute-set><xsl:attribute-set name="hljs-title_and_class__and_inherited__">
2070
+ <xsl:attribute name="color">#6f42c1</xsl:attribute>
2071
+ </xsl:attribute-set><xsl:attribute-set name="hljs-title_and_function_">
2072
+ <xsl:attribute name="color">#6f42c1</xsl:attribute>
2073
+ </xsl:attribute-set><xsl:attribute-set name="hljs-attr">
2074
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
2075
+ </xsl:attribute-set><xsl:attribute-set name="hljs-attribute">
2076
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
2077
+ </xsl:attribute-set><xsl:attribute-set name="hljs-literal">
2078
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
2079
+ </xsl:attribute-set><xsl:attribute-set name="hljs-meta">
2080
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
2081
+ </xsl:attribute-set><xsl:attribute-set name="hljs-number">
2082
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
2083
+ </xsl:attribute-set><xsl:attribute-set name="hljs-operator">
2084
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
2085
+ </xsl:attribute-set><xsl:attribute-set name="hljs-variable">
2086
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
2087
+ </xsl:attribute-set><xsl:attribute-set name="hljs-selector-attr">
2088
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
2089
+ </xsl:attribute-set><xsl:attribute-set name="hljs-selector-class">
2090
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
2091
+ </xsl:attribute-set><xsl:attribute-set name="hljs-selector-id">
2092
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
2093
+ </xsl:attribute-set><xsl:attribute-set name="hljs-regexp">
2094
+ <xsl:attribute name="color">#032f62</xsl:attribute>
2095
+ </xsl:attribute-set><xsl:attribute-set name="hljs-string">
2096
+ <xsl:attribute name="color">#032f62</xsl:attribute>
2097
+ </xsl:attribute-set><xsl:attribute-set name="hljs-meta_hljs-string">
2098
+ <xsl:attribute name="color">#032f62</xsl:attribute>
2099
+ </xsl:attribute-set><xsl:attribute-set name="hljs-built_in">
2100
+ <xsl:attribute name="color">#e36209</xsl:attribute>
2101
+ </xsl:attribute-set><xsl:attribute-set name="hljs-symbol">
2102
+ <xsl:attribute name="color">#e36209</xsl:attribute>
2103
+ </xsl:attribute-set><xsl:attribute-set name="hljs-comment">
2104
+ <xsl:attribute name="color">#6a737d</xsl:attribute>
2105
+ </xsl:attribute-set><xsl:attribute-set name="hljs-code">
2106
+ <xsl:attribute name="color">#6a737d</xsl:attribute>
2107
+ </xsl:attribute-set><xsl:attribute-set name="hljs-formula">
2108
+ <xsl:attribute name="color">#6a737d</xsl:attribute>
2109
+ </xsl:attribute-set><xsl:attribute-set name="hljs-name">
2110
+ <xsl:attribute name="color">#22863a</xsl:attribute>
2111
+ </xsl:attribute-set><xsl:attribute-set name="hljs-quote">
2112
+ <xsl:attribute name="color">#22863a</xsl:attribute>
2113
+ </xsl:attribute-set><xsl:attribute-set name="hljs-selector-tag">
2114
+ <xsl:attribute name="color">#22863a</xsl:attribute>
2115
+ </xsl:attribute-set><xsl:attribute-set name="hljs-selector-pseudo">
2116
+ <xsl:attribute name="color">#22863a</xsl:attribute>
2117
+ </xsl:attribute-set><xsl:attribute-set name="hljs-subst">
2118
+ <xsl:attribute name="color">#24292e</xsl:attribute>
2119
+ </xsl:attribute-set><xsl:attribute-set name="hljs-section">
2120
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
2121
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
2122
+ </xsl:attribute-set><xsl:attribute-set name="hljs-bullet">
2123
+ <xsl:attribute name="color">#735c0f</xsl:attribute>
2124
+ </xsl:attribute-set><xsl:attribute-set name="hljs-emphasis">
2125
+ <xsl:attribute name="color">#24292e</xsl:attribute>
2126
+ <xsl:attribute name="font-style">italic</xsl:attribute>
2127
+ </xsl:attribute-set><xsl:attribute-set name="hljs-strong">
2128
+ <xsl:attribute name="color">#24292e</xsl:attribute>
2129
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
2130
+ </xsl:attribute-set><xsl:attribute-set name="hljs-addition">
2131
+ <xsl:attribute name="color">#22863a</xsl:attribute>
2132
+ <xsl:attribute name="background-color">#f0fff4</xsl:attribute>
2133
+ </xsl:attribute-set><xsl:attribute-set name="hljs-deletion">
2134
+ <xsl:attribute name="color">#b31d28</xsl:attribute>
2135
+ <xsl:attribute name="background-color">#ffeef0</xsl:attribute>
2136
+ </xsl:attribute-set><xsl:attribute-set name="hljs-char_and_escape_">
2137
+ </xsl:attribute-set><xsl:attribute-set name="hljs-link">
2138
+ </xsl:attribute-set><xsl:attribute-set name="hljs-params">
2139
+ </xsl:attribute-set><xsl:attribute-set name="hljs-property">
2140
+ </xsl:attribute-set><xsl:attribute-set name="hljs-punctuation">
2141
+ </xsl:attribute-set><xsl:attribute-set name="hljs-tag">
2142
+ </xsl:attribute-set><xsl:attribute-set name="indexsect-title-style">
2143
+ <xsl:attribute name="role">H1</xsl:attribute>
2144
+
2145
+
2146
+
2147
+
2148
+
2149
+ </xsl:attribute-set><xsl:attribute-set name="indexsect-clause-title-style">
2150
+ <xsl:attribute name="keep-with-next">always</xsl:attribute>
2151
+
2152
+
2153
+
2154
+
2155
+
1994
2156
  </xsl:attribute-set><xsl:variable name="border-block-added">2.5pt solid rgb(0, 176, 80)</xsl:variable><xsl:variable name="border-block-deleted">2.5pt solid rgb(255, 0, 0)</xsl:variable><xsl:variable name="ace_tag">ace-tag_</xsl:variable><xsl:template name="processPrefaceSectionsDefault_Contents">
2157
+ <xsl:variable name="nodes_preface_">
2158
+ <xsl:for-each select="/*/*[local-name()='preface']/*">
2159
+ <node id="{@id}"/>
2160
+ </xsl:for-each>
2161
+ </xsl:variable>
2162
+ <xsl:variable name="nodes_preface" select="xalan:nodeset($nodes_preface_)"/>
2163
+
1995
2164
  <xsl:for-each select="/*/*[local-name()='preface']/*">
1996
2165
  <xsl:sort select="@displayorder" data-type="number"/>
2166
+
2167
+ <!-- process Section's title -->
2168
+ <xsl:variable name="preceding-sibling_id" select="$nodes_preface/node[@id = current()/@id]/preceding-sibling::node[1]/@id"/>
2169
+ <xsl:if test="$preceding-sibling_id != ''">
2170
+ <xsl:apply-templates select="parent::*/*[@type = 'section-title' and @id = $preceding-sibling_id and not(@displayorder)]" mode="contents_no_displayorder"/>
2171
+ </xsl:if>
2172
+
1997
2173
  <xsl:apply-templates select="." mode="contents"/>
1998
2174
  </xsl:for-each>
1999
2175
  </xsl:template><xsl:template name="processMainSectionsDefault_Contents">
2000
2176
 
2177
+ <xsl:variable name="nodes_sections_">
2178
+ <xsl:for-each select="/*/*[local-name()='sections']/*">
2179
+ <node id="{@id}"/>
2180
+ </xsl:for-each>
2181
+ </xsl:variable>
2182
+ <xsl:variable name="nodes_sections" select="xalan:nodeset($nodes_sections_)"/>
2183
+
2001
2184
  <xsl:for-each select="/*/*[local-name()='sections']/* | /*/*[local-name()='bibliography']/*[local-name()='references'][@normative='true'] | /*/*[local-name()='bibliography']/*[local-name()='clause'][*[local-name()='references'][@normative='true']]">
2002
2185
  <xsl:sort select="@displayorder" data-type="number"/>
2186
+
2187
+ <!-- process Section's title -->
2188
+ <xsl:variable name="preceding-sibling_id" select="$nodes_sections/node[@id = current()/@id]/preceding-sibling::node[1]/@id"/>
2189
+ <xsl:if test="$preceding-sibling_id != ''">
2190
+ <xsl:apply-templates select="parent::*/*[@type = 'section-title' and @id = $preceding-sibling_id and not(@displayorder)]" mode="contents_no_displayorder"/>
2191
+ </xsl:if>
2192
+
2003
2193
  <xsl:apply-templates select="." mode="contents"/>
2004
2194
  </xsl:for-each>
2005
2195
 
@@ -2012,6 +2202,30 @@
2012
2202
  <xsl:sort select="@displayorder" data-type="number"/>
2013
2203
  <xsl:apply-templates select="." mode="contents"/>
2014
2204
  </xsl:for-each>
2205
+ </xsl:template><xsl:template name="processTablesFigures_Contents">
2206
+ <xsl:param name="always"/>
2207
+ <xsl:if test="(//*[contains(local-name(), '-standard')]/*[local-name() = 'misc-container']/*[local-name() = 'toc'][@type='table']/*[local-name() = 'title']) or normalize-space($always) = 'true'">
2208
+ <xsl:call-template name="processTables_Contents"/>
2209
+ </xsl:if>
2210
+ <xsl:if test="(//*[contains(local-name(), '-standard')]/*[local-name() = 'misc-container']/*[local-name() = 'toc'][@type='figure']/*[local-name() = 'title']) or normalize-space($always) = 'true'">
2211
+ <xsl:call-template name="processFigures_Contents"/>
2212
+ </xsl:if>
2213
+ </xsl:template><xsl:template name="processTables_Contents">
2214
+ <tables>
2215
+ <xsl:for-each select="//*[local-name() = 'table'][@id and *[local-name() = 'name'] and normalize-space(@id) != '']">
2216
+ <table id="{@id}" alt-text="{*[local-name() = 'name']}">
2217
+ <xsl:copy-of select="*[local-name() = 'name']"/>
2218
+ </table>
2219
+ </xsl:for-each>
2220
+ </tables>
2221
+ </xsl:template><xsl:template name="processFigures_Contents">
2222
+ <figures>
2223
+ <xsl:for-each select="//*[local-name() = 'figure'][@id and *[local-name() = 'name'] and not(@unnumbered = 'true') and normalize-space(@id) != ''] | //*[@id and starts-with(*[local-name() = 'name'], 'Figure ') and normalize-space(@id) != '']">
2224
+ <figure id="{@id}" alt-text="{*[local-name() = 'name']}">
2225
+ <xsl:copy-of select="*[local-name() = 'name']"/>
2226
+ </figure>
2227
+ </xsl:for-each>
2228
+ </figures>
2015
2229
  </xsl:template><xsl:template name="processPrefaceSectionsDefault">
2016
2230
  <xsl:for-each select="/*/*[local-name()='preface']/*">
2017
2231
  <xsl:sort select="@displayorder" data-type="number"/>
@@ -2077,9 +2291,12 @@
2077
2291
 
2078
2292
 
2079
2293
  </xsl:template><xsl:template match="*[local-name()='legal-statement']//*[local-name()='p']">
2294
+ <xsl:param name="margin"/>
2080
2295
 
2081
2296
  <!-- process in the template 'paragraph' -->
2082
- <xsl:call-template name="paragraph"/>
2297
+ <xsl:call-template name="paragraph">
2298
+ <xsl:with-param name="margin" select="$margin"/>
2299
+ </xsl:call-template>
2083
2300
 
2084
2301
  </xsl:template><xsl:template match="*[local-name()='feedback-statement']">
2085
2302
  <fo:block xsl:use-attribute-sets="feedback-statement-style">
@@ -2091,9 +2308,12 @@
2091
2308
  <xsl:call-template name="title"/>
2092
2309
 
2093
2310
  </xsl:template><xsl:template match="*[local-name()='feedback-statement']//*[local-name()='p']">
2311
+ <xsl:param name="margin"/>
2094
2312
 
2095
2313
  <!-- process in the template 'paragraph' -->
2096
- <xsl:call-template name="paragraph"/>
2314
+ <xsl:call-template name="paragraph">
2315
+ <xsl:with-param name="margin" select="$margin"/>
2316
+ </xsl:call-template>
2097
2317
 
2098
2318
  </xsl:template><xsl:template match="*[local-name()='td']//text() | *[local-name()='th']//text() | *[local-name()='dt']//text() | *[local-name()='dd']//text()" priority="1">
2099
2319
  <!-- <xsl:call-template name="add-zero-spaces"/> -->
@@ -2132,7 +2352,7 @@
2132
2352
  </xsl:call-template>
2133
2353
  </xsl:if>
2134
2354
  </xsl:variable>
2135
- <!-- colwidths=<xsl:copy-of select="$colwidths"/> -->
2355
+ <!-- DEBUG colwidths=<xsl:copy-of select="$colwidths"/> -->
2136
2356
 
2137
2357
 
2138
2358
  <xsl:variable name="margin-side">
@@ -2409,7 +2629,7 @@
2409
2629
  <!-- <xsl:with-param name="text" select="translate(td[$curr-col],'- —:', ' ')"/> -->
2410
2630
  <!-- 2009 thinspace -->
2411
2631
  <!-- <xsl:with-param name="text" select="translate(normalize-space($td_text),'- —:', ' ')"/> -->
2412
- <xsl:with-param name="text" select="normalize-space(translate($string_with_added_zerospaces, '', ' '))"/>
2632
+ <xsl:with-param name="text" select="normalize-space(translate($string_with_added_zerospaces, '​­', ' '))"/> <!-- replace zero-width-space and soft-hyphen to space -->
2413
2633
  </xsl:call-template>
2414
2634
  </xsl:variable>
2415
2635
  <xsl:variable name="max_length">
@@ -2450,8 +2670,7 @@
2450
2670
  </xsl:call-template>
2451
2671
  </xsl:if>
2452
2672
  </xsl:template><xsl:template match="text()" mode="td_text">
2453
- <xsl:variable name="zero-space">​</xsl:variable>
2454
- <xsl:value-of select="translate(., $zero-space, ' ')"/><xsl:text> </xsl:text>
2673
+ <xsl:value-of select="translate(., $zero_width_space, ' ')"/><xsl:text> </xsl:text>
2455
2674
  </xsl:template><xsl:template match="*[local-name()='termsource']" mode="td_text">
2456
2675
  <xsl:value-of select="*[local-name()='origin']/@citeas"/>
2457
2676
  </xsl:template><xsl:template match="*[local-name()='link']" mode="td_text">
@@ -2820,37 +3039,7 @@
2820
3039
 
2821
3040
  <!-- list of footnotes to calculate actual footnotes number -->
2822
3041
  <xsl:variable name="p_fn_">
2823
- <xsl:choose>
2824
- <xsl:when test="@current_fn_number"> <!-- for BSI, footnote reference number calculated already -->
2825
- <fn gen_id="{generate-id(.)}">
2826
- <xsl:copy-of select="@*"/>
2827
- <xsl:copy-of select="node()"/>
2828
- </fn>
2829
- </xsl:when>
2830
- <xsl:otherwise>
2831
- <!-- itetation for:
2832
- footnotes in bibdata/title
2833
- footnotes in bibliography
2834
- footnotes in document's body (except table's head/body/foot and figure text)
2835
- -->
2836
- <xsl:for-each select="ancestor::*[contains(local-name(), '-standard')]/*[local-name() = 'bibdata']/*[local-name() = 'note'][@type='title-footnote']">
2837
- <fn gen_id="{generate-id(.)}">
2838
- <xsl:copy-of select="@*"/>
2839
- <xsl:copy-of select="node()"/>
2840
- </fn>
2841
- </xsl:for-each>
2842
- <xsl:for-each select="ancestor::*[contains(local-name(), '-standard')]/*[local-name()='preface']/* | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='sections']/* | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='annex'] | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='bibliography']/*">
2843
- <xsl:sort select="@displayorder" data-type="number"/>
2844
- <xsl:for-each select=".//*[local-name() = 'bibitem'][ancestor::*[local-name() = 'references']]/*[local-name() = 'note'] | .//*[local-name() = 'fn'][not(ancestor::*[(local-name() = 'table' or local-name() = 'figure') and not(ancestor::*[local-name() = 'name'])])][generate-id(.)=generate-id(key('kfn',@reference)[1])]">
2845
- <!-- copy unique fn -->
2846
- <fn gen_id="{generate-id(.)}">
2847
- <xsl:copy-of select="@*"/>
2848
- <xsl:copy-of select="node()"/>
2849
- </fn>
2850
- </xsl:for-each>
2851
- </xsl:for-each>
2852
- </xsl:otherwise>
2853
- </xsl:choose>
3042
+ <xsl:call-template name="get_fn_list"/>
2854
3043
  </xsl:variable>
2855
3044
  <xsl:variable name="p_fn" select="xalan:nodeset($p_fn_)"/>
2856
3045
 
@@ -2911,6 +3100,38 @@
2911
3100
  <xsl:copy-of select="$footnote_inline"/>
2912
3101
  </xsl:otherwise>
2913
3102
  </xsl:choose>
3103
+ </xsl:template><xsl:template name="get_fn_list">
3104
+ <xsl:choose>
3105
+ <xsl:when test="@current_fn_number"> <!-- for BSI, footnote reference number calculated already -->
3106
+ <fn gen_id="{generate-id(.)}">
3107
+ <xsl:copy-of select="@*"/>
3108
+ <xsl:copy-of select="node()"/>
3109
+ </fn>
3110
+ </xsl:when>
3111
+ <xsl:otherwise>
3112
+ <!-- itetation for:
3113
+ footnotes in bibdata/title
3114
+ footnotes in bibliography
3115
+ footnotes in document's body (except table's head/body/foot and figure text)
3116
+ -->
3117
+ <xsl:for-each select="ancestor::*[contains(local-name(), '-standard')]/*[local-name() = 'bibdata']/*[local-name() = 'note'][@type='title-footnote']">
3118
+ <fn gen_id="{generate-id(.)}">
3119
+ <xsl:copy-of select="@*"/>
3120
+ <xsl:copy-of select="node()"/>
3121
+ </fn>
3122
+ </xsl:for-each>
3123
+ <xsl:for-each select="ancestor::*[contains(local-name(), '-standard')]/*[local-name()='preface']/* | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='sections']/* | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='annex'] | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='bibliography']/*">
3124
+ <xsl:sort select="@displayorder" data-type="number"/>
3125
+ <xsl:for-each select=".//*[local-name() = 'bibitem'][ancestor::*[local-name() = 'references']]/*[local-name() = 'note'] | .//*[local-name() = 'fn'][not(ancestor::*[(local-name() = 'table' or local-name() = 'figure') and not(ancestor::*[local-name() = 'name'])])][generate-id(.)=generate-id(key('kfn',@reference)[1])]">
3126
+ <!-- copy unique fn -->
3127
+ <fn gen_id="{generate-id(.)}">
3128
+ <xsl:copy-of select="@*"/>
3129
+ <xsl:copy-of select="node()"/>
3130
+ </fn>
3131
+ </xsl:for-each>
3132
+ </xsl:for-each>
3133
+ </xsl:otherwise>
3134
+ </xsl:choose>
2914
3135
  </xsl:template><xsl:template name="table_fn_display">
2915
3136
  <xsl:variable name="references">
2916
3137
 
@@ -3082,7 +3303,7 @@
3082
3303
  </fo:inline>
3083
3304
  </xsl:template><xsl:template match="*[local-name()='fn']/text()[normalize-space() != '']">
3084
3305
  <fo:inline><xsl:value-of select="."/></fo:inline>
3085
- </xsl:template><xsl:template match="*[local-name()='fn']/*[local-name()='p']">
3306
+ </xsl:template><xsl:template match="*[local-name()='fn']//*[local-name()='p']">
3086
3307
  <fo:inline>
3087
3308
  <xsl:apply-templates/>
3088
3309
  </fo:inline>
@@ -3445,20 +3666,44 @@
3445
3666
  <fo:inline text-decoration="underline">
3446
3667
  <xsl:apply-templates/>
3447
3668
  </fo:inline>
3448
- </xsl:template><xsl:template match="*[local-name()='add']">
3669
+ </xsl:template><xsl:template match="*[local-name()='add']" name="tag_add">
3449
3670
  <xsl:param name="skip">true</xsl:param>
3671
+ <xsl:param name="block">false</xsl:param>
3672
+ <xsl:param name="type"/>
3673
+ <xsl:param name="text-align"/>
3450
3674
  <xsl:choose>
3451
3675
  <xsl:when test="starts-with(., $ace_tag)"> <!-- examples: ace-tag_A1_start, ace-tag_A2_end, C1_start, AC_start -->
3452
3676
  <xsl:choose>
3453
- <xsl:when test="$skip = 'true' and ((local-name(../..) = 'note' and not(preceding-sibling::node())) or (local-name(..) = 'title' and preceding-sibling::node()[1][local-name() = 'tab'])) and ../node()[last()][local-name() = 'add'][starts-with(text(), $ace_tag)]"><!-- start tag displayed in template name="note" and title --></xsl:when>
3677
+ <xsl:when test="$skip = 'true' and ((local-name(../..) = 'note' and not(preceding-sibling::node())) or (local-name(..) = 'title' and preceding-sibling::node()[1][local-name() = 'tab']) or local-name(..) = 'formattedref' and not(preceding-sibling::node())) and ../node()[last()][local-name() = 'add'][starts-with(text(), $ace_tag)]"><!-- start tag displayed in template name="note" and title --></xsl:when>
3454
3678
  <xsl:otherwise>
3455
- <fo:inline>
3679
+ <xsl:variable name="tag">
3456
3680
  <xsl:call-template name="insertTag">
3457
- <xsl:with-param name="type" select="substring-after(substring-after(., $ace_tag), '_')"/> <!-- start or end -->
3681
+ <xsl:with-param name="type">
3682
+ <xsl:choose>
3683
+ <xsl:when test="$type = ''"><xsl:value-of select="substring-after(substring-after(., $ace_tag), '_')"/> <!-- start or end --></xsl:when>
3684
+ <xsl:otherwise><xsl:value-of select="$type"/></xsl:otherwise>
3685
+ </xsl:choose>
3686
+ </xsl:with-param>
3458
3687
  <xsl:with-param name="kind" select="substring(substring-before(substring-after(., $ace_tag), '_'), 1, 1)"/> <!-- A or C -->
3459
3688
  <xsl:with-param name="value" select="substring(substring-before(substring-after(., $ace_tag), '_'), 2)"/> <!-- 1, 2, C -->
3460
3689
  </xsl:call-template>
3461
- </fo:inline>
3690
+ </xsl:variable>
3691
+ <xsl:choose>
3692
+ <xsl:when test="$block = 'false'">
3693
+ <fo:inline>
3694
+ <xsl:copy-of select="$tag"/>
3695
+ </fo:inline>
3696
+ </xsl:when>
3697
+ <xsl:otherwise>
3698
+ <fo:block> <!-- for around figures -->
3699
+ <xsl:if test="$text-align != ''">
3700
+ <xsl:attribute name="text-align"><xsl:value-of select="$text-align"/></xsl:attribute>
3701
+ </xsl:if>
3702
+ <xsl:copy-of select="$tag"/>
3703
+ </fo:block>
3704
+ </xsl:otherwise>
3705
+ </xsl:choose>
3706
+
3462
3707
  </xsl:otherwise>
3463
3708
  </xsl:choose>
3464
3709
  </xsl:when>
@@ -3817,19 +4062,23 @@
3817
4062
  </xsl:apply-templates>
3818
4063
  </xsl:template><xsl:template name="getLang">
3819
4064
  <xsl:variable name="language_current" select="normalize-space(//*[local-name()='bibdata']//*[local-name()='language'][@current = 'true'])"/>
3820
- <xsl:variable name="language_current_2" select="normalize-space(xalan:nodeset($bibdata)//*[local-name()='bibdata']//*[local-name()='language'][@current = 'true'])"/>
3821
4065
  <xsl:variable name="language">
3822
4066
  <xsl:choose>
3823
4067
  <xsl:when test="$language_current != ''">
3824
4068
  <xsl:value-of select="$language_current"/>
3825
4069
  </xsl:when>
3826
- <xsl:when test="$language_current_2 != ''">
3827
- <xsl:value-of select="$language_current_2"/>
3828
- </xsl:when>
3829
4070
  <xsl:otherwise>
3830
- <xsl:value-of select="//*[local-name()='bibdata']//*[local-name()='language']"/>
3831
- </xsl:otherwise>
3832
- </xsl:choose>
4071
+ <xsl:variable name="language_current_2" select="normalize-space(xalan:nodeset($bibdata)//*[local-name()='bibdata']//*[local-name()='language'][@current = 'true'])"/>
4072
+ <xsl:choose>
4073
+ <xsl:when test="$language_current_2 != ''">
4074
+ <xsl:value-of select="$language_current_2"/>
4075
+ </xsl:when>
4076
+ <xsl:otherwise>
4077
+ <xsl:value-of select="//*[local-name()='bibdata']//*[local-name()='language']"/>
4078
+ </xsl:otherwise>
4079
+ </xsl:choose>
4080
+ </xsl:otherwise>
4081
+ </xsl:choose>
3833
4082
  </xsl:variable>
3834
4083
 
3835
4084
  <xsl:choose>
@@ -4030,6 +4279,9 @@
4030
4279
  </fo:inline>
4031
4280
  </xsl:template><xsl:template match="*[local-name() = 'xref']">
4032
4281
  <fo:basic-link internal-destination="{@target}" fox:alt-text="{@target}" xsl:use-attribute-sets="xref-style">
4282
+ <xsl:if test="parent::*[local-name() = 'add']">
4283
+ <xsl:call-template name="append_add-style"/>
4284
+ </xsl:if>
4033
4285
  <xsl:apply-templates/>
4034
4286
  </fo:basic-link>
4035
4287
  </xsl:template><xsl:template match="*[local-name() = 'formula']" name="formula">
@@ -4044,8 +4296,8 @@
4044
4296
 
4045
4297
  </xsl:if>
4046
4298
  <fo:block-container margin-left="0mm">
4047
- <fo:block id="{@id}" xsl:use-attribute-sets="formula-style">
4048
- <xsl:apply-templates/>
4299
+ <fo:block id="{@id}">
4300
+ <xsl:apply-templates select="node()[not(local-name() = 'name')]"/> <!-- formula's number will be process in 'stem' template -->
4049
4301
  </fo:block>
4050
4302
  </fo:block-container>
4051
4303
  </fo:block-container>
@@ -4057,10 +4309,48 @@
4057
4309
  <fo:inline>
4058
4310
  <xsl:apply-templates/>
4059
4311
  </fo:inline>
4060
- </xsl:template><xsl:template match="*[local-name() = 'formula']/*[local-name() = 'name']"/><xsl:template match="*[local-name() = 'formula']/*[local-name() = 'name']" mode="formula_number"> <!-- show by demand -->
4312
+ </xsl:template><xsl:template match="*[local-name() = 'formula']/*[local-name() = 'name']"> <!-- show in 'stem' template -->
4061
4313
  <xsl:if test="normalize-space() != ''">
4062
4314
  <xsl:text>(</xsl:text><xsl:apply-templates/><xsl:text>)</xsl:text>
4063
4315
  </xsl:if>
4316
+ </xsl:template><xsl:template match="*[local-name() = 'formula'][*[local-name() = 'name']]/*[local-name() = 'stem']">
4317
+ <fo:block xsl:use-attribute-sets="formula-style">
4318
+
4319
+
4320
+
4321
+ <fo:table table-layout="fixed" width="100%">
4322
+ <fo:table-column column-width="95%"/>
4323
+ <fo:table-column column-width="5%"/>
4324
+ <fo:table-body>
4325
+ <fo:table-row>
4326
+ <fo:table-cell display-align="center">
4327
+ <fo:block xsl:use-attribute-sets="formula-stem-block-style">
4328
+
4329
+
4330
+ <xsl:if test="ancestor::*[local-name() ='annex']">
4331
+ <xsl:attribute name="text-align">left</xsl:attribute>
4332
+ <xsl:attribute name="margin-left">7mm</xsl:attribute>
4333
+ </xsl:if>
4334
+
4335
+
4336
+ <xsl:apply-templates/>
4337
+ </fo:block>
4338
+ </fo:table-cell>
4339
+ <fo:table-cell display-align="center">
4340
+ <fo:block xsl:use-attribute-sets="formula-stem-number-style">
4341
+ <xsl:apply-templates select="../*[local-name() = 'name']"/>
4342
+ </fo:block>
4343
+ </fo:table-cell>
4344
+ </fo:table-row>
4345
+ </fo:table-body>
4346
+ </fo:table>
4347
+ </fo:block>
4348
+ </xsl:template><xsl:template match="*[local-name() = 'formula'][not(*[local-name() = 'name'])]/*[local-name() = 'stem']">
4349
+ <fo:block xsl:use-attribute-sets="formula-style">
4350
+ <fo:block xsl:use-attribute-sets="formula-stem-block-style">
4351
+ <xsl:apply-templates/>
4352
+ </fo:block>
4353
+ </fo:block>
4064
4354
  </xsl:template><xsl:template match="*[local-name() = 'note']" name="note">
4065
4355
 
4066
4356
  <fo:block-container id="{@id}" xsl:use-attribute-sets="note-style">
@@ -4107,6 +4397,13 @@
4107
4397
 
4108
4398
 
4109
4399
 
4400
+ <!-- if 'p' contains all text in 'add' first and last elements in first p are 'add' -->
4401
+ <!-- <xsl:if test="*[not(local-name()='name')][1][node()[normalize-space() != ''][1][local-name() = 'add'] and node()[normalize-space() != ''][last()][local-name() = 'add']]"> -->
4402
+ <xsl:if test="*[not(local-name()='name')][1][count(node()[normalize-space() != '']) = 1 and *[local-name() = 'add']]">
4403
+ <xsl:call-template name="append_add-style"/>
4404
+ </xsl:if>
4405
+
4406
+
4110
4407
  <!-- if note contains only one element and first and last childs are `add` ace-tag, then move start ace-tag before NOTE's name-->
4111
4408
  <xsl:if test="count(*[not(local-name() = 'name')]) = 1 and *[not(local-name() = 'name')]/node()[last()][local-name() = 'add'][starts-with(text(), $ace_tag)]">
4112
4409
  <xsl:apply-templates select="*[not(local-name() = 'name')]/node()[1][local-name() = 'add'][starts-with(text(), $ace_tag)]">
@@ -4145,6 +4442,12 @@
4145
4442
 
4146
4443
 
4147
4444
 
4445
+ <!-- if 'p' contains all text in 'add' first and last elements in first p are 'add' -->
4446
+ <!-- <xsl:if test="*[not(local-name()='name')][1][node()[normalize-space() != ''][1][local-name() = 'add'] and node()[normalize-space() != ''][last()][local-name() = 'add']]"> -->
4447
+ <xsl:if test="*[not(local-name()='name')][1][count(node()[normalize-space() != '']) = 1 and *[local-name() = 'add']]">
4448
+ <xsl:call-template name="append_add-style"/>
4449
+ </xsl:if>
4450
+
4148
4451
  <xsl:apply-templates select="*[local-name() = 'name']"/>
4149
4452
 
4150
4453
  </fo:inline>
@@ -4198,6 +4501,7 @@
4198
4501
  </fo:block>
4199
4502
  </xsl:template><xsl:template match="*[local-name() = 'term']">
4200
4503
  <fo:block id="{@id}" xsl:use-attribute-sets="term-style">
4504
+
4201
4505
 
4202
4506
 
4203
4507
 
@@ -4639,7 +4943,11 @@
4639
4943
  <xsl:value-of select="."/>
4640
4944
  </xsl:template><xsl:template match="node()" mode="contents">
4641
4945
  <xsl:apply-templates mode="contents"/>
4642
- </xsl:template><xsl:template match="*[local-name() = 'p'][@type = 'floating-title' or @type = 'section-title']" priority="2" mode="contents">
4946
+ </xsl:template><xsl:template match="*[local-name() = 'preface' or local-name() = 'sections']/*[local-name() = 'p'][@type = 'section-title' and not(@displayorder)]" priority="3" mode="contents"/><xsl:template match="*[local-name() = 'p'][@type = 'section-title' and not(@displayorder)]" mode="contents_no_displayorder">
4947
+ <xsl:call-template name="contents_section-title"/>
4948
+ </xsl:template><xsl:template match="*[local-name() = 'p'][@type = 'section-title']" mode="contents_in_clause">
4949
+ <xsl:call-template name="contents_section-title"/>
4950
+ </xsl:template><xsl:template match="*[local-name() = 'clause']/*[local-name() = 'p'][@type = 'section-title' and (@depth != ../*[local-name() = 'title']/@depth or ../*[local-name() = 'title']/@depth = 1)]" priority="3" mode="contents"/><xsl:template match="*[local-name() = 'p'][@type = 'floating-title' or @type = 'section-title']" priority="2" name="contents_section-title" mode="contents">
4643
4951
  <xsl:variable name="level">
4644
4952
  <xsl:call-template name="getLevel">
4645
4953
  <xsl:with-param name="depth" select="@depth"/>
@@ -4708,13 +5016,14 @@
4708
5016
  <xsl:apply-templates mode="bookmarks"/>
4709
5017
  </xsl:template><xsl:template name="addBookmarks">
4710
5018
  <xsl:param name="contents"/>
4711
- <xsl:if test="xalan:nodeset($contents)//item">
5019
+ <xsl:variable name="contents_nodes" select="xalan:nodeset($contents)"/>
5020
+ <xsl:if test="$contents_nodes//item">
4712
5021
  <fo:bookmark-tree>
4713
5022
  <xsl:choose>
4714
- <xsl:when test="xalan:nodeset($contents)/doc">
5023
+ <xsl:when test="$contents_nodes/doc">
4715
5024
  <xsl:choose>
4716
- <xsl:when test="count(xalan:nodeset($contents)/doc) &gt; 1">
4717
- <xsl:for-each select="xalan:nodeset($contents)/doc">
5025
+ <xsl:when test="count($contents_nodes/doc) &gt; 1">
5026
+ <xsl:for-each select="$contents_nodes/doc">
4718
5027
  <fo:bookmark internal-destination="{contents/item[1]/@id}" starting-state="hide">
4719
5028
  <xsl:if test="@bundle = 'true'">
4720
5029
  <xsl:attribute name="internal-destination"><xsl:value-of select="@firstpage_id"/></xsl:attribute>
@@ -4765,7 +5074,7 @@
4765
5074
  </xsl:for-each>
4766
5075
  </xsl:when>
4767
5076
  <xsl:otherwise>
4768
- <xsl:for-each select="xalan:nodeset($contents)/doc">
5077
+ <xsl:for-each select="$contents_nodes/doc">
4769
5078
 
4770
5079
  <xsl:apply-templates select="contents/item" mode="bookmark"/>
4771
5080
 
@@ -4783,25 +5092,36 @@
4783
5092
  </xsl:choose>
4784
5093
  </xsl:when>
4785
5094
  <xsl:otherwise>
4786
- <xsl:apply-templates select="xalan:nodeset($contents)/contents/item" mode="bookmark"/>
5095
+ <xsl:apply-templates select="$contents_nodes/contents/item" mode="bookmark"/>
5096
+
5097
+ <xsl:call-template name="insertFigureBookmarks">
5098
+ <xsl:with-param name="contents" select="$contents_nodes/contents"/>
5099
+ </xsl:call-template>
5100
+
5101
+ <xsl:call-template name="insertTableBookmarks">
5102
+ <xsl:with-param name="contents" select="$contents_nodes/contents"/>
5103
+ <xsl:with-param name="lang" select="@lang"/>
5104
+ </xsl:call-template>
5105
+
4787
5106
  </xsl:otherwise>
4788
5107
  </xsl:choose>
4789
5108
 
5109
+
4790
5110
 
4791
5111
 
4792
5112
 
4793
5113
 
4794
-
4795
-
5114
+
4796
5115
 
4797
5116
  </fo:bookmark-tree>
4798
5117
  </xsl:if>
4799
5118
  </xsl:template><xsl:template name="insertFigureBookmarks">
4800
5119
  <xsl:param name="contents"/>
4801
- <xsl:if test="xalan:nodeset($contents)/figure">
4802
- <fo:bookmark internal-destination="{xalan:nodeset($contents)/figure[1]/@id}" starting-state="hide">
5120
+ <xsl:variable name="contents_nodes" select="xalan:nodeset($contents)"/>
5121
+ <xsl:if test="$contents_nodes/figure">
5122
+ <fo:bookmark internal-destination="{$contents_nodes/figure[1]/@id}" starting-state="hide">
4803
5123
  <fo:bookmark-title>Figures</fo:bookmark-title>
4804
- <xsl:for-each select="xalan:nodeset($contents)/figure">
5124
+ <xsl:for-each select="$contents_nodes/figure">
4805
5125
  <fo:bookmark internal-destination="{@id}">
4806
5126
  <fo:bookmark-title>
4807
5127
  <xsl:value-of select="normalize-space(title)"/>
@@ -4810,18 +5130,40 @@
4810
5130
  </xsl:for-each>
4811
5131
  </fo:bookmark>
4812
5132
  </xsl:if>
5133
+
5134
+
5135
+ <xsl:if test="$contents_nodes//figures/figure">
5136
+ <fo:bookmark internal-destination="empty_bookmark" starting-state="hide">
5137
+
5138
+
5139
+
5140
+ <xsl:variable name="bookmark-title">
5141
+
5142
+ <xsl:value-of select="$title-list-figures"/>
5143
+
5144
+ </xsl:variable>
5145
+ <fo:bookmark-title><xsl:value-of select="normalize-space($bookmark-title)"/></fo:bookmark-title>
5146
+ <xsl:for-each select="$contents_nodes//figures/figure">
5147
+ <fo:bookmark internal-destination="{@id}">
5148
+ <fo:bookmark-title><xsl:value-of select="normalize-space(.)"/></fo:bookmark-title>
5149
+ </fo:bookmark>
5150
+ </xsl:for-each>
5151
+ </fo:bookmark>
5152
+ </xsl:if>
5153
+
4813
5154
  </xsl:template><xsl:template name="insertTableBookmarks">
4814
5155
  <xsl:param name="contents"/>
4815
5156
  <xsl:param name="lang"/>
4816
- <xsl:if test="xalan:nodeset($contents)/table">
4817
- <fo:bookmark internal-destination="{xalan:nodeset($contents)/table[1]/@id}" starting-state="hide">
5157
+ <xsl:variable name="contents_nodes" select="xalan:nodeset($contents)"/>
5158
+ <xsl:if test="$contents_nodes/table">
5159
+ <fo:bookmark internal-destination="{$contents_nodes/table[1]/@id}" starting-state="hide">
4818
5160
  <fo:bookmark-title>
4819
5161
  <xsl:choose>
4820
5162
  <xsl:when test="$lang = 'fr'">Tableaux</xsl:when>
4821
5163
  <xsl:otherwise>Tables</xsl:otherwise>
4822
5164
  </xsl:choose>
4823
5165
  </fo:bookmark-title>
4824
- <xsl:for-each select="xalan:nodeset($contents)/table">
5166
+ <xsl:for-each select="$contents_nodes/table">
4825
5167
  <fo:bookmark internal-destination="{@id}">
4826
5168
  <fo:bookmark-title>
4827
5169
  <xsl:value-of select="normalize-space(title)"/>
@@ -4830,6 +5172,29 @@
4830
5172
  </xsl:for-each>
4831
5173
  </fo:bookmark>
4832
5174
  </xsl:if>
5175
+
5176
+
5177
+ <xsl:if test="$contents_nodes//tables/table">
5178
+ <fo:bookmark internal-destination="empty_bookmark" starting-state="hide">
5179
+
5180
+
5181
+
5182
+ <xsl:variable name="bookmark-title">
5183
+
5184
+ <xsl:value-of select="$title-list-tables"/>
5185
+
5186
+ </xsl:variable>
5187
+
5188
+ <fo:bookmark-title><xsl:value-of select="$bookmark-title"/></fo:bookmark-title>
5189
+
5190
+ <xsl:for-each select="$contents_nodes//tables/table">
5191
+ <fo:bookmark internal-destination="{@id}">
5192
+ <fo:bookmark-title><xsl:value-of select="normalize-space(.)"/></fo:bookmark-title>
5193
+ </fo:bookmark>
5194
+ </xsl:for-each>
5195
+ </fo:bookmark>
5196
+ </xsl:if>
5197
+
4833
5198
  </xsl:template><xsl:template name="getLangVersion">
4834
5199
  <xsl:param name="lang"/>
4835
5200
  <xsl:param name="doctype" select="''"/>
@@ -5028,12 +5393,140 @@
5028
5393
  </fo:block-container>
5029
5394
  </fo:block-container>
5030
5395
  </xsl:template><xsl:template match="*[local-name()='sourcecode']/text()" priority="2">
5031
- <xsl:variable name="text">
5396
+ <xsl:choose>
5397
+ <xsl:when test="normalize-space($syntax-highlight) = 'true' and normalize-space(../@lang) != ''"> <!-- condition for turn on of highlighting -->
5398
+ <xsl:variable name="syntax" select="java:org.metanorma.fop.Util.syntaxHighlight(., ../@lang)"/>
5399
+ <xsl:choose>
5400
+ <xsl:when test="normalize-space($syntax) != ''"><!-- if there is highlighted result -->
5401
+ <xsl:apply-templates select="xalan:nodeset($syntax)" mode="syntax_highlight"/> <!-- process span tags -->
5402
+ </xsl:when>
5403
+ <xsl:otherwise> <!-- if case of non-succesfull syntax highlight (for instance, unknown lang), process without highlighting -->
5404
+ <xsl:call-template name="add_spaces_to_sourcecode"/>
5405
+ </xsl:otherwise>
5406
+ </xsl:choose>
5407
+ </xsl:when>
5408
+ <xsl:otherwise>
5409
+ <xsl:call-template name="add_spaces_to_sourcecode"/>
5410
+ </xsl:otherwise>
5411
+ </xsl:choose>
5412
+
5413
+ </xsl:template><xsl:template name="add_spaces_to_sourcecode">
5414
+ <xsl:variable name="text_step1">
5032
5415
  <xsl:call-template name="add-zero-spaces-equal"/>
5033
5416
  </xsl:variable>
5034
- <xsl:call-template name="add-zero-spaces-java">
5035
- <xsl:with-param name="text" select="$text"/>
5036
- </xsl:call-template>
5417
+ <xsl:variable name="text_step2">
5418
+ <xsl:call-template name="add-zero-spaces-java">
5419
+ <xsl:with-param name="text" select="$text_step1"/>
5420
+ </xsl:call-template>
5421
+ </xsl:variable>
5422
+ <xsl:value-of select="$text_step2"/>
5423
+ </xsl:template><xsl:template match="*" mode="syntax_highlight">
5424
+ <xsl:apply-templates mode="syntax_highlight"/>
5425
+ </xsl:template><xsl:variable name="syntax_highlight_styles_">
5426
+ <style class="hljs-addition" xsl:use-attribute-sets="hljs-addition"/>
5427
+ <style class="hljs-attr" xsl:use-attribute-sets="hljs-attr"/>
5428
+ <style class="hljs-attribute" xsl:use-attribute-sets="hljs-attribute"/>
5429
+ <style class="hljs-built_in" xsl:use-attribute-sets="hljs-built_in"/>
5430
+ <style class="hljs-bullet" xsl:use-attribute-sets="hljs-bullet"/>
5431
+ <style class="hljs-char_and_escape_" xsl:use-attribute-sets="hljs-char_and_escape_"/>
5432
+ <style class="hljs-code" xsl:use-attribute-sets="hljs-code"/>
5433
+ <style class="hljs-comment" xsl:use-attribute-sets="hljs-comment"/>
5434
+ <style class="hljs-deletion" xsl:use-attribute-sets="hljs-deletion"/>
5435
+ <style class="hljs-doctag" xsl:use-attribute-sets="hljs-doctag"/>
5436
+ <style class="hljs-emphasis" xsl:use-attribute-sets="hljs-emphasis"/>
5437
+ <style class="hljs-formula" xsl:use-attribute-sets="hljs-formula"/>
5438
+ <style class="hljs-keyword" xsl:use-attribute-sets="hljs-keyword"/>
5439
+ <style class="hljs-link" xsl:use-attribute-sets="hljs-link"/>
5440
+ <style class="hljs-literal" xsl:use-attribute-sets="hljs-literal"/>
5441
+ <style class="hljs-meta" xsl:use-attribute-sets="hljs-meta"/>
5442
+ <style class="hljs-meta_hljs-string" xsl:use-attribute-sets="hljs-meta_hljs-string"/>
5443
+ <style class="hljs-meta_hljs-keyword" xsl:use-attribute-sets="hljs-meta_hljs-keyword"/>
5444
+ <style class="hljs-name" xsl:use-attribute-sets="hljs-name"/>
5445
+ <style class="hljs-number" xsl:use-attribute-sets="hljs-number"/>
5446
+ <style class="hljs-operator" xsl:use-attribute-sets="hljs-operator"/>
5447
+ <style class="hljs-params" xsl:use-attribute-sets="hljs-params"/>
5448
+ <style class="hljs-property" xsl:use-attribute-sets="hljs-property"/>
5449
+ <style class="hljs-punctuation" xsl:use-attribute-sets="hljs-punctuation"/>
5450
+ <style class="hljs-quote" xsl:use-attribute-sets="hljs-quote"/>
5451
+ <style class="hljs-regexp" xsl:use-attribute-sets="hljs-regexp"/>
5452
+ <style class="hljs-section" xsl:use-attribute-sets="hljs-section"/>
5453
+ <style class="hljs-selector-attr" xsl:use-attribute-sets="hljs-selector-attr"/>
5454
+ <style class="hljs-selector-class" xsl:use-attribute-sets="hljs-selector-class"/>
5455
+ <style class="hljs-selector-id" xsl:use-attribute-sets="hljs-selector-id"/>
5456
+ <style class="hljs-selector-pseudo" xsl:use-attribute-sets="hljs-selector-pseudo"/>
5457
+ <style class="hljs-selector-tag" xsl:use-attribute-sets="hljs-selector-tag"/>
5458
+ <style class="hljs-string" xsl:use-attribute-sets="hljs-string"/>
5459
+ <style class="hljs-strong" xsl:use-attribute-sets="hljs-strong"/>
5460
+ <style class="hljs-subst" xsl:use-attribute-sets="hljs-subst"/>
5461
+ <style class="hljs-symbol" xsl:use-attribute-sets="hljs-symbol"/>
5462
+ <style class="hljs-tag" xsl:use-attribute-sets="hljs-tag"/>
5463
+ <!-- <style class="hljs-tag_hljs-attr" xsl:use-attribute-sets="hljs-tag_hljs-attr"></style> -->
5464
+ <!-- <style class="hljs-tag_hljs-name" xsl:use-attribute-sets="hljs-tag_hljs-name"></style> -->
5465
+ <style class="hljs-template-tag" xsl:use-attribute-sets="hljs-template-tag"/>
5466
+ <style class="hljs-template-variable" xsl:use-attribute-sets="hljs-template-variable"/>
5467
+ <style class="hljs-title" xsl:use-attribute-sets="hljs-title"/>
5468
+ <style class="hljs-title_and_class_" xsl:use-attribute-sets="hljs-title_and_class_"/>
5469
+ <style class="hljs-title_and_class__and_inherited__" xsl:use-attribute-sets="hljs-title_and_class__and_inherited__"/>
5470
+ <style class="hljs-title_and_function_" xsl:use-attribute-sets="hljs-title_and_function_"/>
5471
+ <style class="hljs-type" xsl:use-attribute-sets="hljs-type"/>
5472
+ <style class="hljs-variable" xsl:use-attribute-sets="hljs-variable"/>
5473
+ <style class="hljs-variable_and_language_" xsl:use-attribute-sets="hljs-variable_and_language_"/>
5474
+ </xsl:variable><xsl:variable name="syntax_highlight_styles" select="xalan:nodeset($syntax_highlight_styles_)"/><xsl:template match="span" mode="syntax_highlight" priority="2">
5475
+ <!-- <fo:inline color="green" font-style="italic"><xsl:apply-templates mode="syntax_highlight"/></fo:inline> -->
5476
+ <fo:inline>
5477
+ <xsl:variable name="classes_">
5478
+ <xsl:call-template name="split">
5479
+ <xsl:with-param name="pText" select="@class"/>
5480
+ <xsl:with-param name="sep" select="' '"/>
5481
+ </xsl:call-template>
5482
+ <!-- a few classes together (_and_ suffix) -->
5483
+ <xsl:if test="contains(@class, 'hljs-char') and contains(@class, 'escape_')">
5484
+ <item>hljs-char_and_escape_</item>
5485
+ </xsl:if>
5486
+ <xsl:if test="contains(@class, 'hljs-title') and contains(@class, 'class_')">
5487
+ <item>hljs-title_and_class_</item>
5488
+ </xsl:if>
5489
+ <xsl:if test="contains(@class, 'hljs-title') and contains(@class, 'class_') and contains(@class, 'inherited__')">
5490
+ <item>hljs-title_and_class__and_inherited__</item>
5491
+ </xsl:if>
5492
+ <xsl:if test="contains(@class, 'hljs-title') and contains(@class, 'function_')">
5493
+ <item>hljs-title_and_function_</item>
5494
+ </xsl:if>
5495
+ <xsl:if test="contains(@class, 'hljs-variable') and contains(@class, 'language_')">
5496
+ <item>hljs-variable_and_language_</item>
5497
+ </xsl:if>
5498
+ <!-- with parent classes (_ suffix) -->
5499
+ <xsl:if test="contains(@class, 'hljs-keyword') and contains(ancestor::*/@class, 'hljs-meta')">
5500
+ <item>hljs-meta_hljs-keyword</item>
5501
+ </xsl:if>
5502
+ <xsl:if test="contains(@class, 'hljs-string') and contains(ancestor::*/@class, 'hljs-meta')">
5503
+ <item>hljs-meta_hljs-string</item>
5504
+ </xsl:if>
5505
+ </xsl:variable>
5506
+ <xsl:variable name="classes" select="xalan:nodeset($classes_)"/>
5507
+
5508
+ <xsl:for-each select="$classes/item">
5509
+ <xsl:variable name="class_name" select="."/>
5510
+ <xsl:for-each select="$syntax_highlight_styles/style[@class = $class_name]/@*[not(local-name() = 'class')]">
5511
+ <xsl:attribute name="{local-name()}"><xsl:value-of select="."/></xsl:attribute>
5512
+ </xsl:for-each>
5513
+ </xsl:for-each>
5514
+
5515
+ <!-- <xsl:variable name="class_name">
5516
+ <xsl:choose>
5517
+ <xsl:when test="@class = 'hljs-attr' and ancestor::*/@class = 'hljs-tag'">hljs-tag_hljs-attr</xsl:when>
5518
+ <xsl:when test="@class = 'hljs-name' and ancestor::*/@class = 'hljs-tag'">hljs-tag_hljs-name</xsl:when>
5519
+ <xsl:when test="@class = 'hljs-string' and ancestor::*/@class = 'hljs-meta'">hljs-meta_hljs-string</xsl:when>
5520
+ <xsl:otherwise><xsl:value-of select="@class"/></xsl:otherwise>
5521
+ </xsl:choose>
5522
+ </xsl:variable>
5523
+ <xsl:for-each select="$syntax_highlight_styles/style[@class = $class_name]/@*[not(local-name() = 'class')]">
5524
+ <xsl:attribute name="{local-name()}"><xsl:value-of select="."/></xsl:attribute>
5525
+ </xsl:for-each> -->
5526
+
5527
+ <xsl:apply-templates mode="syntax_highlight"/></fo:inline>
5528
+ </xsl:template><xsl:template match="text()" mode="syntax_highlight" priority="2">
5529
+ <xsl:call-template name="add_spaces_to_sourcecode"/>
5037
5530
  </xsl:template><xsl:template match="*[local-name() = 'sourcecode']/*[local-name() = 'name']">
5038
5531
  <xsl:if test="normalize-space() != ''">
5039
5532
  <fo:block xsl:use-attribute-sets="sourcecode-name-style">
@@ -5362,6 +5855,8 @@
5362
5855
  </xsl:otherwise>
5363
5856
  </xsl:choose> -->
5364
5857
  </fo:block>
5858
+ </xsl:template><xsl:template match="*[local-name() = 'termsource']/text()[starts-with(., '[SOURCE: Adapted from: ')]" priority="2">
5859
+ <xsl:text>[</xsl:text><xsl:value-of select="substring-after(., '[SOURCE: ')"/>
5365
5860
  </xsl:template><xsl:template match="*[local-name() = 'termsource']/text()">
5366
5861
  <xsl:if test="normalize-space() != ''">
5367
5862
  <xsl:value-of select="."/>
@@ -5408,11 +5903,14 @@
5408
5903
 
5409
5904
 
5410
5905
  <fo:block-container margin-left="0mm">
5411
-
5412
- <fo:block xsl:use-attribute-sets="quote-style">
5906
+ <fo:block-container xsl:use-attribute-sets="quote-style">
5413
5907
 
5414
- <xsl:apply-templates select="./node()[not(local-name() = 'author') and not(local-name() = 'source')]"/> <!-- process all nested nodes, except author and source -->
5415
- </fo:block>
5908
+ <fo:block-container margin-left="0mm" margin-right="0mm">
5909
+ <fo:block role="BlockQuote">
5910
+ <xsl:apply-templates select="./node()[not(local-name() = 'author') and not(local-name() = 'source')]"/> <!-- process all nested nodes, except author and source -->
5911
+ </fo:block>
5912
+ </fo:block-container>
5913
+ </fo:block-container>
5416
5914
  <xsl:if test="*[local-name() = 'author'] or *[local-name() = 'source']">
5417
5915
  <fo:block xsl:use-attribute-sets="quote-source-style">
5418
5916
  <!-- — ISO, ISO 7301:2011, Clause 1 -->
@@ -5433,26 +5931,11 @@
5433
5931
  </xsl:template><xsl:template match="*[local-name() = 'author']">
5434
5932
  <xsl:text>— </xsl:text>
5435
5933
  <xsl:apply-templates/>
5436
- </xsl:template><xsl:variable name="bibitem_hidden_">
5437
- <xsl:for-each select="//*[local-name() = 'bibitem'][@hidden='true']">
5438
- <xsl:copy-of select="."/>
5439
- </xsl:for-each>
5440
- <xsl:for-each select="//*[local-name() = 'references'][@hidden='true']/*[local-name() = 'bibitem']">
5441
- <xsl:copy-of select="."/>
5442
- </xsl:for-each>
5443
- </xsl:variable><xsl:variable name="bibitem_hidden" select="xalan:nodeset($bibitem_hidden_)"/><xsl:template match="*[local-name() = 'eref']">
5444
-
5445
- <xsl:variable name="bibitemid">
5446
- <xsl:choose>
5447
- <!-- <xsl:when test="//*[local-name() = 'bibitem'][@hidden='true' and @id = current()/@bibitemid]"></xsl:when>
5448
- <xsl:when test="//*[local-name() = 'references'][@hidden='true']/*[local-name() = 'bibitem'][@id = current()/@bibitemid]"></xsl:when> -->
5449
- <xsl:when test="$bibitem_hidden/*[local-name() = 'bibitem'][@id = current()/@bibitemid]"/>
5450
- <xsl:otherwise><xsl:value-of select="@bibitemid"/></xsl:otherwise>
5451
- </xsl:choose>
5452
- </xsl:variable>
5453
-
5934
+ </xsl:template><xsl:template match="*[local-name() = 'eref']">
5935
+ <xsl:variable name="current_bibitemid" select="@bibitemid"/>
5936
+ <xsl:variable name="external-destination" select="normalize-space(key('bibitems', $current_bibitemid)/*[local-name() = 'uri'][@type = 'citation'])"/>
5454
5937
  <xsl:choose>
5455
- <xsl:when test="normalize-space($bibitemid) != ''"> <!-- if in the bibliography there is the item with @bibitemid (and not hidden), then create link -->
5938
+ <xsl:when test="$external-destination != '' or not(key('bibitems_hidden', $current_bibitemid))"> <!-- if in the bibliography there is the item with @bibitemid (and not hidden), then create link (internal to the bibitem or external) -->
5456
5939
  <fo:inline xsl:use-attribute-sets="eref-style">
5457
5940
  <xsl:if test="@type = 'footnote'">
5458
5941
  <xsl:attribute name="keep-together.within-line">always</xsl:attribute>
@@ -5466,8 +5949,8 @@
5466
5949
  <xsl:variable name="text" select="normalize-space()"/>
5467
5950
 
5468
5951
 
5469
-
5470
- <fo:basic-link internal-destination="{@bibitemid}" fox:alt-text="{@citeas}">
5952
+
5953
+ <fo:basic-link fox:alt-text="{@citeas}">
5471
5954
  <xsl:if test="normalize-space(@citeas) = ''">
5472
5955
  <xsl:attribute name="fox:alt-text"><xsl:value-of select="."/></xsl:attribute>
5473
5956
  </xsl:if>
@@ -5477,14 +5960,21 @@
5477
5960
 
5478
5961
  </xsl:if>
5479
5962
 
5480
-
5963
+ <xsl:choose>
5964
+ <xsl:when test="$external-destination != ''"> <!-- external hyperlink -->
5965
+ <xsl:attribute name="external-destination"><xsl:value-of select="$external-destination"/></xsl:attribute>
5966
+ </xsl:when>
5967
+ <xsl:otherwise>
5968
+ <xsl:attribute name="internal-destination"><xsl:value-of select="@bibitemid"/></xsl:attribute>
5969
+ </xsl:otherwise>
5970
+ </xsl:choose>
5481
5971
 
5482
5972
  <xsl:apply-templates/>
5483
5973
  </fo:basic-link>
5484
-
5974
+
5485
5975
  </fo:inline>
5486
5976
  </xsl:when>
5487
- <xsl:otherwise>
5977
+ <xsl:otherwise> <!-- if there is key('bibitems_hidden', $current_bibitemid) -->
5488
5978
  <fo:inline><xsl:apply-templates/></fo:inline>
5489
5979
  </xsl:otherwise>
5490
5980
  </xsl:choose>
@@ -5557,6 +6047,31 @@
5557
6047
  <xsl:with-param name="count" select="$count - 1"/>
5558
6048
  </xsl:call-template>
5559
6049
  </xsl:if>
6050
+ </xsl:template><xsl:template match="*[local-name() = 'preferred']">
6051
+ <xsl:variable name="level">
6052
+ <xsl:call-template name="getLevel"/>
6053
+ </xsl:variable>
6054
+ <xsl:variable name="font-size">
6055
+ inherit
6056
+ </xsl:variable>
6057
+ <xsl:variable name="levelTerm">
6058
+ <xsl:call-template name="getLevelTermName"/>
6059
+ </xsl:variable>
6060
+ <fo:block font-size="{normalize-space($font-size)}" role="H{$levelTerm}" xsl:use-attribute-sets="preferred-block-style">
6061
+
6062
+
6063
+
6064
+ <xsl:if test="parent::*[local-name() = 'term'] and not(preceding-sibling::*[local-name() = 'preferred'])"> <!-- if first preffered in term, then display term's name -->
6065
+ <fo:block xsl:use-attribute-sets="term-name-style">
6066
+ <xsl:apply-templates select="ancestor::*[local-name() = 'term'][1]/*[local-name() = 'name']"/>
6067
+ </fo:block>
6068
+ </xsl:if>
6069
+
6070
+ <fo:block xsl:use-attribute-sets="preferred-term-style">
6071
+ <xsl:call-template name="setStyle_preferred"/>
6072
+ <xsl:apply-templates/>
6073
+ </fo:block>
6074
+ </fo:block>
5560
6075
  </xsl:template><xsl:template match="*[local-name() = 'domain']">
5561
6076
  <fo:inline xsl:use-attribute-sets="domain-style">&lt;<xsl:apply-templates/>&gt;</fo:inline>
5562
6077
  <xsl:text> </xsl:text>
@@ -5652,24 +6167,8 @@
5652
6167
  <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),' ',' ')"/>
5653
6168
  </xsl:template><xsl:variable name="ul_labels_">
5654
6169
 
5655
-
5656
-
5657
-
5658
-
5659
-
5660
-
5661
-
5662
-
5663
-
5664
-
5665
-
5666
-
5667
-
5668
-
5669
-
5670
-
5671
- <label>•</label>
5672
-
6170
+ <label>•</label>
6171
+
5673
6172
  </xsl:variable><xsl:variable name="ul_labels" select="xalan:nodeset($ul_labels_)"/><xsl:template name="setULLabel">
5674
6173
  <xsl:variable name="list_level_" select="count(ancestor::*[local-name() = 'ul']) + count(ancestor::*[local-name() = 'ol'])"/>
5675
6174
  <xsl:variable name="list_level">
@@ -5695,6 +6194,91 @@
5695
6194
  </xsl:template><xsl:template match="label" mode="ul_labels">
5696
6195
  <xsl:copy-of select="@*[not(local-name() = 'level')]"/>
5697
6196
  <xsl:value-of select="."/>
6197
+ </xsl:template><xsl:template name="getListItemFormat">
6198
+ <!-- Example: for BSI <?list-type loweralpha?> -->
6199
+ <xsl:variable name="processing_instruction_type" select="normalize-space(../preceding-sibling::*[1]/processing-instruction('list-type'))"/>
6200
+ <xsl:choose>
6201
+ <xsl:when test="local-name(..) = 'ul'">
6202
+ <xsl:choose>
6203
+ <xsl:when test="normalize-space($processing_instruction_type) = 'simple'"/>
6204
+ <xsl:otherwise><xsl:call-template name="setULLabel"/></xsl:otherwise>
6205
+ </xsl:choose>
6206
+ </xsl:when>
6207
+ <xsl:otherwise> <!-- for ordered lists 'ol' -->
6208
+
6209
+ <!-- Example: for BSI <?list-start 2?> -->
6210
+ <xsl:variable name="processing_instruction_start" select="normalize-space(../preceding-sibling::*[1]/processing-instruction('list-start'))"/>
6211
+
6212
+ <xsl:variable name="start_value">
6213
+ <xsl:choose>
6214
+ <xsl:when test="normalize-space($processing_instruction_start) != ''">
6215
+ <xsl:value-of select="number($processing_instruction_start) - 1"/><!-- if start="3" then start_value=2 + xsl:number(1) = 3 -->
6216
+ </xsl:when>
6217
+ <xsl:when test="normalize-space(../@start) != ''">
6218
+ <xsl:value-of select="number(../@start) - 1"/><!-- if start="3" then start_value=2 + xsl:number(1) = 3 -->
6219
+ </xsl:when>
6220
+ <xsl:otherwise>0</xsl:otherwise>
6221
+ </xsl:choose>
6222
+ </xsl:variable>
6223
+
6224
+ <xsl:variable name="curr_value"><xsl:number/></xsl:variable>
6225
+
6226
+ <xsl:variable name="type">
6227
+ <xsl:choose>
6228
+ <xsl:when test="normalize-space($processing_instruction_type) != ''"><xsl:value-of select="$processing_instruction_type"/></xsl:when>
6229
+ <xsl:when test="normalize-space(../@type) != ''"><xsl:value-of select="../@type"/></xsl:when>
6230
+
6231
+ <xsl:otherwise> <!-- if no @type or @class = 'steps' -->
6232
+
6233
+ <xsl:variable name="list_level_" select="count(ancestor::*[local-name() = 'ul']) + count(ancestor::*[local-name() = 'ol'])"/>
6234
+ <xsl:variable name="list_level">
6235
+ <xsl:choose>
6236
+ <xsl:when test="$list_level_ &lt;= 5"><xsl:value-of select="$list_level_"/></xsl:when>
6237
+ <xsl:otherwise><xsl:value-of select="$list_level_ mod 5"/></xsl:otherwise>
6238
+ </xsl:choose>
6239
+ </xsl:variable>
6240
+
6241
+ <xsl:choose>
6242
+ <xsl:when test="$list_level mod 5 = 0">roman_upper</xsl:when> <!-- level 5 -->
6243
+ <xsl:when test="$list_level mod 4 = 0">alphabet_upper</xsl:when> <!-- level 4 -->
6244
+ <xsl:when test="$list_level mod 3 = 0">roman</xsl:when> <!-- level 3 -->
6245
+ <xsl:when test="$list_level mod 2 = 0 and ancestor::*/@class = 'steps'">alphabet</xsl:when> <!-- level 2 and @class = 'steps'-->
6246
+ <xsl:when test="$list_level mod 2 = 0">arabic</xsl:when> <!-- level 2 -->
6247
+ <xsl:otherwise> <!-- level 1 -->
6248
+ <xsl:choose>
6249
+ <xsl:when test="ancestor::*/@class = 'steps'">arabic</xsl:when>
6250
+ <xsl:otherwise>alphabet</xsl:otherwise>
6251
+ </xsl:choose>
6252
+ </xsl:otherwise>
6253
+ </xsl:choose>
6254
+
6255
+ </xsl:otherwise>
6256
+ </xsl:choose>
6257
+ </xsl:variable>
6258
+
6259
+ <xsl:variable name="format">
6260
+ <xsl:choose>
6261
+ <xsl:when test="$type = 'arabic'">
6262
+ 1)
6263
+ </xsl:when>
6264
+ <xsl:when test="$type = 'alphabet'">
6265
+ a)
6266
+ </xsl:when>
6267
+ <xsl:when test="$type = 'alphabet_upper'">
6268
+ A.
6269
+ </xsl:when>
6270
+ <xsl:when test="$type = 'roman'">
6271
+ i)
6272
+ </xsl:when>
6273
+ <xsl:when test="$type = 'roman_upper'">I.</xsl:when>
6274
+ <xsl:otherwise>1.</xsl:otherwise> <!-- for any case, if $type has non-determined value, not using -->
6275
+ </xsl:choose>
6276
+ </xsl:variable>
6277
+
6278
+ <xsl:number value="$start_value + $curr_value" format="{normalize-space($format)}" lang="en"/>
6279
+
6280
+ </xsl:otherwise>
6281
+ </xsl:choose>
5698
6282
  </xsl:template><xsl:template match="*[local-name() = 'ul'] | *[local-name() = 'ol']">
5699
6283
  <xsl:choose>
5700
6284
  <xsl:when test="parent::*[local-name() = 'note'] or parent::*[local-name() = 'termnote']">
@@ -5710,18 +6294,71 @@
5710
6294
 
5711
6295
  <fo:block-container margin-left="0mm">
5712
6296
  <fo:block>
5713
- <xsl:apply-templates select="." mode="ul_ol"/>
6297
+ <xsl:apply-templates select="." mode="list"/>
5714
6298
  </fo:block>
5715
6299
  </fo:block-container>
5716
6300
  </fo:block-container>
5717
6301
  </xsl:when>
5718
6302
  <xsl:otherwise>
5719
6303
  <fo:block>
5720
- <xsl:apply-templates select="." mode="ul_ol"/>
6304
+ <xsl:apply-templates select="." mode="list"/>
5721
6305
  </fo:block>
5722
6306
  </xsl:otherwise>
5723
6307
  </xsl:choose>
5724
- </xsl:template><xsl:variable name="index" select="document($external_index)"/><xsl:variable name="dash" select="'–'"/><xsl:variable name="bookmark_in_fn">
6308
+ </xsl:template><xsl:template match="*[local-name()='ul'] | *[local-name()='ol']" mode="list" name="list">
6309
+ <fo:list-block xsl:use-attribute-sets="list-style">
6310
+
6311
+
6312
+
6313
+
6314
+
6315
+
6316
+
6317
+
6318
+
6319
+ <xsl:apply-templates select="node()[not(local-name() = 'note')]"/>
6320
+ </fo:list-block>
6321
+ <!-- <xsl:for-each select="./iho:note">
6322
+ <xsl:call-template name="note"/>
6323
+ </xsl:for-each> -->
6324
+ <xsl:apply-templates select="./*[local-name() = 'note']"/>
6325
+ </xsl:template><xsl:template match="*[local-name()='li']">
6326
+ <fo:list-item xsl:use-attribute-sets="list-item-style">
6327
+ <xsl:copy-of select="@id"/>
6328
+
6329
+
6330
+
6331
+ <fo:list-item-label end-indent="label-end()">
6332
+ <fo:block xsl:use-attribute-sets="list-item-label-style">
6333
+
6334
+
6335
+
6336
+ <!-- if 'p' contains all text in 'add' first and last elements in first p are 'add' -->
6337
+ <xsl:if test="*[1][count(node()[normalize-space() != '']) = 1 and *[local-name() = 'add']]">
6338
+ <xsl:call-template name="append_add-style"/>
6339
+ </xsl:if>
6340
+
6341
+ <xsl:call-template name="getListItemFormat"/>
6342
+ </fo:block>
6343
+ </fo:list-item-label>
6344
+ <fo:list-item-body start-indent="body-start()" xsl:use-attribute-sets="list-item-body-style">
6345
+ <fo:block>
6346
+
6347
+
6348
+
6349
+
6350
+
6351
+ <xsl:apply-templates/>
6352
+
6353
+ <!-- <xsl:apply-templates select="node()[not(local-name() = 'note')]" />
6354
+
6355
+ <xsl:for-each select="./bsi:note">
6356
+ <xsl:call-template name="note"/>
6357
+ </xsl:for-each> -->
6358
+ </fo:block>
6359
+ </fo:list-item-body>
6360
+ </fo:list-item>
6361
+ </xsl:template><xsl:variable name="index" select="document($external_index)"/><xsl:variable name="bookmark_in_fn">
5725
6362
  <xsl:for-each select="//*[local-name() = 'bookmark'][ancestor::*[local-name() = 'fn']]">
5726
6363
  <bookmark><xsl:value-of select="@id"/></bookmark>
5727
6364
  </xsl:for-each>
@@ -5743,7 +6380,7 @@
5743
6380
  <!-- split <xref target="bm1" to="End" pagenumber="true"> to two xref:
5744
6381
  <xref target="bm1" pagenumber="true"> and <xref target="End" pagenumber="true"> -->
5745
6382
  <xsl:if test="@to">
5746
- <xsl:value-of select="$dash"/>
6383
+ <xsl:value-of select="$en_dash"/>
5747
6384
  <xsl:copy>
5748
6385
  <xsl:copy-of select="@*"/>
5749
6386
  <xsl:attribute name="target"><xsl:value-of select="@to"/></xsl:attribute>
@@ -5768,7 +6405,7 @@
5768
6405
  <xsl:param name="target"/>
5769
6406
  <!-- <node></node> -->
5770
6407
  <xsl:choose>
5771
- <xsl:when test="self::text() and (normalize-space(.) = ',' or normalize-space(.) = $dash) and $remove = 'true'">
6408
+ <xsl:when test="self::text() and (normalize-space(.) = ',' or normalize-space(.) = $en_dash) and $remove = 'true'">
5772
6409
  <!-- skip text (i.e. remove it) and process next element -->
5773
6410
  <!-- [removed_<xsl:value-of select="."/>] -->
5774
6411
  <xsl:apply-templates select="following-sibling::node()[1]" mode="process_li_element">
@@ -5852,12 +6489,22 @@
5852
6489
  </xsl:variable>
5853
6490
  <xsl:variable name="xref_number"><xsl:number count="*[local-name() = 'xref']"/></xsl:variable>
5854
6491
  <xsl:value-of select="concat($docid, '_', $item_number, '_', $xref_number)"/> <!-- $level, '_', -->
6492
+ </xsl:template><xsl:template match="*[local-name() = 'indexsect']/*[local-name() = 'title']" priority="4">
6493
+ <fo:block xsl:use-attribute-sets="indexsect-title-style">
6494
+ <!-- Index -->
6495
+ <xsl:apply-templates/>
6496
+ </fo:block>
6497
+ </xsl:template><xsl:template match="*[local-name() = 'indexsect']/*[local-name() = 'clause']/*[local-name() = 'title']" priority="4">
6498
+ <!-- Letter A, B, C, ... -->
6499
+ <fo:block xsl:use-attribute-sets="indexsect-clause-title-style">
6500
+ <xsl:apply-templates/>
6501
+ </fo:block>
5855
6502
  </xsl:template><xsl:template match="*[local-name() = 'indexsect']/*[local-name() = 'clause']" priority="4">
5856
6503
  <xsl:apply-templates/>
5857
6504
  <fo:block>
5858
- <xsl:if test="following-sibling::*[local-name() = 'clause']">
5859
- <fo:block> </fo:block>
5860
- </xsl:if>
6505
+ <xsl:if test="following-sibling::*[local-name() = 'clause']">
6506
+ <fo:block> </fo:block>
6507
+ </xsl:if>
5861
6508
  </fo:block>
5862
6509
  </xsl:template><xsl:template match="*[local-name() = 'indexsect']//*[local-name() = 'ul']" priority="4">
5863
6510
  <xsl:apply-templates/>
@@ -5867,6 +6514,9 @@
5867
6514
 
5868
6515
  <xsl:apply-templates/>
5869
6516
  </fo:block>
6517
+ </xsl:template><xsl:template match="*[local-name() = 'indexsect']//*[local-name() = 'li']/text()">
6518
+ <!-- to split by '_' and other chars -->
6519
+ <xsl:call-template name="add-zero-spaces-java"/>
5870
6520
  </xsl:template><xsl:template match="*[local-name() = 'bookmark']" name="bookmark">
5871
6521
  <fo:inline id="{@id}" font-size="1pt"/>
5872
6522
  </xsl:template><xsl:template match="*[local-name() = 'errata']">
@@ -6025,23 +6675,45 @@
6025
6675
  <xsl:apply-templates/>
6026
6676
  </fo:inline>
6027
6677
  </xsl:template><xsl:template match="*[local-name() = 'bibitem']/*[local-name() = 'note']" priority="2">
6678
+
6679
+ <!-- list of footnotes to calculate actual footnotes number -->
6680
+ <xsl:variable name="p_fn_">
6681
+ <xsl:call-template name="get_fn_list"/>
6682
+ </xsl:variable>
6683
+ <xsl:variable name="p_fn" select="xalan:nodeset($p_fn_)"/>
6684
+ <xsl:variable name="gen_id" select="generate-id(.)"/>
6685
+ <xsl:variable name="lang" select="ancestor::*[contains(local-name(), '-standard')]/*[local-name()='bibdata']//*[local-name()='language'][@current = 'true']"/>
6686
+ <!-- fn sequence number in document -->
6687
+ <xsl:variable name="current_fn_number">
6688
+ <xsl:choose>
6689
+ <xsl:when test="@current_fn_number"><xsl:value-of select="@current_fn_number"/></xsl:when> <!-- for BSI -->
6690
+ <xsl:otherwise>
6691
+ <!-- <xsl:value-of select="count($p_fn//fn[@reference = $reference]/preceding-sibling::fn) + 1" /> -->
6692
+ <xsl:value-of select="count($p_fn//fn[@gen_id = $gen_id]/preceding-sibling::fn) + 1"/>
6693
+ </xsl:otherwise>
6694
+ </xsl:choose>
6695
+ </xsl:variable>
6028
6696
  <fo:footnote>
6029
6697
  <xsl:variable name="number">
6030
6698
 
6031
- <xsl:number level="any" count="*[local-name() = 'bibitem']/*[local-name() = 'note']"/>
6699
+ <xsl:value-of select="$current_fn_number"/>
6032
6700
 
6033
6701
  </xsl:variable>
6702
+
6703
+ <xsl:variable name="current_fn_number_text">
6704
+ <xsl:value-of select="$number"/>
6705
+
6706
+ </xsl:variable>
6707
+
6034
6708
  <fo:inline xsl:use-attribute-sets="bibitem-note-fn-style">
6035
- <fo:basic-link internal-destination="{generate-id()}" fox:alt-text="footnote {$number}">
6036
- <xsl:value-of select="$number"/>
6037
-
6709
+ <fo:basic-link internal-destination="{$gen_id}" fox:alt-text="footnote {$number}">
6710
+ <xsl:value-of select="$current_fn_number_text"/>
6038
6711
  </fo:basic-link>
6039
6712
  </fo:inline>
6040
6713
  <fo:footnote-body>
6041
6714
  <fo:block xsl:use-attribute-sets="bibitem-note-fn-body-style">
6042
- <fo:inline id="{generate-id()}" xsl:use-attribute-sets="bibitem-note-fn-number-style">
6043
- <xsl:value-of select="$number"/>
6044
-
6715
+ <fo:inline id="{$gen_id}" xsl:use-attribute-sets="bibitem-note-fn-number-style">
6716
+ <xsl:value-of select="$current_fn_number_text"/>
6045
6717
  </fo:inline>
6046
6718
  <xsl:apply-templates/>
6047
6719
  </fo:block>
@@ -6169,7 +6841,7 @@
6169
6841
  </fo:table-body>
6170
6842
  </fo:table>
6171
6843
  </fo:block>
6172
- </xsl:template><xsl:template match="*[local-name() = 'toc']//*[local-name() = 'li']">
6844
+ </xsl:template><xsl:template match="*[local-name() = 'toc']//*[local-name() = 'li']" priority="2">
6173
6845
  <fo:table-row min-height="5mm">
6174
6846
  <xsl:apply-templates/>
6175
6847
  </fo:table-row>
@@ -6294,6 +6966,78 @@
6294
6966
  <xsl:apply-templates/>
6295
6967
  </fo:block>
6296
6968
 
6969
+ </xsl:template><xsl:template match="@*|node()" mode="update_xml_step1">
6970
+ <xsl:copy>
6971
+ <xsl:apply-templates select="@*|node()" mode="update_xml_step1"/>
6972
+ </xsl:copy>
6973
+ </xsl:template><xsl:template match="*[local-name() = 'preface']" mode="update_xml_step1">
6974
+ <xsl:copy>
6975
+ <xsl:copy-of select="@*"/>
6976
+
6977
+ <xsl:variable name="nodes_preface_">
6978
+ <xsl:for-each select="*">
6979
+ <node id="{@id}"/>
6980
+ </xsl:for-each>
6981
+ </xsl:variable>
6982
+ <xsl:variable name="nodes_preface" select="xalan:nodeset($nodes_preface_)"/>
6983
+
6984
+ <xsl:for-each select="*">
6985
+ <xsl:sort select="@displayorder" data-type="number"/>
6986
+
6987
+ <!-- process Section's title -->
6988
+ <xsl:variable name="preceding-sibling_id" select="$nodes_preface/node[@id = current()/@id]/preceding-sibling::node[1]/@id"/>
6989
+ <xsl:if test="$preceding-sibling_id != ''">
6990
+ <xsl:apply-templates select="parent::*/*[@type = 'section-title' and @id = $preceding-sibling_id and not(@displayorder)]" mode="update_xml_step1"/>
6991
+ </xsl:if>
6992
+
6993
+ <xsl:choose>
6994
+ <xsl:when test="@type = 'section-title' and not(@displayorder)"><!-- skip, don't copy, because copied in above 'apply-templates' --></xsl:when>
6995
+ <xsl:otherwise>
6996
+ <xsl:apply-templates select="." mode="update_xml_step1"/>
6997
+ </xsl:otherwise>
6998
+ </xsl:choose>
6999
+
7000
+ </xsl:for-each>
7001
+ </xsl:copy>
7002
+ </xsl:template><xsl:template match="*[local-name() = 'sections']" mode="update_xml_step1">
7003
+ <xsl:copy>
7004
+ <xsl:copy-of select="@*"/>
7005
+
7006
+ <xsl:variable name="nodes_sections_">
7007
+ <xsl:for-each select="*">
7008
+ <node id="{@id}"/>
7009
+ </xsl:for-each>
7010
+ </xsl:variable>
7011
+ <xsl:variable name="nodes_sections" select="xalan:nodeset($nodes_sections_)"/>
7012
+
7013
+ <!-- move section 'Normative references' inside 'sections' -->
7014
+ <xsl:for-each select="* | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='bibliography']/*[local-name()='references'][@normative='true'] | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='bibliography']/*[local-name()='clause'][*[local-name()='references'][@normative='true']]">
7015
+ <xsl:sort select="@displayorder" data-type="number"/>
7016
+
7017
+ <!-- process Section's title -->
7018
+ <xsl:variable name="preceding-sibling_id" select="$nodes_sections/node[@id = current()/@id]/preceding-sibling::node[1]/@id"/>
7019
+ <xsl:if test="$preceding-sibling_id != ''">
7020
+ <xsl:apply-templates select="parent::*/*[@type = 'section-title' and @id = $preceding-sibling_id and not(@displayorder)]" mode="update_xml_step1"/>
7021
+ </xsl:if>
7022
+
7023
+ <xsl:choose>
7024
+ <xsl:when test="@type = 'section-title' and not(@displayorder)"><!-- skip, don't copy, because copied in above 'apply-templates' --></xsl:when>
7025
+ <xsl:otherwise>
7026
+ <xsl:apply-templates select="." mode="update_xml_step1"/>
7027
+ </xsl:otherwise>
7028
+ </xsl:choose>
7029
+
7030
+ </xsl:for-each>
7031
+ </xsl:copy>
7032
+ </xsl:template><xsl:template match="*[local-name() = 'bibliography']" mode="update_xml_step1">
7033
+ <xsl:copy>
7034
+ <xsl:copy-of select="@*"/>
7035
+ <!-- copy all elements from bibliography except 'Normative references' (moved to 'sections') -->
7036
+ <xsl:for-each select="*[not(@normative='true') and not(*[*[@normative='true']])]">
7037
+ <xsl:sort select="@displayorder" data-type="number"/>
7038
+ <xsl:apply-templates select="." mode="update_xml_step1"/>
7039
+ </xsl:for-each>
7040
+ </xsl:copy>
6297
7041
  </xsl:template><xsl:template name="convertDate">
6298
7042
  <xsl:param name="date"/>
6299
7043
  <xsl:param name="format" select="'short'"/>
@@ -6407,9 +7151,6 @@
6407
7151
  <xsl:otherwise><xsl:value-of select="$charAtEnd"/></xsl:otherwise>
6408
7152
  </xsl:choose>
6409
7153
  </xsl:template><xsl:template name="addPDFUAmeta">
6410
- <xsl:variable name="lang">
6411
- <xsl:call-template name="getLang"/>
6412
- </xsl:variable>
6413
7154
  <pdf:catalog xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf">
6414
7155
  <pdf:dictionary type="normal" key="ViewerPreferences">
6415
7156
  <pdf:boolean key="DisplayDocTitle">true</pdf:boolean>
@@ -6637,10 +7378,12 @@
6637
7378
  <xsl:param name="key"/>
6638
7379
  <xsl:param name="formatted">false</xsl:param>
6639
7380
  <xsl:param name="lang"/>
7381
+ <xsl:param name="returnEmptyIfNotFound">false</xsl:param>
6640
7382
 
6641
7383
  <xsl:variable name="curr_lang">
6642
7384
  <xsl:choose>
6643
7385
  <xsl:when test="$lang != ''"><xsl:value-of select="$lang"/></xsl:when>
7386
+ <xsl:when test="$returnEmptyIfNotFound = 'true'"/>
6644
7387
  <xsl:otherwise>
6645
7388
  <xsl:call-template name="getLang"/>
6646
7389
  </xsl:otherwise>
@@ -6675,6 +7418,7 @@
6675
7418
  </xsl:otherwise>
6676
7419
  </xsl:choose>
6677
7420
  </xsl:when>
7421
+ <xsl:when test="$returnEmptyIfNotFound = 'true'"/>
6678
7422
  <xsl:otherwise>
6679
7423
  <xsl:variable name="key_">
6680
7424
  <xsl:call-template name="capitalize">
@@ -6744,53 +7488,153 @@
6744
7488
  <xsl:param name="first"/>
6745
7489
  <xsl:if test="$number != ''">
6746
7490
  <xsl:variable name="words">
6747
- <words>
6748
- <word cardinal="1">One-</word>
6749
- <word ordinal="1">First </word>
6750
- <word cardinal="2">Two-</word>
6751
- <word ordinal="2">Second </word>
6752
- <word cardinal="3">Three-</word>
6753
- <word ordinal="3">Third </word>
6754
- <word cardinal="4">Four-</word>
6755
- <word ordinal="4">Fourth </word>
6756
- <word cardinal="5">Five-</word>
6757
- <word ordinal="5">Fifth </word>
6758
- <word cardinal="6">Six-</word>
6759
- <word ordinal="6">Sixth </word>
6760
- <word cardinal="7">Seven-</word>
6761
- <word ordinal="7">Seventh </word>
6762
- <word cardinal="8">Eight-</word>
6763
- <word ordinal="8">Eighth </word>
6764
- <word cardinal="9">Nine-</word>
6765
- <word ordinal="9">Ninth </word>
6766
- <word ordinal="10">Tenth </word>
6767
- <word ordinal="11">Eleventh </word>
6768
- <word ordinal="12">Twelfth </word>
6769
- <word ordinal="13">Thirteenth </word>
6770
- <word ordinal="14">Fourteenth </word>
6771
- <word ordinal="15">Fifteenth </word>
6772
- <word ordinal="16">Sixteenth </word>
6773
- <word ordinal="17">Seventeenth </word>
6774
- <word ordinal="18">Eighteenth </word>
6775
- <word ordinal="19">Nineteenth </word>
6776
- <word cardinal="20">Twenty-</word>
6777
- <word ordinal="20">Twentieth </word>
6778
- <word cardinal="30">Thirty-</word>
6779
- <word ordinal="30">Thirtieth </word>
6780
- <word cardinal="40">Forty-</word>
6781
- <word ordinal="40">Fortieth </word>
6782
- <word cardinal="50">Fifty-</word>
6783
- <word ordinal="50">Fiftieth </word>
6784
- <word cardinal="60">Sixty-</word>
6785
- <word ordinal="60">Sixtieth </word>
6786
- <word cardinal="70">Seventy-</word>
6787
- <word ordinal="70">Seventieth </word>
6788
- <word cardinal="80">Eighty-</word>
6789
- <word ordinal="80">Eightieth </word>
6790
- <word cardinal="90">Ninety-</word>
6791
- <word ordinal="90">Ninetieth </word>
6792
- <word cardinal="100">Hundred-</word>
6793
- <word ordinal="100">Hundredth </word>
7491
+ <words>
7492
+ <xsl:choose>
7493
+ <xsl:when test="$lang = 'fr'"> <!-- https://en.wiktionary.org/wiki/Appendix:French_numbers -->
7494
+ <word cardinal="1">Une-</word>
7495
+ <word ordinal="1">Première </word>
7496
+ <word cardinal="2">Deux-</word>
7497
+ <word ordinal="2">Seconde </word>
7498
+ <word cardinal="3">Trois-</word>
7499
+ <word ordinal="3">Tierce </word>
7500
+ <word cardinal="4">Quatre-</word>
7501
+ <word ordinal="4">Quatrième </word>
7502
+ <word cardinal="5">Cinq-</word>
7503
+ <word ordinal="5">Cinquième </word>
7504
+ <word cardinal="6">Six-</word>
7505
+ <word ordinal="6">Sixième </word>
7506
+ <word cardinal="7">Sept-</word>
7507
+ <word ordinal="7">Septième </word>
7508
+ <word cardinal="8">Huit-</word>
7509
+ <word ordinal="8">Huitième </word>
7510
+ <word cardinal="9">Neuf-</word>
7511
+ <word ordinal="9">Neuvième </word>
7512
+ <word ordinal="10">Dixième </word>
7513
+ <word ordinal="11">Onzième </word>
7514
+ <word ordinal="12">Douzième </word>
7515
+ <word ordinal="13">Treizième </word>
7516
+ <word ordinal="14">Quatorzième </word>
7517
+ <word ordinal="15">Quinzième </word>
7518
+ <word ordinal="16">Seizième </word>
7519
+ <word ordinal="17">Dix-septième </word>
7520
+ <word ordinal="18">Dix-huitième </word>
7521
+ <word ordinal="19">Dix-neuvième </word>
7522
+ <word cardinal="20">Vingt-</word>
7523
+ <word ordinal="20">Vingtième </word>
7524
+ <word cardinal="30">Trente-</word>
7525
+ <word ordinal="30">Trentième </word>
7526
+ <word cardinal="40">Quarante-</word>
7527
+ <word ordinal="40">Quarantième </word>
7528
+ <word cardinal="50">Cinquante-</word>
7529
+ <word ordinal="50">Cinquantième </word>
7530
+ <word cardinal="60">Soixante-</word>
7531
+ <word ordinal="60">Soixantième </word>
7532
+ <word cardinal="70">Septante-</word>
7533
+ <word ordinal="70">Septantième </word>
7534
+ <word cardinal="80">Huitante-</word>
7535
+ <word ordinal="80">Huitantième </word>
7536
+ <word cardinal="90">Nonante-</word>
7537
+ <word ordinal="90">Nonantième </word>
7538
+ <word cardinal="100">Cent-</word>
7539
+ <word ordinal="100">Centième </word>
7540
+ </xsl:when>
7541
+ <xsl:when test="$lang = 'ru'">
7542
+ <word cardinal="1">Одна-</word>
7543
+ <word ordinal="1">Первое </word>
7544
+ <word cardinal="2">Две-</word>
7545
+ <word ordinal="2">Второе </word>
7546
+ <word cardinal="3">Три-</word>
7547
+ <word ordinal="3">Третье </word>
7548
+ <word cardinal="4">Четыре-</word>
7549
+ <word ordinal="4">Четвертое </word>
7550
+ <word cardinal="5">Пять-</word>
7551
+ <word ordinal="5">Пятое </word>
7552
+ <word cardinal="6">Шесть-</word>
7553
+ <word ordinal="6">Шестое </word>
7554
+ <word cardinal="7">Семь-</word>
7555
+ <word ordinal="7">Седьмое </word>
7556
+ <word cardinal="8">Восемь-</word>
7557
+ <word ordinal="8">Восьмое </word>
7558
+ <word cardinal="9">Девять-</word>
7559
+ <word ordinal="9">Девятое </word>
7560
+ <word ordinal="10">Десятое </word>
7561
+ <word ordinal="11">Одиннадцатое </word>
7562
+ <word ordinal="12">Двенадцатое </word>
7563
+ <word ordinal="13">Тринадцатое </word>
7564
+ <word ordinal="14">Четырнадцатое </word>
7565
+ <word ordinal="15">Пятнадцатое </word>
7566
+ <word ordinal="16">Шестнадцатое </word>
7567
+ <word ordinal="17">Семнадцатое </word>
7568
+ <word ordinal="18">Восемнадцатое </word>
7569
+ <word ordinal="19">Девятнадцатое </word>
7570
+ <word cardinal="20">Двадцать-</word>
7571
+ <word ordinal="20">Двадцатое </word>
7572
+ <word cardinal="30">Тридцать-</word>
7573
+ <word ordinal="30">Тридцатое </word>
7574
+ <word cardinal="40">Сорок-</word>
7575
+ <word ordinal="40">Сороковое </word>
7576
+ <word cardinal="50">Пятьдесят-</word>
7577
+ <word ordinal="50">Пятидесятое </word>
7578
+ <word cardinal="60">Шестьдесят-</word>
7579
+ <word ordinal="60">Шестидесятое </word>
7580
+ <word cardinal="70">Семьдесят-</word>
7581
+ <word ordinal="70">Семидесятое </word>
7582
+ <word cardinal="80">Восемьдесят-</word>
7583
+ <word ordinal="80">Восьмидесятое </word>
7584
+ <word cardinal="90">Девяносто-</word>
7585
+ <word ordinal="90">Девяностое </word>
7586
+ <word cardinal="100">Сто-</word>
7587
+ <word ordinal="100">Сотое </word>
7588
+ </xsl:when>
7589
+ <xsl:otherwise> <!-- default english -->
7590
+ <word cardinal="1">One-</word>
7591
+ <word ordinal="1">First </word>
7592
+ <word cardinal="2">Two-</word>
7593
+ <word ordinal="2">Second </word>
7594
+ <word cardinal="3">Three-</word>
7595
+ <word ordinal="3">Third </word>
7596
+ <word cardinal="4">Four-</word>
7597
+ <word ordinal="4">Fourth </word>
7598
+ <word cardinal="5">Five-</word>
7599
+ <word ordinal="5">Fifth </word>
7600
+ <word cardinal="6">Six-</word>
7601
+ <word ordinal="6">Sixth </word>
7602
+ <word cardinal="7">Seven-</word>
7603
+ <word ordinal="7">Seventh </word>
7604
+ <word cardinal="8">Eight-</word>
7605
+ <word ordinal="8">Eighth </word>
7606
+ <word cardinal="9">Nine-</word>
7607
+ <word ordinal="9">Ninth </word>
7608
+ <word ordinal="10">Tenth </word>
7609
+ <word ordinal="11">Eleventh </word>
7610
+ <word ordinal="12">Twelfth </word>
7611
+ <word ordinal="13">Thirteenth </word>
7612
+ <word ordinal="14">Fourteenth </word>
7613
+ <word ordinal="15">Fifteenth </word>
7614
+ <word ordinal="16">Sixteenth </word>
7615
+ <word ordinal="17">Seventeenth </word>
7616
+ <word ordinal="18">Eighteenth </word>
7617
+ <word ordinal="19">Nineteenth </word>
7618
+ <word cardinal="20">Twenty-</word>
7619
+ <word ordinal="20">Twentieth </word>
7620
+ <word cardinal="30">Thirty-</word>
7621
+ <word ordinal="30">Thirtieth </word>
7622
+ <word cardinal="40">Forty-</word>
7623
+ <word ordinal="40">Fortieth </word>
7624
+ <word cardinal="50">Fifty-</word>
7625
+ <word ordinal="50">Fiftieth </word>
7626
+ <word cardinal="60">Sixty-</word>
7627
+ <word ordinal="60">Sixtieth </word>
7628
+ <word cardinal="70">Seventy-</word>
7629
+ <word ordinal="70">Seventieth </word>
7630
+ <word cardinal="80">Eighty-</word>
7631
+ <word ordinal="80">Eightieth </word>
7632
+ <word cardinal="90">Ninety-</word>
7633
+ <word ordinal="90">Ninetieth </word>
7634
+ <word cardinal="100">Hundred-</word>
7635
+ <word ordinal="100">Hundredth </word>
7636
+ </xsl:otherwise>
7637
+ </xsl:choose>
6794
7638
  </words>
6795
7639
  </xsl:variable>
6796
7640
 
@@ -6864,4 +7708,18 @@
6864
7708
  <xsl:otherwise>_</xsl:otherwise>
6865
7709
  </xsl:choose>
6866
7710
  </xsl:attribute>
7711
+ </xsl:template><xsl:template name="substring-after-last">
7712
+ <xsl:param name="value"/>
7713
+ <xsl:param name="delimiter"/>
7714
+ <xsl:choose>
7715
+ <xsl:when test="contains($value, $delimiter)">
7716
+ <xsl:call-template name="substring-after-last">
7717
+ <xsl:with-param name="value" select="substring-after($value, $delimiter)"/>
7718
+ <xsl:with-param name="delimiter" select="$delimiter"/>
7719
+ </xsl:call-template>
7720
+ </xsl:when>
7721
+ <xsl:otherwise>
7722
+ <xsl:value-of select="$value"/>
7723
+ </xsl:otherwise>
7724
+ </xsl:choose>
6867
7725
  </xsl:template></xsl:stylesheet>