metanorma-un 0.5.1 → 0.5.6

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.
@@ -39,7 +39,7 @@
39
39
 
40
40
  <xsl:template match="/">
41
41
  <xsl:call-template name="namespaceCheck"/>
42
- <fo:root font-family="Times New Roman, STIX2Math, HanSans" font-size="10pt" xml:lang="{$lang}">
42
+ <fo:root font-family="Times New Roman, STIX Two Math, HanSans" font-size="10pt" xml:lang="{$lang}">
43
43
  <fo:layout-master-set>
44
44
  <!-- Cover page -->
45
45
  <fo:simple-page-master master-name="cover-page" page-width="{$pageWidth}" page-height="{$pageHeight}">
@@ -85,6 +85,9 @@
85
85
 
86
86
  <xsl:call-template name="addPDFUAmeta"/>
87
87
 
88
+ <xsl:call-template name="addBookmarks">
89
+ <xsl:with-param name="contents" select="$contents"/>
90
+ </xsl:call-template>
88
91
 
89
92
  <!-- Cover Page -->
90
93
  <fo:page-sequence master-reference="cover-page" force-page-count="even">
@@ -197,7 +200,7 @@
197
200
  </xsl:variable>
198
201
  <fo:block font-size="9pt" text-align="right" font-style="italic" margin-bottom="6pt"><xsl:value-of select="$title-page"/></fo:block>
199
202
  <fo:block>
200
- <xsl:for-each select="xalan:nodeset($contents)//item[not (@type = 'annex' or @parent = 'annex')]">
203
+ <xsl:for-each select="xalan:nodeset($contents)//item[not (@type = 'annex' or @parent = 'annex') and @display = 'true']">
201
204
 
202
205
  <fo:block>
203
206
 
@@ -208,7 +211,7 @@
208
211
  <xsl:if test="@level &gt;= 3 and @section != ''">
209
212
  <xsl:attribute name="margin-left">28mm</xsl:attribute>
210
213
  </xsl:if>
211
- <fo:basic-link internal-destination="{@id}" fox:alt-text="{text()}">
214
+ <fo:basic-link internal-destination="{@id}" fox:alt-text="{title}">
212
215
  <xsl:if test="@section != ''">
213
216
  <fo:inline>
214
217
  <xsl:attribute name="padding-right">
@@ -222,7 +225,7 @@
222
225
  </fo:inline>
223
226
  </xsl:if>
224
227
 
225
- <xsl:apply-templates/>
228
+ <xsl:apply-templates select="title"/>
226
229
  <xsl:text> </xsl:text>
227
230
 
228
231
  <fo:inline keep-together.within-line="always">
@@ -235,12 +238,12 @@
235
238
 
236
239
  </xsl:for-each>
237
240
 
238
- <xsl:if test="xalan:nodeset($contents)//item[@type = 'annex']">
241
+ <xsl:if test="xalan:nodeset($contents)//item[@type = 'annex' and @display = 'true']">
239
242
  <fo:block text-align="center" margin-top="12pt" margin-bottom="12pt">ANNEXES</fo:block>
240
- <xsl:for-each select="xalan:nodeset($contents)//item[@type = 'annex']">
243
+ <xsl:for-each select="xalan:nodeset($contents)//item[@type = 'annex' and @display = 'true']">
241
244
  <fo:block>
242
245
  <fo:block text-align-last="justify" margin-left="12mm" text-indent="-12mm">
243
- <fo:basic-link internal-destination="{@id}" fox:alt-text="{text()}">
246
+ <fo:basic-link internal-destination="{@id}" fox:alt-text="{@section}">
244
247
  <xsl:if test="@section != ''">
245
248
  <fo:inline padding-right="3mm">
246
249
  <xsl:choose>
@@ -318,7 +321,9 @@
318
321
  </fo:block>
319
322
  </fo:block-container>
320
323
  <fo:block-container absolute-position="fixed" font-family="Arial" font-size="10pt" top="240mm" left="20mm" line-height="110%">
321
- <xsl:apply-templates select="/un:un-standard/un:boilerplate/un:feedback-statement"/>
324
+ <fo:block>
325
+ <xsl:apply-templates select="/un:un-standard/un:boilerplate/un:feedback-statement"/>
326
+ </fo:block>
322
327
  </fo:block-container>
323
328
  </fo:flow>
324
329
  </fo:page-sequence>
@@ -347,9 +352,7 @@
347
352
 
348
353
 
349
354
  <xsl:variable name="display">
350
- <xsl:choose>
351
- <xsl:when test="ancestor-or-self::un:bibitem">false</xsl:when>
352
- <xsl:when test="ancestor-or-self::un:term">false</xsl:when>
355
+ <xsl:choose>
353
356
  <xsl:when test="ancestor-or-self::un:annex and $level &gt;= 2">false</xsl:when>
354
357
  <xsl:when test="$level &gt; 3">false</xsl:when>
355
358
  <xsl:when test="@inline-header='true'">false</xsl:when>
@@ -357,6 +360,14 @@
357
360
  </xsl:choose>
358
361
  </xsl:variable>
359
362
 
363
+ <xsl:variable name="skip">
364
+ <xsl:choose>
365
+ <xsl:when test="ancestor-or-self::un:bibitem">true</xsl:when>
366
+ <xsl:when test="ancestor-or-self::un:term">true</xsl:when>
367
+ <xsl:when test="@inline-header='true'">true</xsl:when>
368
+ <xsl:otherwise>false</xsl:otherwise>
369
+ </xsl:choose>
370
+ </xsl:variable>
360
371
 
361
372
  <xsl:if test="$display = 'true'">
362
373
 
@@ -372,10 +383,13 @@
372
383
  <xsl:value-of select="local-name()"/>
373
384
  </xsl:variable>
374
385
 
375
- <item id="{@id}" level="{$level}" section="{$section}" type="{$type}">
376
- <xsl:apply-templates select="xalan:nodeset($title)" mode="contents_item"/>
386
+ <item id="{@id}" level="{$level}" section="{$section}" type="{$type}" display="{$display}">
387
+ <title>
388
+ <xsl:apply-templates select="xalan:nodeset($title)" mode="contents_item"/>
389
+ </title>
390
+ <xsl:apply-templates mode="contents"/>
377
391
  </item>
378
- <xsl:apply-templates mode="contents"/>
392
+
379
393
  </xsl:if>
380
394
 
381
395
  </xsl:template>
@@ -596,7 +610,7 @@
596
610
  </fo:block>
597
611
  </xsl:template>
598
612
 
599
- <xsl:template match="un:ul | un:ol">
613
+ <xsl:template match="un:ul | un:ol" mode="ul_ol">
600
614
  <fo:list-block provisional-distance-between-starts="3mm" margin-left="7mm" text-indent="0mm">
601
615
  <xsl:apply-templates/>
602
616
  </fo:list-block>
@@ -604,13 +618,19 @@
604
618
  </xsl:template>
605
619
 
606
620
  <xsl:template match="un:ul//un:note | un:ol//un:note" priority="2"/>
607
- <xsl:template match="un:ul//un:note/un:p | un:ol//un:note/un:p" mode="process">
608
- <fo:block font-size="11pt" margin-top="4pt">
621
+ <xsl:template match="un:ul//un:note/un:name | un:ol//un:note/un:name" mode="process" priority="2"/>
622
+
623
+ <xsl:template match="un:ul//un:note/un:p | un:ol//un:note/un:p" mode="process" priority="2">
624
+ <fo:block margin-top="4pt">
609
625
  <xsl:apply-templates select="../un:name" mode="presentation"/>
610
626
  <xsl:apply-templates/>
611
627
  </fo:block>
612
628
  </xsl:template>
613
629
 
630
+ <xsl:template match="un:ul//un:note/* | un:ol//un:note/*" mode="process">
631
+ <xsl:apply-templates select="."/>
632
+ </xsl:template>
633
+
614
634
  <xsl:template match="un:li">
615
635
  <xsl:variable name="level">
616
636
  <xsl:call-template name="getLevel"/>
@@ -929,30 +949,45 @@
929
949
 
930
950
 
931
951
  <xsl:template match="un:formula" name="formula-un" priority="2">
932
- <fo:block id="{@id}" margin-top="6pt">
933
- <fo:table table-layout="fixed" width="100%">
934
- <fo:table-column column-width="95%"/>
935
- <fo:table-column column-width="5%"/>
936
- <fo:table-body>
937
- <fo:table-row>
938
- <fo:table-cell>
939
- <fo:block text-align="center">
940
- <xsl:if test="ancestor::un:annex">
941
- <xsl:attribute name="text-align">left</xsl:attribute>
942
- <xsl:attribute name="margin-left">7mm</xsl:attribute>
943
- </xsl:if>
944
- <xsl:apply-templates/>
945
- </fo:block>
946
- </fo:table-cell>
947
- <fo:table-cell> <!-- display-align="center" -->
948
- <fo:block text-align="right">
949
- <xsl:apply-templates select="un:name" mode="presentation"/>
950
- </fo:block>
951
- </fo:table-cell>
952
- </fo:table-row>
953
- </fo:table-body>
954
- </fo:table>
955
- </fo:block>
952
+
953
+ <fo:block-container margin-left="0mm">
954
+ <xsl:if test="parent::*[local-name() = 'note']">
955
+ <xsl:attribute name="margin-left">
956
+ <xsl:choose>
957
+ <xsl:when test="not(ancestor::*[local-name() = 'table'])"><xsl:value-of select="$note-body-indent"/></xsl:when>
958
+ <xsl:otherwise><xsl:value-of select="$note-body-indent-table"/></xsl:otherwise>
959
+ </xsl:choose>
960
+ </xsl:attribute>
961
+ </xsl:if>
962
+ <fo:block-container margin-left="0mm">
963
+
964
+ <fo:block id="{@id}" margin-top="6pt">
965
+ <fo:table table-layout="fixed" width="100%">
966
+ <fo:table-column column-width="95%"/>
967
+ <fo:table-column column-width="5%"/>
968
+ <fo:table-body>
969
+ <fo:table-row>
970
+ <fo:table-cell>
971
+ <fo:block text-align="center">
972
+ <xsl:if test="ancestor::un:annex">
973
+ <xsl:attribute name="text-align">left</xsl:attribute>
974
+ <xsl:attribute name="margin-left">7mm</xsl:attribute>
975
+ </xsl:if>
976
+ <xsl:apply-templates/>
977
+ </fo:block>
978
+ </fo:table-cell>
979
+ <fo:table-cell> <!-- display-align="center" -->
980
+ <fo:block text-align="right">
981
+ <xsl:apply-templates select="un:name" mode="presentation"/>
982
+ </fo:block>
983
+ </fo:table-cell>
984
+ </fo:table-row>
985
+ </fo:table-body>
986
+ </fo:table>
987
+ </fo:block>
988
+
989
+ </fo:block-container>
990
+ </fo:block-container>
956
991
  </xsl:template>
957
992
 
958
993
 
@@ -1032,6 +1067,12 @@
1032
1067
 
1033
1068
  </title-edition>
1034
1069
 
1070
+ <title-edition lang="fr">
1071
+
1072
+ <xsl:text>Édition </xsl:text>
1073
+
1074
+ </title-edition>
1075
+
1035
1076
 
1036
1077
  <title-toc lang="en">
1037
1078
 
@@ -1040,7 +1081,12 @@
1040
1081
 
1041
1082
 
1042
1083
  </title-toc>
1043
- <title-toc lang="fr">Sommaire</title-toc>
1084
+ <title-toc lang="fr">
1085
+
1086
+ <xsl:text>Sommaire</xsl:text>
1087
+
1088
+
1089
+ </title-toc>
1044
1090
 
1045
1091
  <title-toc lang="zh">Contents</title-toc>
1046
1092
 
@@ -1074,7 +1120,12 @@
1074
1120
 
1075
1121
 
1076
1122
 
1077
- <title-source lang="en">SOURCE</title-source>
1123
+ <title-source lang="en">
1124
+
1125
+ <xsl:text>SOURCE</xsl:text>
1126
+
1127
+
1128
+ </title-source>
1078
1129
 
1079
1130
  <title-keywords lang="en">Keywords</title-keywords>
1080
1131
 
@@ -1117,12 +1168,25 @@
1117
1168
  <title-warning lang="zh">警告</title-warning>
1118
1169
 
1119
1170
  <title-amendment lang="en">AMENDMENT</title-amendment>
1171
+
1172
+ <title-continued lang="en">(continued)</title-continued>
1173
+ <title-continued lang="fr">(continué)</title-continued>
1174
+
1120
1175
  </xsl:variable><xsl:variable name="tab_zh"> </xsl:variable><xsl:template name="getTitle">
1121
1176
  <xsl:param name="name"/>
1122
- <xsl:variable name="lang">
1123
- <xsl:call-template name="getLang"/>
1177
+ <xsl:param name="lang"/>
1178
+ <xsl:variable name="lang_">
1179
+ <xsl:choose>
1180
+ <xsl:when test="$lang != ''">
1181
+ <xsl:value-of select="$lang"/>
1182
+ </xsl:when>
1183
+ <xsl:otherwise>
1184
+ <xsl:call-template name="getLang"/>
1185
+ </xsl:otherwise>
1186
+ </xsl:choose>
1124
1187
  </xsl:variable>
1125
- <xsl:variable name="title_" select="$titles/*[local-name() = $name][@lang = $lang]"/>
1188
+ <xsl:variable name="language" select="normalize-space($lang_)"/>
1189
+ <xsl:variable name="title_" select="$titles/*[local-name() = $name][@lang = $language]"/>
1126
1190
  <xsl:choose>
1127
1191
  <xsl:when test="normalize-space($title_) != ''">
1128
1192
  <xsl:value-of select="$title_"/>
@@ -1131,7 +1195,10 @@
1131
1195
  <xsl:value-of select="$titles/*[local-name() = $name][@lang = 'en']"/>
1132
1196
  </xsl:otherwise>
1133
1197
  </xsl:choose>
1134
- </xsl:template><xsl:variable name="lower">abcdefghijklmnopqrstuvwxyz</xsl:variable><xsl:variable name="upper">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable><xsl:variable name="en_chars" select="concat($lower,$upper,',.`1234567890-=~!@#$%^*()_+[]{}\|?/')"/><xsl:variable name="linebreak" select="'&#8232;'"/><xsl:attribute-set name="link-style">
1198
+ </xsl:template><xsl:variable name="lower">abcdefghijklmnopqrstuvwxyz</xsl:variable><xsl:variable name="upper">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable><xsl:variable name="en_chars" select="concat($lower,$upper,',.`1234567890-=~!@#$%^*()_+[]{}\|?/')"/><xsl:variable name="linebreak" select="'&#8232;'"/><xsl:attribute-set name="root-style">
1199
+
1200
+ </xsl:attribute-set><xsl:attribute-set name="link-style">
1201
+
1135
1202
 
1136
1203
 
1137
1204
  </xsl:attribute-set><xsl:attribute-set name="sourcecode-style">
@@ -1142,14 +1209,14 @@
1142
1209
 
1143
1210
 
1144
1211
 
1145
- <xsl:attribute name="font-family">Courier</xsl:attribute>
1146
- <xsl:attribute name="font-size">10pt</xsl:attribute>
1212
+ <xsl:attribute name="font-family">Courier</xsl:attribute>
1147
1213
  <xsl:attribute name="margin-top">6pt</xsl:attribute>
1148
1214
  <xsl:attribute name="margin-bottom">6pt</xsl:attribute>
1149
1215
 
1150
1216
 
1151
1217
 
1152
1218
 
1219
+
1153
1220
  </xsl:attribute-set><xsl:attribute-set name="permission-style">
1154
1221
 
1155
1222
  </xsl:attribute-set><xsl:attribute-set name="permission-name-style">
@@ -1191,6 +1258,7 @@
1191
1258
 
1192
1259
 
1193
1260
 
1261
+
1194
1262
  </xsl:attribute-set><xsl:attribute-set name="example-body-style">
1195
1263
 
1196
1264
 
@@ -1210,6 +1278,7 @@
1210
1278
 
1211
1279
 
1212
1280
 
1281
+
1213
1282
  <xsl:attribute name="font-size">10pt</xsl:attribute>
1214
1283
  <xsl:attribute name="font-weight">bold</xsl:attribute>
1215
1284
  <xsl:attribute name="margin-bottom">12pt</xsl:attribute>
@@ -1262,6 +1331,7 @@
1262
1331
  <xsl:attribute name="text-indent">0mm</xsl:attribute>
1263
1332
 
1264
1333
 
1334
+
1265
1335
  </xsl:attribute-set><xsl:attribute-set name="appendix-style">
1266
1336
 
1267
1337
 
@@ -1272,11 +1342,13 @@
1272
1342
 
1273
1343
  </xsl:attribute-set><xsl:attribute-set name="xref-style">
1274
1344
 
1275
-
1345
+
1346
+
1276
1347
  </xsl:attribute-set><xsl:attribute-set name="eref-style">
1277
1348
 
1278
1349
 
1279
1350
 
1351
+
1280
1352
  </xsl:attribute-set><xsl:attribute-set name="note-style">
1281
1353
 
1282
1354
 
@@ -1290,14 +1362,16 @@
1290
1362
 
1291
1363
 
1292
1364
 
1365
+
1293
1366
  <xsl:attribute name="margin-top">3pt</xsl:attribute>
1294
1367
  <xsl:attribute name="border-top">0.1mm solid black</xsl:attribute>
1295
1368
  <xsl:attribute name="margin-bottom">12pt</xsl:attribute>
1296
1369
 
1297
1370
 
1371
+ </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">
1372
+
1298
1373
 
1299
1374
 
1300
- </xsl:attribute-set><xsl:attribute-set name="note-name-style">
1301
1375
 
1302
1376
 
1303
1377
 
@@ -1306,7 +1380,6 @@
1306
1380
 
1307
1381
 
1308
1382
 
1309
-
1310
1383
 
1311
1384
  </xsl:attribute-set><xsl:attribute-set name="note-p-style">
1312
1385
 
@@ -1322,8 +1395,7 @@
1322
1395
 
1323
1396
  <xsl:attribute name="margin-top">3pt</xsl:attribute>
1324
1397
  <!-- <xsl:attribute name="border-top">0.1mm solid black</xsl:attribute> -->
1325
- <xsl:attribute name="space-after">12pt</xsl:attribute>
1326
- <xsl:attribute name="font-size">10pt</xsl:attribute>
1398
+ <xsl:attribute name="space-after">12pt</xsl:attribute>
1327
1399
  <xsl:attribute name="text-indent">0</xsl:attribute>
1328
1400
  <xsl:attribute name="padding-top">1.5mm</xsl:attribute>
1329
1401
 
@@ -1337,6 +1409,8 @@
1337
1409
  <xsl:attribute name="margin-top">4pt</xsl:attribute>
1338
1410
 
1339
1411
 
1412
+ </xsl:attribute-set><xsl:attribute-set name="termnote-name-style">
1413
+
1340
1414
  </xsl:attribute-set><xsl:attribute-set name="quote-style">
1341
1415
 
1342
1416
 
@@ -1357,6 +1431,7 @@
1357
1431
  </xsl:attribute-set><xsl:attribute-set name="origin-style">
1358
1432
 
1359
1433
 
1434
+
1360
1435
  </xsl:attribute-set><xsl:attribute-set name="term-style">
1361
1436
 
1362
1437
  </xsl:attribute-set><xsl:attribute-set name="figure-name-style">
@@ -1375,6 +1450,7 @@
1375
1450
 
1376
1451
 
1377
1452
 
1453
+
1378
1454
  <xsl:attribute name="text-align">center</xsl:attribute>
1379
1455
  <xsl:attribute name="font-size">9pt</xsl:attribute>
1380
1456
  <xsl:attribute name="margin-bottom">6pt</xsl:attribute>
@@ -1409,11 +1485,14 @@
1409
1485
  </xsl:attribute-set><xsl:attribute-set name="tt-style">
1410
1486
 
1411
1487
 
1488
+
1412
1489
  </xsl:attribute-set><xsl:attribute-set name="sourcecode-name-style">
1413
1490
  <xsl:attribute name="font-size">11pt</xsl:attribute>
1414
1491
  <xsl:attribute name="font-weight">bold</xsl:attribute>
1415
1492
  <xsl:attribute name="text-align">center</xsl:attribute>
1416
1493
  <xsl:attribute name="margin-bottom">12pt</xsl:attribute>
1494
+ <xsl:attribute name="keep-with-previous">always</xsl:attribute>
1495
+
1417
1496
  </xsl:attribute-set><xsl:attribute-set name="domain-style">
1418
1497
 
1419
1498
  </xsl:attribute-set><xsl:attribute-set name="admitted-style">
@@ -1477,6 +1556,10 @@
1477
1556
 
1478
1557
 
1479
1558
 
1559
+
1560
+
1561
+ <!-- $namespace = 'iso' or -->
1562
+
1480
1563
  <xsl:apply-templates select="*[local-name()='name']" mode="presentation"/>
1481
1564
 
1482
1565
 
@@ -1512,6 +1595,7 @@
1512
1595
  <xsl:with-param name="table" select="$simple-table"/>
1513
1596
  </xsl:call-template>
1514
1597
  </xsl:variable>
1598
+ <!-- colwidths=<xsl:copy-of select="$colwidths"/> -->
1515
1599
 
1516
1600
  <!-- <xsl:variable name="colwidths2">
1517
1601
  <xsl:call-template name="calculate-column-widths">
@@ -1533,35 +1617,59 @@
1533
1617
  <fo:block-container margin-left="-{$margin-left}mm" margin-right="-{$margin-left}mm">
1534
1618
 
1535
1619
 
1620
+
1536
1621
 
1537
1622
  <xsl:attribute name="space-after">12pt</xsl:attribute>
1623
+ <xsl:if test="not(ancestor::*[local-name()='sections'])">
1624
+ <xsl:attribute name="font-size">10pt</xsl:attribute>
1625
+ </xsl:if>
1626
+
1627
+
1538
1628
 
1539
1629
 
1630
+
1540
1631
 
1541
1632
 
1542
1633
 
1543
1634
 
1544
1635
 
1545
- <fo:table id="{@id}" table-layout="fixed" width="100%" margin-left="{$margin-left}mm" margin-right="{$margin-left}mm" table-omit-footer-at-break="true">
1546
-
1547
-
1636
+
1637
+
1638
+ <xsl:variable name="table_attributes">
1639
+ <attribute name="table-layout">fixed</attribute>
1640
+ <attribute name="width">100%</attribute>
1641
+ <attribute name="margin-left"><xsl:value-of select="$margin-left"/>mm</attribute>
1642
+ <attribute name="margin-right"><xsl:value-of select="$margin-left"/>mm</attribute>
1548
1643
 
1549
1644
 
1550
1645
 
1551
1646
 
1647
+
1552
1648
 
1553
1649
  <xsl:if test="ancestor::*[local-name()='sections']">
1554
- <xsl:attribute name="border-top">1.5pt solid black</xsl:attribute>
1555
- <xsl:attribute name="border-bottom">1.5pt solid black</xsl:attribute>
1556
- </xsl:if>
1557
- <xsl:if test="not(ancestor::*[local-name()='sections'])">
1558
- <xsl:attribute name="font-size">10pt</xsl:attribute>
1559
- </xsl:if>
1560
-
1650
+ <attribute name="border-top">1.5pt solid black</attribute>
1651
+ <attribute name="border-bottom">1.5pt solid black</attribute>
1652
+ </xsl:if>
1653
+
1654
+
1561
1655
 
1656
+
1562
1657
 
1658
+ </xsl:variable>
1659
+
1660
+
1661
+ <fo:table id="{@id}" table-omit-footer-at-break="true">
1563
1662
 
1663
+ <xsl:for-each select="xalan:nodeset($table_attributes)/attribute">
1664
+ <xsl:attribute name="{@name}">
1665
+ <xsl:value-of select="."/>
1666
+ </xsl:attribute>
1667
+ </xsl:for-each>
1564
1668
 
1669
+ <xsl:variable name="isNoteOrFnExist" select="./*[local-name()='note'] or .//*[local-name()='fn'][local-name(..) != 'name']"/>
1670
+ <xsl:if test="$isNoteOrFnExist = 'true'">
1671
+ <xsl:attribute name="border-bottom">0pt solid black</xsl:attribute> <!-- set 0pt border, because there is a separete table below for footer -->
1672
+ </xsl:if>
1565
1673
 
1566
1674
  <xsl:for-each select="xalan:nodeset($colwidths)//column">
1567
1675
  <xsl:choose>
@@ -1585,6 +1693,33 @@
1585
1693
 
1586
1694
  </fo:table>
1587
1695
 
1696
+ <xsl:for-each select="*[local-name()='tbody']"><!-- select context to tbody -->
1697
+ <xsl:call-template name="insertTableFooterInSeparateTable">
1698
+ <xsl:with-param name="table_attributes" select="$table_attributes"/>
1699
+ <xsl:with-param name="colwidths" select="$colwidths"/>
1700
+ </xsl:call-template>
1701
+ </xsl:for-each>
1702
+
1703
+ <!-- insert footer as table -->
1704
+ <!-- <fo:table>
1705
+ <xsl:for-each select="xalan::nodeset($table_attributes)/attribute">
1706
+ <xsl:attribute name="{@name}">
1707
+ <xsl:value-of select="."/>
1708
+ </xsl:attribute>
1709
+ </xsl:for-each>
1710
+
1711
+ <xsl:for-each select="xalan:nodeset($colwidths)//column">
1712
+ <xsl:choose>
1713
+ <xsl:when test=". = 1 or . = 0">
1714
+ <fo:table-column column-width="proportional-column-width(2)"/>
1715
+ </xsl:when>
1716
+ <xsl:otherwise>
1717
+ <fo:table-column column-width="proportional-column-width({.})"/>
1718
+ </xsl:otherwise>
1719
+ </xsl:choose>
1720
+ </xsl:for-each>
1721
+ </fo:table>-->
1722
+
1588
1723
 
1589
1724
 
1590
1725
 
@@ -1593,8 +1728,9 @@
1593
1728
  </xsl:template><xsl:template match="*[local-name()='table']/*[local-name() = 'name']"/><xsl:template match="*[local-name()='table']/*[local-name() = 'name']" mode="presentation">
1594
1729
  <xsl:if test="normalize-space() != ''">
1595
1730
  <fo:block xsl:use-attribute-sets="table-name-style">
1596
- <xsl:apply-templates/>
1597
- </fo:block>
1731
+
1732
+ <xsl:apply-templates/>
1733
+ </fo:block>
1598
1734
  </xsl:if>
1599
1735
  </xsl:template><xsl:template name="calculate-columns-numbers">
1600
1736
  <xsl:param name="table-row"/>
@@ -1648,6 +1784,13 @@
1648
1784
  <xsl:for-each select="xalan:nodeset($table)//tr">
1649
1785
  <xsl:variable name="td_text">
1650
1786
  <xsl:apply-templates select="td[$curr-col]" mode="td_text"/>
1787
+
1788
+ <!-- <xsl:if test="$namespace = 'bipm'">
1789
+ <xsl:for-each select="*[local-name()='td'][$curr-col]//*[local-name()='math']">
1790
+ <word><xsl:value-of select="normalize-space(.)"/></word>
1791
+ </xsl:for-each>
1792
+ </xsl:if> -->
1793
+
1651
1794
  </xsl:variable>
1652
1795
  <xsl:variable name="words">
1653
1796
  <xsl:variable name="string_with_added_zerospaces">
@@ -1707,13 +1850,31 @@
1707
1850
  <xsl:value-of select="*[local-name()='origin']/@citeas"/>
1708
1851
  </xsl:template><xsl:template match="*[local-name()='link']" mode="td_text">
1709
1852
  <xsl:value-of select="@target"/>
1853
+ </xsl:template><xsl:template match="*[local-name()='math']" mode="td_text">
1854
+ <xsl:variable name="math_text" select="normalize-space(.)"/>
1855
+ <xsl:value-of select="translate($math_text, ' ', '#')"/><!-- mathml images as one 'word' without spaces -->
1710
1856
  </xsl:template><xsl:template match="*[local-name()='table2']"/><xsl:template match="*[local-name()='thead']"/><xsl:template match="*[local-name()='thead']" mode="process">
1711
1857
  <xsl:param name="cols-count"/>
1712
1858
  <!-- font-weight="bold" -->
1713
- <fo:table-header>
1859
+ <fo:table-header>
1714
1860
 
1715
1861
  <xsl:apply-templates/>
1716
1862
  </fo:table-header>
1863
+ </xsl:template><xsl:template name="table-header-title">
1864
+ <xsl:param name="cols-count"/>
1865
+ <!-- row for title -->
1866
+ <fo:table-row>
1867
+ <fo:table-cell number-columns-spanned="{$cols-count}" border-left="1.5pt solid white" border-right="1.5pt solid white" border-top="1.5pt solid white" border-bottom="1.5pt solid black">
1868
+ <xsl:apply-templates select="ancestor::*[local-name()='table']/*[local-name()='name']" mode="presentation"/>
1869
+ <xsl:for-each select="ancestor::*[local-name()='table'][1]">
1870
+ <xsl:call-template name="fn_name_display"/>
1871
+ </xsl:for-each>
1872
+ <fo:block text-align="right" font-style="italic">
1873
+ <xsl:text> </xsl:text>
1874
+ <fo:retrieve-table-marker retrieve-class-name="table_continued"/>
1875
+ </fo:block>
1876
+ </fo:table-cell>
1877
+ </fo:table-row>
1717
1878
  </xsl:template><xsl:template match="*[local-name()='thead']" mode="process_tbody">
1718
1879
  <fo:table-body>
1719
1880
  <xsl:apply-templates/>
@@ -1721,6 +1882,13 @@
1721
1882
  </xsl:template><xsl:template match="*[local-name()='tfoot']"/><xsl:template match="*[local-name()='tfoot']" mode="process">
1722
1883
  <xsl:apply-templates/>
1723
1884
  </xsl:template><xsl:template name="insertTableFooter">
1885
+ <xsl:param name="cols-count"/>
1886
+ <xsl:if test="../*[local-name()='tfoot']">
1887
+ <fo:table-footer>
1888
+ <xsl:apply-templates select="../*[local-name()='tfoot']" mode="process"/>
1889
+ </fo:table-footer>
1890
+ </xsl:if>
1891
+ </xsl:template><xsl:template name="insertTableFooter2">
1724
1892
  <xsl:param name="cols-count"/>
1725
1893
  <xsl:variable name="isNoteOrFnExist" select="../*[local-name()='note'] or ..//*[local-name()='fn'][local-name(..) != 'name']"/>
1726
1894
  <xsl:if test="../*[local-name()='tfoot'] or $isNoteOrFnExist = 'true'">
@@ -1742,11 +1910,29 @@
1742
1910
  <!-- fn will be processed inside 'note' processing -->
1743
1911
 
1744
1912
 
1913
+
1914
+
1915
+
1916
+
1745
1917
  <!-- except gb -->
1746
1918
 
1747
1919
  <xsl:apply-templates select="../*[local-name()='note']" mode="process"/>
1748
1920
 
1749
1921
 
1922
+ <!-- show Note under table in preface (ex. abstract) sections -->
1923
+ <!-- empty, because notes show at page side in main sections -->
1924
+ <!-- <xsl:if test="$namespace = 'bipm'">
1925
+ <xsl:choose>
1926
+ <xsl:when test="ancestor::*[local-name()='preface']">
1927
+ <xsl:apply-templates select="../*[local-name()='note']" mode="process"/>
1928
+ </xsl:when>
1929
+ <xsl:otherwise>
1930
+ <fo:block/>
1931
+ </xsl:otherwise>
1932
+ </xsl:choose>
1933
+ </xsl:if> -->
1934
+
1935
+
1750
1936
  <!-- horizontal row separator -->
1751
1937
 
1752
1938
 
@@ -1760,6 +1946,88 @@
1760
1946
  </fo:table-footer>
1761
1947
 
1762
1948
  </xsl:if>
1949
+ </xsl:template><xsl:template name="insertTableFooterInSeparateTable">
1950
+ <xsl:param name="table_attributes"/>
1951
+ <xsl:param name="colwidths"/>
1952
+
1953
+ <xsl:variable name="isNoteOrFnExist" select="../*[local-name()='note'] or ..//*[local-name()='fn'][local-name(..) != 'name']"/>
1954
+
1955
+ <xsl:if test="$isNoteOrFnExist = 'true'">
1956
+
1957
+ <xsl:variable name="cols-count" select="count(xalan:nodeset($colwidths)//column)"/>
1958
+
1959
+ <fo:table keep-with-previous="always">
1960
+ <xsl:for-each select="xalan:nodeset($table_attributes)/attribute">
1961
+ <xsl:choose>
1962
+ <xsl:when test="@name = 'border-top'">
1963
+ <xsl:attribute name="{@name}">0pt solid black</xsl:attribute>
1964
+ </xsl:when>
1965
+ <xsl:when test="@name = 'border'">
1966
+ <xsl:attribute name="{@name}"><xsl:value-of select="."/></xsl:attribute>
1967
+ <xsl:attribute name="border-top">0pt solid black</xsl:attribute>
1968
+ </xsl:when>
1969
+ <xsl:otherwise>
1970
+ <xsl:attribute name="{@name}"><xsl:value-of select="."/></xsl:attribute>
1971
+ </xsl:otherwise>
1972
+ </xsl:choose>
1973
+ </xsl:for-each>
1974
+
1975
+ <xsl:for-each select="xalan:nodeset($colwidths)//column">
1976
+ <xsl:choose>
1977
+ <xsl:when test=". = 1 or . = 0">
1978
+ <fo:table-column column-width="proportional-column-width(2)"/>
1979
+ </xsl:when>
1980
+ <xsl:otherwise>
1981
+ <fo:table-column column-width="proportional-column-width({.})"/>
1982
+ </xsl:otherwise>
1983
+ </xsl:choose>
1984
+ </xsl:for-each>
1985
+
1986
+ <fo:table-body>
1987
+ <fo:table-row>
1988
+ <fo:table-cell border="solid black 1pt" padding-left="1mm" padding-right="1mm" padding-top="1mm" number-columns-spanned="{$cols-count}">
1989
+
1990
+
1991
+
1992
+ <!-- fn will be processed inside 'note' processing -->
1993
+
1994
+
1995
+
1996
+
1997
+
1998
+
1999
+
2000
+ <!-- except gb -->
2001
+
2002
+ <xsl:apply-templates select="../*[local-name()='note']" mode="process"/>
2003
+
2004
+
2005
+ <!-- <xsl:if test="$namespace = 'bipm'">
2006
+ <xsl:choose>
2007
+ <xsl:when test="ancestor::*[local-name()='preface']">
2008
+ show Note under table in preface (ex. abstract) sections
2009
+ <xsl:apply-templates select="../*[local-name()='note']" mode="process"/>
2010
+ </xsl:when>
2011
+ <xsl:otherwise>
2012
+ empty, because notes show at page side in main sections
2013
+ <fo:block/>
2014
+ </xsl:otherwise>
2015
+ </xsl:choose>
2016
+ </xsl:if> -->
2017
+
2018
+
2019
+ <!-- horizontal row separator -->
2020
+
2021
+
2022
+ <!-- fn processing -->
2023
+ <xsl:call-template name="fn_display"/>
2024
+
2025
+ </fo:table-cell>
2026
+ </fo:table-row>
2027
+ </fo:table-body>
2028
+
2029
+ </fo:table>
2030
+ </xsl:if>
1763
2031
  </xsl:template><xsl:template match="*[local-name()='tbody']">
1764
2032
 
1765
2033
  <xsl:variable name="cols-count">
@@ -1777,6 +2045,8 @@
1777
2045
  </xsl:choose>
1778
2046
  </xsl:variable>
1779
2047
 
2048
+
2049
+
1780
2050
  <xsl:apply-templates select="../*[local-name()='thead']" mode="process">
1781
2051
  <xsl:with-param name="cols-count" select="$cols-count"/>
1782
2052
  </xsl:apply-templates>
@@ -1786,6 +2056,8 @@
1786
2056
  </xsl:call-template>
1787
2057
 
1788
2058
  <fo:table-body>
2059
+
2060
+
1789
2061
  <xsl:apply-templates/>
1790
2062
  <!-- <xsl:apply-templates select="../*[local-name()='tfoot']" mode="process"/> -->
1791
2063
 
@@ -1809,6 +2081,11 @@
1809
2081
  </xsl:if>
1810
2082
 
1811
2083
 
2084
+
2085
+ <!-- <xsl:if test="$namespace = 'bipm'">
2086
+ <xsl:attribute name="height">8mm</xsl:attribute>
2087
+ </xsl:if> -->
2088
+
1812
2089
  <xsl:apply-templates/>
1813
2090
  </fo:table-row>
1814
2091
  </xsl:template><xsl:template match="*[local-name()='th']">
@@ -1827,6 +2104,7 @@
1827
2104
 
1828
2105
 
1829
2106
 
2107
+
1830
2108
 
1831
2109
  <xsl:if test="ancestor::*[local-name()='sections']">
1832
2110
  <xsl:attribute name="border">solid black 0pt</xsl:attribute>
@@ -1846,6 +2124,7 @@
1846
2124
 
1847
2125
 
1848
2126
 
2127
+
1849
2128
  <xsl:if test="@colspan">
1850
2129
  <xsl:attribute name="number-columns-spanned">
1851
2130
  <xsl:value-of select="@colspan"/>
@@ -1856,10 +2135,22 @@
1856
2135
  <xsl:value-of select="@rowspan"/>
1857
2136
  </xsl:attribute>
1858
2137
  </xsl:if>
2138
+ <xsl:call-template name="display-align"/>
1859
2139
  <fo:block>
1860
2140
  <xsl:apply-templates/>
1861
2141
  </fo:block>
1862
2142
  </fo:table-cell>
2143
+ </xsl:template><xsl:template name="display-align">
2144
+ <xsl:if test="@valign">
2145
+ <xsl:attribute name="display-align">
2146
+ <xsl:choose>
2147
+ <xsl:when test="@valign = 'top'">before</xsl:when>
2148
+ <xsl:when test="@valign = 'middle'">center</xsl:when>
2149
+ <xsl:when test="@valign = 'bottom'">after</xsl:when>
2150
+ <xsl:otherwise>before</xsl:otherwise>
2151
+ </xsl:choose>
2152
+ </xsl:attribute>
2153
+ </xsl:if>
1863
2154
  </xsl:template><xsl:template match="*[local-name()='td']">
1864
2155
  <fo:table-cell text-align="{@align}" display-align="center" border="solid black 1pt" padding-left="1mm">
1865
2156
  <xsl:attribute name="text-align">
@@ -1873,7 +2164,8 @@
1873
2164
 
1874
2165
 
1875
2166
 
1876
-
2167
+
2168
+
1877
2169
 
1878
2170
 
1879
2171
 
@@ -1885,6 +2177,7 @@
1885
2177
 
1886
2178
 
1887
2179
 
2180
+
1888
2181
  <xsl:if test="@colspan">
1889
2182
  <xsl:attribute name="number-columns-spanned">
1890
2183
  <xsl:value-of select="@colspan"/>
@@ -1895,8 +2188,8 @@
1895
2188
  <xsl:value-of select="@rowspan"/>
1896
2189
  </xsl:attribute>
1897
2190
  </xsl:if>
1898
- <fo:block>
1899
-
2191
+ <xsl:call-template name="display-align"/>
2192
+ <fo:block>
1900
2193
  <xsl:apply-templates/>
1901
2194
  </fo:block>
1902
2195
  </fo:table-cell>
@@ -1908,6 +2201,8 @@
1908
2201
 
1909
2202
 
1910
2203
 
2204
+
2205
+
1911
2206
  <fo:inline padding-right="2mm">
1912
2207
 
1913
2208
 
@@ -1922,10 +2217,11 @@
1922
2217
  </fo:inline> -->
1923
2218
  </xsl:if>
1924
2219
 
1925
-
2220
+
1926
2221
  <xsl:apply-templates select="*[local-name() = 'name']" mode="presentation"/>
1927
2222
 
1928
2223
  </fo:inline>
2224
+
1929
2225
  <xsl:apply-templates mode="process"/>
1930
2226
  </fo:block>
1931
2227
 
@@ -1949,6 +2245,7 @@
1949
2245
 
1950
2246
 
1951
2247
 
2248
+
1952
2249
  <fo:inline font-size="80%" padding-right="5mm" id="{@id}">
1953
2250
 
1954
2251
  <xsl:attribute name="vertical-align">super</xsl:attribute>
@@ -1958,12 +2255,15 @@
1958
2255
 
1959
2256
 
1960
2257
 
2258
+
1961
2259
  <xsl:value-of select="@reference"/>
1962
2260
 
2261
+
1963
2262
  </fo:inline>
1964
2263
  <fo:inline>
1965
2264
 
1966
- <xsl:apply-templates/>
2265
+ <!-- <xsl:apply-templates /> -->
2266
+ <xsl:copy-of select="./node()"/>
1967
2267
  </fo:inline>
1968
2268
  </fo:block>
1969
2269
  </xsl:if>
@@ -2000,7 +2300,20 @@
2000
2300
  <xsl:variable name="following_dl_colwidths">
2001
2301
  <xsl:if test="*[local-name() = 'dl']"><!-- if there is a 'dl', then set the same columns width as for 'dl' -->
2002
2302
  <xsl:variable name="html-table">
2003
- <xsl:variable name="ns" select="substring-before(name(/*), '-')"/>
2303
+ <xsl:variable name="doc_ns">
2304
+
2305
+ </xsl:variable>
2306
+ <xsl:variable name="ns">
2307
+ <xsl:choose>
2308
+ <xsl:when test="normalize-space($doc_ns) != ''">
2309
+ <xsl:value-of select="normalize-space($doc_ns)"/>
2310
+ </xsl:when>
2311
+ <xsl:otherwise>
2312
+ <xsl:value-of select="substring-before(name(/*), '-')"/>
2313
+ </xsl:otherwise>
2314
+ </xsl:choose>
2315
+ </xsl:variable>
2316
+ <!-- <xsl:variable name="ns" select="substring-before(name(/*), '-')"/> -->
2004
2317
  <xsl:element name="{$ns}:table">
2005
2318
  <xsl:for-each select="*[local-name() = 'dl'][1]">
2006
2319
  <tbody>
@@ -2065,7 +2378,8 @@
2065
2378
  <xsl:attribute name="margin-bottom">0</xsl:attribute>
2066
2379
  </xsl:if>
2067
2380
 
2068
- <xsl:apply-templates/>
2381
+ <!-- <xsl:apply-templates /> -->
2382
+ <xsl:copy-of select="./node()"/>
2069
2383
  </fo:block>
2070
2384
  </fo:table-cell>
2071
2385
  </fo:table-row>
@@ -2083,9 +2397,13 @@
2083
2397
 
2084
2398
 
2085
2399
 
2400
+
2401
+
2086
2402
  <fo:basic-link internal-destination="{@reference}_{ancestor::*[@id][1]/@id}" fox:alt-text="{@reference}"> <!-- @reference | ancestor::*[local-name()='clause'][1]/@id-->
2087
2403
 
2404
+
2088
2405
  <xsl:value-of select="@reference"/>
2406
+
2089
2407
  </fo:basic-link>
2090
2408
  </fo:inline>
2091
2409
  </xsl:template><xsl:template match="*[local-name()='fn']/*[local-name()='p']">
@@ -2093,115 +2411,142 @@
2093
2411
  <xsl:apply-templates/>
2094
2412
  </fo:inline>
2095
2413
  </xsl:template><xsl:template match="*[local-name()='dl']">
2096
- <xsl:variable name="parent" select="local-name(..)"/>
2097
-
2098
- <xsl:variable name="key_iso">
2099
- <!-- and (not(../@class) or ../@class !='pseudocode') -->
2100
- </xsl:variable>
2101
-
2102
- <xsl:choose>
2103
- <xsl:when test="$parent = 'formula' and count(*[local-name()='dt']) = 1"> <!-- only one component -->
2104
-
2105
-
2106
- <fo:block margin-bottom="12pt" text-align="left">
2107
-
2108
- <xsl:variable name="title-where">
2109
- <xsl:call-template name="getTitle">
2110
- <xsl:with-param name="name" select="'title-where'"/>
2111
- </xsl:call-template>
2112
- </xsl:variable>
2113
- <xsl:value-of select="$title-where"/><xsl:text> </xsl:text>
2114
- <xsl:apply-templates select="*[local-name()='dt']/*"/>
2115
- <xsl:text/>
2116
- <xsl:apply-templates select="*[local-name()='dd']/*" mode="inline"/>
2117
- </fo:block>
2118
-
2119
- </xsl:when>
2120
- <xsl:when test="$parent = 'formula'"> <!-- a few components -->
2121
- <fo:block margin-bottom="12pt" text-align="left">
2122
-
2123
-
2124
-
2125
-
2126
- <xsl:variable name="title-where">
2127
- <xsl:call-template name="getTitle">
2128
- <xsl:with-param name="name" select="'title-where'"/>
2129
- </xsl:call-template>
2130
- </xsl:variable>
2131
- <xsl:value-of select="$title-where"/>
2132
- </fo:block>
2133
- </xsl:when>
2134
- <xsl:when test="$parent = 'figure' and (not(../@class) or ../@class !='pseudocode')">
2135
- <fo:block font-weight="bold" text-align="left" margin-bottom="12pt" keep-with-next="always">
2136
-
2137
-
2138
-
2139
- <xsl:variable name="title-key">
2140
- <xsl:call-template name="getTitle">
2141
- <xsl:with-param name="name" select="'title-key'"/>
2142
- </xsl:call-template>
2143
- </xsl:variable>
2144
- <xsl:value-of select="$title-key"/>
2145
- </fo:block>
2146
- </xsl:when>
2147
- </xsl:choose>
2148
-
2149
- <!-- a few components -->
2150
- <xsl:if test="not($parent = 'formula' and count(*[local-name()='dt']) = 1)">
2151
- <fo:block>
2414
+ <fo:block-container margin-left="0mm">
2415
+ <xsl:if test="parent::*[local-name() = 'note']">
2416
+ <xsl:attribute name="margin-left">
2417
+ <xsl:choose>
2418
+ <xsl:when test="not(ancestor::*[local-name() = 'table'])"><xsl:value-of select="$note-body-indent"/></xsl:when>
2419
+ <xsl:otherwise><xsl:value-of select="$note-body-indent-table"/></xsl:otherwise>
2420
+ </xsl:choose>
2421
+ </xsl:attribute>
2152
2422
 
2423
+ </xsl:if>
2424
+ <fo:block-container margin-left="0mm">
2425
+
2426
+ <xsl:variable name="parent" select="local-name(..)"/>
2153
2427
 
2428
+ <xsl:variable name="key_iso">
2429
+ <!-- and (not(../@class) or ../@class !='pseudocode') -->
2430
+ </xsl:variable>
2154
2431
 
2432
+ <xsl:choose>
2433
+ <xsl:when test="$parent = 'formula' and count(*[local-name()='dt']) = 1"> <!-- only one component -->
2434
+
2435
+
2436
+ <fo:block margin-bottom="12pt" text-align="left">
2437
+
2438
+ <xsl:variable name="title-where">
2439
+ <xsl:call-template name="getTitle">
2440
+ <xsl:with-param name="name" select="'title-where'"/>
2441
+ </xsl:call-template>
2442
+ </xsl:variable>
2443
+ <xsl:value-of select="$title-where"/><xsl:text> </xsl:text>
2444
+ <xsl:apply-templates select="*[local-name()='dt']/*"/>
2445
+ <xsl:text/>
2446
+ <xsl:apply-templates select="*[local-name()='dd']/*" mode="inline"/>
2447
+ </fo:block>
2448
+
2449
+ </xsl:when>
2450
+ <xsl:when test="$parent = 'formula'"> <!-- a few components -->
2451
+ <fo:block margin-bottom="12pt" text-align="left">
2452
+
2453
+
2454
+
2455
+
2456
+ <xsl:variable name="title-where">
2457
+ <xsl:call-template name="getTitle">
2458
+ <xsl:with-param name="name" select="'title-where'"/>
2459
+ </xsl:call-template>
2460
+ </xsl:variable>
2461
+ <xsl:value-of select="$title-where"/>
2462
+ </fo:block>
2463
+ </xsl:when>
2464
+ <xsl:when test="$parent = 'figure' and (not(../@class) or ../@class !='pseudocode')">
2465
+ <fo:block font-weight="bold" text-align="left" margin-bottom="12pt" keep-with-next="always">
2466
+
2467
+
2468
+
2469
+ <xsl:variable name="title-key">
2470
+ <xsl:call-template name="getTitle">
2471
+ <xsl:with-param name="name" select="'title-key'"/>
2472
+ </xsl:call-template>
2473
+ </xsl:variable>
2474
+ <xsl:value-of select="$title-key"/>
2475
+ </fo:block>
2476
+ </xsl:when>
2477
+ </xsl:choose>
2155
2478
 
2156
- <fo:block>
2157
-
2158
-
2159
-
2160
-
2161
- <fo:table width="95%" table-layout="fixed">
2479
+ <!-- a few components -->
2480
+ <xsl:if test="not($parent = 'formula' and count(*[local-name()='dt']) = 1)">
2481
+ <fo:block>
2162
2482
 
2163
- <xsl:choose>
2164
- <xsl:when test="normalize-space($key_iso) = 'true' and $parent = 'formula'">
2165
- <!-- <xsl:attribute name="font-size">11pt</xsl:attribute> -->
2166
- </xsl:when>
2167
- <xsl:when test="normalize-space($key_iso) = 'true'">
2168
- <xsl:attribute name="font-size">10pt</xsl:attribute>
2483
+
2484
+
2485
+
2486
+ <fo:block>
2487
+
2488
+
2489
+
2490
+
2491
+ <fo:table width="95%" table-layout="fixed">
2169
2492
 
2170
- </xsl:when>
2171
- </xsl:choose>
2172
- <!-- create virtual html table for dl/[dt and dd] -->
2173
- <xsl:variable name="html-table">
2174
- <xsl:variable name="ns" select="substring-before(name(/*), '-')"/>
2175
- <xsl:element name="{$ns}:table">
2176
- <tbody>
2177
- <xsl:apply-templates mode="dl"/>
2178
- </tbody>
2179
- </xsl:element>
2180
- </xsl:variable>
2181
- <!-- html-table<xsl:copy-of select="$html-table"/> -->
2182
- <xsl:variable name="colwidths">
2183
- <xsl:call-template name="calculate-column-widths">
2184
- <xsl:with-param name="cols-count" select="2"/>
2185
- <xsl:with-param name="table" select="$html-table"/>
2186
- </xsl:call-template>
2187
- </xsl:variable>
2188
- <!-- colwidths=<xsl:value-of select="$colwidths"/> -->
2189
- <xsl:variable name="maxlength_dt">
2190
- <xsl:call-template name="getMaxLength_dt"/>
2191
- </xsl:variable>
2192
- <xsl:call-template name="setColumnWidth_dl">
2193
- <xsl:with-param name="colwidths" select="$colwidths"/>
2194
- <xsl:with-param name="maxlength_dt" select="$maxlength_dt"/>
2195
- </xsl:call-template>
2196
- <fo:table-body>
2197
- <xsl:apply-templates>
2198
- <xsl:with-param name="key_iso" select="normalize-space($key_iso)"/>
2199
- </xsl:apply-templates>
2200
- </fo:table-body>
2201
- </fo:table>
2202
- </fo:block>
2203
- </fo:block>
2204
- </xsl:if>
2493
+ <xsl:choose>
2494
+ <xsl:when test="normalize-space($key_iso) = 'true' and $parent = 'formula'">
2495
+ <!-- <xsl:attribute name="font-size">11pt</xsl:attribute> -->
2496
+ </xsl:when>
2497
+ <xsl:when test="normalize-space($key_iso) = 'true'">
2498
+ <xsl:attribute name="font-size">10pt</xsl:attribute>
2499
+
2500
+ </xsl:when>
2501
+ </xsl:choose>
2502
+ <!-- create virtual html table for dl/[dt and dd] -->
2503
+ <xsl:variable name="html-table">
2504
+ <xsl:variable name="doc_ns">
2505
+
2506
+ </xsl:variable>
2507
+ <xsl:variable name="ns">
2508
+ <xsl:choose>
2509
+ <xsl:when test="normalize-space($doc_ns) != ''">
2510
+ <xsl:value-of select="normalize-space($doc_ns)"/>
2511
+ </xsl:when>
2512
+ <xsl:otherwise>
2513
+ <xsl:value-of select="substring-before(name(/*), '-')"/>
2514
+ </xsl:otherwise>
2515
+ </xsl:choose>
2516
+ </xsl:variable>
2517
+ <!-- <xsl:variable name="ns" select="substring-before(name(/*), '-')"/> -->
2518
+ <xsl:element name="{$ns}:table">
2519
+ <tbody>
2520
+ <xsl:apply-templates mode="dl"/>
2521
+ </tbody>
2522
+ </xsl:element>
2523
+ </xsl:variable>
2524
+ <!-- html-table<xsl:copy-of select="$html-table"/> -->
2525
+ <xsl:variable name="colwidths">
2526
+ <xsl:call-template name="calculate-column-widths">
2527
+ <xsl:with-param name="cols-count" select="2"/>
2528
+ <xsl:with-param name="table" select="$html-table"/>
2529
+ </xsl:call-template>
2530
+ </xsl:variable>
2531
+ <!-- colwidths=<xsl:value-of select="$colwidths"/> -->
2532
+ <xsl:variable name="maxlength_dt">
2533
+ <xsl:call-template name="getMaxLength_dt"/>
2534
+ </xsl:variable>
2535
+ <xsl:call-template name="setColumnWidth_dl">
2536
+ <xsl:with-param name="colwidths" select="$colwidths"/>
2537
+ <xsl:with-param name="maxlength_dt" select="$maxlength_dt"/>
2538
+ </xsl:call-template>
2539
+ <fo:table-body>
2540
+ <xsl:apply-templates>
2541
+ <xsl:with-param name="key_iso" select="normalize-space($key_iso)"/>
2542
+ </xsl:apply-templates>
2543
+ </fo:table-body>
2544
+ </fo:table>
2545
+ </fo:block>
2546
+ </fo:block>
2547
+ </xsl:if>
2548
+ </fo:block-container>
2549
+ </fo:block-container>
2205
2550
  </xsl:template><xsl:template name="setColumnWidth_dl">
2206
2551
  <xsl:param name="colwidths"/>
2207
2552
  <xsl:param name="maxlength_dt"/>
@@ -2298,6 +2643,7 @@
2298
2643
  <xsl:param name="key_iso"/>
2299
2644
 
2300
2645
  <fo:table-row>
2646
+
2301
2647
  <fo:table-cell>
2302
2648
 
2303
2649
  <fo:block margin-top="6pt">
@@ -2312,6 +2658,7 @@
2312
2658
 
2313
2659
 
2314
2660
 
2661
+
2315
2662
  <xsl:apply-templates/>
2316
2663
  <!-- <xsl:if test="$namespace = 'gb'">
2317
2664
  <xsl:if test="ancestor::*[local-name()='formula']">
@@ -2323,14 +2670,36 @@
2323
2670
  <fo:table-cell>
2324
2671
  <fo:block>
2325
2672
 
2326
-
2673
+ <!-- <xsl:if test="$namespace = 'nist-cswp' or $namespace = 'nist-sp'">
2674
+ <xsl:if test="local-name(*[1]) != 'stem'">
2675
+ <xsl:apply-templates select="following-sibling::*[local-name()='dd'][1]" mode="process"/>
2676
+ </xsl:if>
2677
+ </xsl:if> -->
2327
2678
 
2328
2679
  <xsl:apply-templates select="following-sibling::*[local-name()='dd'][1]" mode="process"/>
2329
2680
 
2330
2681
  </fo:block>
2331
2682
  </fo:table-cell>
2332
2683
  </fo:table-row>
2333
-
2684
+ <!-- <xsl:if test="$namespace = 'nist-cswp' or $namespace = 'nist-sp'">
2685
+ <xsl:if test="local-name(*[1]) = 'stem'">
2686
+ <fo:table-row>
2687
+ <fo:table-cell>
2688
+ <fo:block margin-top="6pt">
2689
+ <xsl:if test="normalize-space($key_iso) = 'true'">
2690
+ <xsl:attribute name="margin-top">0</xsl:attribute>
2691
+ </xsl:if>
2692
+ <xsl:text>&#xA0;</xsl:text>
2693
+ </fo:block>
2694
+ </fo:table-cell>
2695
+ <fo:table-cell>
2696
+ <fo:block>
2697
+ <xsl:apply-templates select="following-sibling::*[local-name()='dd'][1]" mode="process"/>
2698
+ </fo:block>
2699
+ </fo:table-cell>
2700
+ </fo:table-row>
2701
+ </xsl:if>
2702
+ </xsl:if> -->
2334
2703
  </xsl:template><xsl:template match="*[local-name()='dd']" mode="dl"/><xsl:template match="*[local-name()='dd']" mode="dl_process">
2335
2704
  <xsl:apply-templates/>
2336
2705
  </xsl:template><xsl:template match="*[local-name()='dd']"/><xsl:template match="*[local-name()='dd']" mode="process">
@@ -2355,6 +2724,31 @@
2355
2724
  </fo:inline>
2356
2725
  </xsl:template><xsl:template match="*[local-name()='tt']">
2357
2726
  <fo:inline xsl:use-attribute-sets="tt-style">
2727
+ <xsl:variable name="_font-size">
2728
+
2729
+
2730
+
2731
+
2732
+
2733
+
2734
+
2735
+
2736
+
2737
+
2738
+
2739
+
2740
+
2741
+
2742
+ </xsl:variable>
2743
+ <xsl:variable name="font-size" select="normalize-space($_font-size)"/>
2744
+ <xsl:if test="$font-size != ''">
2745
+ <xsl:attribute name="font-size">
2746
+ <xsl:choose>
2747
+ <xsl:when test="ancestor::*[local-name()='note']"><xsl:value-of select="$font-size * 0.91"/>pt</xsl:when>
2748
+ <xsl:otherwise><xsl:value-of select="$font-size"/>pt</xsl:otherwise>
2749
+ </xsl:choose>
2750
+ </xsl:attribute>
2751
+ </xsl:if>
2358
2752
  <xsl:apply-templates/>
2359
2753
  </fo:inline>
2360
2754
  </xsl:template><xsl:template match="*[local-name()='del']">
@@ -2680,11 +3074,24 @@
2680
3074
  <xsl:value-of select="java:toUpperCase(java:java.lang.String.new(substring($str, 1, 1)))"/>
2681
3075
  <xsl:value-of select="substring($str, 2)"/>
2682
3076
  </xsl:template><xsl:template match="mathml:math">
2683
- <fo:inline font-family="STIX2Math">
2684
- <fo:instream-foreign-object fox:alt-text="Math">
2685
- <xsl:copy-of select="."/>
2686
- </fo:instream-foreign-object>
3077
+ <fo:inline font-family="STIX Two Math"> <!-- -->
3078
+ <xsl:variable name="mathml">
3079
+ <xsl:apply-templates select="." mode="mathml"/>
3080
+ </xsl:variable>
3081
+ <fo:instream-foreign-object fox:alt-text="Math">
3082
+ <!-- <xsl:copy-of select="."/> -->
3083
+ <xsl:copy-of select="xalan:nodeset($mathml)"/>
3084
+ </fo:instream-foreign-object>
2687
3085
  </fo:inline>
3086
+ </xsl:template><xsl:template match="@*|node()" mode="mathml">
3087
+ <xsl:copy>
3088
+ <xsl:apply-templates select="@*|node()" mode="mathml"/>
3089
+ </xsl:copy>
3090
+ </xsl:template><xsl:template match="mathml:mtext" mode="mathml">
3091
+ <xsl:copy>
3092
+ <!-- replace start and end spaces to non-break space -->
3093
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),'(^ )|( $)',' ')"/>
3094
+ </xsl:copy>
2688
3095
  </xsl:template><xsl:template match="*[local-name()='localityStack']"/><xsl:template match="*[local-name()='link']" name="link">
2689
3096
  <xsl:variable name="target">
2690
3097
  <xsl:choose>
@@ -2761,13 +3168,26 @@
2761
3168
  <xsl:apply-templates/>
2762
3169
  </xsl:template><xsl:template match="*[local-name() = 'xref']">
2763
3170
  <fo:basic-link internal-destination="{@target}" fox:alt-text="{@target}" xsl:use-attribute-sets="xref-style">
2764
-
3171
+
2765
3172
  <xsl:apply-templates/>
2766
3173
  </fo:basic-link>
2767
3174
  </xsl:template><xsl:template match="*[local-name() = 'formula']" name="formula">
2768
- <fo:block id="{@id}" xsl:use-attribute-sets="formula-style">
2769
- <xsl:apply-templates/>
2770
- </fo:block>
3175
+ <fo:block-container margin-left="0mm">
3176
+ <xsl:if test="parent::*[local-name() = 'note']">
3177
+ <xsl:attribute name="margin-left">
3178
+ <xsl:choose>
3179
+ <xsl:when test="not(ancestor::*[local-name() = 'table'])"><xsl:value-of select="$note-body-indent"/></xsl:when>
3180
+ <xsl:otherwise><xsl:value-of select="$note-body-indent-table"/></xsl:otherwise>
3181
+ </xsl:choose>
3182
+ </xsl:attribute>
3183
+
3184
+ </xsl:if>
3185
+ <fo:block-container margin-left="0mm">
3186
+ <fo:block id="{@id}" xsl:use-attribute-sets="formula-style">
3187
+ <xsl:apply-templates/>
3188
+ </fo:block>
3189
+ </fo:block-container>
3190
+ </fo:block-container>
2771
3191
  </xsl:template><xsl:template match="*[local-name() = 'formula']/*[local-name() = 'dt']/*[local-name() = 'stem']">
2772
3192
  <fo:inline>
2773
3193
  <xsl:apply-templates/>
@@ -2814,6 +3234,8 @@
2814
3234
 
2815
3235
 
2816
3236
 
3237
+
3238
+
2817
3239
  <fo:inline xsl:use-attribute-sets="note-name-style">
2818
3240
  <xsl:apply-templates select="*[local-name() = 'name']" mode="presentation"/>
2819
3241
  </fo:inline>
@@ -2840,7 +3262,9 @@
2840
3262
  </xsl:choose>
2841
3263
  </xsl:template><xsl:template match="*[local-name() = 'termnote']">
2842
3264
  <fo:block id="{@id}" xsl:use-attribute-sets="termnote-style">
2843
- <xsl:apply-templates select="*[local-name() = 'name']" mode="presentation"/>
3265
+ <fo:inline xsl:use-attribute-sets="termnote-name-style">
3266
+ <xsl:apply-templates select="*[local-name() = 'name']" mode="presentation"/>
3267
+ </fo:inline>
2844
3268
  <xsl:apply-templates/>
2845
3269
  </fo:block>
2846
3270
  </xsl:template><xsl:template match="*[local-name() = 'note']/*[local-name() = 'name'] | *[local-name() = 'termnote']/*[local-name() = 'name']"/><xsl:template match="*[local-name() = 'note']/*[local-name() = 'name']" mode="presentation">
@@ -2944,15 +3368,109 @@
2944
3368
 
2945
3369
  <fo:external-graphic src="{$src}" fox:alt-text="Image {@alt}" xsl:use-attribute-sets="image-graphic-style"/>
2946
3370
  </fo:block>
2947
- </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">
3371
+ </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">
2948
3372
  <xsl:apply-templates mode="contents"/>
2949
3373
  <xsl:text> </xsl:text>
2950
- </xsl:template><xsl:template match="text()" mode="contents">
3374
+ </xsl:template><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="bookmarks">
3375
+ <xsl:apply-templates mode="bookmarks"/>
3376
+ <xsl:text> </xsl:text>
3377
+ </xsl:template><xsl:template match="*[local-name() = 'name']/text()" mode="contents" priority="2">
3378
+ <xsl:value-of select="."/>
3379
+ </xsl:template><xsl:template match="*[local-name() = 'name']/text()" mode="bookmarks" priority="2">
2951
3380
  <xsl:value-of select="."/>
2952
- </xsl:template><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'name'] | *[local-name() = 'image']/*[local-name() = 'name']" mode="presentation">
3381
+ </xsl:template><xsl:template match="node()" mode="contents">
3382
+ <xsl:apply-templates mode="contents"/>
3383
+ </xsl:template><xsl:template match="node()" mode="bookmarks">
3384
+ <xsl:apply-templates mode="bookmarks"/>
3385
+ </xsl:template><xsl:template match="*[local-name() = 'stem']" mode="contents">
3386
+ <xsl:apply-templates select="."/>
3387
+ </xsl:template><xsl:template match="*[local-name() = 'stem']" mode="bookmarks">
3388
+ <xsl:apply-templates mode="bookmarks"/>
3389
+ </xsl:template><xsl:template name="addBookmarks">
3390
+ <xsl:param name="contents"/>
3391
+ <xsl:if test="xalan:nodeset($contents)//item">
3392
+ <fo:bookmark-tree>
3393
+ <xsl:choose>
3394
+ <xsl:when test="xalan:nodeset($contents)/doc">
3395
+ <xsl:choose>
3396
+ <xsl:when test="count(xalan:nodeset($contents)/doc) &gt; 1">
3397
+ <xsl:for-each select="xalan:nodeset($contents)/doc">
3398
+ <fo:bookmark internal-destination="{contents/item[1]/@id}" starting-state="hide">
3399
+ <fo:bookmark-title>
3400
+ <xsl:variable name="bookmark-title_">
3401
+ <xsl:call-template name="getLangVersion">
3402
+ <xsl:with-param name="lang" select="@lang"/>
3403
+ </xsl:call-template>
3404
+ </xsl:variable>
3405
+ <xsl:choose>
3406
+ <xsl:when test="normalize-space($bookmark-title_) != ''">
3407
+ <xsl:value-of select="normalize-space($bookmark-title_)"/>
3408
+ </xsl:when>
3409
+ <xsl:otherwise>
3410
+ <xsl:choose>
3411
+ <xsl:when test="@lang = 'en'">English</xsl:when>
3412
+ <xsl:when test="@lang = 'fr'">Français</xsl:when>
3413
+ <xsl:when test="@lang = 'de'">Deutsche</xsl:when>
3414
+ <xsl:otherwise><xsl:value-of select="@lang"/> version</xsl:otherwise>
3415
+ </xsl:choose>
3416
+ </xsl:otherwise>
3417
+ </xsl:choose>
3418
+ </fo:bookmark-title>
3419
+ <xsl:apply-templates select="contents/item" mode="bookmark"/>
3420
+ </fo:bookmark>
3421
+
3422
+ </xsl:for-each>
3423
+ </xsl:when>
3424
+ <xsl:otherwise>
3425
+ <xsl:for-each select="xalan:nodeset($contents)/doc">
3426
+ <xsl:apply-templates select="contents/item" mode="bookmark"/>
3427
+ </xsl:for-each>
3428
+ </xsl:otherwise>
3429
+ </xsl:choose>
3430
+ </xsl:when>
3431
+ <xsl:otherwise>
3432
+ <xsl:apply-templates select="xalan:nodeset($contents)/contents/item" mode="bookmark"/>
3433
+ </xsl:otherwise>
3434
+ </xsl:choose>
3435
+
3436
+
3437
+
3438
+
3439
+
3440
+
3441
+
3442
+
3443
+ </fo:bookmark-tree>
3444
+ </xsl:if>
3445
+ </xsl:template><xsl:template name="getLangVersion">
3446
+ <xsl:param name="lang"/>
3447
+ <xsl:choose>
3448
+ <xsl:when test="$lang = 'en'">
3449
+
3450
+
3451
+ </xsl:when>
3452
+ <xsl:when test="$lang = 'fr'">
3453
+
3454
+
3455
+ </xsl:when>
3456
+ <xsl:when test="$lang = 'de'">Deutsche</xsl:when>
3457
+ <xsl:otherwise><xsl:value-of select="$lang"/> version</xsl:otherwise>
3458
+ </xsl:choose>
3459
+ </xsl:template><xsl:template match="item" mode="bookmark">
3460
+ <fo:bookmark internal-destination="{@id}" starting-state="hide">
3461
+ <fo:bookmark-title>
3462
+ <xsl:if test="@section != ''">
3463
+ <xsl:value-of select="@section"/>
3464
+ <xsl:text> </xsl:text>
3465
+ </xsl:if>
3466
+ <xsl:value-of select="normalize-space(title)"/>
3467
+ </fo:bookmark-title>
3468
+ <xsl:apply-templates mode="bookmark"/>
3469
+ </fo:bookmark>
3470
+ </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">
2953
3471
  <xsl:if test="normalize-space() != ''">
2954
3472
  <fo:block xsl:use-attribute-sets="figure-name-style">
2955
-
3473
+
2956
3474
  <xsl:apply-templates/>
2957
3475
  </fo:block>
2958
3476
  </xsl:if>
@@ -3007,7 +3525,7 @@
3007
3525
  <xsl:apply-templates/>
3008
3526
  </xsl:otherwise>
3009
3527
  </xsl:choose>
3010
- </xsl:template><xsl:template match="*[local-name() = 'fn']" mode="contents"/><xsl:template match="*[local-name() = 'fn']" mode="contents_item"/><xsl:template match="*[local-name() = 'tab']" mode="contents_item">
3528
+ </xsl:template><xsl:template match="*[local-name() = 'fn']" mode="contents"/><xsl:template match="*[local-name() = 'fn']" mode="bookmarks"/><xsl:template match="*[local-name() = 'fn']" mode="contents_item"/><xsl:template match="*[local-name() = 'tab']" mode="contents_item">
3011
3529
  <xsl:text> </xsl:text>
3012
3530
  </xsl:template><xsl:template match="*[local-name() = 'strong']" mode="contents_item">
3013
3531
  <xsl:copy>
@@ -3016,21 +3534,61 @@
3016
3534
  </xsl:template><xsl:template match="*[local-name() = 'br']" mode="contents_item">
3017
3535
  <xsl:text> </xsl:text>
3018
3536
  </xsl:template><xsl:template match="*[local-name()='sourcecode']" name="sourcecode">
3019
- <fo:block xsl:use-attribute-sets="sourcecode-style">
3020
- <xsl:apply-templates/>
3021
- </fo:block>
3022
- <xsl:apply-templates select="*[local-name()='name']" mode="presentation"/>
3023
- </xsl:template><xsl:template match="*[local-name()='sourcecode']/text()">
3537
+
3538
+ <fo:block-container margin-left="0mm">
3539
+ <xsl:if test="parent::*[local-name() = 'note']">
3540
+ <xsl:attribute name="margin-left">
3541
+ <xsl:choose>
3542
+ <xsl:when test="not(ancestor::*[local-name() = 'table'])"><xsl:value-of select="$note-body-indent"/></xsl:when>
3543
+ <xsl:otherwise><xsl:value-of select="$note-body-indent-table"/></xsl:otherwise>
3544
+ </xsl:choose>
3545
+ </xsl:attribute>
3546
+
3547
+ </xsl:if>
3548
+ <fo:block-container margin-left="0mm">
3549
+
3550
+ <fo:block xsl:use-attribute-sets="sourcecode-style">
3551
+ <xsl:variable name="_font-size">
3552
+
3553
+
3554
+
3555
+
3556
+
3557
+
3558
+
3559
+
3560
+
3561
+
3562
+
3563
+
3564
+
3565
+ 10
3566
+ </xsl:variable>
3567
+ <xsl:variable name="font-size" select="normalize-space($_font-size)"/>
3568
+ <xsl:if test="$font-size != ''">
3569
+ <xsl:attribute name="font-size">
3570
+ <xsl:choose>
3571
+ <xsl:when test="ancestor::*[local-name()='note']"><xsl:value-of select="$font-size * 0.91"/>pt</xsl:when>
3572
+ <xsl:otherwise><xsl:value-of select="$font-size"/>pt</xsl:otherwise>
3573
+ </xsl:choose>
3574
+ </xsl:attribute>
3575
+ </xsl:if>
3576
+ <xsl:apply-templates/>
3577
+ </fo:block>
3578
+ <xsl:apply-templates select="*[local-name()='name']" mode="presentation"/>
3579
+
3580
+ </fo:block-container>
3581
+ </fo:block-container>
3582
+ </xsl:template><xsl:template match="*[local-name()='sourcecode']/text()" priority="2">
3024
3583
  <xsl:variable name="text">
3025
3584
  <xsl:call-template name="add-zero-spaces-equal"/>
3026
3585
  </xsl:variable>
3027
- <xsl:call-template name="add-zero-spaces">
3586
+ <xsl:call-template name="add-zero-spaces-java">
3028
3587
  <xsl:with-param name="text" select="$text"/>
3029
3588
  </xsl:call-template>
3030
3589
  </xsl:template><xsl:template match="*[local-name() = 'sourcecode']/*[local-name() = 'name']"/><xsl:template match="*[local-name() = 'sourcecode']/*[local-name() = 'name']" mode="presentation">
3031
3590
  <xsl:if test="normalize-space() != ''">
3032
- <fo:block xsl:use-attribute-sets="sourcecode-name-style">
3033
-
3591
+ <fo:block xsl:use-attribute-sets="sourcecode-name-style">
3034
3592
  <xsl:apply-templates/>
3035
3593
  </fo:block>
3036
3594
  </xsl:if>
@@ -3100,22 +3658,30 @@
3100
3658
  </fo:block>
3101
3659
  </xsl:template><xsl:template match="*[local-name() = 'table'][@class = 'recommendation' or @class='requirement' or @class='permission']">
3102
3660
  <fo:block-container margin-left="0mm" margin-right="0mm" margin-bottom="12pt">
3661
+ <xsl:if test="ancestor::*[local-name() = 'table'][@class = 'recommendation' or @class='requirement' or @class='permission']">
3662
+ <xsl:attribute name="margin-bottom">0pt</xsl:attribute>
3663
+ </xsl:if>
3103
3664
  <fo:block-container margin-left="0mm" margin-right="0mm">
3104
- <fo:table id="{@id}" table-layout="fixed" width="100%" border="0pt solid black">
3665
+ <fo:table id="{@id}" table-layout="fixed" width="100%"> <!-- border="1pt solid black" -->
3666
+ <xsl:if test="ancestor::*[local-name() = 'table'][@class = 'recommendation' or @class='requirement' or @class='permission']">
3667
+ <!-- <xsl:attribute name="border">0.5pt solid black</xsl:attribute> -->
3668
+ </xsl:if>
3105
3669
  <xsl:variable name="simple-table">
3106
3670
  <xsl:call-template name="getSimpleTable"/>
3107
3671
  </xsl:variable>
3108
3672
  <xsl:variable name="cols-count" select="count(xalan:nodeset($simple-table)//tr[1]/td)"/>
3109
3673
  <xsl:if test="$cols-count = 2 and not(ancestor::*[local-name()='table'])">
3110
- <fo:table-column column-width="35mm"/>
3111
- <fo:table-column column-width="115mm"/>
3674
+ <!-- <fo:table-column column-width="35mm"/>
3675
+ <fo:table-column column-width="115mm"/> -->
3676
+ <fo:table-column column-width="30%"/>
3677
+ <fo:table-column column-width="70%"/>
3112
3678
  </xsl:if>
3113
3679
  <xsl:apply-templates mode="requirement"/>
3114
3680
  </fo:table>
3115
3681
  <!-- fn processing -->
3116
3682
  <xsl:if test=".//*[local-name() = 'fn']">
3117
3683
  <xsl:for-each select="*[local-name() = 'tbody']">
3118
- <fo:block font-size="90%" border-bottom="1.pt solid black">
3684
+ <fo:block font-size="90%" border-bottom="1pt solid black">
3119
3685
  <xsl:call-template name="fn_display"/>
3120
3686
  </fo:block>
3121
3687
  </xsl:for-each>
@@ -3131,17 +3697,27 @@
3131
3697
  <xsl:apply-templates mode="requirement"/>
3132
3698
  </fo:table-body>
3133
3699
  </xsl:template><xsl:template match="*[local-name()='tr']" mode="requirement">
3134
- <fo:table-row>
3700
+ <fo:table-row height="7mm" border-bottom="0.5pt solid grey">
3701
+ <xsl:if test="parent::*[local-name()='thead']"> <!-- and not(ancestor::*[local-name() = 'table'][@class = 'recommendation' or @class='requirement' or @class='permission']) -->
3702
+ <!-- <xsl:attribute name="border">1pt solid black</xsl:attribute> -->
3703
+ <xsl:attribute name="background-color">rgb(33, 55, 92)</xsl:attribute>
3704
+ </xsl:if>
3705
+ <xsl:if test="starts-with(*[local-name()='td'][1], 'Requirement ')">
3706
+ <xsl:attribute name="background-color">rgb(252, 246, 222)</xsl:attribute>
3707
+ </xsl:if>
3708
+ <xsl:if test="starts-with(*[local-name()='td'][1], 'Recommendation ')">
3709
+ <xsl:attribute name="background-color">rgb(233, 235, 239)</xsl:attribute>
3710
+ </xsl:if>
3135
3711
  <xsl:apply-templates mode="requirement"/>
3136
3712
  </fo:table-row>
3137
3713
  </xsl:template><xsl:template match="*[local-name()='th']" mode="requirement">
3138
- <fo:table-cell text-align="{@align}">
3714
+ <fo:table-cell text-align="{@align}" display-align="center" padding="1mm" padding-left="2mm"> <!-- border="0.5pt solid black" -->
3139
3715
  <xsl:attribute name="text-align">
3140
3716
  <xsl:choose>
3141
3717
  <xsl:when test="@align">
3142
3718
  <xsl:value-of select="@align"/>
3143
3719
  </xsl:when>
3144
- <xsl:otherwise>center</xsl:otherwise>
3720
+ <xsl:otherwise>left</xsl:otherwise>
3145
3721
  </xsl:choose>
3146
3722
  </xsl:attribute>
3147
3723
  <xsl:if test="@colspan">
@@ -3154,22 +3730,27 @@
3154
3730
  <xsl:value-of select="@rowspan"/>
3155
3731
  </xsl:attribute>
3156
3732
  </xsl:if>
3733
+ <xsl:call-template name="display-align"/>
3157
3734
 
3158
- <xsl:if test="ancestor::*[local-name()='table']/@type = 'recommend'">
3735
+ <!-- <xsl:if test="ancestor::*[local-name()='table']/@type = 'recommend'">
3159
3736
  <xsl:attribute name="padding-top">0.5mm</xsl:attribute>
3160
3737
  <xsl:attribute name="background-color">rgb(165, 165, 165)</xsl:attribute>
3161
3738
  </xsl:if>
3162
3739
  <xsl:if test="ancestor::*[local-name()='table']/@type = 'recommendtest'">
3163
3740
  <xsl:attribute name="padding-top">0.5mm</xsl:attribute>
3164
3741
  <xsl:attribute name="background-color">rgb(201, 201, 201)</xsl:attribute>
3165
- </xsl:if>
3742
+ </xsl:if> -->
3166
3743
 
3167
3744
  <fo:block>
3168
3745
  <xsl:apply-templates/>
3169
3746
  </fo:block>
3170
3747
  </fo:table-cell>
3171
3748
  </xsl:template><xsl:template match="*[local-name()='td']" mode="requirement">
3172
- <fo:table-cell text-align="{@align}">
3749
+ <fo:table-cell text-align="{@align}" display-align="center" padding="1mm" padding-left="2mm"> <!-- border="0.5pt solid black" -->
3750
+ <xsl:if test="*[local-name() = 'table'][@class = 'recommendation' or @class='requirement' or @class='permission']">
3751
+ <xsl:attribute name="padding">0mm</xsl:attribute>
3752
+ <xsl:attribute name="padding-left">0mm</xsl:attribute>
3753
+ </xsl:if>
3173
3754
  <xsl:attribute name="text-align">
3174
3755
  <xsl:choose>
3175
3756
  <xsl:when test="@align">
@@ -3178,6 +3759,9 @@
3178
3759
  <xsl:otherwise>left</xsl:otherwise>
3179
3760
  </xsl:choose>
3180
3761
  </xsl:attribute>
3762
+ <xsl:if test="following-sibling::*[local-name()='td'] and not(preceding-sibling::*[local-name()='td'])">
3763
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
3764
+ </xsl:if>
3181
3765
  <xsl:if test="@colspan">
3182
3766
  <xsl:attribute name="number-columns-spanned">
3183
3767
  <xsl:value-of select="@colspan"/>
@@ -3188,25 +3772,27 @@
3188
3772
  <xsl:value-of select="@rowspan"/>
3189
3773
  </xsl:attribute>
3190
3774
  </xsl:if>
3775
+ <xsl:call-template name="display-align"/>
3191
3776
 
3192
- <xsl:if test="ancestor::*[local-name()='table']/@type = 'recommend'">
3777
+ <!-- <xsl:if test="ancestor::*[local-name()='table']/@type = 'recommend'">
3193
3778
  <xsl:attribute name="padding-left">0.5mm</xsl:attribute>
3194
- <xsl:attribute name="padding-top">0.5mm</xsl:attribute>
3195
- <xsl:if test="parent::*[local-name()='tr']/preceding-sibling::*[local-name()='tr'] and not(*[local-name()='table'])"> <!-- 2nd line and below -->
3779
+ <xsl:attribute name="padding-top">0.5mm</xsl:attribute>
3780
+ <xsl:if test="parent::*[local-name()='tr']/preceding-sibling::*[local-name()='tr'] and not(*[local-name()='table'])">
3196
3781
  <xsl:attribute name="background-color">rgb(201, 201, 201)</xsl:attribute>
3197
3782
  </xsl:if>
3198
- </xsl:if>
3783
+ </xsl:if> -->
3784
+ <!-- 2nd line and below -->
3199
3785
 
3200
3786
  <fo:block>
3201
3787
  <xsl:apply-templates/>
3202
3788
  </fo:block>
3203
3789
  </fo:table-cell>
3204
3790
  </xsl:template><xsl:template match="*[local-name() = 'p'][@class='RecommendationTitle' or @class = 'RecommendationTestTitle']" priority="2">
3205
- <fo:block font-size="11pt" font-weight="bold" text-align="center" margin-bottom="4pt">
3791
+ <fo:block font-size="11pt" color="rgb(237, 193, 35)"> <!-- font-weight="bold" margin-bottom="4pt" text-align="center" -->
3206
3792
  <xsl:apply-templates/>
3207
3793
  </fo:block>
3208
- </xsl:template><xsl:template match="*[local-name() = 'p'][ancestor::*[local-name() = 'table'][@class = 'recommendation' or @class='requirement' or @class='permission']]">
3209
- <fo:block margin-bottom="10pt">
3794
+ </xsl:template><xsl:template match="*[local-name() = 'p2'][ancestor::*[local-name() = 'table'][@class = 'recommendation' or @class='requirement' or @class='permission']]">
3795
+ <fo:block> <!-- margin-bottom="10pt" -->
3210
3796
  <xsl:apply-templates/>
3211
3797
  </fo:block>
3212
3798
  </xsl:template><xsl:template match="*[local-name() = 'termexample']">
@@ -3228,12 +3814,13 @@
3228
3814
  <xsl:apply-templates select="*[local-name()='name']" mode="presentation"/>
3229
3815
 
3230
3816
  <xsl:variable name="element">
3231
- block
3817
+ block
3232
3818
 
3819
+ <xsl:if test=".//*[local-name() = 'table']">block</xsl:if>
3233
3820
  </xsl:variable>
3234
3821
 
3235
3822
  <xsl:choose>
3236
- <xsl:when test="normalize-space($element) = 'block'">
3823
+ <xsl:when test="contains(normalize-space($element), 'block')">
3237
3824
  <fo:block xsl:use-attribute-sets="example-body-style">
3238
3825
  <xsl:apply-templates/>
3239
3826
  </fo:block>
@@ -3270,30 +3857,49 @@
3270
3857
  </xsl:otherwise>
3271
3858
  </xsl:choose>
3272
3859
 
3273
- </xsl:template><xsl:template match="*[local-name() = 'example']/*[local-name() = 'p']">
3274
- <fo:block xsl:use-attribute-sets="example-p-style">
3275
-
3276
- <xsl:variable name="num"><xsl:number/></xsl:variable>
3277
- <xsl:if test="$num = 1">
3278
- <xsl:attribute name="margin-left">5mm</xsl:attribute>
3279
- </xsl:if>
3860
+ </xsl:template><xsl:template match="*[local-name() = 'example']/*[local-name() = 'p']">
3861
+
3862
+ <xsl:variable name="element">
3863
+ block
3280
3864
 
3281
- <xsl:apply-templates/>
3282
- </fo:block>
3865
+ </xsl:variable>
3866
+ <xsl:choose>
3867
+ <xsl:when test="normalize-space($element) = 'block'">
3868
+ <fo:block xsl:use-attribute-sets="example-p-style">
3869
+
3870
+ <xsl:variable name="num"><xsl:number/></xsl:variable>
3871
+ <xsl:if test="$num = 1">
3872
+ <xsl:attribute name="margin-left">5mm</xsl:attribute>
3873
+ </xsl:if>
3874
+
3875
+ <xsl:apply-templates/>
3876
+ </fo:block>
3877
+ </xsl:when>
3878
+ <xsl:otherwise>
3879
+ <fo:inline xsl:use-attribute-sets="example-p-style">
3880
+ <xsl:apply-templates/>
3881
+ </fo:inline>
3882
+ </xsl:otherwise>
3883
+ </xsl:choose>
3283
3884
  </xsl:template><xsl:template match="*[local-name() = 'termsource']">
3284
3885
  <fo:block xsl:use-attribute-sets="termsource-style">
3285
3886
  <!-- Example: [SOURCE: ISO 5127:2017, 3.1.6.02] -->
3286
3887
  <xsl:variable name="termsource_text">
3287
3888
  <xsl:apply-templates/>
3288
3889
  </xsl:variable>
3890
+
3289
3891
  <xsl:choose>
3290
3892
  <xsl:when test="starts-with(normalize-space($termsource_text), '[')">
3291
3893
  <xsl:apply-templates/>
3292
3894
  </xsl:when>
3293
- <xsl:otherwise>
3294
- <xsl:text>[</xsl:text>
3295
- <xsl:apply-templates/>
3296
- <xsl:text>]</xsl:text>
3895
+ <xsl:otherwise>
3896
+
3897
+ <xsl:text>[</xsl:text>
3898
+
3899
+ <xsl:apply-templates/>
3900
+
3901
+ <xsl:text>]</xsl:text>
3902
+
3297
3903
  </xsl:otherwise>
3298
3904
  </xsl:choose>
3299
3905
  </fo:block>
@@ -3314,18 +3920,29 @@
3314
3920
  <xsl:if test="normalize-space() != ''">
3315
3921
  <xsl:value-of select="."/>
3316
3922
  </xsl:if>
3317
- </xsl:template><xsl:template match="*[local-name() = 'quote']">
3923
+ </xsl:template><xsl:template match="*[local-name() = 'quote']">
3924
+ <fo:block-container margin-left="0mm">
3925
+ <xsl:if test="parent::*[local-name() = 'note']">
3926
+ <xsl:if test="not(ancestor::*[local-name() = 'table'])">
3927
+ <xsl:attribute name="margin-left">5mm</xsl:attribute>
3928
+ </xsl:if>
3929
+ </xsl:if>
3930
+
3931
+ <fo:block-container margin-left="0mm">
3318
3932
 
3319
- <fo:block xsl:use-attribute-sets="quote-style">
3320
- <xsl:apply-templates select=".//*[local-name() = 'p']"/>
3321
- </fo:block>
3322
- <xsl:if test="*[local-name() = 'author'] or *[local-name() = 'source']">
3323
- <fo:block xsl:use-attribute-sets="quote-source-style">
3324
- <!-- — ISO, ISO 7301:2011, Clause 1 -->
3325
- <xsl:apply-templates select="*[local-name() = 'author']"/>
3326
- <xsl:apply-templates select="*[local-name() = 'source']"/>
3327
- </fo:block>
3328
- </xsl:if>
3933
+ <fo:block xsl:use-attribute-sets="quote-style">
3934
+ <xsl:apply-templates select=".//*[local-name() = 'p']"/>
3935
+ </fo:block>
3936
+ <xsl:if test="*[local-name() = 'author'] or *[local-name() = 'source']">
3937
+ <fo:block xsl:use-attribute-sets="quote-source-style">
3938
+ <!-- — ISO, ISO 7301:2011, Clause 1 -->
3939
+ <xsl:apply-templates select="*[local-name() = 'author']"/>
3940
+ <xsl:apply-templates select="*[local-name() = 'source']"/>
3941
+ </fo:block>
3942
+ </xsl:if>
3943
+
3944
+ </fo:block-container>
3945
+ </fo:block-container>
3329
3946
  </xsl:template><xsl:template match="*[local-name() = 'source']">
3330
3947
  <xsl:if test="../*[local-name() = 'author']">
3331
3948
  <xsl:text>, </xsl:text>
@@ -3353,6 +3970,7 @@
3353
3970
  <xsl:if test="@type = 'inline'">
3354
3971
 
3355
3972
 
3973
+
3356
3974
  </xsl:if>
3357
3975
 
3358
3976
 
@@ -3383,6 +4001,7 @@
3383
4001
 
3384
4002
 
3385
4003
 
4004
+
3386
4005
  <xsl:choose>
3387
4006
  <xsl:when test="ancestor::un:annex and $depth &gt;= 2">9.5</xsl:when>
3388
4007
  <xsl:when test="ancestor::un:sections">9.5</xsl:when>
@@ -3487,6 +4106,7 @@
3487
4106
  </xsl:template><xsl:template match="*[local-name() = 'clause']">
3488
4107
  <fo:block>
3489
4108
  <xsl:call-template name="setId"/>
4109
+
3490
4110
  <xsl:apply-templates/>
3491
4111
  </fo:block>
3492
4112
  </xsl:template><xsl:template match="*[local-name() = 'definitions']">
@@ -3516,6 +4136,31 @@
3516
4136
  </xsl:template><xsl:template match="*[local-name() = 'name']/text()">
3517
4137
  <!-- 0xA0 to space replacement -->
3518
4138
  <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),' ',' ')"/>
4139
+ </xsl:template><xsl:template match="*[local-name() = 'ul'] | *[local-name() = 'ol']">
4140
+ <xsl:choose>
4141
+ <xsl:when test="parent::*[local-name() = 'note']">
4142
+ <fo:block-container>
4143
+ <xsl:attribute name="margin-left">
4144
+ <xsl:choose>
4145
+ <xsl:when test="not(ancestor::*[local-name() = 'table'])"><xsl:value-of select="$note-body-indent"/></xsl:when>
4146
+ <xsl:otherwise><xsl:value-of select="$note-body-indent-table"/></xsl:otherwise>
4147
+ </xsl:choose>
4148
+ </xsl:attribute>
4149
+
4150
+
4151
+ <fo:block-container margin-left="0mm">
4152
+ <fo:block>
4153
+ <xsl:apply-templates select="." mode="ul_ol"/>
4154
+ </fo:block>
4155
+ </fo:block-container>
4156
+ </fo:block-container>
4157
+ </xsl:when>
4158
+ <xsl:otherwise>
4159
+ <fo:block>
4160
+ <xsl:apply-templates select="." mode="ul_ol"/>
4161
+ </fo:block>
4162
+ </xsl:otherwise>
4163
+ </xsl:choose>
3519
4164
  </xsl:template><xsl:template match="*[local-name() = 'errata']">
3520
4165
  <!-- <row>
3521
4166
  <date>05-07-2013</date>
@@ -3547,6 +4192,65 @@
3547
4192
  <fo:table-cell border="1pt solid black" padding-left="1mm" padding-top="0.5mm">
3548
4193
  <fo:block><xsl:apply-templates/></fo:block>
3549
4194
  </fo:table-cell>
4195
+ </xsl:template><xsl:template name="processBibitem">
4196
+
4197
+
4198
+
4199
+
4200
+ </xsl:template><xsl:template name="processBibitemDocId">
4201
+ <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')]"/>
4202
+ <xsl:choose>
4203
+ <xsl:when test="normalize-space($_doc_ident) != ''">
4204
+ <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"/>
4205
+ <xsl:if test="$type != '' and not(contains($_doc_ident, $type))">
4206
+ <xsl:value-of select="$type"/><xsl:text> </xsl:text>
4207
+ </xsl:if>
4208
+ <xsl:value-of select="$_doc_ident"/>
4209
+ </xsl:when>
4210
+ <xsl:otherwise>
4211
+ <xsl:variable name="type" select="*[local-name() = 'docidentifier'][not(@type = 'metanorma')]/@type"/>
4212
+ <xsl:if test="$type != ''">
4213
+ <xsl:value-of select="$type"/><xsl:text> </xsl:text>
4214
+ </xsl:if>
4215
+ <xsl:value-of select="*[local-name() = 'docidentifier'][not(@type = 'metanorma')]"/>
4216
+ </xsl:otherwise>
4217
+ </xsl:choose>
4218
+ </xsl:template><xsl:template name="processPersonalAuthor">
4219
+ <xsl:choose>
4220
+ <xsl:when test="*[local-name() = 'name']/*[local-name() = 'completename']">
4221
+ <author>
4222
+ <xsl:apply-templates select="*[local-name() = 'name']/*[local-name() = 'completename']"/>
4223
+ </author>
4224
+ </xsl:when>
4225
+ <xsl:when test="*[local-name() = 'name']/*[local-name() = 'surname'] and *[local-name() = 'name']/*[local-name() = 'initial']">
4226
+ <author>
4227
+ <xsl:apply-templates select="*[local-name() = 'name']/*[local-name() = 'surname']"/>
4228
+ <xsl:text> </xsl:text>
4229
+ <xsl:apply-templates select="*[local-name() = 'name']/*[local-name() = 'initial']" mode="strip"/>
4230
+ </author>
4231
+ </xsl:when>
4232
+ <xsl:when test="*[local-name() = 'name']/*[local-name() = 'surname'] and *[local-name() = 'name']/*[local-name() = 'forename']">
4233
+ <author>
4234
+ <xsl:apply-templates select="*[local-name() = 'name']/*[local-name() = 'surname']"/>
4235
+ <xsl:text> </xsl:text>
4236
+ <xsl:apply-templates select="*[local-name() = 'name']/*[local-name() = 'forename']" mode="strip"/>
4237
+ </author>
4238
+ </xsl:when>
4239
+ <xsl:otherwise>
4240
+ <xsl:apply-templates/>
4241
+ </xsl:otherwise>
4242
+ </xsl:choose>
4243
+ </xsl:template><xsl:template name="renderDate">
4244
+ <xsl:if test="normalize-space(*[local-name() = 'on']) != ''">
4245
+ <xsl:value-of select="*[local-name() = 'on']"/>
4246
+ </xsl:if>
4247
+ <xsl:if test="normalize-space(*[local-name() = 'from']) != ''">
4248
+ <xsl:value-of select="concat(*[local-name() = 'from'], '–', *[local-name() = 'to'])"/>
4249
+ </xsl:if>
4250
+ </xsl:template><xsl:template match="*[local-name() = 'name']/*[local-name() = 'initial']/text()" mode="strip">
4251
+ <xsl:value-of select="translate(.,'. ','')"/>
4252
+ </xsl:template><xsl:template match="*[local-name() = 'name']/*[local-name() = 'forename']/text()" mode="strip">
4253
+ <xsl:value-of select="substring(.,1,1)"/>
3550
4254
  </xsl:template><xsl:template name="convertDate">
3551
4255
  <xsl:param name="date"/>
3552
4256
  <xsl:param name="format" select="'short'"/>
@@ -3629,6 +4333,7 @@
3629
4333
 
3630
4334
 
3631
4335
 
4336
+
3632
4337
 
3633
4338
  </xsl:variable>
3634
4339
  <xsl:choose>
@@ -3643,6 +4348,7 @@
3643
4348
  <dc:creator>
3644
4349
 
3645
4350
 
4351
+
3646
4352
  </dc:creator>
3647
4353
  <dc:description>
3648
4354
  <xsl:variable name="abstract">
@@ -3652,6 +4358,7 @@
3652
4358
  <xsl:copy-of select="/*/*[local-name() = 'preface']/*[local-name() = 'abstract']//text()"/>
3653
4359
 
3654
4360
 
4361
+
3655
4362
  </xsl:variable>
3656
4363
  <xsl:value-of select="normalize-space($abstract)"/>
3657
4364
  </dc:description>
@@ -3752,6 +4459,7 @@
3752
4459
 
3753
4460
 
3754
4461
 
4462
+
3755
4463
  </xsl:variable>
3756
4464
  <xsl:if test="$documentNS != $XSLNS">
3757
4465
  <xsl:message>[WARNING]: Document namespace: '<xsl:value-of select="$documentNS"/>' doesn't equal to xslt namespace '<xsl:value-of select="$XSLNS"/>'</xsl:message>
@@ -3777,4 +4485,21 @@
3777
4485
  </xsl:otherwise>
3778
4486
  </xsl:choose>
3779
4487
  </xsl:attribute>
4488
+ </xsl:template><xsl:template name="add-letter-spacing">
4489
+ <xsl:param name="text"/>
4490
+ <xsl:param name="letter-spacing" select="'0.15'"/>
4491
+ <xsl:if test="string-length($text) &gt; 0">
4492
+ <xsl:variable name="char" select="substring($text, 1, 1)"/>
4493
+ <fo:inline padding-right="{$letter-spacing}mm">
4494
+ <xsl:if test="$char = '®'">
4495
+ <xsl:attribute name="font-size">58%</xsl:attribute>
4496
+ <xsl:attribute name="baseline-shift">30%</xsl:attribute>
4497
+ </xsl:if>
4498
+ <xsl:value-of select="$char"/>
4499
+ </fo:inline>
4500
+ <xsl:call-template name="add-letter-spacing">
4501
+ <xsl:with-param name="text" select="substring($text, 2)"/>
4502
+ <xsl:with-param name="letter-spacing" select="$letter-spacing"/>
4503
+ </xsl:call-template>
4504
+ </xsl:if>
3780
4505
  </xsl:template></xsl:stylesheet>