metanorma-iso 2.0.2 → 2.0.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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/lib/isodoc/iso/html/html_iso_titlepage.html +1 -1
  4. data/lib/isodoc/iso/html/isodoc.css +1 -2
  5. data/lib/isodoc/iso/html/isodoc.scss +0 -1
  6. data/lib/isodoc/iso/html/word_iso_titlepage.html +1 -1
  7. data/lib/isodoc/iso/html/wordstyle.css +20 -0
  8. data/lib/isodoc/iso/html/wordstyle.scss +20 -0
  9. data/lib/isodoc/iso/i18n-en.yaml +29 -2
  10. data/lib/isodoc/iso/i18n-fr.yaml +27 -3
  11. data/lib/isodoc/iso/i18n-ru.yaml +45 -0
  12. data/lib/isodoc/iso/i18n-zh-Hans.yaml +27 -3
  13. data/lib/isodoc/iso/i18n.rb +1 -0
  14. data/lib/isodoc/iso/init.rb +1 -2
  15. data/lib/isodoc/iso/iso.amendment.xsl +1752 -807
  16. data/lib/isodoc/iso/iso.international-standard.xsl +1752 -807
  17. data/lib/isodoc/iso/metadata.rb +12 -2
  18. data/lib/isodoc/iso/presentation_xml_convert.rb +58 -21
  19. data/lib/metanorma/iso/basicdoc.rng +5 -3
  20. data/lib/metanorma/iso/biblio.rng +5 -3
  21. data/lib/metanorma/iso/boilerplate-fr.xml +3 -3
  22. data/lib/metanorma/iso/boilerplate-ru.xml +39 -0
  23. data/lib/metanorma/iso/boilerplate.xml +3 -3
  24. data/lib/metanorma/iso/cleanup.rb +42 -11
  25. data/lib/metanorma/iso/front.rb +1 -1
  26. data/lib/metanorma/iso/front_id.rb +1 -0
  27. data/lib/metanorma/iso/isodoc.rng +73 -3
  28. data/lib/metanorma/iso/processor.rb +14 -7
  29. data/lib/metanorma/iso/validate.rb +30 -2
  30. data/lib/metanorma/iso/validate_image.rb +3 -3
  31. data/lib/metanorma/iso/validate_list.rb +107 -0
  32. data/lib/metanorma/iso/validate_section.rb +42 -34
  33. data/lib/metanorma/iso/validate_style.rb +32 -2
  34. data/lib/metanorma/iso/validate_title.rb +13 -1
  35. data/lib/metanorma/iso/version.rb +1 -1
  36. data/spec/isodoc/amd_spec.rb +10 -5
  37. data/spec/isodoc/i18n_spec.rb +350 -9
  38. data/spec/isodoc/inline_spec.rb +127 -10
  39. data/spec/isodoc/metadata_spec.rb +153 -3
  40. data/spec/isodoc/postproc_spec.rb +3 -4
  41. data/spec/isodoc/section_spec.rb +1 -0
  42. data/spec/isodoc/terms_spec.rb +4 -4
  43. data/spec/isodoc/xref_spec.rb +18 -18
  44. data/spec/metanorma/base_spec.rb +434 -375
  45. data/spec/metanorma/cleanup_spec.rb +11 -11
  46. data/spec/metanorma/refs_spec.rb +333 -65
  47. data/spec/metanorma/section_spec.rb +15 -20
  48. data/spec/metanorma/validate_spec.rb +449 -14
  49. data/spec/spec_helper.rb +6 -4
  50. data/spec/vcr_cassettes/docrels.yml +211 -16
  51. data/spec/vcr_cassettes/withdrawn_iso.yml +301 -0
  52. metadata +6 -3
  53. data/spec/vcr_cassettes/sortrefs.yml +0 -599
@@ -2,11 +2,6 @@
2
2
 
3
3
  <xsl:output 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
-
10
5
 
11
6
 
12
7
  <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"/>
@@ -15,13 +10,10 @@
15
10
 
16
11
 
17
12
 
13
+ <xsl:variable name="namespace_full">https://www.metanorma.org/ns/iso</xsl:variable>
14
+
18
15
  <xsl:variable name="debug">false</xsl:variable>
19
16
 
20
- <xsl:variable name="marginLeftRight1" select="25"/>
21
- <xsl:variable name="marginLeftRight2" select="12.5"/>
22
- <xsl:variable name="marginTop" select="27.4"/>
23
- <xsl:variable name="marginBottom" select="13"/>
24
-
25
17
  <xsl:variable name="docidentifierISO" select="/iso:iso-standard/iso:bibdata/iso:docidentifier[@type = 'iso'] | /iso:iso-standard/iso:bibdata/iso:docidentifier[@type = 'ISO']"/>
26
18
 
27
19
  <xsl:variable name="all_rights_reserved">
@@ -37,19 +29,26 @@
37
29
  <!-- <xsl:variable name="ISOname" select="concat(/iso:iso-standard/iso:bibdata/iso:docidentifier, ':', /iso:iso-standard/iso:bibdata/iso:copyright/iso:from , $lang-1st-letter)"/> -->
38
30
  <xsl:variable name="ISOname" select="/iso:iso-standard/iso:bibdata/iso:docidentifier[@type = 'iso-reference']"/>
39
31
 
40
- <!-- Information and documentation — Codes for transcription systems -->
41
- <xsl:variable name="title-intro" select="/iso:iso-standard/iso:bibdata/iso:title[@language = 'en' and @type = 'title-intro']"/>
42
- <xsl:variable name="title-intro-fr" select="/iso:iso-standard/iso:bibdata/iso:title[@language = 'fr' and @type = 'title-intro']"/>
43
- <xsl:variable name="title-main" select="/iso:iso-standard/iso:bibdata/iso:title[@language = 'en' and @type = 'title-main']"/>
44
- <xsl:variable name="title-main-fr" select="/iso:iso-standard/iso:bibdata/iso:title[@language = 'fr' and @type = 'title-main']"/>
45
32
  <xsl:variable name="part" select="/iso:iso-standard/iso:bibdata/iso:ext/iso:structuredidentifier/iso:project-number/@part"/>
46
33
 
47
34
  <xsl:variable name="doctype" select="/iso:iso-standard/iso:bibdata/iso:ext/iso:doctype"/>
48
- <xsl:variable name="doctype_uppercased" select="java:toUpperCase(java:java.lang.String.new(translate($doctype,'-',' ')))"/>
35
+ <xsl:variable name="doctype_localized" select="/iso:iso-standard/iso:bibdata/iso:ext/iso:doctype[@language = $lang]"/>
36
+
37
+ <xsl:variable name="doctype_uppercased">
38
+ <xsl:choose>
39
+ <xsl:when test="$doctype_localized != ''">
40
+ <xsl:value-of select="java:toUpperCase(java:java.lang.String.new(translate(normalize-space($doctype_localized),'-',' ')))"/>
41
+ </xsl:when>
42
+ <xsl:otherwise>
43
+ <xsl:value-of select="java:toUpperCase(java:java.lang.String.new(translate(normalize-space($doctype),'-',' ')))"/>
44
+ </xsl:otherwise>
45
+ </xsl:choose>
46
+ </xsl:variable>
49
47
 
50
48
  <xsl:variable name="stage" select="number(/iso:iso-standard/iso:bibdata/iso:status/iso:stage)"/>
51
49
  <xsl:variable name="substage" select="number(/iso:iso-standard/iso:bibdata/iso:status/iso:substage)"/>
52
50
  <xsl:variable name="stagename" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:ext/iso:stagename)"/>
51
+ <xsl:variable name="stagename_localized" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:status/iso:stage[@language = $lang])"/>
53
52
  <xsl:variable name="abbreviation" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:status/iso:stage/@abbreviation)"/>
54
53
 
55
54
  <xsl:variable name="stage-abbreviation">
@@ -73,7 +72,10 @@
73
72
 
74
73
  <xsl:variable name="stage-fullname-uppercased">
75
74
  <xsl:choose>
76
- <xsl:when test="$stagename != ''">
75
+ <xsl:when test="$stagename_localized != ''">
76
+ <xsl:value-of select="java:toUpperCase(java:java.lang.String.new($stagename_localized))"/>
77
+ </xsl:when>
78
+ <xsl:when test="$stagename != ''">
77
79
  <xsl:value-of select="java:toUpperCase(java:java.lang.String.new($stagename))"/>
78
80
  </xsl:when>
79
81
  <xsl:when test="$stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP'">NEW WORK ITEM PROPOSAL</xsl:when>
@@ -160,18 +162,26 @@
160
162
  <item level="1" id="Foreword" display="true">Foreword</item>
161
163
  <item id="term-script" display="false">3.2</item>
162
164
  -->
163
- <xsl:variable name="contents">
165
+ <xsl:variable name="contents_">
164
166
  <contents>
165
167
  <xsl:call-template name="processPrefaceSectionsDefault_Contents"/>
166
168
  <xsl:call-template name="processMainSectionsDefault_Contents"/>
167
169
  <xsl:apply-templates select="//iso:indexsect" mode="contents"/>
170
+ <xsl:call-template name="processTablesFigures_Contents"/>
168
171
  </contents>
169
172
  </xsl:variable>
173
+ <xsl:variable name="contents" select="xalan:nodeset($contents_)"/>
170
174
 
171
- <xsl:variable name="lang">
172
- <xsl:call-template name="getLang"/>
175
+ <xsl:variable name="lang_other">
176
+ <xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:title[@language != $lang]">
177
+ <xsl:if test="not(preceding-sibling::iso:title[@language = current()/@language])">
178
+ <lang><xsl:value-of select="@language"/></lang>
179
+ </xsl:if>
180
+ </xsl:for-each>
173
181
  </xsl:variable>
174
182
 
183
+ <xsl:variable name="XML" select="/"/>
184
+
175
185
  <xsl:template match="/">
176
186
  <xsl:call-template name="namespaceCheck"/>
177
187
  <fo:root xsl:use-attribute-sets="root-style" xml:lang="{$lang}"> <!-- -->
@@ -428,7 +438,7 @@
428
438
  <!-- Reference number -->
429
439
  <fo:block>
430
440
  <xsl:call-template name="getLocalizedString">
431
- <xsl:with-param name="key">reference_number</xsl:with-param>
441
+ <xsl:with-param name="key">reference_number</xsl:with-param>
432
442
  </xsl:call-template>
433
443
  </fo:block>
434
444
  <fo:block>
@@ -476,7 +486,12 @@
476
486
  </fo:block>
477
487
  </fo:table-cell>
478
488
  <fo:table-cell>
479
- <fo:block>Secretariat: <fo:inline font-weight="bold"><xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:ext/iso:editorialgroup/iso:secretariat"/></fo:inline></fo:block>
489
+ <fo:block>
490
+ <xsl:call-template name="getLocalizedString">
491
+ <xsl:with-param name="key">secretariat</xsl:with-param>
492
+ </xsl:call-template>
493
+ <xsl:text>: </xsl:text>
494
+ Secretariat: <fo:inline font-weight="bold"><xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:ext/iso:editorialgroup/iso:secretariat"/></fo:inline></fo:block>
480
495
  </fo:table-cell>
481
496
  </fo:table-row>
482
497
  <fo:table-row>
@@ -521,47 +536,45 @@
521
536
  <fo:block-container border-top="1mm double black" line-height="1.1" margin-top="3mm">
522
537
  <fo:block margin-right="5mm">
523
538
  <fo:block font-size="18pt" font-weight="bold" margin-top="6pt" role="H1">
524
- <xsl:if test="normalize-space($title-intro) != ''">
525
- <xsl:value-of select="$title-intro"/>
526
- <xsl:text> — </xsl:text>
527
- </xsl:if>
528
-
529
- <xsl:value-of select="$title-main"/>
530
-
531
- <xsl:call-template name="printTitlePartEn"/>
532
-
533
- <xsl:variable name="title-amd" select="/iso:iso-standard/iso:bibdata/iso:title[@language = 'en' and @type = 'title-amd']"/>
534
- <xsl:if test="$doctype = 'amendment' and normalize-space($title-amd) != ''">
535
- <fo:block margin-top="12pt" role="H1">
536
- <xsl:call-template name="printAmendmentTitle"/>
537
- </fo:block>
538
- </xsl:if>
539
-
540
- </fo:block>
541
-
542
- <fo:block font-size="9pt"><xsl:value-of select="$linebreak"/></fo:block>
543
- <fo:block font-size="11pt" font-style="italic" line-height="1.5" role="H1">
544
-
545
- <xsl:if test="normalize-space($title-intro-fr) != ''">
546
- <xsl:value-of select="$title-intro-fr"/>
547
- <xsl:text> — </xsl:text>
548
- </xsl:if>
549
-
550
- <xsl:value-of select="$title-main-fr"/>
551
-
552
- <xsl:call-template name="printTitlePartFr"/>
539
+
540
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-intro']"/>
541
+
542
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-main']"/>
553
543
 
554
- <xsl:variable name="title-amd" select="/iso:iso-standard/iso:bibdata/iso:title[@language = 'fr' and @type = 'title-amd']"/>
555
- <xsl:if test="$doctype = 'amendment' and normalize-space($title-amd) != ''">
556
- <fo:block margin-top="6pt" role="H1">
557
- <xsl:call-template name="printAmendmentTitle">
558
- <xsl:with-param name="lang" select="'fr'"/>
559
- </xsl:call-template>
560
- </fo:block>
561
- </xsl:if>
544
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']">
545
+ <xsl:with-param name="isMainLang">true</xsl:with-param>
546
+ </xsl:apply-templates>
562
547
 
548
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-amd']">
549
+ <xsl:with-param name="isMainLang">true</xsl:with-param>
550
+ </xsl:apply-templates>
551
+
563
552
  </fo:block>
553
+
554
+
555
+ <xsl:for-each select="xalan:nodeset($lang_other)/lang">
556
+ <xsl:variable name="lang_other" select="."/>
557
+
558
+ <fo:block font-size="9pt"><xsl:value-of select="$linebreak"/></fo:block>
559
+ <fo:block font-size="11pt" font-style="italic" line-height="1.5" role="H1">
560
+
561
+ <!-- Example: title-intro fr -->
562
+ <xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-intro']"/>
563
+
564
+ <xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-main']"/>
565
+
566
+ <xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-part']">
567
+ <xsl:with-param name="curr_lang" select="$lang_other"/>
568
+ </xsl:apply-templates>
569
+
570
+ <xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-amd']">
571
+ <xsl:with-param name="curr_lang" select="$lang_other"/>
572
+ </xsl:apply-templates>
573
+
574
+ </fo:block>
575
+ </xsl:for-each>
564
576
  </fo:block>
577
+
565
578
  <fo:block margin-top="10mm">
566
579
  <xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:ext/iso:ics/iso:code">
567
580
  <xsl:if test="position() = 1"><fo:inline>ICS: </fo:inline></xsl:if>
@@ -569,6 +582,7 @@
569
582
  <xsl:if test="position() != last()"><xsl:text>; </xsl:text></xsl:if>
570
583
  </xsl:for-each>
571
584
  </fo:block>
585
+
572
586
  </fo:block-container>
573
587
 
574
588
 
@@ -602,6 +616,15 @@
602
616
  <xsl:if test="$stage-name = 'final-draft'">FINAL<xsl:value-of select="$linebreak"/>DRAFT</xsl:if> -->
603
617
  </fo:block>
604
618
  </fo:table-cell>
619
+
620
+ <xsl:variable name="lastWord">
621
+ <xsl:call-template name="substring-after-last">
622
+ <xsl:with-param name="value" select="$doctype_uppercased"/>
623
+ <xsl:with-param name="delimiter" select="' '"/>
624
+ </xsl:call-template>
625
+ </xsl:variable>
626
+ <xsl:variable name="font-size"><xsl:if test="string-length($lastWord) &gt;= 12">90%</xsl:if></xsl:variable> <!-- to prevent overlapping 'NORME INTERNATIONALE' to number -->
627
+
605
628
  <fo:table-cell>
606
629
  <fo:block text-align="left">
607
630
  <xsl:choose>
@@ -609,6 +632,9 @@
609
632
  <xsl:value-of select="java:toUpperCase(java:java.lang.String.new(translate(/iso:iso-standard/iso:bibdata/iso:ext/iso:updates-document-type,'-',' ')))"/>
610
633
  </xsl:when>
611
634
  <xsl:otherwise>
635
+ <xsl:if test="$font-size != ''">
636
+ <xsl:attribute name="font-size"><xsl:value-of select="$font-size"/></xsl:attribute>
637
+ </xsl:if>
612
638
  <xsl:value-of select="$doctype_uppercased"/>
613
639
  </xsl:otherwise>
614
640
  </xsl:choose>
@@ -616,6 +642,9 @@
616
642
  </fo:table-cell>
617
643
  <fo:table-cell>
618
644
  <fo:block text-align="right" font-weight="bold" margin-bottom="13mm">
645
+ <xsl:if test="$font-size != ''">
646
+ <xsl:attribute name="font-size"><xsl:value-of select="$font-size"/></xsl:attribute>
647
+ </xsl:if>
619
648
  <xsl:value-of select="$docidentifierISO"/>
620
649
  </fo:block>
621
650
  </fo:table-cell>
@@ -713,54 +742,43 @@
713
742
  <fo:block margin-right="5mm">
714
743
  <fo:block font-size="18pt" font-weight="bold" margin-top="12pt" role="H1">
715
744
 
716
- <xsl:if test="normalize-space($title-intro) != ''">
717
- <xsl:value-of select="$title-intro"/>
718
- <xsl:text> — </xsl:text>
719
- </xsl:if>
720
-
721
- <xsl:value-of select="$title-main"/>
722
-
723
- <xsl:call-template name="printTitlePartEn"/>
724
- <!-- <xsl:if test="normalize-space($title-part) != ''">
725
- <xsl:if test="$part != ''">
726
- <xsl:text> — </xsl:text>
727
- <fo:block font-weight="normal" margin-top="6pt">
728
- <xsl:text>Part </xsl:text><xsl:value-of select="$part"/>
729
- <xsl:text>:</xsl:text>
730
- </fo:block>
731
- </xsl:if>
732
- <xsl:value-of select="$title-part"/>
733
- </xsl:if> -->
734
- <xsl:variable name="title-amd" select="/iso:iso-standard/iso:bibdata/iso:title[@language = 'en' and @type = 'title-amd']"/>
735
- <xsl:if test="$doctype = 'amendment' and normalize-space($title-amd) != ''">
736
- <fo:block margin-right="-5mm" margin-top="12pt" role="H1">
737
- <xsl:call-template name="printAmendmentTitle"/>
738
- </fo:block>
739
- </xsl:if>
740
- </fo:block>
741
-
742
- <fo:block font-size="9pt"><xsl:value-of select="$linebreak"/></fo:block>
743
- <fo:block font-size="11pt" font-style="italic" line-height="1.5" role="H1">
744
-
745
- <xsl:if test="normalize-space($title-intro-fr) != ''">
746
- <xsl:value-of select="$title-intro-fr"/>
747
- <xsl:text> — </xsl:text>
748
- </xsl:if>
745
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-intro']"/>
749
746
 
750
- <xsl:value-of select="$title-main-fr"/>
747
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-main']"/>
751
748
 
752
- <xsl:call-template name="printTitlePartFr"/>
749
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']">
750
+ <xsl:with-param name="isMainLang">true</xsl:with-param>
751
+ </xsl:apply-templates>
753
752
 
754
- <xsl:variable name="title-amd" select="/iso:iso-standard/iso:bibdata/iso:title[@language = 'fr' and @type = 'title-amd']"/>
755
- <xsl:if test="$doctype = 'amendment' and normalize-space($title-amd) != ''">
756
- <fo:block margin-right="-5mm" margin-top="6pt" role="H1">
757
- <xsl:call-template name="printAmendmentTitle">
758
- <xsl:with-param name="lang" select="'fr'"/>
759
- </xsl:call-template>
760
- </fo:block>
761
- </xsl:if>
753
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-amd']">
754
+ <xsl:with-param name="isMainLang">true</xsl:with-param>
755
+ </xsl:apply-templates>
762
756
 
763
757
  </fo:block>
758
+
759
+
760
+ <xsl:for-each select="xalan:nodeset($lang_other)/lang">
761
+ <xsl:variable name="lang_other" select="."/>
762
+
763
+ <fo:block font-size="9pt"><xsl:value-of select="$linebreak"/></fo:block>
764
+ <fo:block font-size="11pt" font-style="italic" line-height="1.5" role="H1">
765
+
766
+ <!-- Example: title-intro fr -->
767
+ <xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-intro']"/>
768
+
769
+ <xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-main']"/>
770
+
771
+ <xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-part']">
772
+ <xsl:with-param name="curr_lang" select="$lang_other"/>
773
+ </xsl:apply-templates>
774
+
775
+ <xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-amd']">
776
+ <xsl:with-param name="curr_lang" select="$lang_other"/>
777
+ </xsl:apply-templates>
778
+
779
+ </fo:block>
780
+ </xsl:for-each>
781
+
764
782
  </fo:block>
765
783
  </fo:block-container>
766
784
  </fo:table-cell>
@@ -844,41 +862,35 @@
844
862
 
845
863
  <fo:block-container border-top="1mm double black" line-height="1.1">
846
864
  <fo:block margin-right="40mm">
847
- <fo:block font-size="18pt" font-weight="bold" margin-top="12pt" role="H1">
848
-
849
- <xsl:if test="normalize-space($title-intro) != ''">
850
- <xsl:value-of select="$title-intro"/>
851
- <xsl:text> — </xsl:text>
852
- </xsl:if>
853
-
854
- <xsl:value-of select="$title-main"/>
865
+ <fo:block font-size="18pt" font-weight="bold" margin-top="12pt" role="H1">
855
866
 
856
- <xsl:call-template name="printTitlePartEn"/>
857
- <!-- <xsl:if test="normalize-space($title-part) != ''">
858
- <xsl:if test="$part != ''">
859
- <xsl:text> — </xsl:text>
860
- <fo:block font-weight="normal" margin-top="6pt">
861
- <xsl:text>Part </xsl:text><xsl:value-of select="$part"/>
862
- <xsl:text>:</xsl:text>
863
- </fo:block>
864
- </xsl:if>
865
- <xsl:value-of select="$title-part"/>
866
- </xsl:if> -->
867
- </fo:block>
867
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-intro']"/>
868
+
869
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-main']"/>
870
+
871
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']">
872
+ <xsl:with-param name="isMainLang">true</xsl:with-param>
873
+ </xsl:apply-templates>
874
+
875
+ </fo:block>
876
+
877
+ <xsl:for-each select="xalan:nodeset($lang_other)/lang">
878
+ <xsl:variable name="lang_other" select="."/>
879
+
880
+ <fo:block font-size="9pt"><xsl:value-of select="$linebreak"/></fo:block>
881
+ <fo:block font-size="11pt" font-style="italic" line-height="1.5" role="H1">
868
882
 
869
- <fo:block font-size="9pt"><xsl:value-of select="$linebreak"/></fo:block>
870
- <fo:block font-size="11pt" font-style="italic" line-height="1.5" role="H1">
871
-
872
- <xsl:if test="normalize-space($title-intro-fr) != ''">
873
- <xsl:value-of select="$title-intro-fr"/>
874
- <xsl:text> </xsl:text>
875
- </xsl:if>
876
-
877
- <xsl:value-of select="$title-main-fr"/>
878
-
879
- <xsl:call-template name="printTitlePartFr"/>
880
-
881
- </fo:block>
883
+ <!-- Example: title-intro fr -->
884
+ <xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-intro']"/>
885
+
886
+ <xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-main']"/>
887
+
888
+ <xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-part']">
889
+ <xsl:with-param name="curr_lang" select="$lang_other"/>
890
+ </xsl:apply-templates>
891
+
892
+ </fo:block>
893
+ </xsl:for-each>
882
894
  </fo:block>
883
895
  </fo:block-container>
884
896
  </fo:block-container>
@@ -961,48 +973,35 @@
961
973
  <!-- Information and documentation — Codes for transcription systems -->
962
974
  <fo:block font-weight="bold" role="H1">
963
975
 
964
- <xsl:if test="normalize-space($title-intro) != ''">
965
- <xsl:value-of select="$title-intro"/>
966
- <xsl:text> </xsl:text>
967
- </xsl:if>
968
-
969
- <xsl:value-of select="$title-main"/>
976
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-intro']"/>
977
+
978
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-main']"/>
970
979
 
971
- <xsl:call-template name="printTitlePartEn"/>
972
- <!-- <xsl:if test="normalize-space($title-part) != ''">
973
- <xsl:if test="$part != ''">
974
- <xsl:text> — </xsl:text>
975
- <fo:block font-weight="normal" margin-top="6pt">
976
- <xsl:text>Part </xsl:text><xsl:value-of select="$part"/>
977
- <xsl:text>:</xsl:text>
978
- </fo:block>
979
- </xsl:if>
980
- <xsl:value-of select="$title-part"/>
981
- </xsl:if> -->
980
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']">
981
+ <xsl:with-param name="isMainLang">true</xsl:with-param>
982
+ </xsl:apply-templates>
983
+
982
984
  </fo:block>
983
985
 
984
- <fo:block font-size="12pt"><xsl:value-of select="$linebreak"/></fo:block>
985
- <fo:block role="H1">
986
- <xsl:if test="normalize-space($title-intro-fr) != ''">
987
- <xsl:value-of select="$title-intro-fr"/>
988
- <xsl:text> — </xsl:text>
989
- </xsl:if>
986
+ <xsl:for-each select="xalan:nodeset($lang_other)/lang">
987
+ <xsl:variable name="lang_other" select="."/>
988
+
989
+ <fo:block font-size="12pt"><xsl:value-of select="$linebreak"/></fo:block>
990
+ <fo:block role="H1">
990
991
 
991
- <xsl:value-of select="$title-main-fr"/>
992
+ <!-- Example: title-intro fr -->
993
+ <xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-intro']"/>
994
+
995
+ <xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-main']"/>
996
+
997
+ <xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-part']">
998
+ <xsl:with-param name="curr_lang" select="$lang_other"/>
999
+ </xsl:apply-templates>
1000
+
1001
+ </fo:block>
992
1002
 
993
- <xsl:variable name="part-fr" select="/iso:iso-standard/iso:bibdata/iso:title[@language = 'fr' and @type = 'title-part']"/>
994
- <xsl:if test="normalize-space($part-fr) != ''">
995
- <xsl:if test="$part != ''">
996
- <xsl:text> — </xsl:text>
997
- <fo:block margin-top="6pt" font-weight="normal">
998
- <xsl:value-of select="java:replaceAll(java:java.lang.String.new($titles/title-part[@lang='fr']),'#',$part)"/>
999
- <!-- <xsl:value-of select="$title-part-fr"/><xsl:value-of select="$part"/>
1000
- <xsl:text>:</xsl:text> -->
1001
- </fo:block>
1002
- </xsl:if>
1003
- <xsl:value-of select="$part-fr"/>
1004
- </xsl:if>
1005
- </fo:block>
1003
+ </xsl:for-each>
1004
+
1006
1005
  </fo:block-container>
1007
1006
  <fo:block font-size="11pt" margin-bottom="8pt"><xsl:value-of select="$linebreak"/></fo:block>
1008
1007
  <fo:block-container font-size="40pt" text-align="center" margin-bottom="12pt" border="0.5pt solid black">
@@ -1031,312 +1030,418 @@
1031
1030
  </xsl:otherwise>
1032
1031
  </xsl:choose>
1033
1032
 
1034
- <fo:page-sequence master-reference="preface{$document-master-reference}" format="i" force-page-count="{$force-page-count-preface}">
1035
- <xsl:call-template name="insertHeaderFooter">
1036
- <xsl:with-param name="font-weight">normal</xsl:with-param>
1037
- </xsl:call-template>
1038
- <fo:flow flow-name="xsl-region-body" line-height="115%">
1039
- <xsl:if test="/iso:iso-standard/iso:boilerplate/iso:copyright-statement">
1040
-
1041
- <fo:block-container height="252mm" display-align="after">
1042
- <!-- <fo:block margin-bottom="3mm">
1043
- <fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-Attention))}" width="14mm" content-height="13mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image {@alt}"/>
1044
- <fo:inline padding-left="6mm" font-size="12pt" font-weight="bold"></fo:inline>
1045
- </fo:block> -->
1046
- <fo:block line-height="90%">
1047
- <fo:block font-size="9pt" text-align="justify">
1048
- <xsl:apply-templates select="/iso:iso-standard/iso:boilerplate/iso:copyright-statement"/>
1033
+ <xsl:variable name="updated_xml_step1">
1034
+ <xsl:apply-templates mode="update_xml_step1"/>
1035
+ </xsl:variable>
1036
+ <!-- DEBUG: updated_xml_step1=<xsl:copy-of select="$updated_xml_step1"/> -->
1037
+
1038
+ <xsl:variable name="updated_xml_step2">
1039
+ <xsl:apply-templates select="xalan:nodeset($updated_xml_step1)" mode="update_xml_step2"/>
1040
+ </xsl:variable>
1041
+ <!-- DEBUG: updated_xml_step2=<xsl:copy-of select="$updated_xml_step2"/> -->
1042
+
1043
+ <xsl:for-each select="xalan:nodeset($updated_xml_step2)">
1044
+
1045
+ <fo:page-sequence master-reference="preface{$document-master-reference}" format="i" force-page-count="{$force-page-count-preface}">
1046
+ <xsl:call-template name="insertHeaderFooter">
1047
+ <xsl:with-param name="font-weight">normal</xsl:with-param>
1048
+ </xsl:call-template>
1049
+ <fo:flow flow-name="xsl-region-body" line-height="115%">
1050
+ <xsl:if test="/iso:iso-standard/iso:boilerplate/iso:copyright-statement">
1051
+
1052
+ <fo:block-container height="252mm" display-align="after">
1053
+ <!-- <fo:block margin-bottom="3mm">
1054
+ <fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-Attention))}" width="14mm" content-height="13mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image {@alt}"/>
1055
+ <fo:inline padding-left="6mm" font-size="12pt" font-weight="bold"></fo:inline>
1056
+ </fo:block> -->
1057
+ <fo:block line-height="90%">
1058
+ <fo:block font-size="9pt" text-align="justify">
1059
+ <xsl:apply-templates select="/iso:iso-standard/iso:boilerplate/iso:copyright-statement"/>
1060
+ </fo:block>
1049
1061
  </fo:block>
1050
- </fo:block>
1051
- </fo:block-container>
1052
- </xsl:if>
1053
-
1054
-
1055
- <xsl:choose>
1056
- <xsl:when test="$doctype = 'amendment'"/><!-- ToC shouldn't be generated in amendments. -->
1062
+ </fo:block-container>
1063
+ </xsl:if>
1057
1064
 
1058
- <xsl:otherwise>
1059
- <xsl:if test="/iso:iso-standard/iso:boilerplate/iso:copyright-statement">
1060
- <fo:block break-after="page"/>
1061
- </xsl:if>
1062
- <fo:block-container font-weight="bold">
1063
- <fo:block role="TOC">
1064
- <fo:block text-align-last="justify" font-size="16pt" margin-top="10pt" margin-bottom="18pt">
1065
- <fo:inline font-size="16pt" font-weight="bold" role="H1">
1066
- <!-- Contents -->
1067
- <xsl:call-template name="getLocalizedString">
1068
- <xsl:with-param name="key">table_of_contents</xsl:with-param>
1069
- </xsl:call-template>
1070
- </fo:inline>
1071
- <fo:inline keep-together.within-line="always">
1072
- <fo:leader leader-pattern="space"/>
1073
- <fo:inline font-weight="normal" font-size="10pt">
1074
- <!-- Page -->
1065
+
1066
+ <xsl:choose>
1067
+ <xsl:when test="$doctype = 'amendment'"/><!-- ToC shouldn't be generated in amendments. -->
1068
+
1069
+ <xsl:otherwise>
1070
+ <xsl:if test="/iso:iso-standard/iso:boilerplate/iso:copyright-statement">
1071
+ <fo:block break-after="page"/>
1072
+ </xsl:if>
1073
+ <fo:block-container font-weight="bold">
1074
+ <fo:block role="TOC">
1075
+ <fo:block text-align-last="justify" font-size="16pt" margin-top="10pt" margin-bottom="18pt">
1076
+ <fo:inline font-size="16pt" font-weight="bold" role="H1">
1077
+ <!-- Contents -->
1075
1078
  <xsl:call-template name="getLocalizedString">
1076
- <xsl:with-param name="key">locality.page</xsl:with-param>
1077
- </xsl:call-template>
1079
+ <xsl:with-param name="key">table_of_contents</xsl:with-param>
1080
+ </xsl:call-template>
1078
1081
  </fo:inline>
1079
- </fo:inline>
1080
- </fo:block>
1081
-
1082
- <xsl:if test="$debug = 'true'">
1083
- <xsl:text disable-output-escaping="yes">&lt;!--</xsl:text>
1084
- DEBUG
1085
- contents=<xsl:copy-of select="xalan:nodeset($contents)"/>
1086
- <xsl:text disable-output-escaping="yes">--&gt;</xsl:text>
1087
- </xsl:if>
1088
-
1089
- <xsl:variable name="margin-left">12</xsl:variable>
1090
- <xsl:for-each select="xalan:nodeset($contents)//item[@display = 'true']"><!-- [not(@level = 2 and starts-with(@section, '0'))] skip clause from preface -->
1082
+ <fo:inline keep-together.within-line="always">
1083
+ <fo:leader leader-pattern="space"/>
1084
+ <fo:inline font-weight="normal" font-size="10pt">
1085
+ <!-- Page -->
1086
+ <xsl:call-template name="getLocalizedString">
1087
+ <xsl:with-param name="key">locality.page</xsl:with-param>
1088
+ </xsl:call-template>
1089
+ </fo:inline>
1090
+ </fo:inline>
1091
+ </fo:block>
1091
1092
 
1092
- <fo:block role="TOCI">
1093
- <xsl:if test="@level = 1">
1094
- <xsl:attribute name="margin-top">5pt</xsl:attribute>
1095
- </xsl:if>
1096
- <xsl:if test="@level = 3">
1097
- <xsl:attribute name="margin-top">-0.7pt</xsl:attribute>
1098
- </xsl:if>
1099
- <fo:list-block>
1100
- <xsl:attribute name="margin-left"><xsl:value-of select="$margin-left * (@level - 1)"/>mm</xsl:attribute>
1101
- <xsl:if test="@level &gt;= 2 or @type = 'annex'">
1102
- <xsl:attribute name="font-weight">normal</xsl:attribute>
1093
+ <xsl:if test="$debug = 'true'">
1094
+ <xsl:text disable-output-escaping="yes">&lt;!--</xsl:text>
1095
+ DEBUG
1096
+ contents=<xsl:copy-of select="$contents"/>
1097
+ <xsl:text disable-output-escaping="yes">--&gt;</xsl:text>
1098
+ </xsl:if>
1099
+
1100
+ <xsl:variable name="margin-left">12</xsl:variable>
1101
+ <xsl:for-each select="$contents//item[@display = 'true']"><!-- [not(@level = 2 and starts-with(@section, '0'))] skip clause from preface -->
1102
+
1103
+ <fo:block role="TOCI">
1104
+ <xsl:if test="@level = 1">
1105
+ <xsl:attribute name="margin-top">5pt</xsl:attribute>
1103
1106
  </xsl:if>
1104
- <xsl:attribute name="provisional-distance-between-starts">
1105
- <xsl:choose>
1106
- <!-- skip 0 section without subsections -->
1107
- <xsl:when test="@level &gt;= 3"><xsl:value-of select="$margin-left * 1.2"/>mm</xsl:when>
1108
- <xsl:when test="@section != ''"><xsl:value-of select="$margin-left"/>mm</xsl:when>
1109
- <xsl:otherwise>0mm</xsl:otherwise>
1110
- </xsl:choose>
1111
- </xsl:attribute>
1112
- <fo:list-item>
1113
- <fo:list-item-label end-indent="label-end()">
1114
- <fo:block>
1115
- <xsl:value-of select="@section"/>
1116
- </fo:block>
1117
- </fo:list-item-label>
1118
- <fo:list-item-body start-indent="body-start()">
1119
- <fo:block text-align-last="justify" margin-left="12mm" text-indent="-12mm">
1120
- <fo:basic-link internal-destination="{@id}" fox:alt-text="{title}">
1121
-
1122
- <xsl:apply-templates select="title"/>
1107
+ <xsl:if test="@level = 3">
1108
+ <xsl:attribute name="margin-top">-0.7pt</xsl:attribute>
1109
+ </xsl:if>
1110
+ <fo:list-block>
1111
+ <xsl:attribute name="margin-left"><xsl:value-of select="$margin-left * (@level - 1)"/>mm</xsl:attribute>
1112
+ <xsl:if test="@level &gt;= 2 or @type = 'annex'">
1113
+ <xsl:attribute name="font-weight">normal</xsl:attribute>
1114
+ </xsl:if>
1115
+ <xsl:attribute name="provisional-distance-between-starts">
1116
+ <xsl:choose>
1117
+ <!-- skip 0 section without subsections -->
1118
+ <xsl:when test="@level &gt;= 3"><xsl:value-of select="$margin-left * 1.2"/>mm</xsl:when>
1119
+ <xsl:when test="@section != ''"><xsl:value-of select="$margin-left"/>mm</xsl:when>
1120
+ <xsl:otherwise>0mm</xsl:otherwise>
1121
+ </xsl:choose>
1122
+ </xsl:attribute>
1123
+ <fo:list-item>
1124
+ <fo:list-item-label end-indent="label-end()">
1125
+ <fo:block>
1126
+ <xsl:value-of select="@section"/>
1127
+ </fo:block>
1128
+ </fo:list-item-label>
1129
+ <fo:list-item-body start-indent="body-start()">
1130
+ <fo:block text-align-last="justify" margin-left="12mm" text-indent="-12mm">
1131
+ <fo:basic-link internal-destination="{@id}" fox:alt-text="{title}">
1123
1132
 
1124
- <fo:inline keep-together.within-line="always">
1125
- <fo:leader font-size="9pt" font-weight="normal" leader-pattern="dots"/>
1126
- <fo:inline><fo:page-number-citation ref-id="{@id}"/></fo:inline>
1127
- </fo:inline>
1128
- </fo:basic-link>
1129
- </fo:block>
1130
- </fo:list-item-body>
1131
- </fo:list-item>
1132
- </fo:list-block>
1133
- </fo:block>
1133
+ <xsl:apply-templates select="title"/>
1134
+
1135
+ <fo:inline keep-together.within-line="always">
1136
+ <fo:leader font-size="9pt" font-weight="normal" leader-pattern="dots"/>
1137
+ <fo:inline><fo:page-number-citation ref-id="{@id}"/></fo:inline>
1138
+ </fo:inline>
1139
+ </fo:basic-link>
1140
+ </fo:block>
1141
+ </fo:list-item-body>
1142
+ </fo:list-item>
1143
+ </fo:list-block>
1144
+ </fo:block>
1145
+
1146
+ </xsl:for-each>
1134
1147
 
1135
- </xsl:for-each>
1136
- </fo:block>
1137
- </fo:block-container>
1138
- </xsl:otherwise>
1139
- </xsl:choose>
1140
-
1141
- <!-- Foreword, Introduction -->
1142
- <xsl:call-template name="processPrefaceSectionsDefault"/>
1148
+ <!-- List of Tables -->
1149
+ <xsl:if test="$contents//tables/table">
1150
+ <xsl:call-template name="insertListOf_Title">
1151
+ <xsl:with-param name="title" select="$title-list-tables"/>
1152
+ </xsl:call-template>
1153
+ <xsl:for-each select="$contents//tables/table">
1154
+ <xsl:call-template name="insertListOf_Item"/>
1155
+ </xsl:for-each>
1156
+ </xsl:if>
1157
+
1158
+ <!-- List of Figures -->
1159
+ <xsl:if test="$contents//figures/figure">
1160
+ <xsl:call-template name="insertListOf_Title">
1161
+ <xsl:with-param name="title" select="$title-list-figures"/>
1162
+ </xsl:call-template>
1163
+ <xsl:for-each select="$contents//figures/figure">
1164
+ <xsl:call-template name="insertListOf_Item"/>
1165
+ </xsl:for-each>
1166
+ </xsl:if>
1167
+
1168
+ </fo:block>
1169
+ </fo:block-container>
1170
+ </xsl:otherwise>
1171
+ </xsl:choose>
1143
1172
 
1144
- </fo:flow>
1145
- </fo:page-sequence>
1146
-
1147
- <!-- BODY -->
1148
- <fo:page-sequence master-reference="document{$document-master-reference}" initial-page-number="1" force-page-count="no-force">
1149
- <fo:static-content flow-name="xsl-footnote-separator">
1150
- <fo:block>
1151
- <fo:leader leader-pattern="rule" leader-length="30%"/>
1152
- </fo:block>
1153
- </fo:static-content>
1154
- <xsl:call-template name="insertHeaderFooter"/>
1155
- <fo:flow flow-name="xsl-region-body">
1173
+ <!-- Foreword, Introduction -->
1174
+ <xsl:call-template name="processPrefaceSectionsDefault"/>
1175
+
1176
+ </fo:flow>
1177
+ </fo:page-sequence>
1156
1178
 
1157
-
1158
- <fo:block-container>
1159
- <!-- Information and documentation — Codes for transcription systems -->
1160
- <!-- <fo:block font-size="16pt" font-weight="bold" margin-bottom="18pt">
1161
- <xsl:value-of select="$title-en"/>
1179
+ <!-- BODY -->
1180
+ <fo:page-sequence master-reference="document{$document-master-reference}" initial-page-number="1" force-page-count="no-force">
1181
+ <fo:static-content flow-name="xsl-footnote-separator">
1182
+ <fo:block>
1183
+ <fo:leader leader-pattern="rule" leader-length="30%"/>
1162
1184
  </fo:block>
1163
- -->
1164
- <fo:block font-size="18pt" font-weight="bold" margin-top="40pt" margin-bottom="20pt" line-height="1.1">
1185
+ </fo:static-content>
1186
+ <xsl:call-template name="insertHeaderFooter"/>
1187
+ <fo:flow flow-name="xsl-region-body">
1188
+
1165
1189
 
1166
- <xsl:variable name="title-part-doc-lang" select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']"/>
1167
-
1168
- <xsl:variable name="title-intro-doc-lang" select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-intro']"/>
1190
+ <fo:block-container>
1191
+ <!-- Information and documentation — Codes for transcription systems -->
1192
+ <!-- <fo:block font-size="16pt" font-weight="bold" margin-bottom="18pt">
1193
+ <xsl:value-of select="$title-en"/>
1194
+ </fo:block>
1195
+ -->
1196
+ <fo:block font-size="18pt" font-weight="bold" margin-top="40pt" margin-bottom="20pt" line-height="1.1">
1169
1197
 
1170
- <fo:block role="H1">
1171
- <xsl:if test="normalize-space($title-intro-doc-lang) != ''">
1172
- <xsl:value-of select="$title-intro-doc-lang"/>
1173
- <xsl:text> — </xsl:text>
1174
- </xsl:if>
1198
+ <fo:block role="H1">
1175
1199
 
1176
- <xsl:variable name="title-main-doc-lang" select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-main']"/>
1200
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-intro']"/>
1201
+
1202
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-main']"/>
1203
+
1204
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']">
1205
+ <xsl:with-param name="isMainLang">true</xsl:with-param>
1206
+ <xsl:with-param name="isMainBody">true</xsl:with-param>
1207
+ </xsl:apply-templates>
1208
+
1209
+ </fo:block>
1210
+ <fo:block role="H1">
1211
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']/node()"/>
1212
+ </fo:block>
1177
1213
 
1178
- <xsl:value-of select="$title-main-doc-lang"/>
1214
+ <xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-amd']">
1215
+ <xsl:with-param name="isMainLang">true</xsl:with-param>
1216
+ <xsl:with-param name="isMainBody">true</xsl:with-param>
1217
+ </xsl:apply-templates>
1179
1218
 
1180
- <xsl:if test="normalize-space($title-part-doc-lang) != ''">
1181
- <xsl:if test="$part != ''">
1182
- <xsl:text> — </xsl:text>
1183
- <fo:block font-weight="normal" margin-top="12pt" line-height="1.1">
1184
- <xsl:call-template name="getLocalizedString">
1185
- <xsl:with-param name="key">Part.sg</xsl:with-param>
1186
- </xsl:call-template>
1187
- <xsl:text> </xsl:text>
1188
- <xsl:value-of select="$part"/>
1189
- <xsl:text>:</xsl:text>
1190
- <!-- <xsl:value-of select="$title-part-en"/>
1191
- <xsl:value-of select="$part"/>
1192
- <xsl:text>:</xsl:text> -->
1193
- </fo:block>
1194
- </xsl:if>
1195
- </xsl:if>
1196
1219
  </fo:block>
1197
- <fo:block role="H1">
1198
- <xsl:value-of select="$title-part-doc-lang"/>
1199
- </fo:block>
1200
-
1201
- <xsl:variable name="title-amd" select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-amd']"/>
1202
- <xsl:if test="$doctype = 'amendment' and normalize-space($title-amd) != ''">
1203
- <fo:block margin-top="12pt" role="H1">
1204
- <xsl:call-template name="printAmendmentTitle"/>
1205
- </fo:block>
1206
- </xsl:if>
1207
1220
 
1221
+ </fo:block-container>
1222
+ <!-- Clause(s) -->
1223
+ <fo:block>
1224
+
1225
+ <xsl:choose>
1226
+ <xsl:when test="$doctype = 'amendment'">
1227
+ <xsl:apply-templates select="/iso:iso-standard/iso:sections/*"/>
1228
+ </xsl:when>
1229
+ <xsl:otherwise>
1230
+ <xsl:call-template name="processMainSectionsDefault"/>
1231
+ </xsl:otherwise>
1232
+ </xsl:choose>
1233
+
1234
+ <fo:block id="lastBlock" font-size="1pt"> </fo:block>
1208
1235
  </fo:block>
1209
-
1210
- </fo:block-container>
1211
- <!-- Clause(s) -->
1212
- <fo:block>
1213
1236
 
1214
- <xsl:choose>
1215
- <xsl:when test="$doctype = 'amendment'">
1216
- <xsl:apply-templates select="/iso:iso-standard/iso:sections/*"/>
1217
- </xsl:when>
1218
- <xsl:otherwise>
1219
- <xsl:call-template name="processMainSectionsDefault"/>
1220
- </xsl:otherwise>
1221
- </xsl:choose>
1222
-
1223
- <fo:block id="lastBlock" font-size="1pt"> </fo:block>
1224
- </fo:block>
1225
-
1226
- </fo:flow>
1227
- </fo:page-sequence>
1228
-
1229
-
1230
- <!-- Index -->
1231
- <xsl:apply-templates select="//iso:indexsect" mode="index"/>
1232
-
1233
- <xsl:if test="$isPublished = 'true'">
1234
- <fo:page-sequence master-reference="last-page" force-page-count="no-force">
1235
- <xsl:call-template name="insertHeaderEven"/>
1236
- <fo:static-content flow-name="last-page-footer" font-size="10pt">
1237
- <fo:table table-layout="fixed" width="100%">
1238
- <fo:table-column column-width="33%"/>
1239
- <fo:table-column column-width="33%"/>
1240
- <fo:table-column column-width="34%"/>
1241
- <fo:table-body>
1242
- <fo:table-row>
1243
- <fo:table-cell display-align="center">
1244
- <fo:block font-size="9pt"><xsl:value-of select="$copyrightText"/></fo:block>
1245
- </fo:table-cell>
1246
- <fo:table-cell>
1247
- <fo:block font-size="11pt" font-weight="bold" text-align="center">
1248
- <xsl:if test="$stage-abbreviation = 'PRF'">
1249
- <xsl:value-of select="$proof-text"/>
1250
- </xsl:if>
1237
+ </fo:flow>
1238
+ </fo:page-sequence>
1239
+
1240
+
1241
+ <!-- Index -->
1242
+ <xsl:apply-templates select="//iso:indexsect" mode="index"/>
1243
+
1244
+ <xsl:if test="$isPublished = 'true'">
1245
+ <fo:page-sequence master-reference="last-page" force-page-count="no-force">
1246
+ <xsl:call-template name="insertHeaderEven"/>
1247
+ <fo:static-content flow-name="last-page-footer" font-size="10pt">
1248
+ <fo:table table-layout="fixed" width="100%">
1249
+ <fo:table-column column-width="33%"/>
1250
+ <fo:table-column column-width="33%"/>
1251
+ <fo:table-column column-width="34%"/>
1252
+ <fo:table-body>
1253
+ <fo:table-row>
1254
+ <fo:table-cell display-align="center">
1255
+ <fo:block font-size="9pt"><xsl:value-of select="$copyrightText"/></fo:block>
1256
+ </fo:table-cell>
1257
+ <fo:table-cell>
1258
+ <fo:block font-size="11pt" font-weight="bold" text-align="center">
1259
+ <xsl:if test="$stage-abbreviation = 'PRF'">
1260
+ <xsl:value-of select="$proof-text"/>
1261
+ </xsl:if>
1262
+ </fo:block>
1263
+ </fo:table-cell>
1264
+ <fo:table-cell>
1265
+ <fo:block> </fo:block>
1266
+ </fo:table-cell>
1267
+ </fo:table-row>
1268
+ </fo:table-body>
1269
+ </fo:table>
1270
+ </fo:static-content>
1271
+ <fo:flow flow-name="xsl-region-body">
1272
+ <fo:block-container height="252mm" display-align="after">
1273
+ <fo:block-container border-top="1mm double black">
1274
+ <fo:block font-size="12pt" font-weight="bold" padding-top="3.5mm" padding-bottom="0.5mm">
1275
+ <xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:ext/iso:ics/iso:code">
1276
+ <xsl:if test="position() = 1"><fo:inline>ICS  </fo:inline></xsl:if>
1277
+ <xsl:value-of select="."/>
1278
+ <xsl:if test="position() != last()"><xsl:text>; </xsl:text></xsl:if>
1279
+ </xsl:for-each> 
1280
+ <!-- <xsl:choose>
1281
+ <xsl:when test="$stage-name = 'FDIS'">ICS&#xA0;&#xA0;01.140.30</xsl:when>
1282
+ <xsl:when test="$stage-name = 'PRF'">ICS&#xA0;&#xA0;35.240.63</xsl:when>
1283
+ <xsl:when test="$stage-name = 'published'">ICS&#xA0;&#xA0;35.240.30</xsl:when>
1284
+ <xsl:otherwise>ICS&#xA0;&#xA0;67.060</xsl:otherwise>
1285
+ </xsl:choose> -->
1251
1286
  </fo:block>
1252
- </fo:table-cell>
1253
- <fo:table-cell>
1254
- <fo:block> </fo:block>
1255
- </fo:table-cell>
1256
- </fo:table-row>
1257
- </fo:table-body>
1258
- </fo:table>
1259
- </fo:static-content>
1260
- <fo:flow flow-name="xsl-region-body">
1261
- <fo:block-container height="252mm" display-align="after">
1262
- <fo:block-container border-top="1mm double black">
1263
- <fo:block font-size="12pt" font-weight="bold" padding-top="3.5mm" padding-bottom="0.5mm">
1264
- <xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:ext/iso:ics/iso:code">
1265
- <xsl:if test="position() = 1"><fo:inline>ICS  </fo:inline></xsl:if>
1266
- <xsl:value-of select="."/>
1267
- <xsl:if test="position() != last()"><xsl:text>; </xsl:text></xsl:if>
1268
- </xsl:for-each> 
1269
- <!-- <xsl:choose>
1270
- <xsl:when test="$stage-name = 'FDIS'">ICS&#xA0;&#xA0;01.140.30</xsl:when>
1271
- <xsl:when test="$stage-name = 'PRF'">ICS&#xA0;&#xA0;35.240.63</xsl:when>
1272
- <xsl:when test="$stage-name = 'published'">ICS&#xA0;&#xA0;35.240.30</xsl:when>
1273
- <xsl:otherwise>ICS&#xA0;&#xA0;67.060</xsl:otherwise>
1274
- </xsl:choose> -->
1275
- </fo:block>
1276
- <xsl:if test="/iso:iso-standard/iso:bibdata/iso:keyword">
1277
- <fo:block font-size="9pt" margin-bottom="6pt">
1278
- <xsl:variable name="title-descriptors">
1279
- <xsl:call-template name="getTitle">
1280
- <xsl:with-param name="name" select="'title-descriptors'"/>
1287
+ <xsl:if test="/iso:iso-standard/iso:bibdata/iso:keyword">
1288
+ <fo:block font-size="9pt" margin-bottom="6pt">
1289
+ <xsl:variable name="title-descriptors">
1290
+ <xsl:call-template name="getTitle">
1291
+ <xsl:with-param name="name" select="'title-descriptors'"/>
1292
+ </xsl:call-template>
1293
+ </xsl:variable>
1294
+ <fo:inline font-weight="bold"><xsl:value-of select="$title-descriptors"/>: </fo:inline>
1295
+ <xsl:call-template name="insertKeywords">
1296
+ <xsl:with-param name="sorting">no</xsl:with-param>
1281
1297
  </xsl:call-template>
1282
- </xsl:variable>
1283
- <fo:inline font-weight="bold"><xsl:value-of select="$title-descriptors"/>: </fo:inline>
1284
- <xsl:call-template name="insertKeywords">
1285
- <xsl:with-param name="sorting">no</xsl:with-param>
1298
+ </fo:block>
1299
+ </xsl:if>
1300
+ <xsl:variable name="countPages"/>
1301
+ <xsl:variable name="price_based_on">
1302
+ <xsl:call-template name="getLocalizedString">
1303
+ <xsl:with-param name="key">price_based_on</xsl:with-param>
1304
+ </xsl:call-template>
1305
+ </xsl:variable>
1306
+ <xsl:variable name="price_based_on_items">
1307
+ <xsl:call-template name="split">
1308
+ <xsl:with-param name="pText" select="$price_based_on"/>
1309
+ <xsl:with-param name="sep" select="'%'"/>
1310
+ <xsl:with-param name="normalize-space">false</xsl:with-param>
1286
1311
  </xsl:call-template>
1312
+ </xsl:variable>
1313
+ <!-- Price based on ... pages -->
1314
+ <fo:block font-size="9pt">
1315
+ <xsl:for-each select="xalan:nodeset($price_based_on_items)/item">
1316
+ <xsl:value-of select="."/>
1317
+ <xsl:if test="position() != last()">
1318
+ <fo:page-number-citation ref-id="lastBlock"/>
1319
+ </xsl:if>
1320
+ </xsl:for-each>
1287
1321
  </fo:block>
1288
- </xsl:if>
1289
- <xsl:variable name="countPages"/>
1290
- <xsl:variable name="price_based_on">
1291
- <xsl:call-template name="getLocalizedString">
1292
- <xsl:with-param name="key">price_based_on</xsl:with-param>
1293
- </xsl:call-template>
1294
- </xsl:variable>
1295
- <xsl:variable name="price_based_on_items">
1296
- <xsl:call-template name="split">
1297
- <xsl:with-param name="pText" select="$price_based_on"/>
1298
- <xsl:with-param name="sep" select="'%'"/>
1299
- <xsl:with-param name="normalize-space">false</xsl:with-param>
1300
- </xsl:call-template>
1301
- </xsl:variable>
1302
- <!-- Price based on ... pages -->
1303
- <fo:block font-size="9pt">
1304
- <xsl:for-each select="xalan:nodeset($price_based_on_items)/item">
1305
- <xsl:value-of select="."/>
1306
- <xsl:if test="position() != last()">
1307
- <fo:page-number-citation ref-id="lastBlock"/>
1308
- </xsl:if>
1309
- </xsl:for-each>
1310
- </fo:block>
1322
+ </fo:block-container>
1311
1323
  </fo:block-container>
1312
- </fo:block-container>
1313
- </fo:flow>
1314
- </fo:page-sequence>
1315
- </xsl:if>
1324
+ </fo:flow>
1325
+ </fo:page-sequence>
1326
+ </xsl:if>
1327
+ </xsl:for-each>
1316
1328
  </fo:root>
1317
1329
  </xsl:template>
1318
1330
 
1331
+
1332
+ <xsl:template name="insertListOf_Title">
1333
+ <xsl:param name="title"/>
1334
+ <fo:block role="TOCI" margin-top="5pt" keep-with-next="always">
1335
+ <xsl:value-of select="$title"/>
1336
+ </fo:block>
1337
+ </xsl:template>
1338
+
1339
+ <xsl:template name="insertListOf_Item">
1340
+ <fo:block role="TOCI" font-weight="normal" text-align-last="justify" margin-left="12mm">
1341
+ <fo:basic-link internal-destination="{@id}">
1342
+ <xsl:call-template name="setAltText">
1343
+ <xsl:with-param name="value" select="@alt-text"/>
1344
+ </xsl:call-template>
1345
+ <xsl:apply-templates select="." mode="contents"/>
1346
+ <fo:inline keep-together.within-line="always">
1347
+ <fo:leader font-size="9pt" font-weight="normal" leader-pattern="dots"/>
1348
+ <fo:inline><fo:page-number-citation ref-id="{@id}"/></fo:inline>
1349
+ </fo:inline>
1350
+ </fo:basic-link>
1351
+ </fo:block>
1352
+ </xsl:template>
1353
+
1354
+ <!-- ==================== -->
1355
+ <!-- display titles -->
1356
+ <!-- ==================== -->
1357
+ <xsl:template match="iso:bibdata/iso:title[@type = 'title-intro']">
1358
+ <xsl:apply-templates/>
1359
+ <xsl:text> — </xsl:text>
1360
+ </xsl:template>
1319
1361
 
1320
- <xsl:template match="node()">
1321
- <xsl:apply-templates/>
1362
+ <xsl:template match="iso:bibdata/iso:title[@type = 'title-main']">
1363
+ <xsl:apply-templates/>
1364
+ </xsl:template>
1365
+
1366
+ <xsl:template match="iso:bibdata/iso:title[@type = 'title-part']">
1367
+ <xsl:param name="curr_lang" select="$lang"/>
1368
+ <xsl:param name="isMainLang">false</xsl:param>
1369
+ <xsl:param name="isMainBody">false</xsl:param>
1370
+ <xsl:if test="$part != ''">
1371
+ <xsl:text> — </xsl:text>
1372
+ <xsl:variable name="part-text">
1373
+ <xsl:choose>
1374
+ <xsl:when test="$isMainLang = 'true'">
1375
+ <xsl:call-template name="getLocalizedString">
1376
+ <xsl:with-param name="key">locality.part</xsl:with-param>
1377
+ </xsl:call-template>
1378
+ <xsl:text> </xsl:text>
1379
+ <xsl:value-of select="$part"/>
1380
+ <xsl:text>:</xsl:text>
1381
+ </xsl:when>
1382
+ <xsl:otherwise>
1383
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new($titles/title-part[@lang=$curr_lang]),'#',$part)"/>
1384
+ </xsl:otherwise>
1385
+ </xsl:choose>
1386
+ </xsl:variable>
1387
+ <xsl:choose>
1388
+ <xsl:when test="$isMainBody = 'true'">
1389
+ <fo:block font-weight="normal" margin-top="12pt" line-height="1.1">
1390
+ <xsl:value-of select="$part-text"/>
1391
+ </fo:block>
1392
+ </xsl:when>
1393
+ <xsl:when test="$isMainLang = 'true'">
1394
+ <fo:block font-weight="normal" margin-top="6pt">
1395
+ <xsl:value-of select="$part-text"/>
1396
+ </fo:block>
1397
+ </xsl:when>
1398
+ <xsl:otherwise>
1399
+ <xsl:value-of select="$part-text"/>
1400
+ <xsl:text> </xsl:text>
1401
+ </xsl:otherwise>
1402
+ </xsl:choose>
1403
+ </xsl:if>
1404
+ <xsl:if test="$isMainBody = 'false'">
1405
+ <xsl:apply-templates/>
1406
+ </xsl:if>
1322
1407
  </xsl:template>
1323
1408
 
1324
- <xsl:template name="printAmendmentTitle">
1325
- <xsl:param name="lang" select="'en'"/>
1326
- <xsl:variable name="title-amd" select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-amd']"/>
1327
- <xsl:if test="$doctype = 'amendment' and normalize-space($title-amd) != ''">
1328
- <fo:block font-weight="normal" line-height="1.1">
1329
- <xsl:value-of select="$doctype_uppercased"/>
1330
- <xsl:variable name="amendment-number" select="/iso:iso-standard/iso:bibdata/iso:ext/iso:structuredidentifier/iso:project-number/@amendment"/>
1331
- <xsl:if test="normalize-space($amendment-number) != ''">
1332
- <xsl:text> </xsl:text><xsl:value-of select="$amendment-number"/>
1409
+ <xsl:template match="iso:bibdata/iso:title[@type = 'title-amd']">
1410
+ <xsl:param name="isMainLang">false</xsl:param>
1411
+ <xsl:param name="curr_lang" select="$lang"/>
1412
+ <xsl:param name="isMainBody">false</xsl:param>
1413
+ <xsl:if test="$doctype = 'amendment'">
1414
+ <fo:block margin-right="-5mm" margin-top="6pt" role="H1">
1415
+ <xsl:if test="$isMainLang = 'true'">
1416
+ <xsl:attribute name="margin-top">12pt</xsl:attribute>
1417
+ </xsl:if>
1418
+ <xsl:if test="$stage-abbreviation = 'DIS' or $isMainBody = 'true'">
1419
+ <xsl:attribute name="margin-right">0mm</xsl:attribute>
1333
1420
  </xsl:if>
1334
- <xsl:text>: </xsl:text>
1335
- <xsl:value-of select="$title-amd"/>
1421
+
1422
+ <fo:block font-weight="normal" line-height="1.1">
1423
+ <xsl:value-of select="$doctype_uppercased"/>
1424
+ <xsl:variable name="amendment-number" select="/iso:iso-standard/iso:bibdata/iso:ext/iso:structuredidentifier/iso:project-number/@amendment"/>
1425
+ <xsl:if test="normalize-space($amendment-number) != ''">
1426
+ <xsl:text> </xsl:text><xsl:value-of select="$amendment-number"/>
1427
+ </xsl:if>
1428
+ <xsl:text>: </xsl:text>
1429
+ <xsl:apply-templates/>
1430
+ </fo:block>
1431
+
1336
1432
  </fo:block>
1337
1433
  </xsl:if>
1338
1434
  </xsl:template>
1339
1435
 
1436
+
1437
+ <!-- ==================== -->
1438
+ <!-- END display titles -->
1439
+ <!-- ==================== -->
1440
+
1441
+ <xsl:template match="node()">
1442
+ <xsl:apply-templates/>
1443
+ </xsl:template>
1444
+
1340
1445
  <!-- ============================= -->
1341
1446
  <!-- CONTENTS -->
1342
1447
  <!-- ============================= -->
@@ -1405,36 +1510,7 @@
1405
1510
 
1406
1511
  <xsl:template match="iso:p | iso:termsource | iso:termnote" mode="contents"/>
1407
1512
 
1408
- <xsl:template name="getListItemFormat">
1409
- <xsl:choose>
1410
- <xsl:when test="local-name(..) = 'ul'">
1411
- <xsl:call-template name="setULLabel"/>
1412
- </xsl:when>
1413
- <xsl:otherwise> <!-- for ordered lists -->
1414
- <xsl:choose>
1415
- <xsl:when test="../@type = 'arabic'">
1416
- <xsl:number format="1." lang="en"/>
1417
- </xsl:when>
1418
- <xsl:when test="../@type = 'alphabet'">
1419
- <xsl:number format="a)" lang="en"/>
1420
- </xsl:when>
1421
- <xsl:when test="../@type = 'alphabet_upper'">
1422
- <xsl:number format="A." lang="en"/>
1423
- </xsl:when>
1424
- <xsl:when test="../@type = 'roman'">
1425
- <xsl:number format="i)"/>
1426
- </xsl:when>
1427
- <xsl:when test="../@type = 'roman_upper'">
1428
- <xsl:number format="I."/>
1429
- </xsl:when>
1430
- <xsl:otherwise>
1431
- <xsl:number format="a)"/>
1432
- </xsl:otherwise>
1433
- </xsl:choose>
1434
- </xsl:otherwise>
1435
- </xsl:choose>
1436
- </xsl:template>
1437
-
1513
+
1438
1514
 
1439
1515
  <!-- ============================= -->
1440
1516
  <!-- ============================= -->
@@ -1648,11 +1724,11 @@
1648
1724
  <xsl:template match="iso:li//iso:p//text()">
1649
1725
  <xsl:choose>
1650
1726
  <xsl:when test="contains(., '&#9;')">
1651
- <!-- <fo:inline white-space="pre"><xsl:value-of select="translate(., $thinspace, ' ')"/></fo:inline> -->
1727
+ <!-- <fo:inline white-space="pre"><xsl:value-of select="translate(., $thin_space, ' ')"/></fo:inline> -->
1652
1728
  <fo:inline white-space="pre"><xsl:value-of select="."/></fo:inline>
1653
1729
  </xsl:when>
1654
1730
  <xsl:otherwise>
1655
- <!-- <xsl:value-of select="translate(., $thinspace, ' ')"/> -->
1731
+ <!-- <xsl:value-of select="translate(., $thin_space, ' ')"/> -->
1656
1732
  <xsl:value-of select="."/>
1657
1733
  </xsl:otherwise>
1658
1734
  </xsl:choose>
@@ -1665,76 +1741,6 @@
1665
1741
  <xsl:apply-templates/>
1666
1742
  </xsl:template>
1667
1743
 
1668
-
1669
- <xsl:template match="iso:ul | iso:ol" mode="ul_ol">
1670
- <fo:list-block provisional-distance-between-starts="7mm" margin-top="8pt"> <!-- margin-bottom="8pt" -->
1671
- <xsl:apply-templates select="node()[not(local-name() = 'note')]"/>
1672
- </fo:list-block>
1673
- <xsl:for-each select="./iso:note">
1674
- <xsl:call-template name="note"/>
1675
- </xsl:for-each>
1676
- </xsl:template>
1677
-
1678
- <xsl:template match="iso:li">
1679
- <fo:list-item id="{@id}">
1680
- <fo:list-item-label end-indent="label-end()">
1681
- <fo:block>
1682
- <xsl:call-template name="getListItemFormat"/>
1683
- </fo:block>
1684
- </fo:list-item-label>
1685
- <fo:list-item-body start-indent="body-start()">
1686
- <fo:block>
1687
- <xsl:apply-templates select="node()[not(local-name() = 'note')]"/>
1688
-
1689
- <xsl:for-each select="./iso:note">
1690
- <xsl:call-template name="note"/>
1691
- </xsl:for-each>
1692
- </fo:block>
1693
- </fo:list-item-body>
1694
- </fo:list-item>
1695
- </xsl:template>
1696
-
1697
-
1698
- <xsl:template match="iso:preferred">
1699
- <xsl:variable name="levelTerm">
1700
- <xsl:call-template name="getLevelTermName"/>
1701
- </xsl:variable>
1702
- <fo:block line-height="1.1" role="H{$levelTerm}">
1703
- <fo:block font-weight="bold" keep-with-next="always">
1704
- <xsl:apply-templates select="ancestor::iso:term[1]/iso:name"/>
1705
- </fo:block>
1706
- <fo:block font-weight="bold" keep-with-next="always">
1707
- <xsl:call-template name="setStyle_preferred"/>
1708
- <xsl:apply-templates/>
1709
- </fo:block>
1710
- </fo:block>
1711
- </xsl:template>
1712
-
1713
-
1714
-
1715
- <xsl:template match="iso:formula/iso:stem">
1716
- <fo:block margin-top="6pt" margin-bottom="12pt">
1717
- <fo:table table-layout="fixed" width="100%">
1718
- <fo:table-column column-width="95%"/>
1719
- <fo:table-column column-width="5%"/>
1720
- <fo:table-body>
1721
- <fo:table-row>
1722
- <fo:table-cell display-align="center">
1723
- <fo:block text-align="left" margin-left="5mm">
1724
- <xsl:apply-templates/>
1725
- </fo:block>
1726
- </fo:table-cell>
1727
- <fo:table-cell display-align="center">
1728
- <fo:block text-align="right">
1729
- <xsl:apply-templates select="../iso:name" mode="formula_number"/>
1730
- </fo:block>
1731
- </fo:table-cell>
1732
- </fo:table-row>
1733
- </fo:table-body>
1734
- </fo:table>
1735
- </fo:block>
1736
- </xsl:template>
1737
-
1738
1744
 
1739
1745
  <!-- For express listings PDF attachments -->
1740
1746
  <xsl:template match="*[local-name() = 'eref'][contains(@bibitemid, '.exp')]" priority="2">
@@ -1783,26 +1789,6 @@
1783
1789
  </fo:page-sequence>
1784
1790
  </xsl:template>
1785
1791
 
1786
- <!-- <xsl:template match="iso:clause[@type = 'index']/iso:title" priority="4"> -->
1787
- <xsl:template match="iso:indexsect/iso:title" priority="4">
1788
- <fo:block font-size="16pt" font-weight="bold" margin-bottom="84pt" role="H1">
1789
- <!-- Index -->
1790
- <xsl:apply-templates/>
1791
- </fo:block>
1792
- </xsl:template>
1793
-
1794
- <!-- <xsl:template match="iso:clause[@type = 'index']/iso:clause/iso:title" priority="4"> -->
1795
- <xsl:template match="iso:indexsect/iso:clause/iso:title" priority="4">
1796
- <!-- Letter A, B, C, ... -->
1797
- <fo:block font-size="10pt" font-weight="bold" margin-bottom="3pt" keep-with-next="always">
1798
- <xsl:apply-templates/>
1799
- </fo:block>
1800
- </xsl:template>
1801
-
1802
- <xsl:template match="iso:indexsect//iso:li/text()">
1803
- <!-- to split by '_' and other chars -->
1804
- <xsl:call-template name="add-zero-spaces-java"/>
1805
- </xsl:template>
1806
1792
 
1807
1793
  <xsl:template match="iso:xref" priority="2">
1808
1794
  <fo:basic-link internal-destination="{@target}" fox:alt-text="{@target}" xsl:use-attribute-sets="xref-style">
@@ -1826,9 +1812,9 @@
1826
1812
  <!-- End of Index processing -->
1827
1813
  <!-- =================== -->
1828
1814
 
1829
- <!-- <xsl:variable name="thinspace" select="'&#x2009;'"/>
1830
- <xsl:template match="text()[contains(., $thinspace)]">
1831
- <xsl:value-of select="translate(., $thinspace, ' ')"/>
1815
+ <!--
1816
+ <xsl:template match="text()[contains(., $thin_space)]">
1817
+ <xsl:value-of select="translate(., $thin_space, ' ')"/>
1832
1818
  </xsl:template> -->
1833
1819
 
1834
1820
 
@@ -1945,49 +1931,29 @@
1945
1931
  </xsl:when>
1946
1932
  </xsl:choose>
1947
1933
  <xsl:variable name="title-edition">
1948
- <xsl:call-template name="getTitle">
1949
- <xsl:with-param name="name" select="'title-edition'"/>
1934
+ <xsl:call-template name="getLocalizedString">
1935
+ <xsl:with-param name="key">edition</xsl:with-param>
1950
1936
  </xsl:call-template>
1951
1937
  </xsl:variable>
1952
1938
  <xsl:if test="$edition != ''"><xsl:text> </xsl:text><xsl:value-of select="java:toLowerCase(java:java.lang.String.new($title-edition))"/></xsl:if>
1953
1939
  </xsl:template>
1954
1940
 
1955
- <xsl:template name="printTitlePartFr">
1956
- <xsl:variable name="part-fr" select="/iso:iso-standard/iso:bibdata/iso:title[@language = 'fr' and @type = 'title-part']"/>
1957
- <xsl:if test="normalize-space($part-fr) != ''">
1958
- <xsl:if test="$part != ''">
1959
- <xsl:text> — </xsl:text>
1960
- <xsl:value-of select="java:replaceAll(java:java.lang.String.new($titles/title-part[@lang='fr']),'#',$part)"/>
1961
- <!-- <xsl:value-of select="$title-part-fr"/>
1962
- <xsl:value-of select="$part"/>
1963
- <xsl:text>:</xsl:text> -->
1964
- </xsl:if>
1965
- <xsl:value-of select="$part-fr"/>
1966
- </xsl:if>
1967
- </xsl:template>
1968
-
1969
- <xsl:template name="printTitlePartEn">
1970
- <xsl:variable name="part-en" select="/iso:iso-standard/iso:bibdata/iso:title[@language = 'en' and @type = 'title-part']"/>
1971
- <xsl:if test="normalize-space($part-en) != ''">
1972
- <xsl:if test="$part != ''">
1973
- <xsl:text> — </xsl:text>
1974
- <fo:block font-weight="normal" margin-top="6pt">
1975
- <xsl:value-of select="java:replaceAll(java:java.lang.String.new($titles/title-part[@lang='en']),'#',$part)"/>
1976
- <!-- <xsl:value-of select="$title-part-en"/>
1977
- <xsl:value-of select="$part"/>
1978
- <xsl:text>:</xsl:text> -->
1979
- </fo:block>
1980
- </xsl:if>
1981
- <xsl:value-of select="$part-en"/>
1982
- </xsl:if>
1983
- </xsl:template>
1984
-
1985
1941
 
1986
- <xsl:variable name="pageWidth_">
1942
+ <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">
1943
+ <xsl:call-template name="getLang"/>
1944
+ </xsl:variable><xsl:variable name="pageWidth_">
1987
1945
  210
1988
1946
  </xsl:variable><xsl:variable name="pageWidth" select="normalize-space($pageWidth_)"/><xsl:variable name="pageHeight_">
1989
1947
  297
1990
- </xsl:variable><xsl:variable name="pageHeight" select="normalize-space($pageHeight_)"/><xsl:variable name="titles_">
1948
+ </xsl:variable><xsl:variable name="pageHeight" select="normalize-space($pageHeight_)"/><xsl:variable name="marginLeftRight1_">
1949
+ 25
1950
+ </xsl:variable><xsl:variable name="marginLeftRight1" select="normalize-space($marginLeftRight1_)"/><xsl:variable name="marginLeftRight2_">
1951
+ 12.5
1952
+ </xsl:variable><xsl:variable name="marginLeftRight2" select="normalize-space($marginLeftRight2_)"/><xsl:variable name="marginTop_">
1953
+ 27.4
1954
+ </xsl:variable><xsl:variable name="marginTop" select="normalize-space($marginTop_)"/><xsl:variable name="marginBottom_">
1955
+ 13
1956
+ </xsl:variable><xsl:variable name="marginBottom" select="normalize-space($marginBottom_)"/><xsl:variable name="titles_">
1991
1957
 
1992
1958
  <title-edition lang="en">
1993
1959
 
@@ -1999,6 +1965,10 @@
1999
1965
  <xsl:text>Édition </xsl:text>
2000
1966
  </title-edition>
2001
1967
 
1968
+ <title-edition lang="ru">
1969
+ <xsl:text>Издание </xsl:text>
1970
+ </title-edition>
1971
+
2002
1972
  <!-- These titles of Table of contents renders different than determined in localized-strings -->
2003
1973
  <title-toc lang="en">
2004
1974
 
@@ -2013,7 +1983,7 @@
2013
1983
  <xsl:text>Contents</xsl:text>
2014
1984
 
2015
1985
  </title-toc>
2016
-
1986
+
2017
1987
  <title-descriptors lang="en">Descriptors</title-descriptors>
2018
1988
 
2019
1989
  <title-part lang="en">
@@ -2029,7 +1999,13 @@
2029
1999
 
2030
2000
 
2031
2001
 
2032
- </title-part>
2002
+ </title-part>
2003
+ <title-part lang="ru">
2004
+
2005
+ <xsl:text>Часть #:</xsl:text>
2006
+
2007
+
2008
+ </title-part>
2033
2009
  <title-part lang="zh">第 # 部分:</title-part>
2034
2010
 
2035
2011
  <title-subpart lang="en">Sub-part #</title-subpart>
@@ -2045,13 +2021,38 @@
2045
2021
 
2046
2022
  <title-summary lang="en">Summary</title-summary>
2047
2023
 
2024
+ <title-continued lang="ru">(продолжение)</title-continued>
2048
2025
  <title-continued lang="en">(continued)</title-continued>
2049
2026
  <title-continued lang="fr">(continué)</title-continued>
2050
2027
 
2051
- </xsl:variable><xsl:variable name="titles" select="xalan:nodeset($titles_)"/><xsl:variable name="bibdata">
2028
+ </xsl:variable><xsl:variable name="titles" select="xalan:nodeset($titles_)"/><xsl:variable name="title-list-tables">
2029
+ <xsl:variable name="toc_table_title" select="//*[contains(local-name(), '-standard')]/*[local-name() = 'misc-container']/*[local-name() = 'toc'][@type='table']/*[local-name() = 'title']"/>
2030
+ <xsl:value-of select="$toc_table_title"/>
2031
+ <xsl:if test="normalize-space($toc_table_title) = ''">
2032
+ <xsl:call-template name="getTitle">
2033
+ <xsl:with-param name="name" select="'title-list-tables'"/>
2034
+ </xsl:call-template>
2035
+ </xsl:if>
2036
+ </xsl:variable><xsl:variable name="title-list-figures">
2037
+ <xsl:variable name="toc_figure_title" select="//*[contains(local-name(), '-standard')]/*[local-name() = 'misc-container']/*[local-name() = 'toc'][@type='figure']/*[local-name() = 'title']"/>
2038
+ <xsl:value-of select="$toc_figure_title"/>
2039
+ <xsl:if test="normalize-space($toc_figure_title) = ''">
2040
+ <xsl:call-template name="getTitle">
2041
+ <xsl:with-param name="name" select="'title-list-figures'"/>
2042
+ </xsl:call-template>
2043
+ </xsl:if>
2044
+ </xsl:variable><xsl:variable name="title-list-recommendations">
2045
+ <xsl:variable name="toc_requirement_title" select="//*[contains(local-name(), '-standard')]/*[local-name() = 'misc-container']/*[local-name() = 'toc'][@type='requirement']/*[local-name() = 'title']"/>
2046
+ <xsl:value-of select="$toc_requirement_title"/>
2047
+ <xsl:if test="normalize-space($toc_requirement_title) = ''">
2048
+ <xsl:call-template name="getTitle">
2049
+ <xsl:with-param name="name" select="'title-list-recommendations'"/>
2050
+ </xsl:call-template>
2051
+ </xsl:if>
2052
+ </xsl:variable><xsl:variable name="bibdata">
2052
2053
  <xsl:copy-of select="//*[contains(local-name(), '-standard')]/*[local-name() = 'bibdata']"/>
2053
2054
  <xsl:copy-of select="//*[contains(local-name(), '-standard')]/*[local-name() = 'localized-strings']"/>
2054
- </xsl:variable><xsl:variable name="tab_zh"> </xsl:variable><xsl:template name="getTitle">
2055
+ </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">
2055
2056
  <xsl:param name="name"/>
2056
2057
  <xsl:param name="lang"/>
2057
2058
  <xsl:variable name="lang_">
@@ -2074,7 +2075,7 @@
2074
2075
  <xsl:value-of select="$titles/*[local-name() = $name][@lang = 'en']"/>
2075
2076
  </xsl:otherwise>
2076
2077
  </xsl:choose>
2077
- </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">
2078
+ </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">
2078
2079
 
2079
2080
 
2080
2081
 
@@ -2245,11 +2246,12 @@
2245
2246
 
2246
2247
 
2247
2248
  </xsl:attribute-set><xsl:attribute-set name="example-name-style">
2248
- <xsl:attribute name="keep-with-next">always</xsl:attribute>
2249
2249
 
2250
2250
 
2251
2251
 
2252
- <xsl:attribute name="padding-right">5mm</xsl:attribute>
2252
+
2253
+ <xsl:attribute name="keep-with-next">always</xsl:attribute>
2254
+ <xsl:attribute name="padding-right">5mm</xsl:attribute>
2253
2255
 
2254
2256
 
2255
2257
 
@@ -2648,12 +2650,11 @@
2648
2650
 
2649
2651
 
2650
2652
  </xsl:attribute-set><xsl:attribute-set name="quote-style">
2651
- <xsl:attribute name="role">BlockQuote</xsl:attribute>
2653
+ <xsl:attribute name="margin-left">12mm</xsl:attribute>
2654
+ <xsl:attribute name="margin-right">12mm</xsl:attribute>
2652
2655
 
2653
2656
 
2654
2657
  <xsl:attribute name="margin-top">12pt</xsl:attribute>
2655
- <xsl:attribute name="margin-left">12mm</xsl:attribute>
2656
- <xsl:attribute name="margin-right">12mm</xsl:attribute>
2657
2658
 
2658
2659
 
2659
2660
 
@@ -2661,10 +2662,8 @@
2661
2662
 
2662
2663
 
2663
2664
  </xsl:attribute-set><xsl:attribute-set name="quote-source-style">
2665
+ <xsl:attribute name="text-align">right</xsl:attribute>
2664
2666
 
2665
-
2666
- <xsl:attribute name="text-align">right</xsl:attribute>
2667
-
2668
2667
 
2669
2668
  </xsl:attribute-set><xsl:attribute-set name="termsource-style">
2670
2669
 
@@ -2688,6 +2687,9 @@
2688
2687
 
2689
2688
  <xsl:attribute name="margin-bottom">10pt</xsl:attribute>
2690
2689
 
2690
+ </xsl:attribute-set><xsl:attribute-set name="term-name-style">
2691
+ <xsl:attribute name="keep-with-next">always</xsl:attribute>
2692
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
2691
2693
  </xsl:attribute-set><xsl:attribute-set name="figure-style">
2692
2694
 
2693
2695
  </xsl:attribute-set><xsl:attribute-set name="figure-name-style">
@@ -2718,6 +2720,36 @@
2718
2720
 
2719
2721
 
2720
2722
  </xsl:attribute-set><xsl:attribute-set name="formula-style">
2723
+ <xsl:attribute name="margin-top">6pt</xsl:attribute>
2724
+ <xsl:attribute name="margin-bottom">12pt</xsl:attribute>
2725
+
2726
+
2727
+
2728
+
2729
+
2730
+
2731
+ </xsl:attribute-set><xsl:attribute-set name="formula-stem-block-style">
2732
+ <xsl:attribute name="text-align">center</xsl:attribute>
2733
+
2734
+
2735
+
2736
+
2737
+
2738
+ <xsl:attribute name="text-align">left</xsl:attribute>
2739
+ <xsl:attribute name="margin-left">5mm</xsl:attribute>
2740
+
2741
+
2742
+
2743
+
2744
+
2745
+
2746
+
2747
+ </xsl:attribute-set><xsl:attribute-set name="formula-stem-number-style">
2748
+ <xsl:attribute name="text-align">right</xsl:attribute>
2749
+
2750
+
2751
+
2752
+
2721
2753
 
2722
2754
  </xsl:attribute-set><xsl:attribute-set name="image-style">
2723
2755
  <xsl:attribute name="text-align">center</xsl:attribute>
@@ -2753,6 +2785,20 @@
2753
2785
  <xsl:attribute name="margin-bottom">12pt</xsl:attribute>
2754
2786
  <xsl:attribute name="keep-with-previous">always</xsl:attribute>
2755
2787
 
2788
+ </xsl:attribute-set><xsl:attribute-set name="preferred-block-style">
2789
+
2790
+
2791
+
2792
+
2793
+ <xsl:attribute name="line-height">1.1</xsl:attribute>
2794
+
2795
+
2796
+
2797
+ </xsl:attribute-set><xsl:attribute-set name="preferred-term-style">
2798
+ <xsl:attribute name="keep-with-next">always</xsl:attribute>
2799
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
2800
+
2801
+
2756
2802
  </xsl:attribute-set><xsl:attribute-set name="domain-style">
2757
2803
 
2758
2804
  </xsl:attribute-set><xsl:attribute-set name="admitted-style">
@@ -2771,13 +2817,19 @@
2771
2817
  </xsl:attribute-set><xsl:variable name="color-added-text">
2772
2818
  <xsl:text>rgb(0, 255, 0)</xsl:text>
2773
2819
  </xsl:variable><xsl:attribute-set name="add-style">
2774
- <xsl:attribute name="color">red</xsl:attribute>
2775
- <xsl:attribute name="text-decoration">underline</xsl:attribute>
2776
- <!-- <xsl:attribute name="color">black</xsl:attribute>
2777
- <xsl:attribute name="background-color"><xsl:value-of select="$color-added-text"/></xsl:attribute>
2778
- <xsl:attribute name="padding-top">1mm</xsl:attribute>
2779
- <xsl:attribute name="padding-bottom">0.5mm</xsl:attribute> -->
2780
- </xsl:attribute-set><xsl:variable name="color-deleted-text">
2820
+
2821
+ <xsl:attribute name="color">red</xsl:attribute>
2822
+ <xsl:attribute name="text-decoration">underline</xsl:attribute>
2823
+ <!-- <xsl:attribute name="color">black</xsl:attribute>
2824
+ <xsl:attribute name="background-color"><xsl:value-of select="$color-added-text"/></xsl:attribute>
2825
+ <xsl:attribute name="padding-top">1mm</xsl:attribute>
2826
+ <xsl:attribute name="padding-bottom">0.5mm</xsl:attribute> -->
2827
+
2828
+ </xsl:attribute-set><xsl:variable name="add-style">
2829
+ <add-style xsl:use-attribute-sets="add-style"/>
2830
+ </xsl:variable><xsl:template name="append_add-style">
2831
+ <xsl:copy-of select="xalan:nodeset($add-style)/add-style/@*"/>
2832
+ </xsl:template><xsl:variable name="color-deleted-text">
2781
2833
  <xsl:text>red</xsl:text>
2782
2834
  </xsl:variable><xsl:attribute-set name="del-style">
2783
2835
  <xsl:attribute name="color"><xsl:value-of select="$color-deleted-text"/></xsl:attribute>
@@ -2790,6 +2842,36 @@
2790
2842
 
2791
2843
  </xsl:attribute-set><xsl:attribute-set name="list-style">
2792
2844
 
2845
+
2846
+
2847
+
2848
+
2849
+
2850
+
2851
+ <xsl:attribute name="provisional-distance-between-starts">7mm</xsl:attribute>
2852
+ <xsl:attribute name="margin-top">8pt</xsl:attribute>
2853
+
2854
+
2855
+
2856
+
2857
+
2858
+
2859
+
2860
+
2861
+
2862
+
2863
+
2864
+ </xsl:attribute-set><xsl:attribute-set name="list-item-style">
2865
+
2866
+
2867
+ </xsl:attribute-set><xsl:attribute-set name="list-item-label-style">
2868
+
2869
+
2870
+
2871
+ </xsl:attribute-set><xsl:attribute-set name="list-item-body-style">
2872
+
2873
+
2874
+
2793
2875
  </xsl:attribute-set><xsl:attribute-set name="toc-style">
2794
2876
  <xsl:attribute name="line-height">135%</xsl:attribute>
2795
2877
  </xsl:attribute-set><xsl:attribute-set name="fn-reference-style">
@@ -3058,15 +3140,156 @@
3058
3140
 
3059
3141
 
3060
3142
 
3143
+ </xsl:attribute-set><xsl:attribute-set name="hljs-doctag">
3144
+ <xsl:attribute name="color">#d73a49</xsl:attribute>
3145
+ </xsl:attribute-set><xsl:attribute-set name="hljs-keyword">
3146
+ <xsl:attribute name="color">#d73a49</xsl:attribute>
3147
+ </xsl:attribute-set><xsl:attribute-set name="hljs-meta_hljs-keyword">
3148
+ <xsl:attribute name="color">#d73a49</xsl:attribute>
3149
+ </xsl:attribute-set><xsl:attribute-set name="hljs-template-tag">
3150
+ <xsl:attribute name="color">#d73a49</xsl:attribute>
3151
+ </xsl:attribute-set><xsl:attribute-set name="hljs-template-variable">
3152
+ <xsl:attribute name="color">#d73a49</xsl:attribute>
3153
+ </xsl:attribute-set><xsl:attribute-set name="hljs-type">
3154
+ <xsl:attribute name="color">#d73a49</xsl:attribute>
3155
+ </xsl:attribute-set><xsl:attribute-set name="hljs-variable_and_language_">
3156
+ <xsl:attribute name="color">#d73a49</xsl:attribute>
3157
+ </xsl:attribute-set><xsl:attribute-set name="hljs-title">
3158
+ <xsl:attribute name="color">#6f42c1</xsl:attribute>
3159
+ </xsl:attribute-set><xsl:attribute-set name="hljs-title_and_class_">
3160
+ <xsl:attribute name="color">#6f42c1</xsl:attribute>
3161
+ </xsl:attribute-set><xsl:attribute-set name="hljs-title_and_class__and_inherited__">
3162
+ <xsl:attribute name="color">#6f42c1</xsl:attribute>
3163
+ </xsl:attribute-set><xsl:attribute-set name="hljs-title_and_function_">
3164
+ <xsl:attribute name="color">#6f42c1</xsl:attribute>
3165
+ </xsl:attribute-set><xsl:attribute-set name="hljs-attr">
3166
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
3167
+ </xsl:attribute-set><xsl:attribute-set name="hljs-attribute">
3168
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
3169
+ </xsl:attribute-set><xsl:attribute-set name="hljs-literal">
3170
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
3171
+ </xsl:attribute-set><xsl:attribute-set name="hljs-meta">
3172
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
3173
+ </xsl:attribute-set><xsl:attribute-set name="hljs-number">
3174
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
3175
+ </xsl:attribute-set><xsl:attribute-set name="hljs-operator">
3176
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
3177
+ </xsl:attribute-set><xsl:attribute-set name="hljs-variable">
3178
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
3179
+ </xsl:attribute-set><xsl:attribute-set name="hljs-selector-attr">
3180
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
3181
+ </xsl:attribute-set><xsl:attribute-set name="hljs-selector-class">
3182
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
3183
+ </xsl:attribute-set><xsl:attribute-set name="hljs-selector-id">
3184
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
3185
+ </xsl:attribute-set><xsl:attribute-set name="hljs-regexp">
3186
+ <xsl:attribute name="color">#032f62</xsl:attribute>
3187
+ </xsl:attribute-set><xsl:attribute-set name="hljs-string">
3188
+ <xsl:attribute name="color">#032f62</xsl:attribute>
3189
+ </xsl:attribute-set><xsl:attribute-set name="hljs-meta_hljs-string">
3190
+ <xsl:attribute name="color">#032f62</xsl:attribute>
3191
+ </xsl:attribute-set><xsl:attribute-set name="hljs-built_in">
3192
+ <xsl:attribute name="color">#e36209</xsl:attribute>
3193
+ </xsl:attribute-set><xsl:attribute-set name="hljs-symbol">
3194
+ <xsl:attribute name="color">#e36209</xsl:attribute>
3195
+ </xsl:attribute-set><xsl:attribute-set name="hljs-comment">
3196
+ <xsl:attribute name="color">#6a737d</xsl:attribute>
3197
+ </xsl:attribute-set><xsl:attribute-set name="hljs-code">
3198
+ <xsl:attribute name="color">#6a737d</xsl:attribute>
3199
+ </xsl:attribute-set><xsl:attribute-set name="hljs-formula">
3200
+ <xsl:attribute name="color">#6a737d</xsl:attribute>
3201
+ </xsl:attribute-set><xsl:attribute-set name="hljs-name">
3202
+ <xsl:attribute name="color">#22863a</xsl:attribute>
3203
+ </xsl:attribute-set><xsl:attribute-set name="hljs-quote">
3204
+ <xsl:attribute name="color">#22863a</xsl:attribute>
3205
+ </xsl:attribute-set><xsl:attribute-set name="hljs-selector-tag">
3206
+ <xsl:attribute name="color">#22863a</xsl:attribute>
3207
+ </xsl:attribute-set><xsl:attribute-set name="hljs-selector-pseudo">
3208
+ <xsl:attribute name="color">#22863a</xsl:attribute>
3209
+ </xsl:attribute-set><xsl:attribute-set name="hljs-subst">
3210
+ <xsl:attribute name="color">#24292e</xsl:attribute>
3211
+ </xsl:attribute-set><xsl:attribute-set name="hljs-section">
3212
+ <xsl:attribute name="color">#005cc5</xsl:attribute>
3213
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
3214
+ </xsl:attribute-set><xsl:attribute-set name="hljs-bullet">
3215
+ <xsl:attribute name="color">#735c0f</xsl:attribute>
3216
+ </xsl:attribute-set><xsl:attribute-set name="hljs-emphasis">
3217
+ <xsl:attribute name="color">#24292e</xsl:attribute>
3218
+ <xsl:attribute name="font-style">italic</xsl:attribute>
3219
+ </xsl:attribute-set><xsl:attribute-set name="hljs-strong">
3220
+ <xsl:attribute name="color">#24292e</xsl:attribute>
3221
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
3222
+ </xsl:attribute-set><xsl:attribute-set name="hljs-addition">
3223
+ <xsl:attribute name="color">#22863a</xsl:attribute>
3224
+ <xsl:attribute name="background-color">#f0fff4</xsl:attribute>
3225
+ </xsl:attribute-set><xsl:attribute-set name="hljs-deletion">
3226
+ <xsl:attribute name="color">#b31d28</xsl:attribute>
3227
+ <xsl:attribute name="background-color">#ffeef0</xsl:attribute>
3228
+ </xsl:attribute-set><xsl:attribute-set name="hljs-char_and_escape_">
3229
+ </xsl:attribute-set><xsl:attribute-set name="hljs-link">
3230
+ </xsl:attribute-set><xsl:attribute-set name="hljs-params">
3231
+ </xsl:attribute-set><xsl:attribute-set name="hljs-property">
3232
+ </xsl:attribute-set><xsl:attribute-set name="hljs-punctuation">
3233
+ </xsl:attribute-set><xsl:attribute-set name="hljs-tag">
3234
+ </xsl:attribute-set><xsl:attribute-set name="indexsect-title-style">
3235
+ <xsl:attribute name="role">H1</xsl:attribute>
3236
+
3237
+
3238
+
3239
+
3240
+ <xsl:attribute name="font-size">16pt</xsl:attribute>
3241
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
3242
+ <xsl:attribute name="margin-bottom">84pt</xsl:attribute>
3243
+
3244
+
3245
+ </xsl:attribute-set><xsl:attribute-set name="indexsect-clause-title-style">
3246
+ <xsl:attribute name="keep-with-next">always</xsl:attribute>
3247
+
3248
+
3249
+
3250
+
3251
+ <xsl:attribute name="font-size">10pt</xsl:attribute>
3252
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
3253
+ <xsl:attribute name="margin-bottom">3pt</xsl:attribute>
3254
+
3255
+
3061
3256
  </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">
3257
+ <xsl:variable name="nodes_preface_">
3258
+ <xsl:for-each select="/*/*[local-name()='preface']/*">
3259
+ <node id="{@id}"/>
3260
+ </xsl:for-each>
3261
+ </xsl:variable>
3262
+ <xsl:variable name="nodes_preface" select="xalan:nodeset($nodes_preface_)"/>
3263
+
3062
3264
  <xsl:for-each select="/*/*[local-name()='preface']/*">
3063
3265
  <xsl:sort select="@displayorder" data-type="number"/>
3266
+
3267
+ <!-- process Section's title -->
3268
+ <xsl:variable name="preceding-sibling_id" select="$nodes_preface/node[@id = current()/@id]/preceding-sibling::node[1]/@id"/>
3269
+ <xsl:if test="$preceding-sibling_id != ''">
3270
+ <xsl:apply-templates select="parent::*/*[@type = 'section-title' and @id = $preceding-sibling_id and not(@displayorder)]" mode="contents_no_displayorder"/>
3271
+ </xsl:if>
3272
+
3064
3273
  <xsl:apply-templates select="." mode="contents"/>
3065
3274
  </xsl:for-each>
3066
3275
  </xsl:template><xsl:template name="processMainSectionsDefault_Contents">
3067
3276
 
3277
+ <xsl:variable name="nodes_sections_">
3278
+ <xsl:for-each select="/*/*[local-name()='sections']/*">
3279
+ <node id="{@id}"/>
3280
+ </xsl:for-each>
3281
+ </xsl:variable>
3282
+ <xsl:variable name="nodes_sections" select="xalan:nodeset($nodes_sections_)"/>
3283
+
3068
3284
  <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']]">
3069
3285
  <xsl:sort select="@displayorder" data-type="number"/>
3286
+
3287
+ <!-- process Section's title -->
3288
+ <xsl:variable name="preceding-sibling_id" select="$nodes_sections/node[@id = current()/@id]/preceding-sibling::node[1]/@id"/>
3289
+ <xsl:if test="$preceding-sibling_id != ''">
3290
+ <xsl:apply-templates select="parent::*/*[@type = 'section-title' and @id = $preceding-sibling_id and not(@displayorder)]" mode="contents_no_displayorder"/>
3291
+ </xsl:if>
3292
+
3070
3293
  <xsl:apply-templates select="." mode="contents"/>
3071
3294
  </xsl:for-each>
3072
3295
 
@@ -3079,6 +3302,30 @@
3079
3302
  <xsl:sort select="@displayorder" data-type="number"/>
3080
3303
  <xsl:apply-templates select="." mode="contents"/>
3081
3304
  </xsl:for-each>
3305
+ </xsl:template><xsl:template name="processTablesFigures_Contents">
3306
+ <xsl:param name="always"/>
3307
+ <xsl:if test="(//*[contains(local-name(), '-standard')]/*[local-name() = 'misc-container']/*[local-name() = 'toc'][@type='table']/*[local-name() = 'title']) or normalize-space($always) = 'true'">
3308
+ <xsl:call-template name="processTables_Contents"/>
3309
+ </xsl:if>
3310
+ <xsl:if test="(//*[contains(local-name(), '-standard')]/*[local-name() = 'misc-container']/*[local-name() = 'toc'][@type='figure']/*[local-name() = 'title']) or normalize-space($always) = 'true'">
3311
+ <xsl:call-template name="processFigures_Contents"/>
3312
+ </xsl:if>
3313
+ </xsl:template><xsl:template name="processTables_Contents">
3314
+ <tables>
3315
+ <xsl:for-each select="//*[local-name() = 'table'][@id and *[local-name() = 'name'] and normalize-space(@id) != '']">
3316
+ <table id="{@id}" alt-text="{*[local-name() = 'name']}">
3317
+ <xsl:copy-of select="*[local-name() = 'name']"/>
3318
+ </table>
3319
+ </xsl:for-each>
3320
+ </tables>
3321
+ </xsl:template><xsl:template name="processFigures_Contents">
3322
+ <figures>
3323
+ <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) != '']">
3324
+ <figure id="{@id}" alt-text="{*[local-name() = 'name']}">
3325
+ <xsl:copy-of select="*[local-name() = 'name']"/>
3326
+ </figure>
3327
+ </xsl:for-each>
3328
+ </figures>
3082
3329
  </xsl:template><xsl:template name="processPrefaceSectionsDefault">
3083
3330
  <xsl:for-each select="/*/*[local-name()='preface']/*">
3084
3331
  <xsl:sort select="@displayorder" data-type="number"/>
@@ -3159,9 +3406,12 @@
3159
3406
 
3160
3407
 
3161
3408
  </xsl:template><xsl:template match="*[local-name()='legal-statement']//*[local-name()='p']">
3409
+ <xsl:param name="margin"/>
3162
3410
 
3163
3411
  <!-- process in the template 'paragraph' -->
3164
- <xsl:call-template name="paragraph"/>
3412
+ <xsl:call-template name="paragraph">
3413
+ <xsl:with-param name="margin" select="$margin"/>
3414
+ </xsl:call-template>
3165
3415
 
3166
3416
  </xsl:template><xsl:template match="*[local-name()='feedback-statement']">
3167
3417
  <fo:block xsl:use-attribute-sets="feedback-statement-style">
@@ -3173,9 +3423,12 @@
3173
3423
  <xsl:call-template name="title"/>
3174
3424
 
3175
3425
  </xsl:template><xsl:template match="*[local-name()='feedback-statement']//*[local-name()='p']">
3426
+ <xsl:param name="margin"/>
3176
3427
 
3177
3428
  <!-- process in the template 'paragraph' -->
3178
- <xsl:call-template name="paragraph"/>
3429
+ <xsl:call-template name="paragraph">
3430
+ <xsl:with-param name="margin" select="$margin"/>
3431
+ </xsl:call-template>
3179
3432
 
3180
3433
  </xsl:template><xsl:template match="*[local-name()='td']//text() | *[local-name()='th']//text() | *[local-name()='dt']//text() | *[local-name()='dd']//text()" priority="1">
3181
3434
  <!-- <xsl:call-template name="add-zero-spaces"/> -->
@@ -3210,7 +3463,7 @@
3210
3463
  </xsl:call-template>
3211
3464
  </xsl:if>
3212
3465
  </xsl:variable>
3213
- <!-- colwidths=<xsl:copy-of select="$colwidths"/> -->
3466
+ <!-- DEBUG colwidths=<xsl:copy-of select="$colwidths"/> -->
3214
3467
 
3215
3468
 
3216
3469
  <xsl:variable name="margin-side">
@@ -3480,7 +3733,7 @@
3480
3733
  <!-- <xsl:with-param name="text" select="translate(td[$curr-col],'- —:', ' ')"/> -->
3481
3734
  <!-- 2009 thinspace -->
3482
3735
  <!-- <xsl:with-param name="text" select="translate(normalize-space($td_text),'- —:', ' ')"/> -->
3483
- <xsl:with-param name="text" select="normalize-space(translate($string_with_added_zerospaces, '', ' '))"/>
3736
+ <xsl:with-param name="text" select="normalize-space(translate($string_with_added_zerospaces, '​­', ' '))"/> <!-- replace zero-width-space and soft-hyphen to space -->
3484
3737
  </xsl:call-template>
3485
3738
  </xsl:variable>
3486
3739
  <xsl:variable name="max_length">
@@ -3521,8 +3774,7 @@
3521
3774
  </xsl:call-template>
3522
3775
  </xsl:if>
3523
3776
  </xsl:template><xsl:template match="text()" mode="td_text">
3524
- <xsl:variable name="zero-space">​</xsl:variable>
3525
- <xsl:value-of select="translate(., $zero-space, ' ')"/><xsl:text> </xsl:text>
3777
+ <xsl:value-of select="translate(., $zero_width_space, ' ')"/><xsl:text> </xsl:text>
3526
3778
  </xsl:template><xsl:template match="*[local-name()='termsource']" mode="td_text">
3527
3779
  <xsl:value-of select="*[local-name()='origin']/@citeas"/>
3528
3780
  </xsl:template><xsl:template match="*[local-name()='link']" mode="td_text">
@@ -3940,37 +4192,7 @@
3940
4192
 
3941
4193
  <!-- list of footnotes to calculate actual footnotes number -->
3942
4194
  <xsl:variable name="p_fn_">
3943
- <xsl:choose>
3944
- <xsl:when test="@current_fn_number"> <!-- for BSI, footnote reference number calculated already -->
3945
- <fn gen_id="{generate-id(.)}">
3946
- <xsl:copy-of select="@*"/>
3947
- <xsl:copy-of select="node()"/>
3948
- </fn>
3949
- </xsl:when>
3950
- <xsl:otherwise>
3951
- <!-- itetation for:
3952
- footnotes in bibdata/title
3953
- footnotes in bibliography
3954
- footnotes in document's body (except table's head/body/foot and figure text)
3955
- -->
3956
- <xsl:for-each select="ancestor::*[contains(local-name(), '-standard')]/*[local-name() = 'bibdata']/*[local-name() = 'note'][@type='title-footnote']">
3957
- <fn gen_id="{generate-id(.)}">
3958
- <xsl:copy-of select="@*"/>
3959
- <xsl:copy-of select="node()"/>
3960
- </fn>
3961
- </xsl:for-each>
3962
- <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']/*">
3963
- <xsl:sort select="@displayorder" data-type="number"/>
3964
- <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])]">
3965
- <!-- copy unique fn -->
3966
- <fn gen_id="{generate-id(.)}">
3967
- <xsl:copy-of select="@*"/>
3968
- <xsl:copy-of select="node()"/>
3969
- </fn>
3970
- </xsl:for-each>
3971
- </xsl:for-each>
3972
- </xsl:otherwise>
3973
- </xsl:choose>
4195
+ <xsl:call-template name="get_fn_list"/>
3974
4196
  </xsl:variable>
3975
4197
  <xsl:variable name="p_fn" select="xalan:nodeset($p_fn_)"/>
3976
4198
 
@@ -4033,6 +4255,38 @@
4033
4255
  <xsl:copy-of select="$footnote_inline"/>
4034
4256
  </xsl:otherwise>
4035
4257
  </xsl:choose>
4258
+ </xsl:template><xsl:template name="get_fn_list">
4259
+ <xsl:choose>
4260
+ <xsl:when test="@current_fn_number"> <!-- for BSI, footnote reference number calculated already -->
4261
+ <fn gen_id="{generate-id(.)}">
4262
+ <xsl:copy-of select="@*"/>
4263
+ <xsl:copy-of select="node()"/>
4264
+ </fn>
4265
+ </xsl:when>
4266
+ <xsl:otherwise>
4267
+ <!-- itetation for:
4268
+ footnotes in bibdata/title
4269
+ footnotes in bibliography
4270
+ footnotes in document's body (except table's head/body/foot and figure text)
4271
+ -->
4272
+ <xsl:for-each select="ancestor::*[contains(local-name(), '-standard')]/*[local-name() = 'bibdata']/*[local-name() = 'note'][@type='title-footnote']">
4273
+ <fn gen_id="{generate-id(.)}">
4274
+ <xsl:copy-of select="@*"/>
4275
+ <xsl:copy-of select="node()"/>
4276
+ </fn>
4277
+ </xsl:for-each>
4278
+ <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']/*">
4279
+ <xsl:sort select="@displayorder" data-type="number"/>
4280
+ <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])]">
4281
+ <!-- copy unique fn -->
4282
+ <fn gen_id="{generate-id(.)}">
4283
+ <xsl:copy-of select="@*"/>
4284
+ <xsl:copy-of select="node()"/>
4285
+ </fn>
4286
+ </xsl:for-each>
4287
+ </xsl:for-each>
4288
+ </xsl:otherwise>
4289
+ </xsl:choose>
4036
4290
  </xsl:template><xsl:template name="table_fn_display">
4037
4291
  <xsl:variable name="references">
4038
4292
 
@@ -4209,7 +4463,7 @@
4209
4463
  </fo:inline>
4210
4464
  </xsl:template><xsl:template match="*[local-name()='fn']/text()[normalize-space() != '']">
4211
4465
  <fo:inline><xsl:value-of select="."/></fo:inline>
4212
- </xsl:template><xsl:template match="*[local-name()='fn']/*[local-name()='p']">
4466
+ </xsl:template><xsl:template match="*[local-name()='fn']//*[local-name()='p']">
4213
4467
  <fo:inline>
4214
4468
  <xsl:apply-templates/>
4215
4469
  </fo:inline>
@@ -4586,20 +4840,44 @@
4586
4840
  <fo:inline text-decoration="underline">
4587
4841
  <xsl:apply-templates/>
4588
4842
  </fo:inline>
4589
- </xsl:template><xsl:template match="*[local-name()='add']">
4843
+ </xsl:template><xsl:template match="*[local-name()='add']" name="tag_add">
4590
4844
  <xsl:param name="skip">true</xsl:param>
4845
+ <xsl:param name="block">false</xsl:param>
4846
+ <xsl:param name="type"/>
4847
+ <xsl:param name="text-align"/>
4591
4848
  <xsl:choose>
4592
4849
  <xsl:when test="starts-with(., $ace_tag)"> <!-- examples: ace-tag_A1_start, ace-tag_A2_end, C1_start, AC_start -->
4593
4850
  <xsl:choose>
4594
- <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>
4851
+ <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>
4595
4852
  <xsl:otherwise>
4596
- <fo:inline>
4853
+ <xsl:variable name="tag">
4597
4854
  <xsl:call-template name="insertTag">
4598
- <xsl:with-param name="type" select="substring-after(substring-after(., $ace_tag), '_')"/> <!-- start or end -->
4855
+ <xsl:with-param name="type">
4856
+ <xsl:choose>
4857
+ <xsl:when test="$type = ''"><xsl:value-of select="substring-after(substring-after(., $ace_tag), '_')"/> <!-- start or end --></xsl:when>
4858
+ <xsl:otherwise><xsl:value-of select="$type"/></xsl:otherwise>
4859
+ </xsl:choose>
4860
+ </xsl:with-param>
4599
4861
  <xsl:with-param name="kind" select="substring(substring-before(substring-after(., $ace_tag), '_'), 1, 1)"/> <!-- A or C -->
4600
4862
  <xsl:with-param name="value" select="substring(substring-before(substring-after(., $ace_tag), '_'), 2)"/> <!-- 1, 2, C -->
4601
4863
  </xsl:call-template>
4602
- </fo:inline>
4864
+ </xsl:variable>
4865
+ <xsl:choose>
4866
+ <xsl:when test="$block = 'false'">
4867
+ <fo:inline>
4868
+ <xsl:copy-of select="$tag"/>
4869
+ </fo:inline>
4870
+ </xsl:when>
4871
+ <xsl:otherwise>
4872
+ <fo:block> <!-- for around figures -->
4873
+ <xsl:if test="$text-align != ''">
4874
+ <xsl:attribute name="text-align"><xsl:value-of select="$text-align"/></xsl:attribute>
4875
+ </xsl:if>
4876
+ <xsl:copy-of select="$tag"/>
4877
+ </fo:block>
4878
+ </xsl:otherwise>
4879
+ </xsl:choose>
4880
+
4603
4881
  </xsl:otherwise>
4604
4882
  </xsl:choose>
4605
4883
  </xsl:when>
@@ -4958,17 +5236,21 @@
4958
5236
  </xsl:apply-templates>
4959
5237
  </xsl:template><xsl:template name="getLang">
4960
5238
  <xsl:variable name="language_current" select="normalize-space(//*[local-name()='bibdata']//*[local-name()='language'][@current = 'true'])"/>
4961
- <xsl:variable name="language_current_2" select="normalize-space(xalan:nodeset($bibdata)//*[local-name()='bibdata']//*[local-name()='language'][@current = 'true'])"/>
4962
5239
  <xsl:variable name="language">
4963
5240
  <xsl:choose>
4964
5241
  <xsl:when test="$language_current != ''">
4965
5242
  <xsl:value-of select="$language_current"/>
4966
5243
  </xsl:when>
4967
- <xsl:when test="$language_current_2 != ''">
4968
- <xsl:value-of select="$language_current_2"/>
4969
- </xsl:when>
4970
5244
  <xsl:otherwise>
4971
- <xsl:value-of select="//*[local-name()='bibdata']//*[local-name()='language']"/>
5245
+ <xsl:variable name="language_current_2" select="normalize-space(xalan:nodeset($bibdata)//*[local-name()='bibdata']//*[local-name()='language'][@current = 'true'])"/>
5246
+ <xsl:choose>
5247
+ <xsl:when test="$language_current_2 != ''">
5248
+ <xsl:value-of select="$language_current_2"/>
5249
+ </xsl:when>
5250
+ <xsl:otherwise>
5251
+ <xsl:value-of select="//*[local-name()='bibdata']//*[local-name()='language']"/>
5252
+ </xsl:otherwise>
5253
+ </xsl:choose>
4972
5254
  </xsl:otherwise>
4973
5255
  </xsl:choose>
4974
5256
  </xsl:variable>
@@ -5178,6 +5460,9 @@
5178
5460
  </fo:inline>
5179
5461
  </xsl:template><xsl:template match="*[local-name() = 'xref']">
5180
5462
  <fo:basic-link internal-destination="{@target}" fox:alt-text="{@target}" xsl:use-attribute-sets="xref-style">
5463
+ <xsl:if test="parent::*[local-name() = 'add']">
5464
+ <xsl:call-template name="append_add-style"/>
5465
+ </xsl:if>
5181
5466
  <xsl:apply-templates/>
5182
5467
  </fo:basic-link>
5183
5468
  </xsl:template><xsl:template match="*[local-name() = 'formula']" name="formula">
@@ -5192,8 +5477,8 @@
5192
5477
 
5193
5478
  </xsl:if>
5194
5479
  <fo:block-container margin-left="0mm">
5195
- <fo:block id="{@id}" xsl:use-attribute-sets="formula-style">
5196
- <xsl:apply-templates/>
5480
+ <fo:block id="{@id}">
5481
+ <xsl:apply-templates select="node()[not(local-name() = 'name')]"/> <!-- formula's number will be process in 'stem' template -->
5197
5482
  </fo:block>
5198
5483
  </fo:block-container>
5199
5484
  </fo:block-container>
@@ -5205,10 +5490,43 @@
5205
5490
  <fo:inline>
5206
5491
  <xsl:apply-templates/>
5207
5492
  </fo:inline>
5208
- </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 -->
5493
+ </xsl:template><xsl:template match="*[local-name() = 'formula']/*[local-name() = 'name']"> <!-- show in 'stem' template -->
5209
5494
  <xsl:if test="normalize-space() != ''">
5210
5495
  <xsl:text>(</xsl:text><xsl:apply-templates/><xsl:text>)</xsl:text>
5211
5496
  </xsl:if>
5497
+ </xsl:template><xsl:template match="*[local-name() = 'formula'][*[local-name() = 'name']]/*[local-name() = 'stem']">
5498
+ <fo:block xsl:use-attribute-sets="formula-style">
5499
+
5500
+
5501
+
5502
+ <fo:table table-layout="fixed" width="100%">
5503
+ <fo:table-column column-width="95%"/>
5504
+ <fo:table-column column-width="5%"/>
5505
+ <fo:table-body>
5506
+ <fo:table-row>
5507
+ <fo:table-cell display-align="center">
5508
+ <fo:block xsl:use-attribute-sets="formula-stem-block-style">
5509
+
5510
+
5511
+
5512
+ <xsl:apply-templates/>
5513
+ </fo:block>
5514
+ </fo:table-cell>
5515
+ <fo:table-cell display-align="center">
5516
+ <fo:block xsl:use-attribute-sets="formula-stem-number-style">
5517
+ <xsl:apply-templates select="../*[local-name() = 'name']"/>
5518
+ </fo:block>
5519
+ </fo:table-cell>
5520
+ </fo:table-row>
5521
+ </fo:table-body>
5522
+ </fo:table>
5523
+ </fo:block>
5524
+ </xsl:template><xsl:template match="*[local-name() = 'formula'][not(*[local-name() = 'name'])]/*[local-name() = 'stem']">
5525
+ <fo:block xsl:use-attribute-sets="formula-style">
5526
+ <fo:block xsl:use-attribute-sets="formula-stem-block-style">
5527
+ <xsl:apply-templates/>
5528
+ </fo:block>
5529
+ </fo:block>
5212
5530
  </xsl:template><xsl:template match="*[local-name() = 'note']" name="note">
5213
5531
 
5214
5532
  <fo:block-container id="{@id}" xsl:use-attribute-sets="note-style">
@@ -5242,6 +5560,13 @@
5242
5560
 
5243
5561
 
5244
5562
 
5563
+ <!-- if 'p' contains all text in 'add' first and last elements in first p are 'add' -->
5564
+ <!-- <xsl:if test="*[not(local-name()='name')][1][node()[normalize-space() != ''][1][local-name() = 'add'] and node()[normalize-space() != ''][last()][local-name() = 'add']]"> -->
5565
+ <xsl:if test="*[not(local-name()='name')][1][count(node()[normalize-space() != '']) = 1 and *[local-name() = 'add']]">
5566
+ <xsl:call-template name="append_add-style"/>
5567
+ </xsl:if>
5568
+
5569
+
5245
5570
  <!-- if note contains only one element and first and last childs are `add` ace-tag, then move start ace-tag before NOTE's name-->
5246
5571
  <xsl:if test="count(*[not(local-name() = 'name')]) = 1 and *[not(local-name() = 'name')]/node()[last()][local-name() = 'add'][starts-with(text(), $ace_tag)]">
5247
5572
  <xsl:apply-templates select="*[not(local-name() = 'name')]/node()[1][local-name() = 'add'][starts-with(text(), $ace_tag)]">
@@ -5280,6 +5605,12 @@
5280
5605
 
5281
5606
 
5282
5607
 
5608
+ <!-- if 'p' contains all text in 'add' first and last elements in first p are 'add' -->
5609
+ <!-- <xsl:if test="*[not(local-name()='name')][1][node()[normalize-space() != ''][1][local-name() = 'add'] and node()[normalize-space() != ''][last()][local-name() = 'add']]"> -->
5610
+ <xsl:if test="*[not(local-name()='name')][1][count(node()[normalize-space() != '']) = 1 and *[local-name() = 'add']]">
5611
+ <xsl:call-template name="append_add-style"/>
5612
+ </xsl:if>
5613
+
5283
5614
  <xsl:apply-templates select="*[local-name() = 'name']"/>
5284
5615
 
5285
5616
  </fo:inline>
@@ -5331,6 +5662,7 @@
5331
5662
  </fo:block>
5332
5663
  </xsl:template><xsl:template match="*[local-name() = 'term']">
5333
5664
  <fo:block id="{@id}" xsl:use-attribute-sets="term-style">
5665
+
5334
5666
 
5335
5667
 
5336
5668
 
@@ -5769,7 +6101,11 @@
5769
6101
  <xsl:value-of select="."/>
5770
6102
  </xsl:template><xsl:template match="node()" mode="contents">
5771
6103
  <xsl:apply-templates mode="contents"/>
5772
- </xsl:template><xsl:template match="*[local-name() = 'p'][@type = 'floating-title' or @type = 'section-title']" priority="2" mode="contents">
6104
+ </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">
6105
+ <xsl:call-template name="contents_section-title"/>
6106
+ </xsl:template><xsl:template match="*[local-name() = 'p'][@type = 'section-title']" mode="contents_in_clause">
6107
+ <xsl:call-template name="contents_section-title"/>
6108
+ </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">
5773
6109
  <xsl:variable name="level">
5774
6110
  <xsl:call-template name="getLevel">
5775
6111
  <xsl:with-param name="depth" select="@depth"/>
@@ -5838,13 +6174,14 @@
5838
6174
  <xsl:apply-templates mode="bookmarks"/>
5839
6175
  </xsl:template><xsl:template name="addBookmarks">
5840
6176
  <xsl:param name="contents"/>
5841
- <xsl:if test="xalan:nodeset($contents)//item">
6177
+ <xsl:variable name="contents_nodes" select="xalan:nodeset($contents)"/>
6178
+ <xsl:if test="$contents_nodes//item">
5842
6179
  <fo:bookmark-tree>
5843
6180
  <xsl:choose>
5844
- <xsl:when test="xalan:nodeset($contents)/doc">
6181
+ <xsl:when test="$contents_nodes/doc">
5845
6182
  <xsl:choose>
5846
- <xsl:when test="count(xalan:nodeset($contents)/doc) &gt; 1">
5847
- <xsl:for-each select="xalan:nodeset($contents)/doc">
6183
+ <xsl:when test="count($contents_nodes/doc) &gt; 1">
6184
+ <xsl:for-each select="$contents_nodes/doc">
5848
6185
  <fo:bookmark internal-destination="{contents/item[1]/@id}" starting-state="hide">
5849
6186
  <xsl:if test="@bundle = 'true'">
5850
6187
  <xsl:attribute name="internal-destination"><xsl:value-of select="@firstpage_id"/></xsl:attribute>
@@ -5895,7 +6232,7 @@
5895
6232
  </xsl:for-each>
5896
6233
  </xsl:when>
5897
6234
  <xsl:otherwise>
5898
- <xsl:for-each select="xalan:nodeset($contents)/doc">
6235
+ <xsl:for-each select="$contents_nodes/doc">
5899
6236
 
5900
6237
  <xsl:apply-templates select="contents/item" mode="bookmark"/>
5901
6238
 
@@ -5913,25 +6250,36 @@
5913
6250
  </xsl:choose>
5914
6251
  </xsl:when>
5915
6252
  <xsl:otherwise>
5916
- <xsl:apply-templates select="xalan:nodeset($contents)/contents/item" mode="bookmark"/>
6253
+ <xsl:apply-templates select="$contents_nodes/contents/item" mode="bookmark"/>
6254
+
6255
+ <xsl:call-template name="insertFigureBookmarks">
6256
+ <xsl:with-param name="contents" select="$contents_nodes/contents"/>
6257
+ </xsl:call-template>
6258
+
6259
+ <xsl:call-template name="insertTableBookmarks">
6260
+ <xsl:with-param name="contents" select="$contents_nodes/contents"/>
6261
+ <xsl:with-param name="lang" select="@lang"/>
6262
+ </xsl:call-template>
6263
+
5917
6264
  </xsl:otherwise>
5918
6265
  </xsl:choose>
5919
6266
 
6267
+
5920
6268
 
5921
6269
 
5922
6270
 
5923
6271
 
5924
-
5925
-
6272
+
5926
6273
 
5927
6274
  </fo:bookmark-tree>
5928
6275
  </xsl:if>
5929
6276
  </xsl:template><xsl:template name="insertFigureBookmarks">
5930
6277
  <xsl:param name="contents"/>
5931
- <xsl:if test="xalan:nodeset($contents)/figure">
5932
- <fo:bookmark internal-destination="{xalan:nodeset($contents)/figure[1]/@id}" starting-state="hide">
6278
+ <xsl:variable name="contents_nodes" select="xalan:nodeset($contents)"/>
6279
+ <xsl:if test="$contents_nodes/figure">
6280
+ <fo:bookmark internal-destination="{$contents_nodes/figure[1]/@id}" starting-state="hide">
5933
6281
  <fo:bookmark-title>Figures</fo:bookmark-title>
5934
- <xsl:for-each select="xalan:nodeset($contents)/figure">
6282
+ <xsl:for-each select="$contents_nodes/figure">
5935
6283
  <fo:bookmark internal-destination="{@id}">
5936
6284
  <fo:bookmark-title>
5937
6285
  <xsl:value-of select="normalize-space(title)"/>
@@ -5940,18 +6288,40 @@
5940
6288
  </xsl:for-each>
5941
6289
  </fo:bookmark>
5942
6290
  </xsl:if>
6291
+
6292
+
6293
+ <xsl:if test="$contents_nodes//figures/figure">
6294
+ <fo:bookmark internal-destination="empty_bookmark" starting-state="hide">
6295
+
6296
+
6297
+
6298
+ <xsl:variable name="bookmark-title">
6299
+
6300
+ <xsl:value-of select="$title-list-figures"/>
6301
+
6302
+ </xsl:variable>
6303
+ <fo:bookmark-title><xsl:value-of select="normalize-space($bookmark-title)"/></fo:bookmark-title>
6304
+ <xsl:for-each select="$contents_nodes//figures/figure">
6305
+ <fo:bookmark internal-destination="{@id}">
6306
+ <fo:bookmark-title><xsl:value-of select="normalize-space(.)"/></fo:bookmark-title>
6307
+ </fo:bookmark>
6308
+ </xsl:for-each>
6309
+ </fo:bookmark>
6310
+ </xsl:if>
6311
+
5943
6312
  </xsl:template><xsl:template name="insertTableBookmarks">
5944
6313
  <xsl:param name="contents"/>
5945
6314
  <xsl:param name="lang"/>
5946
- <xsl:if test="xalan:nodeset($contents)/table">
5947
- <fo:bookmark internal-destination="{xalan:nodeset($contents)/table[1]/@id}" starting-state="hide">
6315
+ <xsl:variable name="contents_nodes" select="xalan:nodeset($contents)"/>
6316
+ <xsl:if test="$contents_nodes/table">
6317
+ <fo:bookmark internal-destination="{$contents_nodes/table[1]/@id}" starting-state="hide">
5948
6318
  <fo:bookmark-title>
5949
6319
  <xsl:choose>
5950
6320
  <xsl:when test="$lang = 'fr'">Tableaux</xsl:when>
5951
6321
  <xsl:otherwise>Tables</xsl:otherwise>
5952
6322
  </xsl:choose>
5953
6323
  </fo:bookmark-title>
5954
- <xsl:for-each select="xalan:nodeset($contents)/table">
6324
+ <xsl:for-each select="$contents_nodes/table">
5955
6325
  <fo:bookmark internal-destination="{@id}">
5956
6326
  <fo:bookmark-title>
5957
6327
  <xsl:value-of select="normalize-space(title)"/>
@@ -5960,6 +6330,29 @@
5960
6330
  </xsl:for-each>
5961
6331
  </fo:bookmark>
5962
6332
  </xsl:if>
6333
+
6334
+
6335
+ <xsl:if test="$contents_nodes//tables/table">
6336
+ <fo:bookmark internal-destination="empty_bookmark" starting-state="hide">
6337
+
6338
+
6339
+
6340
+ <xsl:variable name="bookmark-title">
6341
+
6342
+ <xsl:value-of select="$title-list-tables"/>
6343
+
6344
+ </xsl:variable>
6345
+
6346
+ <fo:bookmark-title><xsl:value-of select="$bookmark-title"/></fo:bookmark-title>
6347
+
6348
+ <xsl:for-each select="$contents_nodes//tables/table">
6349
+ <fo:bookmark internal-destination="{@id}">
6350
+ <fo:bookmark-title><xsl:value-of select="normalize-space(.)"/></fo:bookmark-title>
6351
+ </fo:bookmark>
6352
+ </xsl:for-each>
6353
+ </fo:bookmark>
6354
+ </xsl:if>
6355
+
5963
6356
  </xsl:template><xsl:template name="getLangVersion">
5964
6357
  <xsl:param name="lang"/>
5965
6358
  <xsl:param name="doctype" select="''"/>
@@ -6158,12 +6551,140 @@
6158
6551
  </fo:block-container>
6159
6552
  </fo:block-container>
6160
6553
  </xsl:template><xsl:template match="*[local-name()='sourcecode']/text()" priority="2">
6161
- <xsl:variable name="text">
6554
+ <xsl:choose>
6555
+ <xsl:when test="normalize-space($syntax-highlight) = 'true' and normalize-space(../@lang) != ''"> <!-- condition for turn on of highlighting -->
6556
+ <xsl:variable name="syntax" select="java:org.metanorma.fop.Util.syntaxHighlight(., ../@lang)"/>
6557
+ <xsl:choose>
6558
+ <xsl:when test="normalize-space($syntax) != ''"><!-- if there is highlighted result -->
6559
+ <xsl:apply-templates select="xalan:nodeset($syntax)" mode="syntax_highlight"/> <!-- process span tags -->
6560
+ </xsl:when>
6561
+ <xsl:otherwise> <!-- if case of non-succesfull syntax highlight (for instance, unknown lang), process without highlighting -->
6562
+ <xsl:call-template name="add_spaces_to_sourcecode"/>
6563
+ </xsl:otherwise>
6564
+ </xsl:choose>
6565
+ </xsl:when>
6566
+ <xsl:otherwise>
6567
+ <xsl:call-template name="add_spaces_to_sourcecode"/>
6568
+ </xsl:otherwise>
6569
+ </xsl:choose>
6570
+
6571
+ </xsl:template><xsl:template name="add_spaces_to_sourcecode">
6572
+ <xsl:variable name="text_step1">
6162
6573
  <xsl:call-template name="add-zero-spaces-equal"/>
6163
6574
  </xsl:variable>
6164
- <xsl:call-template name="add-zero-spaces-java">
6165
- <xsl:with-param name="text" select="$text"/>
6166
- </xsl:call-template>
6575
+ <xsl:variable name="text_step2">
6576
+ <xsl:call-template name="add-zero-spaces-java">
6577
+ <xsl:with-param name="text" select="$text_step1"/>
6578
+ </xsl:call-template>
6579
+ </xsl:variable>
6580
+ <xsl:value-of select="$text_step2"/>
6581
+ </xsl:template><xsl:template match="*" mode="syntax_highlight">
6582
+ <xsl:apply-templates mode="syntax_highlight"/>
6583
+ </xsl:template><xsl:variable name="syntax_highlight_styles_">
6584
+ <style class="hljs-addition" xsl:use-attribute-sets="hljs-addition"/>
6585
+ <style class="hljs-attr" xsl:use-attribute-sets="hljs-attr"/>
6586
+ <style class="hljs-attribute" xsl:use-attribute-sets="hljs-attribute"/>
6587
+ <style class="hljs-built_in" xsl:use-attribute-sets="hljs-built_in"/>
6588
+ <style class="hljs-bullet" xsl:use-attribute-sets="hljs-bullet"/>
6589
+ <style class="hljs-char_and_escape_" xsl:use-attribute-sets="hljs-char_and_escape_"/>
6590
+ <style class="hljs-code" xsl:use-attribute-sets="hljs-code"/>
6591
+ <style class="hljs-comment" xsl:use-attribute-sets="hljs-comment"/>
6592
+ <style class="hljs-deletion" xsl:use-attribute-sets="hljs-deletion"/>
6593
+ <style class="hljs-doctag" xsl:use-attribute-sets="hljs-doctag"/>
6594
+ <style class="hljs-emphasis" xsl:use-attribute-sets="hljs-emphasis"/>
6595
+ <style class="hljs-formula" xsl:use-attribute-sets="hljs-formula"/>
6596
+ <style class="hljs-keyword" xsl:use-attribute-sets="hljs-keyword"/>
6597
+ <style class="hljs-link" xsl:use-attribute-sets="hljs-link"/>
6598
+ <style class="hljs-literal" xsl:use-attribute-sets="hljs-literal"/>
6599
+ <style class="hljs-meta" xsl:use-attribute-sets="hljs-meta"/>
6600
+ <style class="hljs-meta_hljs-string" xsl:use-attribute-sets="hljs-meta_hljs-string"/>
6601
+ <style class="hljs-meta_hljs-keyword" xsl:use-attribute-sets="hljs-meta_hljs-keyword"/>
6602
+ <style class="hljs-name" xsl:use-attribute-sets="hljs-name"/>
6603
+ <style class="hljs-number" xsl:use-attribute-sets="hljs-number"/>
6604
+ <style class="hljs-operator" xsl:use-attribute-sets="hljs-operator"/>
6605
+ <style class="hljs-params" xsl:use-attribute-sets="hljs-params"/>
6606
+ <style class="hljs-property" xsl:use-attribute-sets="hljs-property"/>
6607
+ <style class="hljs-punctuation" xsl:use-attribute-sets="hljs-punctuation"/>
6608
+ <style class="hljs-quote" xsl:use-attribute-sets="hljs-quote"/>
6609
+ <style class="hljs-regexp" xsl:use-attribute-sets="hljs-regexp"/>
6610
+ <style class="hljs-section" xsl:use-attribute-sets="hljs-section"/>
6611
+ <style class="hljs-selector-attr" xsl:use-attribute-sets="hljs-selector-attr"/>
6612
+ <style class="hljs-selector-class" xsl:use-attribute-sets="hljs-selector-class"/>
6613
+ <style class="hljs-selector-id" xsl:use-attribute-sets="hljs-selector-id"/>
6614
+ <style class="hljs-selector-pseudo" xsl:use-attribute-sets="hljs-selector-pseudo"/>
6615
+ <style class="hljs-selector-tag" xsl:use-attribute-sets="hljs-selector-tag"/>
6616
+ <style class="hljs-string" xsl:use-attribute-sets="hljs-string"/>
6617
+ <style class="hljs-strong" xsl:use-attribute-sets="hljs-strong"/>
6618
+ <style class="hljs-subst" xsl:use-attribute-sets="hljs-subst"/>
6619
+ <style class="hljs-symbol" xsl:use-attribute-sets="hljs-symbol"/>
6620
+ <style class="hljs-tag" xsl:use-attribute-sets="hljs-tag"/>
6621
+ <!-- <style class="hljs-tag_hljs-attr" xsl:use-attribute-sets="hljs-tag_hljs-attr"></style> -->
6622
+ <!-- <style class="hljs-tag_hljs-name" xsl:use-attribute-sets="hljs-tag_hljs-name"></style> -->
6623
+ <style class="hljs-template-tag" xsl:use-attribute-sets="hljs-template-tag"/>
6624
+ <style class="hljs-template-variable" xsl:use-attribute-sets="hljs-template-variable"/>
6625
+ <style class="hljs-title" xsl:use-attribute-sets="hljs-title"/>
6626
+ <style class="hljs-title_and_class_" xsl:use-attribute-sets="hljs-title_and_class_"/>
6627
+ <style class="hljs-title_and_class__and_inherited__" xsl:use-attribute-sets="hljs-title_and_class__and_inherited__"/>
6628
+ <style class="hljs-title_and_function_" xsl:use-attribute-sets="hljs-title_and_function_"/>
6629
+ <style class="hljs-type" xsl:use-attribute-sets="hljs-type"/>
6630
+ <style class="hljs-variable" xsl:use-attribute-sets="hljs-variable"/>
6631
+ <style class="hljs-variable_and_language_" xsl:use-attribute-sets="hljs-variable_and_language_"/>
6632
+ </xsl:variable><xsl:variable name="syntax_highlight_styles" select="xalan:nodeset($syntax_highlight_styles_)"/><xsl:template match="span" mode="syntax_highlight" priority="2">
6633
+ <!-- <fo:inline color="green" font-style="italic"><xsl:apply-templates mode="syntax_highlight"/></fo:inline> -->
6634
+ <fo:inline>
6635
+ <xsl:variable name="classes_">
6636
+ <xsl:call-template name="split">
6637
+ <xsl:with-param name="pText" select="@class"/>
6638
+ <xsl:with-param name="sep" select="' '"/>
6639
+ </xsl:call-template>
6640
+ <!-- a few classes together (_and_ suffix) -->
6641
+ <xsl:if test="contains(@class, 'hljs-char') and contains(@class, 'escape_')">
6642
+ <item>hljs-char_and_escape_</item>
6643
+ </xsl:if>
6644
+ <xsl:if test="contains(@class, 'hljs-title') and contains(@class, 'class_')">
6645
+ <item>hljs-title_and_class_</item>
6646
+ </xsl:if>
6647
+ <xsl:if test="contains(@class, 'hljs-title') and contains(@class, 'class_') and contains(@class, 'inherited__')">
6648
+ <item>hljs-title_and_class__and_inherited__</item>
6649
+ </xsl:if>
6650
+ <xsl:if test="contains(@class, 'hljs-title') and contains(@class, 'function_')">
6651
+ <item>hljs-title_and_function_</item>
6652
+ </xsl:if>
6653
+ <xsl:if test="contains(@class, 'hljs-variable') and contains(@class, 'language_')">
6654
+ <item>hljs-variable_and_language_</item>
6655
+ </xsl:if>
6656
+ <!-- with parent classes (_ suffix) -->
6657
+ <xsl:if test="contains(@class, 'hljs-keyword') and contains(ancestor::*/@class, 'hljs-meta')">
6658
+ <item>hljs-meta_hljs-keyword</item>
6659
+ </xsl:if>
6660
+ <xsl:if test="contains(@class, 'hljs-string') and contains(ancestor::*/@class, 'hljs-meta')">
6661
+ <item>hljs-meta_hljs-string</item>
6662
+ </xsl:if>
6663
+ </xsl:variable>
6664
+ <xsl:variable name="classes" select="xalan:nodeset($classes_)"/>
6665
+
6666
+ <xsl:for-each select="$classes/item">
6667
+ <xsl:variable name="class_name" select="."/>
6668
+ <xsl:for-each select="$syntax_highlight_styles/style[@class = $class_name]/@*[not(local-name() = 'class')]">
6669
+ <xsl:attribute name="{local-name()}"><xsl:value-of select="."/></xsl:attribute>
6670
+ </xsl:for-each>
6671
+ </xsl:for-each>
6672
+
6673
+ <!-- <xsl:variable name="class_name">
6674
+ <xsl:choose>
6675
+ <xsl:when test="@class = 'hljs-attr' and ancestor::*/@class = 'hljs-tag'">hljs-tag_hljs-attr</xsl:when>
6676
+ <xsl:when test="@class = 'hljs-name' and ancestor::*/@class = 'hljs-tag'">hljs-tag_hljs-name</xsl:when>
6677
+ <xsl:when test="@class = 'hljs-string' and ancestor::*/@class = 'hljs-meta'">hljs-meta_hljs-string</xsl:when>
6678
+ <xsl:otherwise><xsl:value-of select="@class"/></xsl:otherwise>
6679
+ </xsl:choose>
6680
+ </xsl:variable>
6681
+ <xsl:for-each select="$syntax_highlight_styles/style[@class = $class_name]/@*[not(local-name() = 'class')]">
6682
+ <xsl:attribute name="{local-name()}"><xsl:value-of select="."/></xsl:attribute>
6683
+ </xsl:for-each> -->
6684
+
6685
+ <xsl:apply-templates mode="syntax_highlight"/></fo:inline>
6686
+ </xsl:template><xsl:template match="text()" mode="syntax_highlight" priority="2">
6687
+ <xsl:call-template name="add_spaces_to_sourcecode"/>
6167
6688
  </xsl:template><xsl:template match="*[local-name() = 'sourcecode']/*[local-name() = 'name']">
6168
6689
  <xsl:if test="normalize-space() != ''">
6169
6690
  <fo:block xsl:use-attribute-sets="sourcecode-name-style">
@@ -6493,6 +7014,8 @@
6493
7014
  </xsl:otherwise>
6494
7015
  </xsl:choose> -->
6495
7016
  </fo:block>
7017
+ </xsl:template><xsl:template match="*[local-name() = 'termsource']/text()[starts-with(., '[SOURCE: Adapted from: ')]" priority="2">
7018
+ <xsl:text>[</xsl:text><xsl:value-of select="substring-after(., '[SOURCE: ')"/>
6496
7019
  </xsl:template><xsl:template match="*[local-name() = 'termsource']/text()">
6497
7020
  <xsl:if test="normalize-space() != ''">
6498
7021
  <xsl:value-of select="."/>
@@ -6539,11 +7062,14 @@
6539
7062
 
6540
7063
 
6541
7064
  <fo:block-container margin-left="0mm">
6542
-
6543
- <fo:block xsl:use-attribute-sets="quote-style">
7065
+ <fo:block-container xsl:use-attribute-sets="quote-style">
6544
7066
 
6545
- <xsl:apply-templates select="./node()[not(local-name() = 'author') and not(local-name() = 'source')]"/> <!-- process all nested nodes, except author and source -->
6546
- </fo:block>
7067
+ <fo:block-container margin-left="0mm" margin-right="0mm">
7068
+ <fo:block role="BlockQuote">
7069
+ <xsl:apply-templates select="./node()[not(local-name() = 'author') and not(local-name() = 'source')]"/> <!-- process all nested nodes, except author and source -->
7070
+ </fo:block>
7071
+ </fo:block-container>
7072
+ </fo:block-container>
6547
7073
  <xsl:if test="*[local-name() = 'author'] or *[local-name() = 'source']">
6548
7074
  <fo:block xsl:use-attribute-sets="quote-source-style">
6549
7075
  <!-- — ISO, ISO 7301:2011, Clause 1 -->
@@ -6564,26 +7090,11 @@
6564
7090
  </xsl:template><xsl:template match="*[local-name() = 'author']">
6565
7091
  <xsl:text>— </xsl:text>
6566
7092
  <xsl:apply-templates/>
6567
- </xsl:template><xsl:variable name="bibitem_hidden_">
6568
- <xsl:for-each select="//*[local-name() = 'bibitem'][@hidden='true']">
6569
- <xsl:copy-of select="."/>
6570
- </xsl:for-each>
6571
- <xsl:for-each select="//*[local-name() = 'references'][@hidden='true']/*[local-name() = 'bibitem']">
6572
- <xsl:copy-of select="."/>
6573
- </xsl:for-each>
6574
- </xsl:variable><xsl:variable name="bibitem_hidden" select="xalan:nodeset($bibitem_hidden_)"/><xsl:template match="*[local-name() = 'eref']">
6575
-
6576
- <xsl:variable name="bibitemid">
6577
- <xsl:choose>
6578
- <!-- <xsl:when test="//*[local-name() = 'bibitem'][@hidden='true' and @id = current()/@bibitemid]"></xsl:when>
6579
- <xsl:when test="//*[local-name() = 'references'][@hidden='true']/*[local-name() = 'bibitem'][@id = current()/@bibitemid]"></xsl:when> -->
6580
- <xsl:when test="$bibitem_hidden/*[local-name() = 'bibitem'][@id = current()/@bibitemid]"/>
6581
- <xsl:otherwise><xsl:value-of select="@bibitemid"/></xsl:otherwise>
6582
- </xsl:choose>
6583
- </xsl:variable>
6584
-
7093
+ </xsl:template><xsl:template match="*[local-name() = 'eref']">
7094
+ <xsl:variable name="current_bibitemid" select="@bibitemid"/>
7095
+ <xsl:variable name="external-destination" select="normalize-space(key('bibitems', $current_bibitemid)/*[local-name() = 'uri'][@type = 'citation'])"/>
6585
7096
  <xsl:choose>
6586
- <xsl:when test="normalize-space($bibitemid) != ''"> <!-- if in the bibliography there is the item with @bibitemid (and not hidden), then create link -->
7097
+ <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) -->
6587
7098
  <fo:inline xsl:use-attribute-sets="eref-style">
6588
7099
  <xsl:if test="@type = 'footnote'">
6589
7100
  <xsl:attribute name="keep-together.within-line">always</xsl:attribute>
@@ -6597,8 +7108,8 @@
6597
7108
  <xsl:variable name="text" select="normalize-space()"/>
6598
7109
 
6599
7110
 
6600
-
6601
- <fo:basic-link internal-destination="{@bibitemid}" fox:alt-text="{@citeas}">
7111
+
7112
+ <fo:basic-link fox:alt-text="{@citeas}">
6602
7113
  <xsl:if test="normalize-space(@citeas) = ''">
6603
7114
  <xsl:attribute name="fox:alt-text"><xsl:value-of select="."/></xsl:attribute>
6604
7115
  </xsl:if>
@@ -6608,14 +7119,21 @@
6608
7119
 
6609
7120
  </xsl:if>
6610
7121
 
6611
-
7122
+ <xsl:choose>
7123
+ <xsl:when test="$external-destination != ''"> <!-- external hyperlink -->
7124
+ <xsl:attribute name="external-destination"><xsl:value-of select="$external-destination"/></xsl:attribute>
7125
+ </xsl:when>
7126
+ <xsl:otherwise>
7127
+ <xsl:attribute name="internal-destination"><xsl:value-of select="@bibitemid"/></xsl:attribute>
7128
+ </xsl:otherwise>
7129
+ </xsl:choose>
6612
7130
 
6613
7131
  <xsl:apply-templates/>
6614
7132
  </fo:basic-link>
6615
-
7133
+
6616
7134
  </fo:inline>
6617
7135
  </xsl:when>
6618
- <xsl:otherwise>
7136
+ <xsl:otherwise> <!-- if there is key('bibitems_hidden', $current_bibitemid) -->
6619
7137
  <fo:inline><xsl:apply-templates/></fo:inline>
6620
7138
  </xsl:otherwise>
6621
7139
  </xsl:choose>
@@ -6688,6 +7206,31 @@
6688
7206
  <xsl:with-param name="count" select="$count - 1"/>
6689
7207
  </xsl:call-template>
6690
7208
  </xsl:if>
7209
+ </xsl:template><xsl:template match="*[local-name() = 'preferred']">
7210
+ <xsl:variable name="level">
7211
+ <xsl:call-template name="getLevel"/>
7212
+ </xsl:variable>
7213
+ <xsl:variable name="font-size">
7214
+ inherit
7215
+ </xsl:variable>
7216
+ <xsl:variable name="levelTerm">
7217
+ <xsl:call-template name="getLevelTermName"/>
7218
+ </xsl:variable>
7219
+ <fo:block font-size="{normalize-space($font-size)}" role="H{$levelTerm}" xsl:use-attribute-sets="preferred-block-style">
7220
+
7221
+
7222
+
7223
+ <xsl:if test="parent::*[local-name() = 'term'] and not(preceding-sibling::*[local-name() = 'preferred'])"> <!-- if first preffered in term, then display term's name -->
7224
+ <fo:block xsl:use-attribute-sets="term-name-style">
7225
+ <xsl:apply-templates select="ancestor::*[local-name() = 'term'][1]/*[local-name() = 'name']"/>
7226
+ </fo:block>
7227
+ </xsl:if>
7228
+
7229
+ <fo:block xsl:use-attribute-sets="preferred-term-style">
7230
+ <xsl:call-template name="setStyle_preferred"/>
7231
+ <xsl:apply-templates/>
7232
+ </fo:block>
7233
+ </fo:block>
6691
7234
  </xsl:template><xsl:template match="*[local-name() = 'domain']">
6692
7235
  <fo:inline xsl:use-attribute-sets="domain-style">&lt;<xsl:apply-templates/>&gt;</fo:inline>
6693
7236
  <xsl:text> </xsl:text>
@@ -6776,24 +7319,8 @@
6776
7319
  <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),' ',' ')"/>
6777
7320
  </xsl:template><xsl:variable name="ul_labels_">
6778
7321
 
6779
-
6780
-
6781
-
6782
-
6783
-
6784
-
6785
- <label>—</label> <!-- em dash -->
6786
-
6787
-
6788
-
6789
-
6790
-
6791
-
6792
-
6793
-
6794
-
6795
-
6796
-
7322
+ <label>—</label> <!-- em dash -->
7323
+
6797
7324
  </xsl:variable><xsl:variable name="ul_labels" select="xalan:nodeset($ul_labels_)"/><xsl:template name="setULLabel">
6798
7325
  <xsl:variable name="list_level_" select="count(ancestor::*[local-name() = 'ul']) + count(ancestor::*[local-name() = 'ol'])"/>
6799
7326
  <xsl:variable name="list_level">
@@ -6819,6 +7346,91 @@
6819
7346
  </xsl:template><xsl:template match="label" mode="ul_labels">
6820
7347
  <xsl:copy-of select="@*[not(local-name() = 'level')]"/>
6821
7348
  <xsl:value-of select="."/>
7349
+ </xsl:template><xsl:template name="getListItemFormat">
7350
+ <!-- Example: for BSI <?list-type loweralpha?> -->
7351
+ <xsl:variable name="processing_instruction_type" select="normalize-space(../preceding-sibling::*[1]/processing-instruction('list-type'))"/>
7352
+ <xsl:choose>
7353
+ <xsl:when test="local-name(..) = 'ul'">
7354
+ <xsl:choose>
7355
+ <xsl:when test="normalize-space($processing_instruction_type) = 'simple'"/>
7356
+ <xsl:otherwise><xsl:call-template name="setULLabel"/></xsl:otherwise>
7357
+ </xsl:choose>
7358
+ </xsl:when>
7359
+ <xsl:otherwise> <!-- for ordered lists 'ol' -->
7360
+
7361
+ <!-- Example: for BSI <?list-start 2?> -->
7362
+ <xsl:variable name="processing_instruction_start" select="normalize-space(../preceding-sibling::*[1]/processing-instruction('list-start'))"/>
7363
+
7364
+ <xsl:variable name="start_value">
7365
+ <xsl:choose>
7366
+ <xsl:when test="normalize-space($processing_instruction_start) != ''">
7367
+ <xsl:value-of select="number($processing_instruction_start) - 1"/><!-- if start="3" then start_value=2 + xsl:number(1) = 3 -->
7368
+ </xsl:when>
7369
+ <xsl:when test="normalize-space(../@start) != ''">
7370
+ <xsl:value-of select="number(../@start) - 1"/><!-- if start="3" then start_value=2 + xsl:number(1) = 3 -->
7371
+ </xsl:when>
7372
+ <xsl:otherwise>0</xsl:otherwise>
7373
+ </xsl:choose>
7374
+ </xsl:variable>
7375
+
7376
+ <xsl:variable name="curr_value"><xsl:number/></xsl:variable>
7377
+
7378
+ <xsl:variable name="type">
7379
+ <xsl:choose>
7380
+ <xsl:when test="normalize-space($processing_instruction_type) != ''"><xsl:value-of select="$processing_instruction_type"/></xsl:when>
7381
+ <xsl:when test="normalize-space(../@type) != ''"><xsl:value-of select="../@type"/></xsl:when>
7382
+
7383
+ <xsl:otherwise> <!-- if no @type or @class = 'steps' -->
7384
+
7385
+ <xsl:variable name="list_level_" select="count(ancestor::*[local-name() = 'ul']) + count(ancestor::*[local-name() = 'ol'])"/>
7386
+ <xsl:variable name="list_level">
7387
+ <xsl:choose>
7388
+ <xsl:when test="$list_level_ &lt;= 5"><xsl:value-of select="$list_level_"/></xsl:when>
7389
+ <xsl:otherwise><xsl:value-of select="$list_level_ mod 5"/></xsl:otherwise>
7390
+ </xsl:choose>
7391
+ </xsl:variable>
7392
+
7393
+ <xsl:choose>
7394
+ <xsl:when test="$list_level mod 5 = 0">roman_upper</xsl:when> <!-- level 5 -->
7395
+ <xsl:when test="$list_level mod 4 = 0">alphabet_upper</xsl:when> <!-- level 4 -->
7396
+ <xsl:when test="$list_level mod 3 = 0">roman</xsl:when> <!-- level 3 -->
7397
+ <xsl:when test="$list_level mod 2 = 0 and ancestor::*/@class = 'steps'">alphabet</xsl:when> <!-- level 2 and @class = 'steps'-->
7398
+ <xsl:when test="$list_level mod 2 = 0">arabic</xsl:when> <!-- level 2 -->
7399
+ <xsl:otherwise> <!-- level 1 -->
7400
+ <xsl:choose>
7401
+ <xsl:when test="ancestor::*/@class = 'steps'">arabic</xsl:when>
7402
+ <xsl:otherwise>alphabet</xsl:otherwise>
7403
+ </xsl:choose>
7404
+ </xsl:otherwise>
7405
+ </xsl:choose>
7406
+
7407
+ </xsl:otherwise>
7408
+ </xsl:choose>
7409
+ </xsl:variable>
7410
+
7411
+ <xsl:variable name="format">
7412
+ <xsl:choose>
7413
+ <xsl:when test="$type = 'arabic'">
7414
+ 1.
7415
+ </xsl:when>
7416
+ <xsl:when test="$type = 'alphabet'">
7417
+ a)
7418
+ </xsl:when>
7419
+ <xsl:when test="$type = 'alphabet_upper'">
7420
+ A.
7421
+ </xsl:when>
7422
+ <xsl:when test="$type = 'roman'">
7423
+ i)
7424
+ </xsl:when>
7425
+ <xsl:when test="$type = 'roman_upper'">I.</xsl:when>
7426
+ <xsl:otherwise>1.</xsl:otherwise> <!-- for any case, if $type has non-determined value, not using -->
7427
+ </xsl:choose>
7428
+ </xsl:variable>
7429
+
7430
+ <xsl:number value="$start_value + $curr_value" format="{normalize-space($format)}" lang="en"/>
7431
+
7432
+ </xsl:otherwise>
7433
+ </xsl:choose>
6822
7434
  </xsl:template><xsl:template match="*[local-name() = 'ul'] | *[local-name() = 'ol']">
6823
7435
  <xsl:choose>
6824
7436
  <xsl:when test="parent::*[local-name() = 'note'] or parent::*[local-name() = 'termnote']">
@@ -6834,18 +7446,71 @@
6834
7446
 
6835
7447
  <fo:block-container margin-left="0mm">
6836
7448
  <fo:block>
6837
- <xsl:apply-templates select="." mode="ul_ol"/>
7449
+ <xsl:apply-templates select="." mode="list"/>
6838
7450
  </fo:block>
6839
7451
  </fo:block-container>
6840
7452
  </fo:block-container>
6841
7453
  </xsl:when>
6842
7454
  <xsl:otherwise>
6843
7455
  <fo:block>
6844
- <xsl:apply-templates select="." mode="ul_ol"/>
7456
+ <xsl:apply-templates select="." mode="list"/>
6845
7457
  </fo:block>
6846
7458
  </xsl:otherwise>
6847
7459
  </xsl:choose>
6848
- </xsl:template><xsl:variable name="index" select="document($external_index)"/><xsl:variable name="dash" select="'–'"/><xsl:variable name="bookmark_in_fn">
7460
+ </xsl:template><xsl:template match="*[local-name()='ul'] | *[local-name()='ol']" mode="list" name="list">
7461
+ <fo:list-block xsl:use-attribute-sets="list-style">
7462
+
7463
+
7464
+
7465
+
7466
+
7467
+
7468
+
7469
+
7470
+
7471
+ <xsl:apply-templates select="node()[not(local-name() = 'note')]"/>
7472
+ </fo:list-block>
7473
+ <!-- <xsl:for-each select="./iho:note">
7474
+ <xsl:call-template name="note"/>
7475
+ </xsl:for-each> -->
7476
+ <xsl:apply-templates select="./*[local-name() = 'note']"/>
7477
+ </xsl:template><xsl:template match="*[local-name()='li']">
7478
+ <fo:list-item xsl:use-attribute-sets="list-item-style">
7479
+ <xsl:copy-of select="@id"/>
7480
+
7481
+
7482
+
7483
+ <fo:list-item-label end-indent="label-end()">
7484
+ <fo:block xsl:use-attribute-sets="list-item-label-style">
7485
+
7486
+
7487
+
7488
+ <!-- if 'p' contains all text in 'add' first and last elements in first p are 'add' -->
7489
+ <xsl:if test="*[1][count(node()[normalize-space() != '']) = 1 and *[local-name() = 'add']]">
7490
+ <xsl:call-template name="append_add-style"/>
7491
+ </xsl:if>
7492
+
7493
+ <xsl:call-template name="getListItemFormat"/>
7494
+ </fo:block>
7495
+ </fo:list-item-label>
7496
+ <fo:list-item-body start-indent="body-start()" xsl:use-attribute-sets="list-item-body-style">
7497
+ <fo:block>
7498
+
7499
+
7500
+
7501
+
7502
+
7503
+ <xsl:apply-templates/>
7504
+
7505
+ <!-- <xsl:apply-templates select="node()[not(local-name() = 'note')]" />
7506
+
7507
+ <xsl:for-each select="./bsi:note">
7508
+ <xsl:call-template name="note"/>
7509
+ </xsl:for-each> -->
7510
+ </fo:block>
7511
+ </fo:list-item-body>
7512
+ </fo:list-item>
7513
+ </xsl:template><xsl:variable name="index" select="document($external_index)"/><xsl:variable name="bookmark_in_fn">
6849
7514
  <xsl:for-each select="//*[local-name() = 'bookmark'][ancestor::*[local-name() = 'fn']]">
6850
7515
  <bookmark><xsl:value-of select="@id"/></bookmark>
6851
7516
  </xsl:for-each>
@@ -6867,7 +7532,7 @@
6867
7532
  <!-- split <xref target="bm1" to="End" pagenumber="true"> to two xref:
6868
7533
  <xref target="bm1" pagenumber="true"> and <xref target="End" pagenumber="true"> -->
6869
7534
  <xsl:if test="@to">
6870
- <xsl:value-of select="$dash"/>
7535
+ <xsl:value-of select="$en_dash"/>
6871
7536
  <xsl:copy>
6872
7537
  <xsl:copy-of select="@*"/>
6873
7538
  <xsl:attribute name="target"><xsl:value-of select="@to"/></xsl:attribute>
@@ -6892,7 +7557,7 @@
6892
7557
  <xsl:param name="target"/>
6893
7558
  <!-- <node></node> -->
6894
7559
  <xsl:choose>
6895
- <xsl:when test="self::text() and (normalize-space(.) = ',' or normalize-space(.) = $dash) and $remove = 'true'">
7560
+ <xsl:when test="self::text() and (normalize-space(.) = ',' or normalize-space(.) = $en_dash) and $remove = 'true'">
6896
7561
  <!-- skip text (i.e. remove it) and process next element -->
6897
7562
  <!-- [removed_<xsl:value-of select="."/>] -->
6898
7563
  <xsl:apply-templates select="following-sibling::node()[1]" mode="process_li_element">
@@ -6976,12 +7641,22 @@
6976
7641
  </xsl:variable>
6977
7642
  <xsl:variable name="xref_number"><xsl:number count="*[local-name() = 'xref']"/></xsl:variable>
6978
7643
  <xsl:value-of select="concat($docid, '_', $item_number, '_', $xref_number)"/> <!-- $level, '_', -->
7644
+ </xsl:template><xsl:template match="*[local-name() = 'indexsect']/*[local-name() = 'title']" priority="4">
7645
+ <fo:block xsl:use-attribute-sets="indexsect-title-style">
7646
+ <!-- Index -->
7647
+ <xsl:apply-templates/>
7648
+ </fo:block>
7649
+ </xsl:template><xsl:template match="*[local-name() = 'indexsect']/*[local-name() = 'clause']/*[local-name() = 'title']" priority="4">
7650
+ <!-- Letter A, B, C, ... -->
7651
+ <fo:block xsl:use-attribute-sets="indexsect-clause-title-style">
7652
+ <xsl:apply-templates/>
7653
+ </fo:block>
6979
7654
  </xsl:template><xsl:template match="*[local-name() = 'indexsect']/*[local-name() = 'clause']" priority="4">
6980
7655
  <xsl:apply-templates/>
6981
7656
  <fo:block>
6982
- <xsl:if test="following-sibling::*[local-name() = 'clause']">
6983
- <fo:block> </fo:block>
6984
- </xsl:if>
7657
+ <xsl:if test="following-sibling::*[local-name() = 'clause']">
7658
+ <fo:block> </fo:block>
7659
+ </xsl:if>
6985
7660
  </fo:block>
6986
7661
  </xsl:template><xsl:template match="*[local-name() = 'indexsect']//*[local-name() = 'ul']" priority="4">
6987
7662
  <xsl:apply-templates/>
@@ -6991,6 +7666,9 @@
6991
7666
 
6992
7667
  <xsl:apply-templates/>
6993
7668
  </fo:block>
7669
+ </xsl:template><xsl:template match="*[local-name() = 'indexsect']//*[local-name() = 'li']/text()">
7670
+ <!-- to split by '_' and other chars -->
7671
+ <xsl:call-template name="add-zero-spaces-java"/>
6994
7672
  </xsl:template><xsl:template match="*[local-name() = 'bookmark']" name="bookmark">
6995
7673
  <fo:inline id="{@id}" font-size="1pt"/>
6996
7674
  </xsl:template><xsl:template match="*[local-name() = 'errata']">
@@ -7181,27 +7859,47 @@
7181
7859
  <xsl:apply-templates/>
7182
7860
  </fo:inline>
7183
7861
  </xsl:template><xsl:template match="*[local-name() = 'bibitem']/*[local-name() = 'note']" priority="2">
7862
+
7863
+ <!-- list of footnotes to calculate actual footnotes number -->
7864
+ <xsl:variable name="p_fn_">
7865
+ <xsl:call-template name="get_fn_list"/>
7866
+ </xsl:variable>
7867
+ <xsl:variable name="p_fn" select="xalan:nodeset($p_fn_)"/>
7868
+ <xsl:variable name="gen_id" select="generate-id(.)"/>
7869
+ <xsl:variable name="lang" select="ancestor::*[contains(local-name(), '-standard')]/*[local-name()='bibdata']//*[local-name()='language'][@current = 'true']"/>
7870
+ <!-- fn sequence number in document -->
7871
+ <xsl:variable name="current_fn_number">
7872
+ <xsl:choose>
7873
+ <xsl:when test="@current_fn_number"><xsl:value-of select="@current_fn_number"/></xsl:when> <!-- for BSI -->
7874
+ <xsl:otherwise>
7875
+ <!-- <xsl:value-of select="count($p_fn//fn[@reference = $reference]/preceding-sibling::fn) + 1" /> -->
7876
+ <xsl:value-of select="count($p_fn//fn[@gen_id = $gen_id]/preceding-sibling::fn) + 1"/>
7877
+ </xsl:otherwise>
7878
+ </xsl:choose>
7879
+ </xsl:variable>
7184
7880
  <fo:footnote>
7185
7881
  <xsl:variable name="number">
7186
7882
 
7187
- <xsl:number level="any" count="*[local-name() = 'bibitem']/*[local-name() = 'note']"/>
7883
+ <xsl:value-of select="$current_fn_number"/>
7188
7884
 
7189
7885
  </xsl:variable>
7190
- <fo:inline xsl:use-attribute-sets="bibitem-note-fn-style">
7191
- <fo:basic-link internal-destination="{generate-id()}" fox:alt-text="footnote {$number}">
7192
- <xsl:value-of select="$number"/>
7193
-
7886
+
7887
+ <xsl:variable name="current_fn_number_text">
7888
+ <xsl:value-of select="$number"/>
7889
+
7194
7890
  <xsl:text>)</xsl:text>
7195
7891
 
7892
+ </xsl:variable>
7893
+
7894
+ <fo:inline xsl:use-attribute-sets="bibitem-note-fn-style">
7895
+ <fo:basic-link internal-destination="{$gen_id}" fox:alt-text="footnote {$number}">
7896
+ <xsl:value-of select="$current_fn_number_text"/>
7196
7897
  </fo:basic-link>
7197
7898
  </fo:inline>
7198
7899
  <fo:footnote-body>
7199
7900
  <fo:block xsl:use-attribute-sets="bibitem-note-fn-body-style">
7200
- <fo:inline id="{generate-id()}" xsl:use-attribute-sets="bibitem-note-fn-number-style">
7201
- <xsl:value-of select="$number"/>
7202
-
7203
- <xsl:text>)</xsl:text>
7204
-
7901
+ <fo:inline id="{$gen_id}" xsl:use-attribute-sets="bibitem-note-fn-number-style">
7902
+ <xsl:value-of select="$current_fn_number_text"/>
7205
7903
  </fo:inline>
7206
7904
  <xsl:apply-templates/>
7207
7905
  </fo:block>
@@ -7327,7 +8025,7 @@
7327
8025
  </fo:table-body>
7328
8026
  </fo:table>
7329
8027
  </fo:block>
7330
- </xsl:template><xsl:template match="*[local-name() = 'toc']//*[local-name() = 'li']">
8028
+ </xsl:template><xsl:template match="*[local-name() = 'toc']//*[local-name() = 'li']" priority="2">
7331
8029
  <fo:table-row min-height="5mm">
7332
8030
  <xsl:apply-templates/>
7333
8031
  </fo:table-row>
@@ -7436,7 +8134,140 @@
7436
8134
  <!-- processing for admonition/p found in the template for 'p' -->
7437
8135
  <xsl:call-template name="paragraph"/>
7438
8136
 
7439
- </xsl:template><xsl:template name="convertDate">
8137
+ </xsl:template><xsl:template match="@*|node()" mode="update_xml_step1">
8138
+ <xsl:copy>
8139
+ <xsl:apply-templates select="@*|node()" mode="update_xml_step1"/>
8140
+ </xsl:copy>
8141
+ </xsl:template><xsl:template match="*[local-name() = 'preface']" mode="update_xml_step1">
8142
+ <xsl:copy>
8143
+ <xsl:copy-of select="@*"/>
8144
+
8145
+ <xsl:variable name="nodes_preface_">
8146
+ <xsl:for-each select="*">
8147
+ <node id="{@id}"/>
8148
+ </xsl:for-each>
8149
+ </xsl:variable>
8150
+ <xsl:variable name="nodes_preface" select="xalan:nodeset($nodes_preface_)"/>
8151
+
8152
+ <xsl:for-each select="*">
8153
+ <xsl:sort select="@displayorder" data-type="number"/>
8154
+
8155
+ <!-- process Section's title -->
8156
+ <xsl:variable name="preceding-sibling_id" select="$nodes_preface/node[@id = current()/@id]/preceding-sibling::node[1]/@id"/>
8157
+ <xsl:if test="$preceding-sibling_id != ''">
8158
+ <xsl:apply-templates select="parent::*/*[@type = 'section-title' and @id = $preceding-sibling_id and not(@displayorder)]" mode="update_xml_step1"/>
8159
+ </xsl:if>
8160
+
8161
+ <xsl:choose>
8162
+ <xsl:when test="@type = 'section-title' and not(@displayorder)"><!-- skip, don't copy, because copied in above 'apply-templates' --></xsl:when>
8163
+ <xsl:otherwise>
8164
+ <xsl:apply-templates select="." mode="update_xml_step1"/>
8165
+ </xsl:otherwise>
8166
+ </xsl:choose>
8167
+
8168
+ </xsl:for-each>
8169
+ </xsl:copy>
8170
+ </xsl:template><xsl:template match="*[local-name() = 'sections']" mode="update_xml_step1">
8171
+ <xsl:copy>
8172
+ <xsl:copy-of select="@*"/>
8173
+
8174
+ <xsl:variable name="nodes_sections_">
8175
+ <xsl:for-each select="*">
8176
+ <node id="{@id}"/>
8177
+ </xsl:for-each>
8178
+ </xsl:variable>
8179
+ <xsl:variable name="nodes_sections" select="xalan:nodeset($nodes_sections_)"/>
8180
+
8181
+ <!-- move section 'Normative references' inside 'sections' -->
8182
+ <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']]">
8183
+ <xsl:sort select="@displayorder" data-type="number"/>
8184
+
8185
+ <!-- process Section's title -->
8186
+ <xsl:variable name="preceding-sibling_id" select="$nodes_sections/node[@id = current()/@id]/preceding-sibling::node[1]/@id"/>
8187
+ <xsl:if test="$preceding-sibling_id != ''">
8188
+ <xsl:apply-templates select="parent::*/*[@type = 'section-title' and @id = $preceding-sibling_id and not(@displayorder)]" mode="update_xml_step1"/>
8189
+ </xsl:if>
8190
+
8191
+ <xsl:choose>
8192
+ <xsl:when test="@type = 'section-title' and not(@displayorder)"><!-- skip, don't copy, because copied in above 'apply-templates' --></xsl:when>
8193
+ <xsl:otherwise>
8194
+ <xsl:apply-templates select="." mode="update_xml_step1"/>
8195
+ </xsl:otherwise>
8196
+ </xsl:choose>
8197
+
8198
+ </xsl:for-each>
8199
+ </xsl:copy>
8200
+ </xsl:template><xsl:template match="*[local-name() = 'bibliography']" mode="update_xml_step1">
8201
+ <xsl:copy>
8202
+ <xsl:copy-of select="@*"/>
8203
+ <!-- copy all elements from bibliography except 'Normative references' (moved to 'sections') -->
8204
+ <xsl:for-each select="*[not(@normative='true') and not(*[*[@normative='true']])]">
8205
+ <xsl:sort select="@displayorder" data-type="number"/>
8206
+ <xsl:apply-templates select="." mode="update_xml_step1"/>
8207
+ </xsl:for-each>
8208
+ </xsl:copy>
8209
+ </xsl:template>
8210
+ <!-- STEP2: add 'fn' after 'eref' and 'origin', if referenced to bibitem with 'note' = Withdrawn.' or 'Cancelled and replaced...' -->
8211
+ <xsl:template match="@*|node()" mode="update_xml_step2">
8212
+ <xsl:copy>
8213
+ <xsl:apply-templates select="@*|node()" mode="update_xml_step2"/>
8214
+ </xsl:copy>
8215
+ </xsl:template>
8216
+
8217
+ <xsl:variable name="localized_string_withdrawn">
8218
+ <xsl:call-template name="getLocalizedString">
8219
+ <xsl:with-param name="key">withdrawn</xsl:with-param>
8220
+ </xsl:call-template>
8221
+ </xsl:variable>
8222
+ <xsl:variable name="localized_string_cancelled_and_replaced">
8223
+ <xsl:variable name="str">
8224
+ <xsl:call-template name="getLocalizedString">
8225
+ <xsl:with-param name="key">cancelled_and_replaced</xsl:with-param>
8226
+ </xsl:call-template>
8227
+ </xsl:variable>
8228
+ <xsl:choose>
8229
+ <xsl:when test="contains($str, '%')"><xsl:value-of select="substring-before($str, '%')"/></xsl:when>
8230
+ <xsl:otherwise><xsl:value-of select="$str"/></xsl:otherwise>
8231
+ </xsl:choose>
8232
+ </xsl:variable>
8233
+
8234
+ <!-- add 'fn' after eref and origin, to reference bibitem with note = 'Withdrawn.' or 'Cancelled and replaced...' -->
8235
+ <xsl:template match="*[local-name() = 'eref'] | *[local-name() = 'origin']" mode="update_xml_step2">
8236
+ <xsl:copy-of select="."/>
8237
+
8238
+ <xsl:variable name="bibitemid" select="@bibitemid"/>
8239
+ <xsl:variable name="local_name" select="local-name()"/>
8240
+ <xsl:variable name="position"><xsl:number count="*[local-name() = $local_name][@bibitemid = $bibitemid]" level="any"/></xsl:variable>
8241
+ <xsl:if test="normalize-space($position) = '1'">
8242
+ <xsl:variable name="fn_text">
8243
+ <xsl:copy-of select="key('bibitems', $bibitemid)[1]/*[local-name() = 'note'][not(@type='Unpublished-Status')][normalize-space() = $localized_string_withdrawn or starts-with(normalize-space(), $localized_string_cancelled_and_replaced)]/node()"/>
8244
+ </xsl:variable>
8245
+ <xsl:if test="normalize-space($fn_text) != ''">
8246
+ <xsl:element name="fn" namespace="{$namespace_full}">
8247
+ <xsl:attribute name="reference">bibitem_<xsl:value-of select="$bibitemid"/></xsl:attribute>
8248
+ <xsl:element name="p" namespace="{$namespace_full}">
8249
+ <xsl:copy-of select="$fn_text"/>
8250
+ </xsl:element>
8251
+ </xsl:element>
8252
+ </xsl:if>
8253
+ </xsl:if>
8254
+ </xsl:template>
8255
+
8256
+ <!-- add @reference for bibitem/note, similar to fn/reference -->
8257
+ <xsl:template match="*[local-name() = 'bibitem']/*[local-name() = 'note']" mode="update_xml_step2">
8258
+ <xsl:copy>
8259
+ <xsl:apply-templates select="@*" mode="update_xml_step2"/>
8260
+
8261
+ <xsl:attribute name="reference">
8262
+ <xsl:value-of select="concat('bibitem_', ../@id, '_', count(preceding-sibling::*[local-name() = 'note']))"/>
8263
+ </xsl:attribute>
8264
+
8265
+ <xsl:apply-templates select="node()" mode="update_xml_step2"/>
8266
+ </xsl:copy>
8267
+ </xsl:template>
8268
+
8269
+ <!-- END STEP2: add 'fn' after 'eref' and 'origin', if referenced to bibitem with 'note' = Withdrawn.' or 'Cancelled and replaced...' -->
8270
+ <xsl:template name="convertDate">
7440
8271
  <xsl:param name="date"/>
7441
8272
  <xsl:param name="format" select="'short'"/>
7442
8273
  <xsl:variable name="year" select="substring($date, 1, 4)"/>
@@ -7549,9 +8380,6 @@
7549
8380
  <xsl:otherwise><xsl:value-of select="$charAtEnd"/></xsl:otherwise>
7550
8381
  </xsl:choose>
7551
8382
  </xsl:template><xsl:template name="addPDFUAmeta">
7552
- <xsl:variable name="lang">
7553
- <xsl:call-template name="getLang"/>
7554
- </xsl:variable>
7555
8383
  <pdf:catalog>
7556
8384
  <pdf:dictionary type="normal" key="ViewerPreferences">
7557
8385
  <pdf:boolean key="DisplayDocTitle">true</pdf:boolean>
@@ -7779,10 +8607,12 @@
7779
8607
  <xsl:param name="key"/>
7780
8608
  <xsl:param name="formatted">false</xsl:param>
7781
8609
  <xsl:param name="lang"/>
8610
+ <xsl:param name="returnEmptyIfNotFound">false</xsl:param>
7782
8611
 
7783
8612
  <xsl:variable name="curr_lang">
7784
8613
  <xsl:choose>
7785
8614
  <xsl:when test="$lang != ''"><xsl:value-of select="$lang"/></xsl:when>
8615
+ <xsl:when test="$returnEmptyIfNotFound = 'true'"/>
7786
8616
  <xsl:otherwise>
7787
8617
  <xsl:call-template name="getLang"/>
7788
8618
  </xsl:otherwise>
@@ -7817,6 +8647,7 @@
7817
8647
  </xsl:otherwise>
7818
8648
  </xsl:choose>
7819
8649
  </xsl:when>
8650
+ <xsl:when test="$returnEmptyIfNotFound = 'true'"/>
7820
8651
  <xsl:otherwise>
7821
8652
  <xsl:variable name="key_">
7822
8653
  <xsl:call-template name="capitalize">
@@ -7886,53 +8717,153 @@
7886
8717
  <xsl:param name="first"/>
7887
8718
  <xsl:if test="$number != ''">
7888
8719
  <xsl:variable name="words">
7889
- <words>
7890
- <word cardinal="1">One-</word>
7891
- <word ordinal="1">First </word>
7892
- <word cardinal="2">Two-</word>
7893
- <word ordinal="2">Second </word>
7894
- <word cardinal="3">Three-</word>
7895
- <word ordinal="3">Third </word>
7896
- <word cardinal="4">Four-</word>
7897
- <word ordinal="4">Fourth </word>
7898
- <word cardinal="5">Five-</word>
7899
- <word ordinal="5">Fifth </word>
7900
- <word cardinal="6">Six-</word>
7901
- <word ordinal="6">Sixth </word>
7902
- <word cardinal="7">Seven-</word>
7903
- <word ordinal="7">Seventh </word>
7904
- <word cardinal="8">Eight-</word>
7905
- <word ordinal="8">Eighth </word>
7906
- <word cardinal="9">Nine-</word>
7907
- <word ordinal="9">Ninth </word>
7908
- <word ordinal="10">Tenth </word>
7909
- <word ordinal="11">Eleventh </word>
7910
- <word ordinal="12">Twelfth </word>
7911
- <word ordinal="13">Thirteenth </word>
7912
- <word ordinal="14">Fourteenth </word>
7913
- <word ordinal="15">Fifteenth </word>
7914
- <word ordinal="16">Sixteenth </word>
7915
- <word ordinal="17">Seventeenth </word>
7916
- <word ordinal="18">Eighteenth </word>
7917
- <word ordinal="19">Nineteenth </word>
7918
- <word cardinal="20">Twenty-</word>
7919
- <word ordinal="20">Twentieth </word>
7920
- <word cardinal="30">Thirty-</word>
7921
- <word ordinal="30">Thirtieth </word>
7922
- <word cardinal="40">Forty-</word>
7923
- <word ordinal="40">Fortieth </word>
7924
- <word cardinal="50">Fifty-</word>
7925
- <word ordinal="50">Fiftieth </word>
7926
- <word cardinal="60">Sixty-</word>
7927
- <word ordinal="60">Sixtieth </word>
7928
- <word cardinal="70">Seventy-</word>
7929
- <word ordinal="70">Seventieth </word>
7930
- <word cardinal="80">Eighty-</word>
7931
- <word ordinal="80">Eightieth </word>
7932
- <word cardinal="90">Ninety-</word>
7933
- <word ordinal="90">Ninetieth </word>
7934
- <word cardinal="100">Hundred-</word>
7935
- <word ordinal="100">Hundredth </word>
8720
+ <words>
8721
+ <xsl:choose>
8722
+ <xsl:when test="$lang = 'fr'"> <!-- https://en.wiktionary.org/wiki/Appendix:French_numbers -->
8723
+ <word cardinal="1">Une-</word>
8724
+ <word ordinal="1">Première </word>
8725
+ <word cardinal="2">Deux-</word>
8726
+ <word ordinal="2">Seconde </word>
8727
+ <word cardinal="3">Trois-</word>
8728
+ <word ordinal="3">Tierce </word>
8729
+ <word cardinal="4">Quatre-</word>
8730
+ <word ordinal="4">Quatrième </word>
8731
+ <word cardinal="5">Cinq-</word>
8732
+ <word ordinal="5">Cinquième </word>
8733
+ <word cardinal="6">Six-</word>
8734
+ <word ordinal="6">Sixième </word>
8735
+ <word cardinal="7">Sept-</word>
8736
+ <word ordinal="7">Septième </word>
8737
+ <word cardinal="8">Huit-</word>
8738
+ <word ordinal="8">Huitième </word>
8739
+ <word cardinal="9">Neuf-</word>
8740
+ <word ordinal="9">Neuvième </word>
8741
+ <word ordinal="10">Dixième </word>
8742
+ <word ordinal="11">Onzième </word>
8743
+ <word ordinal="12">Douzième </word>
8744
+ <word ordinal="13">Treizième </word>
8745
+ <word ordinal="14">Quatorzième </word>
8746
+ <word ordinal="15">Quinzième </word>
8747
+ <word ordinal="16">Seizième </word>
8748
+ <word ordinal="17">Dix-septième </word>
8749
+ <word ordinal="18">Dix-huitième </word>
8750
+ <word ordinal="19">Dix-neuvième </word>
8751
+ <word cardinal="20">Vingt-</word>
8752
+ <word ordinal="20">Vingtième </word>
8753
+ <word cardinal="30">Trente-</word>
8754
+ <word ordinal="30">Trentième </word>
8755
+ <word cardinal="40">Quarante-</word>
8756
+ <word ordinal="40">Quarantième </word>
8757
+ <word cardinal="50">Cinquante-</word>
8758
+ <word ordinal="50">Cinquantième </word>
8759
+ <word cardinal="60">Soixante-</word>
8760
+ <word ordinal="60">Soixantième </word>
8761
+ <word cardinal="70">Septante-</word>
8762
+ <word ordinal="70">Septantième </word>
8763
+ <word cardinal="80">Huitante-</word>
8764
+ <word ordinal="80">Huitantième </word>
8765
+ <word cardinal="90">Nonante-</word>
8766
+ <word ordinal="90">Nonantième </word>
8767
+ <word cardinal="100">Cent-</word>
8768
+ <word ordinal="100">Centième </word>
8769
+ </xsl:when>
8770
+ <xsl:when test="$lang = 'ru'">
8771
+ <word cardinal="1">Одна-</word>
8772
+ <word ordinal="1">Первое </word>
8773
+ <word cardinal="2">Две-</word>
8774
+ <word ordinal="2">Второе </word>
8775
+ <word cardinal="3">Три-</word>
8776
+ <word ordinal="3">Третье </word>
8777
+ <word cardinal="4">Четыре-</word>
8778
+ <word ordinal="4">Четвертое </word>
8779
+ <word cardinal="5">Пять-</word>
8780
+ <word ordinal="5">Пятое </word>
8781
+ <word cardinal="6">Шесть-</word>
8782
+ <word ordinal="6">Шестое </word>
8783
+ <word cardinal="7">Семь-</word>
8784
+ <word ordinal="7">Седьмое </word>
8785
+ <word cardinal="8">Восемь-</word>
8786
+ <word ordinal="8">Восьмое </word>
8787
+ <word cardinal="9">Девять-</word>
8788
+ <word ordinal="9">Девятое </word>
8789
+ <word ordinal="10">Десятое </word>
8790
+ <word ordinal="11">Одиннадцатое </word>
8791
+ <word ordinal="12">Двенадцатое </word>
8792
+ <word ordinal="13">Тринадцатое </word>
8793
+ <word ordinal="14">Четырнадцатое </word>
8794
+ <word ordinal="15">Пятнадцатое </word>
8795
+ <word ordinal="16">Шестнадцатое </word>
8796
+ <word ordinal="17">Семнадцатое </word>
8797
+ <word ordinal="18">Восемнадцатое </word>
8798
+ <word ordinal="19">Девятнадцатое </word>
8799
+ <word cardinal="20">Двадцать-</word>
8800
+ <word ordinal="20">Двадцатое </word>
8801
+ <word cardinal="30">Тридцать-</word>
8802
+ <word ordinal="30">Тридцатое </word>
8803
+ <word cardinal="40">Сорок-</word>
8804
+ <word ordinal="40">Сороковое </word>
8805
+ <word cardinal="50">Пятьдесят-</word>
8806
+ <word ordinal="50">Пятидесятое </word>
8807
+ <word cardinal="60">Шестьдесят-</word>
8808
+ <word ordinal="60">Шестидесятое </word>
8809
+ <word cardinal="70">Семьдесят-</word>
8810
+ <word ordinal="70">Семидесятое </word>
8811
+ <word cardinal="80">Восемьдесят-</word>
8812
+ <word ordinal="80">Восьмидесятое </word>
8813
+ <word cardinal="90">Девяносто-</word>
8814
+ <word ordinal="90">Девяностое </word>
8815
+ <word cardinal="100">Сто-</word>
8816
+ <word ordinal="100">Сотое </word>
8817
+ </xsl:when>
8818
+ <xsl:otherwise> <!-- default english -->
8819
+ <word cardinal="1">One-</word>
8820
+ <word ordinal="1">First </word>
8821
+ <word cardinal="2">Two-</word>
8822
+ <word ordinal="2">Second </word>
8823
+ <word cardinal="3">Three-</word>
8824
+ <word ordinal="3">Third </word>
8825
+ <word cardinal="4">Four-</word>
8826
+ <word ordinal="4">Fourth </word>
8827
+ <word cardinal="5">Five-</word>
8828
+ <word ordinal="5">Fifth </word>
8829
+ <word cardinal="6">Six-</word>
8830
+ <word ordinal="6">Sixth </word>
8831
+ <word cardinal="7">Seven-</word>
8832
+ <word ordinal="7">Seventh </word>
8833
+ <word cardinal="8">Eight-</word>
8834
+ <word ordinal="8">Eighth </word>
8835
+ <word cardinal="9">Nine-</word>
8836
+ <word ordinal="9">Ninth </word>
8837
+ <word ordinal="10">Tenth </word>
8838
+ <word ordinal="11">Eleventh </word>
8839
+ <word ordinal="12">Twelfth </word>
8840
+ <word ordinal="13">Thirteenth </word>
8841
+ <word ordinal="14">Fourteenth </word>
8842
+ <word ordinal="15">Fifteenth </word>
8843
+ <word ordinal="16">Sixteenth </word>
8844
+ <word ordinal="17">Seventeenth </word>
8845
+ <word ordinal="18">Eighteenth </word>
8846
+ <word ordinal="19">Nineteenth </word>
8847
+ <word cardinal="20">Twenty-</word>
8848
+ <word ordinal="20">Twentieth </word>
8849
+ <word cardinal="30">Thirty-</word>
8850
+ <word ordinal="30">Thirtieth </word>
8851
+ <word cardinal="40">Forty-</word>
8852
+ <word ordinal="40">Fortieth </word>
8853
+ <word cardinal="50">Fifty-</word>
8854
+ <word ordinal="50">Fiftieth </word>
8855
+ <word cardinal="60">Sixty-</word>
8856
+ <word ordinal="60">Sixtieth </word>
8857
+ <word cardinal="70">Seventy-</word>
8858
+ <word ordinal="70">Seventieth </word>
8859
+ <word cardinal="80">Eighty-</word>
8860
+ <word ordinal="80">Eightieth </word>
8861
+ <word cardinal="90">Ninety-</word>
8862
+ <word ordinal="90">Ninetieth </word>
8863
+ <word cardinal="100">Hundred-</word>
8864
+ <word ordinal="100">Hundredth </word>
8865
+ </xsl:otherwise>
8866
+ </xsl:choose>
7936
8867
  </words>
7937
8868
  </xsl:variable>
7938
8869
 
@@ -8006,4 +8937,18 @@
8006
8937
  <xsl:otherwise>_</xsl:otherwise>
8007
8938
  </xsl:choose>
8008
8939
  </xsl:attribute>
8940
+ </xsl:template><xsl:template name="substring-after-last">
8941
+ <xsl:param name="value"/>
8942
+ <xsl:param name="delimiter"/>
8943
+ <xsl:choose>
8944
+ <xsl:when test="contains($value, $delimiter)">
8945
+ <xsl:call-template name="substring-after-last">
8946
+ <xsl:with-param name="value" select="substring-after($value, $delimiter)"/>
8947
+ <xsl:with-param name="delimiter" select="$delimiter"/>
8948
+ </xsl:call-template>
8949
+ </xsl:when>
8950
+ <xsl:otherwise>
8951
+ <xsl:value-of select="$value"/>
8952
+ </xsl:otherwise>
8953
+ </xsl:choose>
8009
8954
  </xsl:template></xsl:stylesheet>