metanorma-m3aawg 1.7.3 → 1.7.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -14,8 +14,12 @@
14
14
 
15
15
 
16
16
  <xsl:variable name="debug">false</xsl:variable>
17
- <xsl:variable name="pageWidth" select="'215.9mm'"/>
18
- <xsl:variable name="pageHeight" select="'279.4mm'"/>
17
+ <xsl:variable name="pageWidth" select="215.9"/>
18
+ <xsl:variable name="pageHeight" select="279.4"/>
19
+ <xsl:variable name="marginLeftRight1" select="17.3"/>
20
+ <xsl:variable name="marginLeftRight2" select="17.3"/>
21
+ <xsl:variable name="marginTop" select="35"/>
22
+ <xsl:variable name="marginBottom" select="23"/>
19
23
 
20
24
  <xsl:variable name="title-en" select="/m3d:m3d-standard/m3d:bibdata/m3d:title[@language = 'en']"/>
21
25
  <!-- Example:
@@ -39,7 +43,7 @@
39
43
  <fo:layout-master-set>
40
44
 
41
45
  <!-- cover page -->
42
- <fo:simple-page-master master-name="cover" page-width="{$pageWidth}" page-height="{$pageHeight}">
46
+ <fo:simple-page-master master-name="cover" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
43
47
  <fo:region-body margin-top="31mm" margin-bottom="32mm" margin-left="17.3mm" margin-right="22mm"/>
44
48
  <fo:region-before region-name="cover-header" extent="31mm"/>
45
49
  <fo:region-after region-name="cover-footer" extent="32mm"/>
@@ -48,17 +52,17 @@
48
52
  </fo:simple-page-master>
49
53
 
50
54
  <!-- contents pages -->
51
- <fo:simple-page-master master-name="page" page-width="{$pageWidth}" page-height="{$pageHeight}">
52
- <fo:region-body margin-top="20mm" margin-bottom="23mm" margin-left="17.3mm" margin-right="17.3mm"/>
53
- <fo:region-before region-name="header" extent="35mm"/>
54
- <fo:region-after region-name="footer" extent="23mm"/>
55
- <fo:region-start region-name="left-region" extent="17.3mm"/>
56
- <fo:region-end region-name="right-region" extent="17.3mm"/>
55
+ <fo:simple-page-master master-name="page" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
56
+ <fo:region-body margin-top="20mm" margin-bottom="23mm" margin-left="{$marginLeftRight1}mm" margin-right="{$marginLeftRight2}mm"/>
57
+ <fo:region-before region-name="header" extent="{$marginTop}mm"/>
58
+ <fo:region-after region-name="footer" extent="{$marginBottom}mm"/>
59
+ <fo:region-start region-name="left-region" extent="{$marginLeftRight1}mm"/>
60
+ <fo:region-end region-name="right-region" extent="{$marginLeftRight2}mm"/>
57
61
  </fo:simple-page-master>
58
62
 
59
- <fo:simple-page-master master-name="last" page-width="{$pageWidth}" page-height="{$pageHeight}">
60
- <fo:region-body margin-top="20mm" margin-bottom="53mm" margin-left="17.3mm" margin-right="17.3mm"/>
61
- <fo:region-before region-name="header" extent="35mm"/>
63
+ <fo:simple-page-master master-name="last" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
64
+ <fo:region-body margin-top="20mm" margin-bottom="53mm" margin-left="{$marginLeftRight1}mm" margin-right="{$marginLeftRight2}mm"/>
65
+ <fo:region-before region-name="header" extent="{$marginTop}mm"/>
62
66
  <fo:region-after region-name="footer-last" extent="53mm"/>
63
67
  <fo:region-start region-name="left-region" extent="17.3mm"/>
64
68
  <fo:region-end region-name="right-region" extent="17.3mm"/>
@@ -1058,6 +1062,7 @@
1058
1062
 
1059
1063
 
1060
1064
 
1065
+
1061
1066
  </xsl:attribute-set><xsl:attribute-set name="sourcecode-style">
1062
1067
  <xsl:attribute name="white-space">pre</xsl:attribute>
1063
1068
  <xsl:attribute name="wrap-option">wrap</xsl:attribute>
@@ -1106,7 +1111,7 @@
1106
1111
  <xsl:attribute name="text-align">justify</xsl:attribute>
1107
1112
 
1108
1113
 
1109
-
1114
+
1110
1115
  </xsl:attribute-set><xsl:attribute-set name="example-style">
1111
1116
 
1112
1117
 
@@ -1122,6 +1127,7 @@
1122
1127
 
1123
1128
 
1124
1129
 
1130
+
1125
1131
  </xsl:attribute-set><xsl:attribute-set name="example-body-style">
1126
1132
 
1127
1133
 
@@ -1141,9 +1147,7 @@
1141
1147
 
1142
1148
 
1143
1149
 
1144
-
1145
-
1146
-
1150
+
1147
1151
 
1148
1152
 
1149
1153
 
@@ -1174,6 +1178,7 @@
1174
1178
  <xsl:attribute name="padding-right">1mm</xsl:attribute>
1175
1179
  <xsl:attribute name="font-weight">bold</xsl:attribute>
1176
1180
 
1181
+
1177
1182
  </xsl:attribute-set><xsl:attribute-set name="table-name-style">
1178
1183
  <xsl:attribute name="keep-with-next">always</xsl:attribute>
1179
1184
 
@@ -1193,6 +1198,9 @@
1193
1198
 
1194
1199
 
1195
1200
 
1201
+
1202
+ </xsl:attribute-set><xsl:attribute-set name="table-footer-cell-style">
1203
+
1196
1204
  </xsl:attribute-set><xsl:attribute-set name="appendix-style">
1197
1205
 
1198
1206
  <xsl:attribute name="font-size">12pt</xsl:attribute>
@@ -1215,11 +1223,14 @@
1215
1223
 
1216
1224
 
1217
1225
 
1226
+
1218
1227
  </xsl:attribute-set><xsl:attribute-set name="eref-style">
1219
1228
 
1220
1229
 
1221
1230
 
1222
1231
 
1232
+
1233
+
1223
1234
  </xsl:attribute-set><xsl:attribute-set name="note-style">
1224
1235
 
1225
1236
 
@@ -1241,6 +1252,7 @@
1241
1252
 
1242
1253
 
1243
1254
 
1255
+
1244
1256
  </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">
1245
1257
 
1246
1258
 
@@ -1282,10 +1294,12 @@
1282
1294
 
1283
1295
 
1284
1296
 
1297
+
1285
1298
  </xsl:attribute-set><xsl:attribute-set name="termnote-name-style">
1286
1299
 
1287
1300
 
1288
1301
 
1302
+
1289
1303
  </xsl:attribute-set><xsl:attribute-set name="quote-style">
1290
1304
 
1291
1305
 
@@ -1311,10 +1325,12 @@
1311
1325
 
1312
1326
 
1313
1327
 
1328
+
1314
1329
  </xsl:attribute-set><xsl:attribute-set name="origin-style">
1315
1330
 
1316
1331
 
1317
1332
 
1333
+
1318
1334
  </xsl:attribute-set><xsl:attribute-set name="term-style">
1319
1335
 
1320
1336
  </xsl:attribute-set><xsl:attribute-set name="figure-name-style">
@@ -1338,6 +1354,7 @@
1338
1354
 
1339
1355
 
1340
1356
 
1357
+
1341
1358
 
1342
1359
 
1343
1360
 
@@ -1384,8 +1401,10 @@
1384
1401
  </xsl:attribute-set><xsl:attribute-set name="admitted-style">
1385
1402
 
1386
1403
 
1404
+
1387
1405
  </xsl:attribute-set><xsl:attribute-set name="deprecates-style">
1388
1406
 
1407
+
1389
1408
  </xsl:attribute-set><xsl:attribute-set name="definition-style">
1390
1409
 
1391
1410
 
@@ -1408,6 +1427,8 @@
1408
1427
  <xsl:attribute name="font-family">STIX Two Math</xsl:attribute>
1409
1428
 
1410
1429
 
1430
+ </xsl:attribute-set><xsl:attribute-set name="list-style">
1431
+
1411
1432
  </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">
1412
1433
  <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='abstract']" mode="contents"/>
1413
1434
  <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='foreword']" mode="contents"/>
@@ -1418,14 +1439,15 @@
1418
1439
  <xsl:apply-templates select="/*/*[local-name()='sections']/*[local-name()='clause'][@type='scope']" mode="contents"/>
1419
1440
 
1420
1441
  <!-- Normative references -->
1421
- <xsl:apply-templates select="/*/*[local-name()='bibliography']/*[local-name()='references'][@normative='true']" mode="contents"/>
1442
+ <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"/>
1422
1443
  <!-- Terms and definitions -->
1423
1444
  <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"/>
1424
1445
  <!-- Another main sections -->
1425
1446
  <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"/>
1426
1447
  <xsl:apply-templates select="/*/*[local-name()='annex']" mode="contents"/>
1427
1448
  <!-- Bibliography -->
1428
- <xsl:apply-templates select="/*/*[local-name()='bibliography']/*[local-name()='references'][not(@normative='true')]" mode="contents"/>
1449
+ <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"/>
1450
+
1429
1451
  </xsl:template><xsl:template name="processPrefaceSectionsDefault">
1430
1452
  <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='abstract']"/>
1431
1453
  <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='foreword']"/>
@@ -1465,11 +1487,11 @@
1465
1487
  <xsl:variable name="table">
1466
1488
 
1467
1489
  <xsl:variable name="simple-table">
1468
- <xsl:call-template name="getSimpleTable"/>
1490
+ <xsl:call-template name="getSimpleTable"/>
1469
1491
  </xsl:variable>
1470
1492
 
1471
1493
  <!-- <xsl:if test="$namespace = 'bipm'">
1472
- <fo:block>&#xA0;</fo:block>
1494
+ <fo:block>&#xA0;</fo:block>
1473
1495
  </xsl:if> -->
1474
1496
 
1475
1497
  <!-- $namespace = 'iso' or -->
@@ -1571,6 +1593,7 @@
1571
1593
 
1572
1594
 
1573
1595
 
1596
+
1574
1597
  </xsl:variable>
1575
1598
 
1576
1599
 
@@ -1712,6 +1735,9 @@
1712
1735
  <fo:block xsl:use-attribute-sets="table-name-style">
1713
1736
 
1714
1737
 
1738
+
1739
+
1740
+
1715
1741
  <xsl:choose>
1716
1742
  <xsl:when test="$continued = 'true'">
1717
1743
  <!-- <xsl:if test="$namespace = 'bsi'"></xsl:if> -->
@@ -1859,6 +1885,7 @@
1859
1885
  <!-- font-weight="bold" -->
1860
1886
  <fo:table-header>
1861
1887
 
1888
+
1862
1889
  <xsl:apply-templates/>
1863
1890
  </fo:table-header>
1864
1891
  </xsl:template><xsl:template name="table-header-title">
@@ -2009,6 +2036,7 @@
2009
2036
 
2010
2037
 
2011
2038
 
2039
+
2012
2040
  <!-- fn will be processed inside 'note' processing -->
2013
2041
 
2014
2042
 
@@ -2017,6 +2045,10 @@
2017
2045
 
2018
2046
 
2019
2047
 
2048
+
2049
+ <!-- for BSI (not PAS) display Notes before footnotes -->
2050
+
2051
+
2020
2052
  <!-- except gb -->
2021
2053
 
2022
2054
  <xsl:apply-templates select="../*[local-name()='note']" mode="process"/>
@@ -2042,6 +2074,10 @@
2042
2074
  <!-- fn processing -->
2043
2075
  <xsl:call-template name="fn_display"/>
2044
2076
 
2077
+
2078
+ <!-- for PAS display Notes after footnotes -->
2079
+
2080
+
2045
2081
  </fo:table-cell>
2046
2082
  </fo:table-row>
2047
2083
  </fo:table-body>
@@ -2099,11 +2135,16 @@
2099
2135
  <xsl:if test="$parent-name = 'tfoot'">
2100
2136
 
2101
2137
 
2138
+
2102
2139
  </xsl:if>
2103
2140
 
2104
2141
 
2105
2142
 
2106
2143
 
2144
+
2145
+
2146
+
2147
+
2107
2148
  <!-- <xsl:if test="$namespace = 'bipm'">
2108
2149
  <xsl:attribute name="height">8mm</xsl:attribute>
2109
2150
  </xsl:if> -->
@@ -2133,6 +2174,7 @@
2133
2174
 
2134
2175
 
2135
2176
 
2177
+
2136
2178
  <xsl:if test="$lang = 'ar'">
2137
2179
  <xsl:attribute name="padding-right">1mm</xsl:attribute>
2138
2180
  </xsl:if>
@@ -2188,6 +2230,10 @@
2188
2230
 
2189
2231
 
2190
2232
 
2233
+
2234
+
2235
+
2236
+
2191
2237
  <xsl:if test=".//*[local-name() = 'table']">
2192
2238
  <xsl:attribute name="padding-right">1mm</xsl:attribute>
2193
2239
  </xsl:if>
@@ -2217,8 +2263,14 @@
2217
2263
 
2218
2264
 
2219
2265
 
2266
+
2267
+
2268
+ <!-- Table's note name (NOTE, for example) -->
2269
+
2220
2270
  <fo:inline padding-right="2mm">
2221
2271
 
2272
+
2273
+
2222
2274
 
2223
2275
 
2224
2276
 
@@ -2226,6 +2278,8 @@
2226
2278
 
2227
2279
  </fo:inline>
2228
2280
 
2281
+
2282
+
2229
2283
  <xsl:apply-templates mode="process"/>
2230
2284
  </fo:block>
2231
2285
 
@@ -2245,6 +2299,8 @@
2245
2299
  <xsl:variable name="reference" select="@reference"/>
2246
2300
  <xsl:if test="not(preceding-sibling::*[@reference = $reference])"> <!-- only unique reference puts in note-->
2247
2301
  <fo:block margin-bottom="12pt">
2302
+
2303
+
2248
2304
 
2249
2305
 
2250
2306
 
@@ -2260,9 +2316,11 @@
2260
2316
 
2261
2317
 
2262
2318
 
2319
+
2263
2320
  <xsl:value-of select="@reference"/>
2264
2321
 
2265
2322
 
2323
+
2266
2324
  </fo:inline>
2267
2325
  <fo:inline>
2268
2326
 
@@ -2403,11 +2461,16 @@
2403
2461
 
2404
2462
 
2405
2463
 
2464
+
2465
+
2466
+
2467
+
2406
2468
  <fo:basic-link internal-destination="{@reference}_{ancestor::*[@id][1]/@id}" fox:alt-text="{@reference}"> <!-- @reference | ancestor::*[local-name()='clause'][1]/@id-->
2407
2469
 
2408
2470
 
2409
2471
  <xsl:value-of select="@reference"/>
2410
2472
 
2473
+
2411
2474
  </fo:basic-link>
2412
2475
  </fo:inline>
2413
2476
  </xsl:template><xsl:template match="*[local-name()='fn']/*[local-name()='p']">
@@ -2494,6 +2557,7 @@
2494
2557
 
2495
2558
 
2496
2559
 
2560
+
2497
2561
  <xsl:variable name="title-key">
2498
2562
 
2499
2563
 
@@ -2704,6 +2768,7 @@
2704
2768
 
2705
2769
  <fo:table-row>
2706
2770
 
2771
+
2707
2772
  <fo:table-cell>
2708
2773
 
2709
2774
  <fo:block margin-top="6pt">
@@ -2719,6 +2784,7 @@
2719
2784
 
2720
2785
 
2721
2786
 
2787
+
2722
2788
  <xsl:apply-templates/>
2723
2789
  <!-- <xsl:if test="$namespace = 'gb'">
2724
2790
  <xsl:if test="ancestor::*[local-name()='formula']">
@@ -2775,6 +2841,8 @@
2775
2841
 
2776
2842
  <xsl:apply-templates/>
2777
2843
  </fo:inline>
2844
+ </xsl:template><xsl:template match="*[local-name()='padding']">
2845
+ <fo:inline padding-right="{@value}"> </fo:inline>
2778
2846
  </xsl:template><xsl:template match="*[local-name()='sup']">
2779
2847
  <fo:inline font-size="80%" vertical-align="super">
2780
2848
  <xsl:apply-templates/>
@@ -3269,9 +3337,27 @@
3269
3337
  <xsl:copy>
3270
3338
  <xsl:apply-templates select="@*|node()" mode="mathml"/>
3271
3339
  </xsl:copy>
3272
- <mathml:mspace width="0.5ex"/>
3340
+ <xsl:choose>
3341
+ <!-- if in msub, then don't add space -->
3342
+ <xsl:when test="ancestor::mathml:mrow[parent::mathml:msub and preceding-sibling::*[1][self::mathml:mrow]]"/>
3343
+ <!-- if next char in digit, don't add space -->
3344
+ <xsl:when test="translate(substring(following-sibling::*[1]/text(),1,1),'0123456789','') = ''"/>
3345
+ <xsl:otherwise>
3346
+ <mathml:mspace width="0.5ex"/>
3347
+ </xsl:otherwise>
3348
+ </xsl:choose>
3273
3349
  </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">
3274
3350
  <xsl:variable name="target">
3351
+ <xsl:choose>
3352
+ <xsl:when test="@updatetype = 'true'">
3353
+ <xsl:value-of select="concat(normalize-space(@target), '.pdf')"/>
3354
+ </xsl:when>
3355
+ <xsl:otherwise>
3356
+ <xsl:value-of select="normalize-space(@target)"/>
3357
+ </xsl:otherwise>
3358
+ </xsl:choose>
3359
+ </xsl:variable>
3360
+ <xsl:variable name="target_text">
3275
3361
  <xsl:choose>
3276
3362
  <xsl:when test="starts-with(normalize-space(@target), 'mailto:')">
3277
3363
  <xsl:value-of select="normalize-space(substring-after(@target, 'mailto:'))"/>
@@ -3283,20 +3369,22 @@
3283
3369
  </xsl:variable>
3284
3370
  <fo:inline xsl:use-attribute-sets="link-style">
3285
3371
 
3372
+
3373
+
3286
3374
  <xsl:choose>
3287
- <xsl:when test="$target = ''">
3375
+ <xsl:when test="$target_text = ''">
3288
3376
  <xsl:apply-templates/>
3289
3377
  </xsl:when>
3290
3378
  <xsl:otherwise>
3291
- <fo:basic-link external-destination="{@target}" fox:alt-text="{@target}">
3379
+ <fo:basic-link external-destination="{$target}" fox:alt-text="{$target}">
3292
3380
  <xsl:choose>
3293
3381
  <xsl:when test="normalize-space(.) = ''">
3294
- <!-- <xsl:value-of select="$target"/> -->
3295
3382
  <xsl:call-template name="add-zero-spaces-link-java">
3296
- <xsl:with-param name="text" select="$target"/>
3383
+ <xsl:with-param name="text" select="$target_text"/>
3297
3384
  </xsl:call-template>
3298
3385
  </xsl:when>
3299
3386
  <xsl:otherwise>
3387
+ <!-- output text from <link>text</link> -->
3300
3388
  <xsl:apply-templates/>
3301
3389
  </xsl:otherwise>
3302
3390
  </xsl:choose>
@@ -3391,6 +3479,7 @@
3391
3479
 
3392
3480
 
3393
3481
 
3482
+
3394
3483
  <fo:block-container margin-left="0mm">
3395
3484
 
3396
3485
 
@@ -3434,6 +3523,7 @@
3434
3523
  </xsl:choose>
3435
3524
  </xsl:template><xsl:template match="*[local-name() = 'termnote']">
3436
3525
  <fo:block id="{@id}" xsl:use-attribute-sets="termnote-style">
3526
+
3437
3527
  <fo:inline xsl:use-attribute-sets="termnote-name-style">
3438
3528
 
3439
3529
  <xsl:apply-templates select="*[local-name() = 'name']" mode="presentation"/>
@@ -3513,6 +3603,7 @@
3513
3603
  </xsl:call-template>
3514
3604
 
3515
3605
  <fo:block>
3606
+
3516
3607
  <xsl:apply-templates/>
3517
3608
  </fo:block>
3518
3609
  <xsl:call-template name="fn_display_figure"/>
@@ -3635,6 +3726,234 @@
3635
3726
  <xsl:param name="height"/>
3636
3727
  <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; "/>
3637
3728
  <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; "/>
3729
+ </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">
3730
+ <xsl:param name="name"/>
3731
+
3732
+ <xsl:variable name="svg_content">
3733
+ <xsl:apply-templates select="." mode="svg_update"/>
3734
+ </xsl:variable>
3735
+
3736
+ <xsl:variable name="alt-text">
3737
+ <xsl:choose>
3738
+ <xsl:when test="normalize-space(../*[local-name() = 'name']) != ''">
3739
+ <xsl:value-of select="../*[local-name() = 'name']"/>
3740
+ </xsl:when>
3741
+ <xsl:when test="normalize-space($name) != ''">
3742
+ <xsl:value-of select="$name"/>
3743
+ </xsl:when>
3744
+ <xsl:otherwise>Figure</xsl:otherwise>
3745
+ </xsl:choose>
3746
+ </xsl:variable>
3747
+
3748
+ <xsl:choose>
3749
+ <xsl:when test=".//*[local-name() = 'a'][*[local-name() = 'rect'] or *[local-name() = 'polygon'] or *[local-name() = 'circle'] or *[local-name() = 'ellipse']]">
3750
+ <fo:block>
3751
+ <xsl:variable name="width" select="@width"/>
3752
+ <xsl:variable name="height" select="@height"/>
3753
+
3754
+ <xsl:variable name="scale_x">
3755
+ <xsl:choose>
3756
+ <xsl:when test="$width &gt; $width_effective_px">
3757
+ <xsl:value-of select="$width_effective_px div $width"/>
3758
+ </xsl:when>
3759
+ <xsl:otherwise>1</xsl:otherwise>
3760
+ </xsl:choose>
3761
+ </xsl:variable>
3762
+
3763
+ <xsl:variable name="scale_y">
3764
+ <xsl:choose>
3765
+ <xsl:when test="$height * $scale_x &gt; $height_effective_px">
3766
+ <xsl:value-of select="$height_effective_px div ($height * $scale_x)"/>
3767
+ </xsl:when>
3768
+ <xsl:otherwise>1</xsl:otherwise>
3769
+ </xsl:choose>
3770
+ </xsl:variable>
3771
+
3772
+ <xsl:variable name="scale">
3773
+ <xsl:choose>
3774
+ <xsl:when test="$scale_y != 1">
3775
+ <xsl:value-of select="$scale_x * $scale_y"/>
3776
+ </xsl:when>
3777
+ <xsl:otherwise>
3778
+ <xsl:value-of select="$scale_x"/>
3779
+ </xsl:otherwise>
3780
+ </xsl:choose>
3781
+ </xsl:variable>
3782
+
3783
+ <xsl:variable name="width_scale" select="round($width * $scale)"/>
3784
+ <xsl:variable name="height_scale" select="round($height * $scale)"/>
3785
+
3786
+ <fo:table table-layout="fixed" width="100%">
3787
+ <fo:table-column column-width="proportional-column-width(1)"/>
3788
+ <fo:table-column column-width="{$width_scale}px"/>
3789
+ <fo:table-column column-width="proportional-column-width(1)"/>
3790
+ <fo:table-body>
3791
+ <fo:table-row>
3792
+ <fo:table-cell column-number="2">
3793
+ <fo:block>
3794
+ <fo:block-container width="{$width_scale}px" height="{$height_scale}px">
3795
+ <xsl:if test="../*[local-name() = 'name']/*[local-name() = 'bookmark']">
3796
+ <fo:block line-height="0" font-size="0">
3797
+ <xsl:for-each select="../*[local-name() = 'name']/*[local-name() = 'bookmark']">
3798
+ <xsl:call-template name="bookmark"/>
3799
+ </xsl:for-each>
3800
+ </fo:block>
3801
+ </xsl:if>
3802
+ <fo:block text-depth="0" line-height="0" font-size="0">
3803
+
3804
+ <fo:instream-foreign-object fox:alt-text="{$alt-text}">
3805
+ <xsl:attribute name="width">100%</xsl:attribute>
3806
+ <xsl:attribute name="content-height">100%</xsl:attribute>
3807
+ <xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
3808
+ <xsl:attribute name="scaling">uniform</xsl:attribute>
3809
+
3810
+ <xsl:apply-templates select="xalan:nodeset($svg_content)" mode="svg_remove_a"/>
3811
+ </fo:instream-foreign-object>
3812
+ </fo:block>
3813
+
3814
+ <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">
3815
+ <xsl:with-param name="scale" select="$scale"/>
3816
+ </xsl:apply-templates>
3817
+ </fo:block-container>
3818
+ </fo:block>
3819
+ </fo:table-cell>
3820
+ </fo:table-row>
3821
+ </fo:table-body>
3822
+ </fo:table>
3823
+ </fo:block>
3824
+
3825
+ </xsl:when>
3826
+ <xsl:otherwise>
3827
+ <fo:block xsl:use-attribute-sets="image-style">
3828
+ <fo:instream-foreign-object fox:alt-text="{$alt-text}">
3829
+ <xsl:attribute name="width">100%</xsl:attribute>
3830
+ <xsl:attribute name="content-height">100%</xsl:attribute>
3831
+ <xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
3832
+ <!-- effective height 297 - 27.4 - 13 = 256.6 -->
3833
+ <!-- effective width 210 - 12.5 - 25 = 172.5 -->
3834
+ <!-- effective height / width = 1.48, 1.4 - with title -->
3835
+ <xsl:if test="@height &gt; (@width * 1.4)"> <!-- for images with big height -->
3836
+ <xsl:variable name="width" select="((@width * 1.4) div @height) * 100"/>
3837
+ <xsl:attribute name="width"><xsl:value-of select="$width"/>%</xsl:attribute>
3838
+ </xsl:if>
3839
+ <xsl:attribute name="scaling">uniform</xsl:attribute>
3840
+ <xsl:copy-of select="$svg_content"/>
3841
+ </fo:instream-foreign-object>
3842
+ </fo:block>
3843
+ </xsl:otherwise>
3844
+ </xsl:choose>
3845
+ </xsl:template><xsl:template match="@*|node()" mode="svg_update">
3846
+ <xsl:copy>
3847
+ <xsl:apply-templates select="@*|node()" mode="svg_update"/>
3848
+ </xsl:copy>
3849
+ </xsl:template><xsl:template match="*[local-name() = 'image']/@href" mode="svg_update">
3850
+ <xsl:attribute name="href" namespace="http://www.w3.org/1999/xlink">
3851
+ <xsl:value-of select="."/>
3852
+ </xsl:attribute>
3853
+ </xsl:template><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'image'][@mimetype = 'image/svg+xml' and @src[not(starts-with(., 'data:image/'))]]" priority="2">
3854
+ <xsl:variable name="svg_content" select="document(@src)"/>
3855
+ <xsl:variable name="name" select="ancestor::*[local-name() = 'figure']/*[local-name() = 'name']"/>
3856
+ <xsl:for-each select="xalan:nodeset($svg_content)/node()">
3857
+ <xsl:call-template name="image_svg">
3858
+ <xsl:with-param name="name" select="$name"/>
3859
+ </xsl:call-template>
3860
+ </xsl:for-each>
3861
+ </xsl:template><xsl:template match="@*|node()" mode="svg_remove_a">
3862
+ <xsl:copy>
3863
+ <xsl:apply-templates select="@*|node()" mode="svg_remove_a"/>
3864
+ </xsl:copy>
3865
+ </xsl:template><xsl:template match="*[local-name() = 'a']" mode="svg_remove_a">
3866
+ <xsl:apply-templates mode="svg_remove_a"/>
3867
+ </xsl:template><xsl:template match="*[local-name() = 'a']" mode="svg_imagemap_links">
3868
+ <xsl:param name="scale"/>
3869
+ <xsl:variable name="dest">
3870
+ <xsl:choose>
3871
+ <xsl:when test="starts-with(@href, '#')">
3872
+ <xsl:value-of select="substring-after(@href, '#')"/>
3873
+ </xsl:when>
3874
+ <xsl:otherwise>
3875
+ <xsl:value-of select="@href"/>
3876
+ </xsl:otherwise>
3877
+ </xsl:choose>
3878
+ </xsl:variable>
3879
+ <xsl:for-each select="./*[local-name() = 'rect']">
3880
+ <xsl:call-template name="insertSVGMapLink">
3881
+ <xsl:with-param name="left" select="floor(@x * $scale)"/>
3882
+ <xsl:with-param name="top" select="floor(@y * $scale)"/>
3883
+ <xsl:with-param name="width" select="floor(@width * $scale)"/>
3884
+ <xsl:with-param name="height" select="floor(@height * $scale)"/>
3885
+ <xsl:with-param name="dest" select="$dest"/>
3886
+ </xsl:call-template>
3887
+ </xsl:for-each>
3888
+
3889
+ <xsl:for-each select="./*[local-name() = 'polygon']">
3890
+ <xsl:variable name="points">
3891
+ <xsl:call-template name="split">
3892
+ <xsl:with-param name="pText" select="@points"/>
3893
+ </xsl:call-template>
3894
+ </xsl:variable>
3895
+ <xsl:variable name="x_coords">
3896
+ <xsl:for-each select="xalan:nodeset($points)//item[position() mod 2 = 1]">
3897
+ <xsl:sort select="." data-type="number"/>
3898
+ <x><xsl:value-of select="."/></x>
3899
+ </xsl:for-each>
3900
+ </xsl:variable>
3901
+ <xsl:variable name="y_coords">
3902
+ <xsl:for-each select="xalan:nodeset($points)//item[position() mod 2 = 0]">
3903
+ <xsl:sort select="." data-type="number"/>
3904
+ <y><xsl:value-of select="."/></y>
3905
+ </xsl:for-each>
3906
+ </xsl:variable>
3907
+ <xsl:variable name="x" select="xalan:nodeset($x_coords)//x[1]"/>
3908
+ <xsl:variable name="y" select="xalan:nodeset($y_coords)//y[1]"/>
3909
+ <xsl:variable name="width" select="xalan:nodeset($x_coords)//x[last()] - $x"/>
3910
+ <xsl:variable name="height" select="xalan:nodeset($y_coords)//y[last()] - $y"/>
3911
+ <xsl:call-template name="insertSVGMapLink">
3912
+ <xsl:with-param name="left" select="floor($x * $scale)"/>
3913
+ <xsl:with-param name="top" select="floor($y * $scale)"/>
3914
+ <xsl:with-param name="width" select="floor($width * $scale)"/>
3915
+ <xsl:with-param name="height" select="floor($height * $scale)"/>
3916
+ <xsl:with-param name="dest" select="$dest"/>
3917
+ </xsl:call-template>
3918
+ </xsl:for-each>
3919
+
3920
+ <xsl:for-each select="./*[local-name() = 'circle']">
3921
+ <xsl:call-template name="insertSVGMapLink">
3922
+ <xsl:with-param name="left" select="floor((@cx - @r) * $scale)"/>
3923
+ <xsl:with-param name="top" select="floor((@cy - @r) * $scale)"/>
3924
+ <xsl:with-param name="width" select="floor(@r * 2 * $scale)"/>
3925
+ <xsl:with-param name="height" select="floor(@r * 2 * $scale)"/>
3926
+ <xsl:with-param name="dest" select="$dest"/>
3927
+ </xsl:call-template>
3928
+ </xsl:for-each>
3929
+ <xsl:for-each select="./*[local-name() = 'ellipse']">
3930
+ <xsl:call-template name="insertSVGMapLink">
3931
+ <xsl:with-param name="left" select="floor((@cx - @rx) * $scale)"/>
3932
+ <xsl:with-param name="top" select="floor((@cy - @ry) * $scale)"/>
3933
+ <xsl:with-param name="width" select="floor(@rx * 2 * $scale)"/>
3934
+ <xsl:with-param name="height" select="floor(@ry * 2 * $scale)"/>
3935
+ <xsl:with-param name="dest" select="$dest"/>
3936
+ </xsl:call-template>
3937
+ </xsl:for-each>
3938
+ </xsl:template><xsl:template name="insertSVGMapLink">
3939
+ <xsl:param name="left"/>
3940
+ <xsl:param name="top"/>
3941
+ <xsl:param name="width"/>
3942
+ <xsl:param name="height"/>
3943
+ <xsl:param name="dest"/>
3944
+ <fo:block-container position="absolute" left="{$left}px" top="{$top}px" width="{$width}px" height="{$height}px">
3945
+ <fo:block font-size="1pt">
3946
+ <fo:basic-link internal-destination="{$dest}" fox:alt-text="svg link">
3947
+ <fo:inline-container inline-progression-dimension="100%">
3948
+ <fo:block-container height="{$height - 1}px" width="100%">
3949
+ <!-- DEBUG <xsl:if test="local-name()='polygon'">
3950
+ <xsl:attribute name="background-color">magenta</xsl:attribute>
3951
+ </xsl:if> -->
3952
+ <fo:block> </fo:block></fo:block-container>
3953
+ </fo:inline-container>
3954
+ </fo:basic-link>
3955
+ </fo:block>
3956
+ </fo:block-container>
3638
3957
  </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">
3639
3958
  <xsl:apply-templates mode="contents"/>
3640
3959
  <xsl:text> </xsl:text>
@@ -3663,28 +3982,39 @@
3663
3982
  <xsl:when test="count(xalan:nodeset($contents)/doc) &gt; 1">
3664
3983
  <xsl:for-each select="xalan:nodeset($contents)/doc">
3665
3984
  <fo:bookmark internal-destination="{contents/item[1]/@id}" starting-state="hide">
3985
+ <xsl:if test="@bundle = 'true'">
3986
+ <xsl:attribute name="internal-destination"><xsl:value-of select="@firstpage_id"/></xsl:attribute>
3987
+ </xsl:if>
3666
3988
  <fo:bookmark-title>
3667
- <xsl:variable name="bookmark-title_">
3668
- <xsl:call-template name="getLangVersion">
3669
- <xsl:with-param name="lang" select="@lang"/>
3670
- <xsl:with-param name="doctype" select="@doctype"/>
3671
- <xsl:with-param name="title" select="@title-part"/>
3672
- </xsl:call-template>
3673
- </xsl:variable>
3674
3989
  <xsl:choose>
3675
- <xsl:when test="normalize-space($bookmark-title_) != ''">
3676
- <xsl:value-of select="normalize-space($bookmark-title_)"/>
3677
- </xsl:when>
3678
- <xsl:otherwise>
3990
+ <xsl:when test="not(normalize-space(@bundle) = 'true')"> <!-- 'bundle' means several different documents (not language versions) in one xml -->
3991
+ <xsl:variable name="bookmark-title_">
3992
+ <xsl:call-template name="getLangVersion">
3993
+ <xsl:with-param name="lang" select="@lang"/>
3994
+ <xsl:with-param name="doctype" select="@doctype"/>
3995
+ <xsl:with-param name="title" select="@title-part"/>
3996
+ </xsl:call-template>
3997
+ </xsl:variable>
3679
3998
  <xsl:choose>
3680
- <xsl:when test="@lang = 'en'">English</xsl:when>
3681
- <xsl:when test="@lang = 'fr'">Français</xsl:when>
3682
- <xsl:when test="@lang = 'de'">Deutsche</xsl:when>
3683
- <xsl:otherwise><xsl:value-of select="@lang"/> version</xsl:otherwise>
3999
+ <xsl:when test="normalize-space($bookmark-title_) != ''">
4000
+ <xsl:value-of select="normalize-space($bookmark-title_)"/>
4001
+ </xsl:when>
4002
+ <xsl:otherwise>
4003
+ <xsl:choose>
4004
+ <xsl:when test="@lang = 'en'">English</xsl:when>
4005
+ <xsl:when test="@lang = 'fr'">Français</xsl:when>
4006
+ <xsl:when test="@lang = 'de'">Deutsche</xsl:when>
4007
+ <xsl:otherwise><xsl:value-of select="@lang"/> version</xsl:otherwise>
4008
+ </xsl:choose>
4009
+ </xsl:otherwise>
3684
4010
  </xsl:choose>
4011
+ </xsl:when>
4012
+ <xsl:otherwise>
4013
+ <xsl:value-of select="@title-part"/>
3685
4014
  </xsl:otherwise>
3686
4015
  </xsl:choose>
3687
4016
  </fo:bookmark-title>
4017
+
3688
4018
  <xsl:apply-templates select="contents/item" mode="bookmark"/>
3689
4019
 
3690
4020
  <xsl:call-template name="insertFigureBookmarks">
@@ -3783,20 +4113,28 @@
3783
4113
  <xsl:otherwise><xsl:value-of select="$lang"/> version</xsl:otherwise>
3784
4114
  </xsl:choose>
3785
4115
  </xsl:template><xsl:template match="item" mode="bookmark">
3786
- <fo:bookmark internal-destination="{@id}" starting-state="hide">
3787
- <fo:bookmark-title>
3788
- <xsl:if test="@section != ''">
3789
- <xsl:value-of select="@section"/>
3790
- <xsl:text> </xsl:text>
3791
- </xsl:if>
3792
- <xsl:value-of select="normalize-space(title)"/>
3793
- </fo:bookmark-title>
3794
- <xsl:apply-templates mode="bookmark"/>
3795
- </fo:bookmark>
4116
+ <xsl:choose>
4117
+ <xsl:when test="@id != ''">
4118
+ <fo:bookmark internal-destination="{@id}" starting-state="hide">
4119
+ <fo:bookmark-title>
4120
+ <xsl:if test="@section != ''">
4121
+ <xsl:value-of select="@section"/>
4122
+ <xsl:text> </xsl:text>
4123
+ </xsl:if>
4124
+ <xsl:value-of select="normalize-space(title)"/>
4125
+ </fo:bookmark-title>
4126
+ <xsl:apply-templates mode="bookmark"/>
4127
+ </fo:bookmark>
4128
+ </xsl:when>
4129
+ <xsl:otherwise>
4130
+ <xsl:apply-templates mode="bookmark"/>
4131
+ </xsl:otherwise>
4132
+ </xsl:choose>
3796
4133
  </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">
3797
4134
  <xsl:if test="normalize-space() != ''">
3798
4135
  <fo:block xsl:use-attribute-sets="figure-name-style">
3799
4136
 
4137
+
3800
4138
  <xsl:apply-templates/>
3801
4139
  </fo:block>
3802
4140
  </xsl:if>
@@ -3876,6 +4214,8 @@
3876
4214
  </xsl:template><xsl:template match="*[local-name()='sourcecode']" name="sourcecode">
3877
4215
 
3878
4216
  <fo:block-container margin-left="0mm">
4217
+ <xsl:copy-of select="@id"/>
4218
+
3879
4219
  <xsl:if test="parent::*[local-name() = 'note']">
3880
4220
  <xsl:attribute name="margin-left">
3881
4221
  <xsl:choose>
@@ -3886,7 +4226,9 @@
3886
4226
 
3887
4227
  </xsl:if>
3888
4228
  <fo:block-container margin-left="0mm">
3889
-
4229
+
4230
+
4231
+
3890
4232
  <fo:block xsl:use-attribute-sets="sourcecode-style">
3891
4233
  <xsl:variable name="_font-size">
3892
4234
 
@@ -3915,10 +4257,14 @@
3915
4257
  </xsl:choose>
3916
4258
  </xsl:attribute>
3917
4259
  </xsl:if>
3918
- <xsl:apply-templates/>
3919
- </fo:block>
4260
+
4261
+ <xsl:apply-templates/>
4262
+ </fo:block>
4263
+
4264
+
3920
4265
  <xsl:apply-templates select="*[local-name()='name']" mode="presentation"/>
3921
4266
 
4267
+
3922
4268
  </fo:block-container>
3923
4269
  </fo:block-container>
3924
4270
  </xsl:template><xsl:template match="*[local-name()='sourcecode']/text()" priority="2">
@@ -4153,6 +4499,7 @@
4153
4499
  </xsl:template><xsl:template match="*[local-name() = 'example']">
4154
4500
  <fo:block id="{@id}" xsl:use-attribute-sets="example-style">
4155
4501
 
4502
+
4156
4503
  <xsl:apply-templates select="*[local-name()='name']" mode="presentation"/>
4157
4504
 
4158
4505
  <xsl:variable name="element">
@@ -4326,7 +4673,9 @@
4326
4673
  <xsl:attribute name="vertical-align">super</xsl:attribute>
4327
4674
 
4328
4675
  </xsl:if>
4329
-
4676
+
4677
+
4678
+
4330
4679
  <fo:basic-link internal-destination="{@bibitemid}" fox:alt-text="{@citeas}">
4331
4680
  <xsl:if test="normalize-space(@citeas) = ''">
4332
4681
  <xsl:attribute name="fox:alt-text"><xsl:value-of select="."/></xsl:attribute>
@@ -4335,6 +4684,7 @@
4335
4684
 
4336
4685
 
4337
4686
 
4687
+
4338
4688
  </xsl:if>
4339
4689
 
4340
4690
  <xsl:apply-templates/>
@@ -4362,6 +4712,7 @@
4362
4712
 
4363
4713
 
4364
4714
 
4715
+
4365
4716
 
4366
4717
  <xsl:variable name="references_num_current">
4367
4718
  <xsl:number level="any" count="m3d:references"/>
@@ -4484,6 +4835,7 @@
4484
4835
  <xsl:call-template name="setId"/>
4485
4836
 
4486
4837
 
4838
+
4487
4839
  <xsl:apply-templates/>
4488
4840
  </fo:block>
4489
4841
  </xsl:template><xsl:template match="*[local-name() = 'definitions']">
@@ -4730,17 +5082,17 @@
4730
5082
  <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')]"/>
4731
5083
  <xsl:choose>
4732
5084
  <xsl:when test="normalize-space($_doc_ident) != ''">
4733
- <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"/>
5085
+ <!-- <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"/>
4734
5086
  <xsl:if test="$type != '' and not(contains($_doc_ident, $type))">
4735
5087
  <xsl:value-of select="$type"/><xsl:text> </xsl:text>
4736
- </xsl:if>
5088
+ </xsl:if> -->
4737
5089
  <xsl:value-of select="$_doc_ident"/>
4738
5090
  </xsl:when>
4739
5091
  <xsl:otherwise>
4740
- <xsl:variable name="type" select="*[local-name() = 'docidentifier'][not(@type = 'metanorma')]/@type"/>
5092
+ <!-- <xsl:variable name="type" select="*[local-name() = 'docidentifier'][not(@type = 'metanorma')]/@type"/>
4741
5093
  <xsl:if test="$type != ''">
4742
5094
  <xsl:value-of select="$type"/><xsl:text> </xsl:text>
4743
- </xsl:if>
5095
+ </xsl:if> -->
4744
5096
  <xsl:value-of select="*[local-name() = 'docidentifier'][not(@type = 'metanorma')]"/>
4745
5097
  </xsl:otherwise>
4746
5098
  </xsl:choose>
@@ -5053,6 +5405,9 @@
5053
5405
  <xsl:when test="parent::*[local-name() = 'preface']">
5054
5406
  <xsl:value-of select="$level_total - 1"/>
5055
5407
  </xsl:when>
5408
+ <xsl:when test="ancestor::*[local-name() = 'preface'] and not(ancestor::*[local-name() = 'foreword']) and not(ancestor::*[local-name() = 'introduction'])"> <!-- for preface/clause -->
5409
+ <xsl:value-of select="$level_total - 1"/>
5410
+ </xsl:when>
5056
5411
  <xsl:when test="ancestor::*[local-name() = 'preface']">
5057
5412
  <xsl:value-of select="$level_total - 2"/>
5058
5413
  </xsl:when>
@@ -5193,7 +5548,14 @@
5193
5548
  <xsl:when test="/*/*[local-name() = 'localized-strings']/*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]">
5194
5549
  <xsl:value-of select="/*/*[local-name() = 'localized-strings']/*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
5195
5550
  </xsl:when>
5196
- <xsl:otherwise><xsl:value-of select="$key"/></xsl:otherwise>
5551
+ <xsl:otherwise>
5552
+ <xsl:variable name="key_">
5553
+ <xsl:call-template name="capitalize">
5554
+ <xsl:with-param name="str" select="translate($key, '_', ' ')"/>
5555
+ </xsl:call-template>
5556
+ </xsl:variable>
5557
+ <xsl:value-of select="$key_"/>
5558
+ </xsl:otherwise>
5197
5559
  </xsl:choose>
5198
5560
 
5199
5561
  </xsl:template><xsl:template name="setTrackChangesStyles">
@@ -5236,4 +5598,110 @@
5236
5598
  <xsl:value-of select="$align"/>
5237
5599
  </xsl:when>
5238
5600
  </xsl:choose>
5601
+ </xsl:template><xsl:template name="setTextAlignment">
5602
+ <xsl:param name="default">left</xsl:param>
5603
+ <xsl:attribute name="text-align">
5604
+ <xsl:choose>
5605
+ <xsl:when test="@align"><xsl:value-of select="@align"/></xsl:when>
5606
+ <xsl:when test="ancestor::*[local-name() = 'td']/@align"><xsl:value-of select="ancestor::*[local-name() = 'td']/@align"/></xsl:when>
5607
+ <xsl:when test="ancestor::*[local-name() = 'th']/@align"><xsl:value-of select="ancestor::*[local-name() = 'th']/@align"/></xsl:when>
5608
+ <xsl:otherwise><xsl:value-of select="$default"/></xsl:otherwise>
5609
+ </xsl:choose>
5610
+ </xsl:attribute>
5611
+ </xsl:template><xsl:template name="number-to-words">
5612
+ <xsl:param name="number"/>
5613
+ <xsl:param name="first"/>
5614
+ <xsl:if test="$number != ''">
5615
+ <xsl:variable name="words">
5616
+ <words>
5617
+ <word cardinal="1">One-</word>
5618
+ <word ordinal="1">First </word>
5619
+ <word cardinal="2">Two-</word>
5620
+ <word ordinal="2">Second </word>
5621
+ <word cardinal="3">Three-</word>
5622
+ <word ordinal="3">Third </word>
5623
+ <word cardinal="4">Four-</word>
5624
+ <word ordinal="4">Fourth </word>
5625
+ <word cardinal="5">Five-</word>
5626
+ <word ordinal="5">Fifth </word>
5627
+ <word cardinal="6">Six-</word>
5628
+ <word ordinal="6">Sixth </word>
5629
+ <word cardinal="7">Seven-</word>
5630
+ <word ordinal="7">Seventh </word>
5631
+ <word cardinal="8">Eight-</word>
5632
+ <word ordinal="8">Eighth </word>
5633
+ <word cardinal="9">Nine-</word>
5634
+ <word ordinal="9">Ninth </word>
5635
+ <word ordinal="10">Tenth </word>
5636
+ <word ordinal="11">Eleventh </word>
5637
+ <word ordinal="12">Twelfth </word>
5638
+ <word ordinal="13">Thirteenth </word>
5639
+ <word ordinal="14">Fourteenth </word>
5640
+ <word ordinal="15">Fifteenth </word>
5641
+ <word ordinal="16">Sixteenth </word>
5642
+ <word ordinal="17">Seventeenth </word>
5643
+ <word ordinal="18">Eighteenth </word>
5644
+ <word ordinal="19">Nineteenth </word>
5645
+ <word cardinal="20">Twenty-</word>
5646
+ <word ordinal="20">Twentieth </word>
5647
+ <word cardinal="30">Thirty-</word>
5648
+ <word ordinal="30">Thirtieth </word>
5649
+ <word cardinal="40">Forty-</word>
5650
+ <word ordinal="40">Fortieth </word>
5651
+ <word cardinal="50">Fifty-</word>
5652
+ <word ordinal="50">Fiftieth </word>
5653
+ <word cardinal="60">Sixty-</word>
5654
+ <word ordinal="60">Sixtieth </word>
5655
+ <word cardinal="70">Seventy-</word>
5656
+ <word ordinal="70">Seventieth </word>
5657
+ <word cardinal="80">Eighty-</word>
5658
+ <word ordinal="80">Eightieth </word>
5659
+ <word cardinal="90">Ninety-</word>
5660
+ <word ordinal="90">Ninetieth </word>
5661
+ <word cardinal="100">Hundred-</word>
5662
+ <word ordinal="100">Hundredth </word>
5663
+ </words>
5664
+ </xsl:variable>
5665
+
5666
+ <xsl:variable name="ordinal" select="xalan:nodeset($words)//word[@ordinal = $number]/text()"/>
5667
+
5668
+ <xsl:variable name="value">
5669
+ <xsl:choose>
5670
+ <xsl:when test="$ordinal != ''">
5671
+ <xsl:value-of select="$ordinal"/>
5672
+ </xsl:when>
5673
+ <xsl:otherwise>
5674
+ <xsl:choose>
5675
+ <xsl:when test="$number &lt; 100">
5676
+ <xsl:variable name="decade" select="concat(substring($number,1,1), '0')"/>
5677
+ <xsl:variable name="digit" select="substring($number,2)"/>
5678
+ <xsl:value-of select="xalan:nodeset($words)//word[@cardinal = $decade]/text()"/>
5679
+ <xsl:value-of select="xalan:nodeset($words)//word[@ordinal = $digit]/text()"/>
5680
+ </xsl:when>
5681
+ <xsl:otherwise>
5682
+ <!-- more 100 -->
5683
+ <xsl:variable name="hundred" select="substring($number,1,1)"/>
5684
+ <xsl:variable name="digits" select="number(substring($number,2))"/>
5685
+ <xsl:value-of select="xalan:nodeset($words)//word[@cardinal = $hundred]/text()"/>
5686
+ <xsl:value-of select="xalan:nodeset($words)//word[@cardinal = '100']/text()"/>
5687
+ <xsl:call-template name="number-to-words">
5688
+ <xsl:with-param name="number" select="$digits"/>
5689
+ </xsl:call-template>
5690
+ </xsl:otherwise>
5691
+ </xsl:choose>
5692
+ </xsl:otherwise>
5693
+ </xsl:choose>
5694
+ </xsl:variable>
5695
+ <xsl:choose>
5696
+ <xsl:when test="$first = 'true'">
5697
+ <xsl:variable name="value_lc" select="java:toLowerCase(java:java.lang.String.new($value))"/>
5698
+ <xsl:call-template name="capitalize">
5699
+ <xsl:with-param name="str" select="$value_lc"/>
5700
+ </xsl:call-template>
5701
+ </xsl:when>
5702
+ <xsl:otherwise>
5703
+ <xsl:value-of select="$value"/>
5704
+ </xsl:otherwise>
5705
+ </xsl:choose>
5706
+ </xsl:if>
5239
5707
  </xsl:template></xsl:stylesheet>