metanorma-iec 1.3.4 → 1.3.8

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.
@@ -14,14 +14,14 @@ module IsoDoc
14
14
  def default_fonts(options)
15
15
  {
16
16
  bodyfont: (options[:script] == "Hans" ? '"Source Han Sans",serif' : '"Arial",sans-serif'),
17
- headerfont: (options[:script] == "Hans" ? '"Source Han Sans",sans-serif' : '"Arial",sans-serif'),
18
- monospacefont: ('"Courier New",monospace'),
19
- monospacefontsize: "1.0em",
20
- footnotefontsize: "0.9em",
17
+ headerfont: (options[:script] == "Hans" ? '"Source Han Sans",sans-serif' : '"Arial",sans-serif'),
18
+ monospacefont: '"Courier New",monospace',
19
+ monospacefontsize: "1.0em",
20
+ footnotefontsize: "0.9em",
21
21
  }
22
22
  end
23
23
 
24
- def default_file_locations(options)
24
+ def default_file_locations(_options)
25
25
  @libdir = File.dirname(__FILE__)
26
26
  {
27
27
  htmlstylesheet: html_doc_path("htmlstyle.scss"),
@@ -30,7 +30,7 @@ module IsoDoc
30
30
  }
31
31
  end
32
32
 
33
- def htmlstyle(docxml)
33
+ def htmlstyle(_docxml)
34
34
  docxml = super
35
35
  b = docxml.at("div[@class = 'boilerplate_legal']/ol")
36
36
  b and b["type"] = "1"
@@ -20,8 +20,12 @@
20
20
 
21
21
 
22
22
  <xsl:variable name="debug">false</xsl:variable>
23
- <xsl:variable name="pageWidth" select="'210mm'"/>
24
- <xsl:variable name="pageHeight" select="'297mm'"/>
23
+ <xsl:variable name="pageWidth" select="210"/>
24
+ <xsl:variable name="pageHeight" select="297"/>
25
+ <xsl:variable name="marginLeftRight1" select="25"/>
26
+ <xsl:variable name="marginLeftRight2" select="25"/>
27
+ <xsl:variable name="marginTop" select="31"/>
28
+ <xsl:variable name="marginBottom" select="15"/>
25
29
 
26
30
  <xsl:variable name="copyrightText" select="concat('© ', //iec:iec-standard/iec:bibdata/iec:copyright/iec:owner/iec:organization/iec:abbreviation, ':', //iec:iec-standard/iec:bibdata/iec:copyright/iec:from)"/>
27
31
  <!-- <xsl:variable name="lang-1st-letter" select="concat('(', translate(substring(iec:iec-standard/iec:bibdata/iec:language,1,1),$lower, $upper), ')')"/> -->
@@ -160,14 +164,14 @@
160
164
  <fo:root font-family="Arial, Times New Roman, STIX Two Math, Source Han Sans" font-size="10pt" xml:lang="{$lang}">
161
165
  <fo:layout-master-set>
162
166
  <!-- cover pages -->
163
- <fo:simple-page-master master-name="cover" page-width="{$pageWidth}" page-height="{$pageHeight}">
167
+ <fo:simple-page-master master-name="cover" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
164
168
  <fo:region-body margin-top="17.5mm" margin-bottom="12.5mm" margin-left="18mm" margin-right="20.5mm"/>
165
169
  <fo:region-before region-name="header" extent="17.5mm"/>
166
170
  <fo:region-after region-name="footer" extent="12.5mm" precedence="true"/>
167
171
  <fo:region-start region-name="left-region" extent="18mm"/>
168
172
  <fo:region-end region-name="right-region" extent="20.5mm"/>
169
173
  </fo:simple-page-master>
170
- <fo:simple-page-master master-name="cover_2nd" page-width="{$pageWidth}" page-height="{$pageHeight}">
174
+ <fo:simple-page-master master-name="cover_2nd" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
171
175
  <fo:region-body margin-top="17.5mm" margin-bottom="12.5mm" margin-left="25mm" margin-right="25mm" column-count="2" column-gap="5mm"/>
172
176
  <fo:region-before region-name="header" extent="17.5mm"/>
173
177
  <fo:region-after region-name="footer" extent="12.5mm" precedence="true"/>
@@ -175,7 +179,7 @@
175
179
  <fo:region-end region-name="right-region" extent="25mm"/>
176
180
  </fo:simple-page-master>
177
181
 
178
- <fo:simple-page-master master-name="cover-FDIS" page-width="{$pageWidth}" page-height="{$pageHeight}">
182
+ <fo:simple-page-master master-name="cover-FDIS" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
179
183
  <fo:region-body margin-top="17.5mm" margin-bottom="29mm" margin-left="18mm" margin-right="19mm"/>
180
184
  <fo:region-before region-name="header" extent="17.5mm"/>
181
185
  <fo:region-after region-name="footer-FDIS" extent="29mm"/>
@@ -184,20 +188,20 @@
184
188
  </fo:simple-page-master>
185
189
 
186
190
  <!-- odd pages -->
187
- <fo:simple-page-master master-name="odd" page-width="{$pageWidth}" page-height="{$pageHeight}">
188
- <fo:region-body margin-top="31mm" margin-bottom="15mm" margin-left="25mm" margin-right="25mm"/>
189
- <fo:region-before region-name="header-odd" extent="31mm"/>
190
- <fo:region-after region-name="footer" extent="15mm"/>
191
- <fo:region-start region-name="left-region" extent="25mm"/>
192
- <fo:region-end region-name="right-region" extent="25mm"/>
191
+ <fo:simple-page-master master-name="odd" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
192
+ <fo:region-body margin-top="{$marginTop}mm" margin-bottom="{$marginBottom}mm" margin-left="{$marginLeftRight1}mm" margin-right="{$marginLeftRight2}mm"/>
193
+ <fo:region-before region-name="header-odd" extent="{$marginTop}mm"/>
194
+ <fo:region-after region-name="footer" extent="{$marginBottom}mm"/>
195
+ <fo:region-start region-name="left-region" extent="{$marginLeftRight1}mm"/>
196
+ <fo:region-end region-name="right-region" extent="{$marginLeftRight2}mm"/>
193
197
  </fo:simple-page-master>
194
198
  <!-- even pages -->
195
- <fo:simple-page-master master-name="even" page-width="{$pageWidth}" page-height="{$pageHeight}">
196
- <fo:region-body margin-top="31mm" margin-bottom="15mm" margin-left="25mm" margin-right="25mm"/>
197
- <fo:region-before region-name="header-even" extent="31mm"/>
198
- <fo:region-after region-name="footer" extent="15mm"/>
199
- <fo:region-start region-name="left-region" extent="25mm"/>
200
- <fo:region-end region-name="right-region" extent="25mm"/>
199
+ <fo:simple-page-master master-name="even" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
200
+ <fo:region-body margin-top="{$marginTop}mm" margin-bottom="{$marginBottom}mm" margin-left="{$marginLeftRight1}mm" margin-right="{$marginLeftRight2}mm"/>
201
+ <fo:region-before region-name="header-even" extent="{$marginTop}mm"/>
202
+ <fo:region-after region-name="footer" extent="{$marginBottom}mm"/>
203
+ <fo:region-start region-name="left-region" extent="{$marginLeftRight1}mm"/>
204
+ <fo:region-end region-name="right-region" extent="{$marginLeftRight2}mm"/>
201
205
  </fo:simple-page-master>
202
206
  <fo:page-sequence-master master-name="document">
203
207
  <fo:repeatable-page-master-alternatives>
@@ -206,11 +210,11 @@
206
210
  </fo:repeatable-page-master-alternatives>
207
211
  </fo:page-sequence-master>
208
212
 
209
- <fo:simple-page-master master-name="blank-page" page-width="{$pageWidth}" page-height="{$pageHeight}">
213
+ <fo:simple-page-master master-name="blank-page" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
210
214
  <fo:region-body margin-top="107mm" margin-bottom="0mm" margin-left="18mm" margin-right="0mm"/>
211
215
  </fo:simple-page-master>
212
216
 
213
- <fo:simple-page-master master-name="last-page" page-width="{$pageWidth}" page-height="{$pageHeight}">
217
+ <fo:simple-page-master master-name="last-page" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
214
218
  <fo:region-body margin-top="107mm" margin-bottom="0mm" margin-left="18mm" margin-right="0mm" background-color="rgb(236, 236, 236)"/>
215
219
  <fo:region-before region-name="header" extent="107mm"/>
216
220
  <fo:region-start region-name="left-region" extent="18mm"/>
@@ -2694,7 +2698,7 @@
2694
2698
 
2695
2699
 
2696
2700
 
2697
-
2701
+
2698
2702
  </xsl:attribute-set><xsl:attribute-set name="example-style">
2699
2703
 
2700
2704
 
@@ -2753,7 +2757,10 @@
2753
2757
 
2754
2758
 
2755
2759
 
2756
- </xsl:attribute-set><xsl:attribute-set name="table-name-style">
2760
+
2761
+ </xsl:attribute-set><xsl:variable name="table-border_">
2762
+
2763
+ </xsl:variable><xsl:variable name="table-border" select="normalize-space($table-border_)"/><xsl:attribute-set name="table-name-style">
2757
2764
  <xsl:attribute name="keep-with-next">always</xsl:attribute>
2758
2765
 
2759
2766
 
@@ -2774,6 +2781,8 @@
2774
2781
 
2775
2782
 
2776
2783
 
2784
+ </xsl:attribute-set><xsl:attribute-set name="table-footer-cell-style">
2785
+
2777
2786
  </xsl:attribute-set><xsl:attribute-set name="appendix-style">
2778
2787
 
2779
2788
 
@@ -2801,6 +2810,7 @@
2801
2810
 
2802
2811
 
2803
2812
 
2813
+
2804
2814
  </xsl:attribute-set><xsl:attribute-set name="note-style">
2805
2815
 
2806
2816
 
@@ -2821,6 +2831,7 @@
2821
2831
 
2822
2832
 
2823
2833
 
2834
+
2824
2835
  </xsl:attribute-set><xsl:variable name="note-body-indent">10mm</xsl:variable><xsl:variable name="note-body-indent-table">5mm</xsl:variable><xsl:attribute-set name="note-name-style">
2825
2836
 
2826
2837
 
@@ -2864,10 +2875,12 @@
2864
2875
 
2865
2876
 
2866
2877
 
2878
+
2867
2879
  </xsl:attribute-set><xsl:attribute-set name="termnote-name-style">
2868
2880
 
2869
2881
 
2870
2882
 
2883
+
2871
2884
  </xsl:attribute-set><xsl:attribute-set name="quote-style">
2872
2885
 
2873
2886
 
@@ -2930,6 +2943,7 @@
2930
2943
 
2931
2944
 
2932
2945
 
2946
+
2933
2947
 
2934
2948
 
2935
2949
 
@@ -3007,6 +3021,8 @@
3007
3021
  <xsl:attribute name="font-family">STIX Two Math</xsl:attribute>
3008
3022
 
3009
3023
 
3024
+ </xsl:attribute-set><xsl:attribute-set name="list-style">
3025
+
3010
3026
  </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:template name="processPrefaceSectionsDefault_Contents">
3011
3027
  <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='abstract']" mode="contents"/>
3012
3028
  <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='foreword']" mode="contents"/>
@@ -3017,14 +3033,15 @@
3017
3033
  <xsl:apply-templates select="/*/*[local-name()='sections']/*[local-name()='clause'][@type='scope']" mode="contents"/>
3018
3034
 
3019
3035
  <!-- Normative references -->
3020
- <xsl:apply-templates select="/*/*[local-name()='bibliography']/*[local-name()='references'][@normative='true']" mode="contents"/>
3036
+ <xsl:apply-templates select="/*/*[local-name()='bibliography']/*[local-name()='references'][@normative='true'] | /*/*[local-name()='bibliography']/*[local-name()='clause'][*[local-name()='references'][@normative='true']]" mode="contents"/>
3021
3037
  <!-- Terms and definitions -->
3022
3038
  <xsl:apply-templates select="/*/*[local-name()='sections']/*[local-name()='terms'] | /*/*[local-name()='sections']/*[local-name()='clause'][.//*[local-name()='terms']] | /*/*[local-name()='sections']/*[local-name()='definitions'] | /*/*[local-name()='sections']/*[local-name()='clause'][.//*[local-name()='definitions']]" mode="contents"/>
3023
3039
  <!-- Another main sections -->
3024
3040
  <xsl:apply-templates select="/*/*[local-name()='sections']/*[local-name() != 'terms' and local-name() != 'definitions' and not(@type='scope') and not(local-name() = 'clause' and .//*[local-name()='terms']) and not(local-name() = 'clause' and .//*[local-name()='definitions'])]" mode="contents"/>
3025
3041
  <xsl:apply-templates select="/*/*[local-name()='annex']" mode="contents"/>
3026
3042
  <!-- Bibliography -->
3027
- <xsl:apply-templates select="/*/*[local-name()='bibliography']/*[local-name()='references'][not(@normative='true')]" mode="contents"/>
3043
+ <xsl:apply-templates select="/*/*[local-name()='bibliography']/*[local-name()='references'][not(@normative='true')] | /*/*[local-name()='bibliography']/*[local-name()='clause'][*[local-name()='references'][not(@normative='true')]]" mode="contents"/>
3044
+
3028
3045
  </xsl:template><xsl:template name="processPrefaceSectionsDefault">
3029
3046
  <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='abstract']"/>
3030
3047
  <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='foreword']"/>
@@ -3060,13 +3077,15 @@
3060
3077
  <xsl:variable name="table">
3061
3078
 
3062
3079
  <xsl:variable name="simple-table">
3063
- <xsl:call-template name="getSimpleTable"/>
3080
+ <xsl:call-template name="getSimpleTable"/>
3064
3081
  </xsl:variable>
3065
3082
 
3066
3083
  <!-- <xsl:if test="$namespace = 'bipm'">
3067
- <fo:block>&#xA0;</fo:block>
3084
+ <fo:block>&#xA0;</fo:block>
3068
3085
  </xsl:if> -->
3069
3086
 
3087
+
3088
+ <!-- Display table's name before table as standalone block -->
3070
3089
  <!-- $namespace = 'iso' or -->
3071
3090
 
3072
3091
  <xsl:apply-templates select="*[local-name()='name']" mode="presentation"/>
@@ -3148,6 +3167,12 @@
3148
3167
 
3149
3168
 
3150
3169
 
3170
+
3171
+
3172
+
3173
+ <!-- display table's name before table for PAS inside block-container (2-columnn layout) -->
3174
+
3175
+
3151
3176
  <xsl:variable name="table_width">
3152
3177
  <!-- for centered table always 100% (@width will be set for middle/second cell of outer table) -->
3153
3178
  100%
@@ -3164,6 +3189,7 @@
3164
3189
 
3165
3190
 
3166
3191
 
3192
+
3167
3193
  <attribute name="border">0.5pt solid black</attribute>
3168
3194
 
3169
3195
 
@@ -3174,6 +3200,7 @@
3174
3200
 
3175
3201
 
3176
3202
 
3203
+
3177
3204
  </xsl:variable>
3178
3205
 
3179
3206
 
@@ -3315,6 +3342,9 @@
3315
3342
  <fo:block xsl:use-attribute-sets="table-name-style">
3316
3343
 
3317
3344
 
3345
+
3346
+
3347
+
3318
3348
  <xsl:choose>
3319
3349
  <xsl:when test="$continued = 'true'">
3320
3350
  <!-- <xsl:if test="$namespace = 'bsi'"></xsl:if> -->
@@ -3462,6 +3492,7 @@
3462
3492
  <!-- font-weight="bold" -->
3463
3493
  <fo:table-header>
3464
3494
 
3495
+
3465
3496
  <xsl:apply-templates/>
3466
3497
  </fo:table-header>
3467
3498
  </xsl:template><xsl:template name="table-header-title">
@@ -3598,6 +3629,8 @@
3598
3629
  </xsl:choose>
3599
3630
  </xsl:for-each>
3600
3631
 
3632
+
3633
+
3601
3634
  <xsl:choose>
3602
3635
  <xsl:when test="xalan:nodeset($colgroup)//*[local-name()='col']">
3603
3636
  <xsl:for-each select="xalan:nodeset($colgroup)//*[local-name()='col']">
@@ -3623,6 +3656,7 @@
3623
3656
  <fo:table-cell border="solid black 1pt" padding-left="1mm" padding-right="1mm" padding-top="1mm" number-columns-spanned="{$cols-count}">
3624
3657
 
3625
3658
 
3659
+
3626
3660
  <xsl:attribute name="border">solid black 0.5pt</xsl:attribute>
3627
3661
 
3628
3662
 
@@ -3638,6 +3672,11 @@
3638
3672
 
3639
3673
 
3640
3674
 
3675
+
3676
+
3677
+ <!-- for BSI (not PAS) display Notes before footnotes -->
3678
+
3679
+
3641
3680
  <!-- except gb -->
3642
3681
 
3643
3682
  <xsl:apply-templates select="../*[local-name()='note']" mode="process"/>
@@ -3669,6 +3708,10 @@
3669
3708
  <!-- fn processing -->
3670
3709
  <xsl:call-template name="fn_display"/>
3671
3710
 
3711
+
3712
+ <!-- for PAS display Notes after footnotes -->
3713
+
3714
+
3672
3715
  </fo:table-cell>
3673
3716
  </fo:table-row>
3674
3717
  </fo:table-body>
@@ -3725,10 +3768,13 @@
3725
3768
  <xsl:attribute name="border-bottom">solid black 0.5pt</xsl:attribute>
3726
3769
 
3727
3770
 
3771
+
3772
+
3728
3773
  </xsl:if>
3729
3774
  <xsl:if test="$parent-name = 'tfoot'">
3730
3775
 
3731
3776
 
3777
+
3732
3778
  <xsl:attribute name="border-left">solid black 0.5pt</xsl:attribute>
3733
3779
  <xsl:attribute name="border-right">solid black 0.5pt</xsl:attribute>
3734
3780
 
@@ -3737,6 +3783,12 @@
3737
3783
 
3738
3784
 
3739
3785
 
3786
+
3787
+
3788
+
3789
+
3790
+
3791
+
3740
3792
  <!-- <xsl:if test="$namespace = 'bipm'">
3741
3793
  <xsl:attribute name="height">8mm</xsl:attribute>
3742
3794
  </xsl:if> -->
@@ -3824,6 +3876,7 @@
3824
3876
 
3825
3877
 
3826
3878
 
3879
+
3827
3880
  <xsl:if test="ancestor::*[local-name() = 'tfoot']">
3828
3881
  <xsl:attribute name="border">solid black 0</xsl:attribute>
3829
3882
  </xsl:if>
@@ -3841,6 +3894,9 @@
3841
3894
 
3842
3895
 
3843
3896
 
3897
+
3898
+
3899
+
3844
3900
  <xsl:if test=".//*[local-name() = 'table']">
3845
3901
  <xsl:attribute name="padding-right">1mm</xsl:attribute>
3846
3902
  </xsl:if>
@@ -3867,14 +3923,20 @@
3867
3923
 
3868
3924
 
3869
3925
 
3926
+
3870
3927
  <xsl:attribute name="font-size">8pt</xsl:attribute>
3871
3928
  <xsl:attribute name="margin-bottom">6pt</xsl:attribute>
3872
3929
 
3873
3930
 
3874
3931
 
3875
3932
 
3933
+
3934
+ <!-- Table's note name (NOTE, for example) -->
3935
+
3876
3936
  <fo:inline padding-right="2mm">
3877
3937
 
3938
+
3939
+
3878
3940
 
3879
3941
 
3880
3942
 
@@ -3882,6 +3944,8 @@
3882
3944
 
3883
3945
  </fo:inline>
3884
3946
 
3947
+
3948
+
3885
3949
  <xsl:apply-templates mode="process"/>
3886
3950
  </fo:block>
3887
3951
 
@@ -3901,6 +3965,8 @@
3901
3965
  <xsl:variable name="reference" select="@reference"/>
3902
3966
  <xsl:if test="not(preceding-sibling::*[@reference = $reference])"> <!-- only unique reference puts in note-->
3903
3967
  <fo:block margin-bottom="12pt">
3968
+
3969
+
3904
3970
 
3905
3971
 
3906
3972
 
@@ -3915,6 +3981,7 @@
3915
3981
 
3916
3982
 
3917
3983
 
3984
+
3918
3985
  <xsl:attribute name="baseline-shift">30%</xsl:attribute>
3919
3986
  <xsl:attribute name="font-size">70%</xsl:attribute>
3920
3987
 
@@ -3925,6 +3992,7 @@
3925
3992
  <xsl:value-of select="@reference"/>
3926
3993
 
3927
3994
 
3995
+
3928
3996
  </fo:inline>
3929
3997
  <fo:inline>
3930
3998
 
@@ -4069,6 +4137,8 @@
4069
4137
  <!-- <xsl:variable name="namespace" select="substring-before(name(/*), '-')"/> -->
4070
4138
  <fo:inline font-size="80%" keep-with-previous.within-line="always">
4071
4139
 
4140
+
4141
+
4072
4142
  <xsl:if test="ancestor::*[local-name()='td']">
4073
4143
  <xsl:attribute name="font-weight">normal</xsl:attribute>
4074
4144
  <!-- <xsl:attribute name="alignment-baseline">hanging</xsl:attribute> -->
@@ -4080,11 +4150,14 @@
4080
4150
 
4081
4151
 
4082
4152
 
4153
+
4154
+
4083
4155
  <fo:basic-link internal-destination="{@reference}_{ancestor::*[@id][1]/@id}" fox:alt-text="{@reference}"> <!-- @reference | ancestor::*[local-name()='clause'][1]/@id-->
4084
4156
 
4085
4157
 
4086
4158
  <xsl:value-of select="@reference"/>
4087
4159
 
4160
+
4088
4161
  </fo:basic-link>
4089
4162
  </fo:inline>
4090
4163
  </xsl:template><xsl:template match="*[local-name()='fn']/*[local-name()='p']">
@@ -4398,6 +4471,7 @@
4398
4471
 
4399
4472
  <fo:table-row>
4400
4473
 
4474
+
4401
4475
  <fo:table-cell>
4402
4476
 
4403
4477
  <fo:block margin-top="6pt">
@@ -4417,6 +4491,7 @@
4417
4491
 
4418
4492
 
4419
4493
 
4494
+
4420
4495
  <xsl:apply-templates/>
4421
4496
  <!-- <xsl:if test="$namespace = 'gb'">
4422
4497
  <xsl:if test="ancestor::*[local-name()='formula']">
@@ -4964,7 +5039,15 @@
4964
5039
  <xsl:copy>
4965
5040
  <xsl:apply-templates select="@*|node()" mode="mathml"/>
4966
5041
  </xsl:copy>
4967
- <mathml:mspace width="0.5ex"/>
5042
+ <xsl:choose>
5043
+ <!-- if in msub, then don't add space -->
5044
+ <xsl:when test="ancestor::mathml:mrow[parent::mathml:msub and preceding-sibling::*[1][self::mathml:mrow]]"/>
5045
+ <!-- if next char in digit, don't add space -->
5046
+ <xsl:when test="translate(substring(following-sibling::*[1]/text(),1,1),'0123456789','') = ''"/>
5047
+ <xsl:otherwise>
5048
+ <mathml:mspace width="0.5ex"/>
5049
+ </xsl:otherwise>
5050
+ </xsl:choose>
4968
5051
  </xsl:template><xsl:template match="mathml:math/*[local-name()='unit']" mode="mathml"/><xsl:template match="mathml:math/*[local-name()='prefix']" mode="mathml"/><xsl:template match="mathml:math/*[local-name()='dimension']" mode="mathml"/><xsl:template match="mathml:math/*[local-name()='quantity']" mode="mathml"/><xsl:template match="*[local-name()='localityStack']"/><xsl:template match="*[local-name()='link']" name="link">
4969
5052
  <xsl:variable name="target">
4970
5053
  <xsl:choose>
@@ -4992,6 +5075,8 @@
4992
5075
  <xsl:attribute name="color">blue</xsl:attribute>
4993
5076
  </xsl:if>
4994
5077
 
5078
+
5079
+
4995
5080
  <xsl:choose>
4996
5081
  <xsl:when test="$target_text = ''">
4997
5082
  <xsl:apply-templates/>
@@ -5100,6 +5185,7 @@
5100
5185
 
5101
5186
 
5102
5187
 
5188
+
5103
5189
  <fo:block-container margin-left="0mm">
5104
5190
 
5105
5191
 
@@ -5143,6 +5229,7 @@
5143
5229
  </xsl:choose>
5144
5230
  </xsl:template><xsl:template match="*[local-name() = 'termnote']">
5145
5231
  <fo:block id="{@id}" xsl:use-attribute-sets="termnote-style">
5232
+
5146
5233
  <fo:inline xsl:use-attribute-sets="termnote-name-style">
5147
5234
 
5148
5235
  <xsl:apply-templates select="*[local-name() = 'name']" mode="presentation"/>
@@ -5218,6 +5305,7 @@
5218
5305
  </xsl:call-template>
5219
5306
 
5220
5307
  <fo:block>
5308
+
5221
5309
  <xsl:apply-templates/>
5222
5310
  </fo:block>
5223
5311
  <xsl:call-template name="fn_display_figure"/>
@@ -5272,7 +5360,24 @@
5272
5360
  </fo:instream-foreign-object>
5273
5361
  </xsl:when>
5274
5362
  <xsl:otherwise>
5275
- <fo:external-graphic src="{$src}" fox:alt-text="Image {@alt}" xsl:use-attribute-sets="image-graphic-style"/>
5363
+ <fo:external-graphic src="{$src}" fox:alt-text="Image {@alt}" xsl:use-attribute-sets="image-graphic-style">
5364
+ <xsl:if test="not(@mimetype = 'image/svg+xml') and ../*[local-name() = 'name'] and not(ancestor::*[local-name() = 'table'])">
5365
+
5366
+ <xsl:variable name="img_src">
5367
+ <xsl:choose>
5368
+ <xsl:when test="not(starts-with(@src, 'data:'))"><xsl:value-of select="concat($basepath, @src)"/></xsl:when>
5369
+ <xsl:otherwise><xsl:value-of select="@src"/></xsl:otherwise>
5370
+ </xsl:choose>
5371
+ </xsl:variable>
5372
+
5373
+ <xsl:variable name="scale" select="java:org.metanorma.fop.Util.getImageScale($img_src, $width_effective, $height_effective)"/>
5374
+ <xsl:if test="number($scale) &lt; 100">
5375
+ <xsl:attribute name="content-width"><xsl:value-of select="$scale"/>%</xsl:attribute>
5376
+ </xsl:if>
5377
+
5378
+ </xsl:if>
5379
+
5380
+ </fo:external-graphic>
5276
5381
  </xsl:otherwise>
5277
5382
  </xsl:choose>
5278
5383
 
@@ -5340,6 +5445,253 @@
5340
5445
  <xsl:param name="height"/>
5341
5446
  <line xmlns="http://www.w3.org/2000/svg" x1="0" y1="0" x2="{$width}" y2="{$height}" style="stroke: rgb(255, 0, 0); stroke-width:4px; "/>
5342
5447
  <line xmlns="http://www.w3.org/2000/svg" x1="0" y1="{$height}" x2="{$width}" y2="0" style="stroke: rgb(255, 0, 0); stroke-width:4px; "/>
5448
+ </xsl:template><xsl:variable name="figure_name_height">14</xsl:variable><xsl:variable name="width_effective" select="$pageWidth - $marginLeftRight1 - $marginLeftRight2"/><xsl:variable name="height_effective" select="$pageHeight - $marginTop - $marginBottom - $figure_name_height"/><xsl:variable name="image_dpi" select="96"/><xsl:variable name="width_effective_px" select="$width_effective div 25.4 * $image_dpi"/><xsl:variable name="height_effective_px" select="$height_effective div 25.4 * $image_dpi"/><xsl:template match="*[local-name() = 'figure'][not(*[local-name() = 'image']) and *[local-name() = 'svg']]/*[local-name() = 'name']/*[local-name() = 'bookmark']" priority="2"/><xsl:template match="*[local-name() = 'figure'][not(*[local-name() = 'image'])]/*[local-name() = 'svg']" priority="2" name="image_svg">
5449
+ <xsl:param name="name"/>
5450
+
5451
+ <xsl:variable name="svg_content">
5452
+ <xsl:apply-templates select="." mode="svg_update"/>
5453
+ </xsl:variable>
5454
+
5455
+ <xsl:variable name="alt-text">
5456
+ <xsl:choose>
5457
+ <xsl:when test="normalize-space(../*[local-name() = 'name']) != ''">
5458
+ <xsl:value-of select="../*[local-name() = 'name']"/>
5459
+ </xsl:when>
5460
+ <xsl:when test="normalize-space($name) != ''">
5461
+ <xsl:value-of select="$name"/>
5462
+ </xsl:when>
5463
+ <xsl:otherwise>Figure</xsl:otherwise>
5464
+ </xsl:choose>
5465
+ </xsl:variable>
5466
+
5467
+ <xsl:choose>
5468
+ <xsl:when test=".//*[local-name() = 'a'][*[local-name() = 'rect'] or *[local-name() = 'polygon'] or *[local-name() = 'circle'] or *[local-name() = 'ellipse']]">
5469
+ <fo:block>
5470
+ <xsl:variable name="width" select="@width"/>
5471
+ <xsl:variable name="height" select="@height"/>
5472
+
5473
+ <xsl:variable name="scale_x">
5474
+ <xsl:choose>
5475
+ <xsl:when test="$width &gt; $width_effective_px">
5476
+ <xsl:value-of select="$width_effective_px div $width"/>
5477
+ </xsl:when>
5478
+ <xsl:otherwise>1</xsl:otherwise>
5479
+ </xsl:choose>
5480
+ </xsl:variable>
5481
+
5482
+ <xsl:variable name="scale_y">
5483
+ <xsl:choose>
5484
+ <xsl:when test="$height * $scale_x &gt; $height_effective_px">
5485
+ <xsl:value-of select="$height_effective_px div ($height * $scale_x)"/>
5486
+ </xsl:when>
5487
+ <xsl:otherwise>1</xsl:otherwise>
5488
+ </xsl:choose>
5489
+ </xsl:variable>
5490
+
5491
+ <xsl:variable name="scale">
5492
+ <xsl:choose>
5493
+ <xsl:when test="$scale_y != 1">
5494
+ <xsl:value-of select="$scale_x * $scale_y"/>
5495
+ </xsl:when>
5496
+ <xsl:otherwise>
5497
+ <xsl:value-of select="$scale_x"/>
5498
+ </xsl:otherwise>
5499
+ </xsl:choose>
5500
+ </xsl:variable>
5501
+
5502
+ <xsl:variable name="width_scale" select="round($width * $scale)"/>
5503
+ <xsl:variable name="height_scale" select="round($height * $scale)"/>
5504
+
5505
+ <fo:table table-layout="fixed" width="100%">
5506
+ <fo:table-column column-width="proportional-column-width(1)"/>
5507
+ <fo:table-column column-width="{$width_scale}px"/>
5508
+ <fo:table-column column-width="proportional-column-width(1)"/>
5509
+ <fo:table-body>
5510
+ <fo:table-row>
5511
+ <fo:table-cell column-number="2">
5512
+ <fo:block>
5513
+ <fo:block-container width="{$width_scale}px" height="{$height_scale}px">
5514
+ <xsl:if test="../*[local-name() = 'name']/*[local-name() = 'bookmark']">
5515
+ <fo:block line-height="0" font-size="0">
5516
+ <xsl:for-each select="../*[local-name() = 'name']/*[local-name() = 'bookmark']">
5517
+ <xsl:call-template name="bookmark"/>
5518
+ </xsl:for-each>
5519
+ </fo:block>
5520
+ </xsl:if>
5521
+ <fo:block text-depth="0" line-height="0" font-size="0">
5522
+
5523
+ <fo:instream-foreign-object fox:alt-text="{$alt-text}">
5524
+ <xsl:attribute name="width">100%</xsl:attribute>
5525
+ <xsl:attribute name="content-height">100%</xsl:attribute>
5526
+ <xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
5527
+ <xsl:attribute name="scaling">uniform</xsl:attribute>
5528
+
5529
+ <xsl:apply-templates select="xalan:nodeset($svg_content)" mode="svg_remove_a"/>
5530
+ </fo:instream-foreign-object>
5531
+ </fo:block>
5532
+
5533
+ <xsl:apply-templates select=".//*[local-name() = 'a'][*[local-name() = 'rect'] or *[local-name() = 'polygon'] or *[local-name() = 'circle'] or *[local-name() = 'ellipse']]" mode="svg_imagemap_links">
5534
+ <xsl:with-param name="scale" select="$scale"/>
5535
+ </xsl:apply-templates>
5536
+ </fo:block-container>
5537
+ </fo:block>
5538
+ </fo:table-cell>
5539
+ </fo:table-row>
5540
+ </fo:table-body>
5541
+ </fo:table>
5542
+ </fo:block>
5543
+
5544
+ </xsl:when>
5545
+ <xsl:otherwise>
5546
+ <fo:block xsl:use-attribute-sets="image-style">
5547
+ <fo:instream-foreign-object fox:alt-text="{$alt-text}">
5548
+ <xsl:attribute name="width">100%</xsl:attribute>
5549
+ <xsl:attribute name="content-height">100%</xsl:attribute>
5550
+ <xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
5551
+ <xsl:variable name="svg_width" select="xalan:nodeset($svg_content)/*/@width"/>
5552
+ <xsl:variable name="svg_height" select="xalan:nodeset($svg_content)/*/@height"/>
5553
+ <!-- effective height 297 - 27.4 - 13 = 256.6 -->
5554
+ <!-- effective width 210 - 12.5 - 25 = 172.5 -->
5555
+ <!-- effective height / width = 1.48, 1.4 - with title -->
5556
+ <xsl:if test="$svg_height &gt; ($svg_width * 1.4)"> <!-- for images with big height -->
5557
+ <xsl:variable name="width" select="(($svg_width * 1.4) div $svg_height) * 100"/>
5558
+ <xsl:attribute name="width"><xsl:value-of select="$width"/>%</xsl:attribute>
5559
+ </xsl:if>
5560
+ <xsl:attribute name="scaling">uniform</xsl:attribute>
5561
+ <xsl:copy-of select="$svg_content"/>
5562
+ </fo:instream-foreign-object>
5563
+ </fo:block>
5564
+ </xsl:otherwise>
5565
+ </xsl:choose>
5566
+ </xsl:template><xsl:template match="@*|node()" mode="svg_update">
5567
+ <xsl:copy>
5568
+ <xsl:apply-templates select="@*|node()" mode="svg_update"/>
5569
+ </xsl:copy>
5570
+ </xsl:template><xsl:template match="*[local-name() = 'image']/@href" mode="svg_update">
5571
+ <xsl:attribute name="href" namespace="http://www.w3.org/1999/xlink">
5572
+ <xsl:value-of select="."/>
5573
+ </xsl:attribute>
5574
+ </xsl:template><xsl:template match="*[local-name() = 'svg'][not(@width and @height)]" mode="svg_update">
5575
+ <xsl:copy>
5576
+ <xsl:apply-templates select="@*" mode="svg_update"/>
5577
+ <xsl:variable name="viewbox">
5578
+ <xsl:call-template name="split">
5579
+ <xsl:with-param name="pText" select="@viewBox"/>
5580
+ <xsl:with-param name="sep" select="' '"/>
5581
+ </xsl:call-template>
5582
+ </xsl:variable>
5583
+ <xsl:attribute name="width">
5584
+ <xsl:value-of select="round(xalan:nodeset($viewbox)//item[3])"/>
5585
+ </xsl:attribute>
5586
+ <xsl:attribute name="height">
5587
+ <xsl:value-of select="round(xalan:nodeset($viewbox)//item[4])"/>
5588
+ </xsl:attribute>
5589
+ <xsl:apply-templates mode="svg_update"/>
5590
+ </xsl:copy>
5591
+ </xsl:template><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'image'][@mimetype = 'image/svg+xml' and @src[not(starts-with(., 'data:image/'))]]" priority="2">
5592
+ <xsl:variable name="svg_content" select="document(@src)"/>
5593
+ <xsl:variable name="name" select="ancestor::*[local-name() = 'figure']/*[local-name() = 'name']"/>
5594
+ <xsl:for-each select="xalan:nodeset($svg_content)/node()">
5595
+ <xsl:call-template name="image_svg">
5596
+ <xsl:with-param name="name" select="$name"/>
5597
+ </xsl:call-template>
5598
+ </xsl:for-each>
5599
+ </xsl:template><xsl:template match="@*|node()" mode="svg_remove_a">
5600
+ <xsl:copy>
5601
+ <xsl:apply-templates select="@*|node()" mode="svg_remove_a"/>
5602
+ </xsl:copy>
5603
+ </xsl:template><xsl:template match="*[local-name() = 'a']" mode="svg_remove_a">
5604
+ <xsl:apply-templates mode="svg_remove_a"/>
5605
+ </xsl:template><xsl:template match="*[local-name() = 'a']" mode="svg_imagemap_links">
5606
+ <xsl:param name="scale"/>
5607
+ <xsl:variable name="dest">
5608
+ <xsl:choose>
5609
+ <xsl:when test="starts-with(@href, '#')">
5610
+ <xsl:value-of select="substring-after(@href, '#')"/>
5611
+ </xsl:when>
5612
+ <xsl:otherwise>
5613
+ <xsl:value-of select="@href"/>
5614
+ </xsl:otherwise>
5615
+ </xsl:choose>
5616
+ </xsl:variable>
5617
+ <xsl:for-each select="./*[local-name() = 'rect']">
5618
+ <xsl:call-template name="insertSVGMapLink">
5619
+ <xsl:with-param name="left" select="floor(@x * $scale)"/>
5620
+ <xsl:with-param name="top" select="floor(@y * $scale)"/>
5621
+ <xsl:with-param name="width" select="floor(@width * $scale)"/>
5622
+ <xsl:with-param name="height" select="floor(@height * $scale)"/>
5623
+ <xsl:with-param name="dest" select="$dest"/>
5624
+ </xsl:call-template>
5625
+ </xsl:for-each>
5626
+
5627
+ <xsl:for-each select="./*[local-name() = 'polygon']">
5628
+ <xsl:variable name="points">
5629
+ <xsl:call-template name="split">
5630
+ <xsl:with-param name="pText" select="@points"/>
5631
+ </xsl:call-template>
5632
+ </xsl:variable>
5633
+ <xsl:variable name="x_coords">
5634
+ <xsl:for-each select="xalan:nodeset($points)//item[position() mod 2 = 1]">
5635
+ <xsl:sort select="." data-type="number"/>
5636
+ <x><xsl:value-of select="."/></x>
5637
+ </xsl:for-each>
5638
+ </xsl:variable>
5639
+ <xsl:variable name="y_coords">
5640
+ <xsl:for-each select="xalan:nodeset($points)//item[position() mod 2 = 0]">
5641
+ <xsl:sort select="." data-type="number"/>
5642
+ <y><xsl:value-of select="."/></y>
5643
+ </xsl:for-each>
5644
+ </xsl:variable>
5645
+ <xsl:variable name="x" select="xalan:nodeset($x_coords)//x[1]"/>
5646
+ <xsl:variable name="y" select="xalan:nodeset($y_coords)//y[1]"/>
5647
+ <xsl:variable name="width" select="xalan:nodeset($x_coords)//x[last()] - $x"/>
5648
+ <xsl:variable name="height" select="xalan:nodeset($y_coords)//y[last()] - $y"/>
5649
+ <xsl:call-template name="insertSVGMapLink">
5650
+ <xsl:with-param name="left" select="floor($x * $scale)"/>
5651
+ <xsl:with-param name="top" select="floor($y * $scale)"/>
5652
+ <xsl:with-param name="width" select="floor($width * $scale)"/>
5653
+ <xsl:with-param name="height" select="floor($height * $scale)"/>
5654
+ <xsl:with-param name="dest" select="$dest"/>
5655
+ </xsl:call-template>
5656
+ </xsl:for-each>
5657
+
5658
+ <xsl:for-each select="./*[local-name() = 'circle']">
5659
+ <xsl:call-template name="insertSVGMapLink">
5660
+ <xsl:with-param name="left" select="floor((@cx - @r) * $scale)"/>
5661
+ <xsl:with-param name="top" select="floor((@cy - @r) * $scale)"/>
5662
+ <xsl:with-param name="width" select="floor(@r * 2 * $scale)"/>
5663
+ <xsl:with-param name="height" select="floor(@r * 2 * $scale)"/>
5664
+ <xsl:with-param name="dest" select="$dest"/>
5665
+ </xsl:call-template>
5666
+ </xsl:for-each>
5667
+ <xsl:for-each select="./*[local-name() = 'ellipse']">
5668
+ <xsl:call-template name="insertSVGMapLink">
5669
+ <xsl:with-param name="left" select="floor((@cx - @rx) * $scale)"/>
5670
+ <xsl:with-param name="top" select="floor((@cy - @ry) * $scale)"/>
5671
+ <xsl:with-param name="width" select="floor(@rx * 2 * $scale)"/>
5672
+ <xsl:with-param name="height" select="floor(@ry * 2 * $scale)"/>
5673
+ <xsl:with-param name="dest" select="$dest"/>
5674
+ </xsl:call-template>
5675
+ </xsl:for-each>
5676
+ </xsl:template><xsl:template name="insertSVGMapLink">
5677
+ <xsl:param name="left"/>
5678
+ <xsl:param name="top"/>
5679
+ <xsl:param name="width"/>
5680
+ <xsl:param name="height"/>
5681
+ <xsl:param name="dest"/>
5682
+ <fo:block-container position="absolute" left="{$left}px" top="{$top}px" width="{$width}px" height="{$height}px">
5683
+ <fo:block font-size="1pt">
5684
+ <fo:basic-link internal-destination="{$dest}" fox:alt-text="svg link">
5685
+ <fo:inline-container inline-progression-dimension="100%">
5686
+ <fo:block-container height="{$height - 1}px" width="100%">
5687
+ <!-- DEBUG <xsl:if test="local-name()='polygon'">
5688
+ <xsl:attribute name="background-color">magenta</xsl:attribute>
5689
+ </xsl:if> -->
5690
+ <fo:block> </fo:block></fo:block-container>
5691
+ </fo:inline-container>
5692
+ </fo:basic-link>
5693
+ </fo:block>
5694
+ </fo:block-container>
5343
5695
  </xsl:template><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'name']"/><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'name'] | *[local-name() = 'table']/*[local-name() = 'name'] | *[local-name() = 'permission']/*[local-name() = 'name'] | *[local-name() = 'recommendation']/*[local-name() = 'name'] | *[local-name() = 'requirement']/*[local-name() = 'name']" mode="contents">
5344
5696
  <xsl:apply-templates mode="contents"/>
5345
5697
  <xsl:text> </xsl:text>
@@ -5368,28 +5720,39 @@
5368
5720
  <xsl:when test="count(xalan:nodeset($contents)/doc) &gt; 1">
5369
5721
  <xsl:for-each select="xalan:nodeset($contents)/doc">
5370
5722
  <fo:bookmark internal-destination="{contents/item[1]/@id}" starting-state="hide">
5723
+ <xsl:if test="@bundle = 'true'">
5724
+ <xsl:attribute name="internal-destination"><xsl:value-of select="@firstpage_id"/></xsl:attribute>
5725
+ </xsl:if>
5371
5726
  <fo:bookmark-title>
5372
- <xsl:variable name="bookmark-title_">
5373
- <xsl:call-template name="getLangVersion">
5374
- <xsl:with-param name="lang" select="@lang"/>
5375
- <xsl:with-param name="doctype" select="@doctype"/>
5376
- <xsl:with-param name="title" select="@title-part"/>
5377
- </xsl:call-template>
5378
- </xsl:variable>
5379
5727
  <xsl:choose>
5380
- <xsl:when test="normalize-space($bookmark-title_) != ''">
5381
- <xsl:value-of select="normalize-space($bookmark-title_)"/>
5382
- </xsl:when>
5383
- <xsl:otherwise>
5728
+ <xsl:when test="not(normalize-space(@bundle) = 'true')"> <!-- 'bundle' means several different documents (not language versions) in one xml -->
5729
+ <xsl:variable name="bookmark-title_">
5730
+ <xsl:call-template name="getLangVersion">
5731
+ <xsl:with-param name="lang" select="@lang"/>
5732
+ <xsl:with-param name="doctype" select="@doctype"/>
5733
+ <xsl:with-param name="title" select="@title-part"/>
5734
+ </xsl:call-template>
5735
+ </xsl:variable>
5384
5736
  <xsl:choose>
5385
- <xsl:when test="@lang = 'en'">English</xsl:when>
5386
- <xsl:when test="@lang = 'fr'">Français</xsl:when>
5387
- <xsl:when test="@lang = 'de'">Deutsche</xsl:when>
5388
- <xsl:otherwise><xsl:value-of select="@lang"/> version</xsl:otherwise>
5737
+ <xsl:when test="normalize-space($bookmark-title_) != ''">
5738
+ <xsl:value-of select="normalize-space($bookmark-title_)"/>
5739
+ </xsl:when>
5740
+ <xsl:otherwise>
5741
+ <xsl:choose>
5742
+ <xsl:when test="@lang = 'en'">English</xsl:when>
5743
+ <xsl:when test="@lang = 'fr'">Français</xsl:when>
5744
+ <xsl:when test="@lang = 'de'">Deutsche</xsl:when>
5745
+ <xsl:otherwise><xsl:value-of select="@lang"/> version</xsl:otherwise>
5746
+ </xsl:choose>
5747
+ </xsl:otherwise>
5389
5748
  </xsl:choose>
5749
+ </xsl:when>
5750
+ <xsl:otherwise>
5751
+ <xsl:value-of select="@title-part"/>
5390
5752
  </xsl:otherwise>
5391
5753
  </xsl:choose>
5392
5754
  </fo:bookmark-title>
5755
+
5393
5756
  <xsl:apply-templates select="contents/item" mode="bookmark"/>
5394
5757
 
5395
5758
  <xsl:call-template name="insertFigureBookmarks">
@@ -5488,20 +5851,28 @@
5488
5851
  <xsl:otherwise><xsl:value-of select="$lang"/> version</xsl:otherwise>
5489
5852
  </xsl:choose>
5490
5853
  </xsl:template><xsl:template match="item" mode="bookmark">
5491
- <fo:bookmark internal-destination="{@id}" starting-state="hide">
5492
- <fo:bookmark-title>
5493
- <xsl:if test="@section != ''">
5494
- <xsl:value-of select="@section"/>
5495
- <xsl:text> </xsl:text>
5496
- </xsl:if>
5497
- <xsl:value-of select="normalize-space(title)"/>
5498
- </fo:bookmark-title>
5499
- <xsl:apply-templates mode="bookmark"/>
5500
- </fo:bookmark>
5854
+ <xsl:choose>
5855
+ <xsl:when test="@id != ''">
5856
+ <fo:bookmark internal-destination="{@id}" starting-state="hide">
5857
+ <fo:bookmark-title>
5858
+ <xsl:if test="@section != ''">
5859
+ <xsl:value-of select="@section"/>
5860
+ <xsl:text> </xsl:text>
5861
+ </xsl:if>
5862
+ <xsl:value-of select="normalize-space(title)"/>
5863
+ </fo:bookmark-title>
5864
+ <xsl:apply-templates mode="bookmark"/>
5865
+ </fo:bookmark>
5866
+ </xsl:when>
5867
+ <xsl:otherwise>
5868
+ <xsl:apply-templates mode="bookmark"/>
5869
+ </xsl:otherwise>
5870
+ </xsl:choose>
5501
5871
  </xsl:template><xsl:template match="title" mode="bookmark"/><xsl:template match="text()" mode="bookmark"/><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'name'] | *[local-name() = 'image']/*[local-name() = 'name']" mode="presentation">
5502
5872
  <xsl:if test="normalize-space() != ''">
5503
5873
  <fo:block xsl:use-attribute-sets="figure-name-style">
5504
5874
 
5875
+
5505
5876
  <xsl:apply-templates/>
5506
5877
  </fo:block>
5507
5878
  </xsl:if>
@@ -5582,6 +5953,7 @@
5582
5953
 
5583
5954
  <fo:block-container margin-left="0mm">
5584
5955
  <xsl:copy-of select="@id"/>
5956
+
5585
5957
  <xsl:if test="parent::*[local-name() = 'note']">
5586
5958
  <xsl:attribute name="margin-left">
5587
5959
  <xsl:choose>
@@ -5592,7 +5964,9 @@
5592
5964
 
5593
5965
  </xsl:if>
5594
5966
  <fo:block-container margin-left="0mm">
5595
-
5967
+
5968
+
5969
+
5596
5970
  <fo:block xsl:use-attribute-sets="sourcecode-style">
5597
5971
  <xsl:variable name="_font-size">
5598
5972
 
@@ -5621,10 +5995,14 @@
5621
5995
  </xsl:choose>
5622
5996
  </xsl:attribute>
5623
5997
  </xsl:if>
5624
- <xsl:apply-templates/>
5625
- </fo:block>
5998
+
5999
+ <xsl:apply-templates/>
6000
+ </fo:block>
6001
+
6002
+
5626
6003
  <xsl:apply-templates select="*[local-name()='name']" mode="presentation"/>
5627
6004
 
6005
+
5628
6006
  </fo:block-container>
5629
6007
  </fo:block-container>
5630
6008
  </xsl:template><xsl:template match="*[local-name()='sourcecode']/text()" priority="2">
@@ -5970,6 +6348,8 @@
5970
6348
 
5971
6349
 
5972
6350
 
6351
+
6352
+
5973
6353
  <xsl:call-template name="getTitle">
5974
6354
  <xsl:with-param name="name" select="'title-source'"/>
5975
6355
  </xsl:call-template>
@@ -6046,7 +6426,9 @@
6046
6426
 
6047
6427
 
6048
6428
  </xsl:if>
6049
-
6429
+
6430
+
6431
+
6050
6432
  <fo:basic-link internal-destination="{@bibitemid}" fox:alt-text="{@citeas}">
6051
6433
  <xsl:if test="normalize-space(@citeas) = ''">
6052
6434
  <xsl:attribute name="fox:alt-text"><xsl:value-of select="."/></xsl:attribute>
@@ -6055,6 +6437,7 @@
6055
6437
 
6056
6438
 
6057
6439
 
6440
+
6058
6441
  </xsl:if>
6059
6442
 
6060
6443
  <xsl:apply-templates/>
@@ -6197,6 +6580,7 @@
6197
6580
  <xsl:call-template name="setId"/>
6198
6581
 
6199
6582
 
6583
+
6200
6584
  <xsl:apply-templates/>
6201
6585
  </fo:block>
6202
6586
  </xsl:template><xsl:template match="*[local-name() = 'definitions']">
@@ -6443,17 +6827,17 @@
6443
6827
  <xsl:variable name="_doc_ident" select="*[local-name() = 'docidentifier'][not(@type = 'DOI' or @type = 'metanorma' or @type = 'ISSN' or @type = 'ISBN' or @type = 'rfc-anchor')]"/>
6444
6828
  <xsl:choose>
6445
6829
  <xsl:when test="normalize-space($_doc_ident) != ''">
6446
- <xsl:variable name="type" select="*[local-name() = 'docidentifier'][not(@type = 'DOI' or @type = 'metanorma' or @type = 'ISSN' or @type = 'ISBN' or @type = 'rfc-anchor')]/@type"/>
6830
+ <!-- <xsl:variable name="type" select="*[local-name() = 'docidentifier'][not(@type = 'DOI' or @type = 'metanorma' or @type = 'ISSN' or @type = 'ISBN' or @type = 'rfc-anchor')]/@type"/>
6447
6831
  <xsl:if test="$type != '' and not(contains($_doc_ident, $type))">
6448
6832
  <xsl:value-of select="$type"/><xsl:text> </xsl:text>
6449
- </xsl:if>
6833
+ </xsl:if> -->
6450
6834
  <xsl:value-of select="$_doc_ident"/>
6451
6835
  </xsl:when>
6452
6836
  <xsl:otherwise>
6453
- <xsl:variable name="type" select="*[local-name() = 'docidentifier'][not(@type = 'metanorma')]/@type"/>
6837
+ <!-- <xsl:variable name="type" select="*[local-name() = 'docidentifier'][not(@type = 'metanorma')]/@type"/>
6454
6838
  <xsl:if test="$type != ''">
6455
6839
  <xsl:value-of select="$type"/><xsl:text> </xsl:text>
6456
- </xsl:if>
6840
+ </xsl:if> -->
6457
6841
  <xsl:value-of select="*[local-name() = 'docidentifier'][not(@type = 'metanorma')]"/>
6458
6842
  </xsl:otherwise>
6459
6843
  </xsl:choose>
@@ -6894,20 +7278,40 @@
6894
7278
  </xsl:call-template>
6895
7279
  </xsl:if>
6896
7280
  </xsl:template><xsl:template name="getLocalizedString">
6897
- <xsl:param name="key"/>
7281
+ <xsl:param name="key"/>
7282
+ <xsl:param name="formatted">false</xsl:param>
6898
7283
 
6899
7284
  <xsl:variable name="curr_lang">
6900
7285
  <xsl:call-template name="getLang"/>
6901
7286
  </xsl:variable>
6902
7287
 
6903
- <xsl:variable name="data_value" select="normalize-space(xalan:nodeset($bibdata)//*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang])"/>
7288
+ <xsl:variable name="data_value">
7289
+ <xsl:choose>
7290
+ <xsl:when test="$formatted = 'true'">
7291
+ <xsl:apply-templates select="xalan:nodeset($bibdata)//*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
7292
+ </xsl:when>
7293
+ <xsl:otherwise>
7294
+ <xsl:value-of select="normalize-space(xalan:nodeset($bibdata)//*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang])"/>
7295
+ </xsl:otherwise>
7296
+ </xsl:choose>
7297
+ </xsl:variable>
6904
7298
 
6905
7299
  <xsl:choose>
6906
- <xsl:when test="$data_value != ''">
6907
- <xsl:value-of select="$data_value"/>
7300
+ <xsl:when test="normalize-space($data_value) != ''">
7301
+ <xsl:choose>
7302
+ <xsl:when test="$formatted = 'true'"><xsl:copy-of select="$data_value"/></xsl:when>
7303
+ <xsl:otherwise><xsl:value-of select="$data_value"/></xsl:otherwise>
7304
+ </xsl:choose>
6908
7305
  </xsl:when>
6909
7306
  <xsl:when test="/*/*[local-name() = 'localized-strings']/*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]">
6910
- <xsl:value-of select="/*/*[local-name() = 'localized-strings']/*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
7307
+ <xsl:choose>
7308
+ <xsl:when test="$formatted = 'true'">
7309
+ <xsl:apply-templates select="/*/*[local-name() = 'localized-strings']/*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
7310
+ </xsl:when>
7311
+ <xsl:otherwise>
7312
+ <xsl:value-of select="/*/*[local-name() = 'localized-strings']/*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
7313
+ </xsl:otherwise>
7314
+ </xsl:choose>
6911
7315
  </xsl:when>
6912
7316
  <xsl:otherwise>
6913
7317
  <xsl:variable name="key_">
@@ -6918,7 +7322,7 @@
6918
7322
  <xsl:value-of select="$key_"/>
6919
7323
  </xsl:otherwise>
6920
7324
  </xsl:choose>
6921
-
7325
+
6922
7326
  </xsl:template><xsl:template name="setTrackChangesStyles">
6923
7327
  <xsl:param name="isAdded"/>
6924
7328
  <xsl:param name="isDeleted"/>
@@ -6959,4 +7363,110 @@
6959
7363
  <xsl:value-of select="$align"/>
6960
7364
  </xsl:when>
6961
7365
  </xsl:choose>
7366
+ </xsl:template><xsl:template name="setTextAlignment">
7367
+ <xsl:param name="default">left</xsl:param>
7368
+ <xsl:attribute name="text-align">
7369
+ <xsl:choose>
7370
+ <xsl:when test="@align"><xsl:value-of select="@align"/></xsl:when>
7371
+ <xsl:when test="ancestor::*[local-name() = 'td']/@align"><xsl:value-of select="ancestor::*[local-name() = 'td']/@align"/></xsl:when>
7372
+ <xsl:when test="ancestor::*[local-name() = 'th']/@align"><xsl:value-of select="ancestor::*[local-name() = 'th']/@align"/></xsl:when>
7373
+ <xsl:otherwise><xsl:value-of select="$default"/></xsl:otherwise>
7374
+ </xsl:choose>
7375
+ </xsl:attribute>
7376
+ </xsl:template><xsl:template name="number-to-words">
7377
+ <xsl:param name="number"/>
7378
+ <xsl:param name="first"/>
7379
+ <xsl:if test="$number != ''">
7380
+ <xsl:variable name="words">
7381
+ <words>
7382
+ <word cardinal="1">One-</word>
7383
+ <word ordinal="1">First </word>
7384
+ <word cardinal="2">Two-</word>
7385
+ <word ordinal="2">Second </word>
7386
+ <word cardinal="3">Three-</word>
7387
+ <word ordinal="3">Third </word>
7388
+ <word cardinal="4">Four-</word>
7389
+ <word ordinal="4">Fourth </word>
7390
+ <word cardinal="5">Five-</word>
7391
+ <word ordinal="5">Fifth </word>
7392
+ <word cardinal="6">Six-</word>
7393
+ <word ordinal="6">Sixth </word>
7394
+ <word cardinal="7">Seven-</word>
7395
+ <word ordinal="7">Seventh </word>
7396
+ <word cardinal="8">Eight-</word>
7397
+ <word ordinal="8">Eighth </word>
7398
+ <word cardinal="9">Nine-</word>
7399
+ <word ordinal="9">Ninth </word>
7400
+ <word ordinal="10">Tenth </word>
7401
+ <word ordinal="11">Eleventh </word>
7402
+ <word ordinal="12">Twelfth </word>
7403
+ <word ordinal="13">Thirteenth </word>
7404
+ <word ordinal="14">Fourteenth </word>
7405
+ <word ordinal="15">Fifteenth </word>
7406
+ <word ordinal="16">Sixteenth </word>
7407
+ <word ordinal="17">Seventeenth </word>
7408
+ <word ordinal="18">Eighteenth </word>
7409
+ <word ordinal="19">Nineteenth </word>
7410
+ <word cardinal="20">Twenty-</word>
7411
+ <word ordinal="20">Twentieth </word>
7412
+ <word cardinal="30">Thirty-</word>
7413
+ <word ordinal="30">Thirtieth </word>
7414
+ <word cardinal="40">Forty-</word>
7415
+ <word ordinal="40">Fortieth </word>
7416
+ <word cardinal="50">Fifty-</word>
7417
+ <word ordinal="50">Fiftieth </word>
7418
+ <word cardinal="60">Sixty-</word>
7419
+ <word ordinal="60">Sixtieth </word>
7420
+ <word cardinal="70">Seventy-</word>
7421
+ <word ordinal="70">Seventieth </word>
7422
+ <word cardinal="80">Eighty-</word>
7423
+ <word ordinal="80">Eightieth </word>
7424
+ <word cardinal="90">Ninety-</word>
7425
+ <word ordinal="90">Ninetieth </word>
7426
+ <word cardinal="100">Hundred-</word>
7427
+ <word ordinal="100">Hundredth </word>
7428
+ </words>
7429
+ </xsl:variable>
7430
+
7431
+ <xsl:variable name="ordinal" select="xalan:nodeset($words)//word[@ordinal = $number]/text()"/>
7432
+
7433
+ <xsl:variable name="value">
7434
+ <xsl:choose>
7435
+ <xsl:when test="$ordinal != ''">
7436
+ <xsl:value-of select="$ordinal"/>
7437
+ </xsl:when>
7438
+ <xsl:otherwise>
7439
+ <xsl:choose>
7440
+ <xsl:when test="$number &lt; 100">
7441
+ <xsl:variable name="decade" select="concat(substring($number,1,1), '0')"/>
7442
+ <xsl:variable name="digit" select="substring($number,2)"/>
7443
+ <xsl:value-of select="xalan:nodeset($words)//word[@cardinal = $decade]/text()"/>
7444
+ <xsl:value-of select="xalan:nodeset($words)//word[@ordinal = $digit]/text()"/>
7445
+ </xsl:when>
7446
+ <xsl:otherwise>
7447
+ <!-- more 100 -->
7448
+ <xsl:variable name="hundred" select="substring($number,1,1)"/>
7449
+ <xsl:variable name="digits" select="number(substring($number,2))"/>
7450
+ <xsl:value-of select="xalan:nodeset($words)//word[@cardinal = $hundred]/text()"/>
7451
+ <xsl:value-of select="xalan:nodeset($words)//word[@cardinal = '100']/text()"/>
7452
+ <xsl:call-template name="number-to-words">
7453
+ <xsl:with-param name="number" select="$digits"/>
7454
+ </xsl:call-template>
7455
+ </xsl:otherwise>
7456
+ </xsl:choose>
7457
+ </xsl:otherwise>
7458
+ </xsl:choose>
7459
+ </xsl:variable>
7460
+ <xsl:choose>
7461
+ <xsl:when test="$first = 'true'">
7462
+ <xsl:variable name="value_lc" select="java:toLowerCase(java:java.lang.String.new($value))"/>
7463
+ <xsl:call-template name="capitalize">
7464
+ <xsl:with-param name="str" select="$value_lc"/>
7465
+ </xsl:call-template>
7466
+ </xsl:when>
7467
+ <xsl:otherwise>
7468
+ <xsl:value-of select="$value"/>
7469
+ </xsl:otherwise>
7470
+ </xsl:choose>
7471
+ </xsl:if>
6962
7472
  </xsl:template></xsl:stylesheet>