metanorma-iho 0.0.3 → 0.1.0

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.
@@ -30,9 +30,22 @@
30
30
  <data type="boolean"/>
31
31
  </attribute>
32
32
  </optional>
33
+ <optional>
34
+ <attribute name="number"/>
35
+ </optional>
33
36
  <optional>
34
37
  <attribute name="subsequence"/>
35
38
  </optional>
39
+ <optional>
40
+ <attribute name="keep-with-next">
41
+ <data type="boolean"/>
42
+ </attribute>
43
+ </optional>
44
+ <optional>
45
+ <attribute name="keep-lines-together">
46
+ <data type="boolean"/>
47
+ </attribute>
48
+ </optional>
36
49
  <attribute name="id">
37
50
  <data type="ID"/>
38
51
  </attribute>
@@ -141,6 +154,16 @@
141
154
  <data type="boolean"/>
142
155
  </attribute>
143
156
  </optional>
157
+ <optional>
158
+ <attribute name="keep-with-next">
159
+ <data type="boolean"/>
160
+ </attribute>
161
+ </optional>
162
+ <optional>
163
+ <attribute name="keep-lines-together">
164
+ <data type="boolean"/>
165
+ </attribute>
166
+ </optional>
144
167
  <oneOrMore>
145
168
  <ref name="BasicBlock"/>
146
169
  </oneOrMore>
@@ -1,3 +1,5 @@
1
+ require_relative "xref"
2
+
1
3
  module IsoDoc
2
4
  module IHO
3
5
  module BaseConvert
@@ -5,46 +7,8 @@ module IsoDoc
5
7
  @meta = Metadata.new(lang, script, labels)
6
8
  end
7
9
 
8
- def annex_name_lbl(clause, num)
9
- lbl = clause["obligation"] == "informative" ? @appendix_lbl : @annex_lbl
10
- l10n("<b>#{lbl} #{num}</b>")
11
- end
12
-
13
- def annex_names(clause, num)
14
- appendix_names(clause, num)
15
- lbl = clause["obligation"] == "informative" ? @appendix_lbl : @annex_lbl
16
- @anchors[clause["id"]] =
17
- { label: annex_name_lbl(clause, num), type: "clause",
18
- xref: "#{lbl} #{num}", level: 1 }
19
- if a = single_annex_special_section(clause)
20
- annex_names1(a, "#{num}", 1)
21
- else
22
- clause.xpath(ns("./clause | ./references | ./terms | ./definitions")).
23
- each_with_index do |c, i|
24
- annex_names1(c, "#{num}.#{i + 1}", 2)
25
- end
26
- end
27
- hierarchical_asset_names(clause, num)
28
- end
29
-
30
- def back_anchor_names(docxml)
31
- super
32
- docxml.xpath(ns("//annex[@obligation = 'informative']")).each_with_index do |c, i|
33
- annex_names(c, i + 1)
34
- end
35
- docxml.xpath(ns("//annex[not(@obligation = 'informative')]")).each_with_index do |c, i|
36
- annex_names(c, (65 + i + (i > 7 ? 1 : 0)).chr.to_s)
37
- end
38
- end
39
-
40
- def annex_names1(clause, num, level)
41
- lbl = clause.at("./ancestor::xmlns:annex/@obligation").text == "informative" ? @appendix_lbl : @annex_lbl
42
- @anchors[clause["id"]] =
43
- { label: num, xref: "#{lbl} #{num}",
44
- level: level, type: "clause" }
45
- clause.xpath(ns("./clause | ./references | ./terms | ./definitions")).each_with_index do |c, i|
46
- annex_names1(c, "#{num}.#{i + 1}", level + 1)
47
- end
10
+ def xref_init(lang, script, klass, labels, options)
11
+ @xrefs = Xref.new(lang, script, klass, labels, options)
48
12
  end
49
13
 
50
14
  # terms not defined in standoc
@@ -56,14 +20,6 @@ module IsoDoc
56
20
  end
57
21
  end
58
22
 
59
- def appendix_names(clause, num)
60
- clause.xpath(ns("./appendix")).each_with_index do |c, i|
61
- @anchors[c["id"]] = anchor_struct(i + 1, nil, @appendix_lbl, "clause")
62
- @anchors[c["id"]][:level] = 2
63
- @anchors[c["id"]][:container] = clause["id"]
64
- end
65
- end
66
-
67
23
  def info(isoxml, out)
68
24
  @meta.series isoxml, out
69
25
  @meta.commentperiod isoxml, out
@@ -125,46 +125,9 @@
125
125
  <fo:conditional-page-master-reference odd-or-even="odd" master-reference="odd-landscape"/>
126
126
  </fo:repeatable-page-master-alternatives>
127
127
  </fo:page-sequence-master>
128
-
129
-
130
128
  </fo:layout-master-set>
131
129
 
132
- <fo:declarations>
133
- <pdf:catalog xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf">
134
- <pdf:dictionary type="normal" key="ViewerPreferences">
135
- <pdf:boolean key="DisplayDocTitle">true</pdf:boolean>
136
- </pdf:dictionary>
137
- </pdf:catalog>
138
- <x:xmpmeta xmlns:x="adobe:ns:meta/">
139
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
140
- <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" rdf:about="">
141
- <!-- Dublin Core properties go here -->
142
- <dc:title>
143
- <xsl:choose>
144
- <xsl:when test="normalize-space($title-en) != ''">
145
- <xsl:value-of select="$title-en"/>
146
- </xsl:when>
147
- <xsl:otherwise> </xsl:otherwise>
148
- </xsl:choose>
149
- </dc:title>
150
- <dc:creator><xsl:value-of select="/iho:iho-standard/iho:bibdata/iho:contributor[iho:role/@type='author']/iho:organization/iho:name"/></dc:creator>
151
- <dc:description>
152
- <xsl:variable name="abstract">
153
- <xsl:copy-of select="/iho:iho-standard/iho:bibliography/iho:references/iho:bibitem/iho:abstract//text()"/>
154
- </xsl:variable>
155
- <xsl:value-of select="normalize-space($abstract)"/>
156
- </dc:description>
157
- <pdf:Keywords>
158
- <xsl:call-template name="insertKeywords"/>
159
- </pdf:Keywords>
160
- </rdf:Description>
161
- <rdf:Description xmlns:xmp="http://ns.adobe.com/xap/1.0/" rdf:about="">
162
- <!-- XMP properties go here -->
163
- <xmp:CreatorTool/>
164
- </rdf:Description>
165
- </rdf:RDF>
166
- </x:xmpmeta>
167
- </fo:declarations>
130
+ <xsl:call-template name="addPDFUAmeta"/>
168
131
 
169
132
  <!-- =========================== -->
170
133
  <!-- Cover Page -->
@@ -258,6 +221,11 @@
258
221
  <fo:block-container margin-right="-12.7mm">
259
222
  <fo:block-container margin-right="0mm">
260
223
  <fo:block color="rgb(14, 36, 133)" margin-bottom="15.5pt">
224
+ <xsl:variable name="title-toc">
225
+ <xsl:call-template name="getTitle">
226
+ <xsl:with-param name="name" select="'title-toc'"/>
227
+ </xsl:call-template>
228
+ </xsl:variable>
261
229
  <xsl:value-of select="$title-toc"/>
262
230
  </fo:block>
263
231
  <xsl:if test="$debug = 'true'">
@@ -421,10 +389,20 @@
421
389
  <xsl:variable name="section">
422
390
  <xsl:choose>
423
391
  <xsl:when test="@obligation = 'informative'">
392
+ <xsl:variable name="title-appendix">
393
+ <xsl:call-template name="getTitle">
394
+ <xsl:with-param name="name" select="'title-appendix'"/>
395
+ </xsl:call-template>
396
+ </xsl:variable>
424
397
  <xsl:value-of select="$title-appendix"/>
425
398
  <xsl:number format="1" level="any" count="iho:annex[@obligation = 'informative']"/>
426
399
  </xsl:when>
427
400
  <xsl:otherwise>
401
+ <xsl:variable name="title-annex">
402
+ <xsl:call-template name="getTitle">
403
+ <xsl:with-param name="name" select="'title-annex'"/>
404
+ </xsl:call-template>
405
+ </xsl:variable>
428
406
  <xsl:value-of select="$title-annex"/>
429
407
  <xsl:number format="A" level="any" count="iho:annex[not(@obligation = 'informative')]"/>
430
408
  </xsl:otherwise>
@@ -517,7 +495,12 @@
517
495
  <xsl:param name="sectionNum"/>
518
496
  <xsl:variable name="annex-id" select="ancestor::iho:annex/@id"/>
519
497
  <item level="" id="{@id}" display="false" type="table">
520
- <xsl:attribute name="section">
498
+ <xsl:attribute name="section">
499
+ <xsl:variable name="title-table">
500
+ <xsl:call-template name="getTitle">
501
+ <xsl:with-param name="name" select="'title-table'"/>
502
+ </xsl:call-template>
503
+ </xsl:variable>
521
504
  <xsl:value-of select="$title-table"/>
522
505
  <xsl:call-template name="getTableNumber"/>
523
506
  </xsl:attribute>
@@ -528,7 +511,12 @@
528
511
  <xsl:template match="iho:formula" mode="contents">
529
512
  <item level="" id="{@id}" display="false">
530
513
  <xsl:attribute name="section">
531
- <xsl:text>Formula (</xsl:text><xsl:number format="A.1" level="multiple" count="iho:annex | iho:formula"/><xsl:text>)</xsl:text>
514
+ <xsl:variable name="title-formula">
515
+ <xsl:call-template name="getTitle">
516
+ <xsl:with-param name="name" select="'title-formula'"/>
517
+ </xsl:call-template>
518
+ </xsl:variable>
519
+ <xsl:value-of select="$title-formula"/><xsl:number format="(A.1)" level="multiple" count="iho:annex | iho:formula"/>
532
520
  </xsl:attribute>
533
521
  </item>
534
522
  </xsl:template>
@@ -562,6 +550,11 @@
562
550
 
563
551
 
564
552
  <xsl:template match="/iho:iho-standard/iho:bibdata/iho:edition">
553
+ <xsl:variable name="title-edition">
554
+ <xsl:call-template name="getTitle">
555
+ <xsl:with-param name="name" select="'title-edition'"/>
556
+ </xsl:call-template>
557
+ </xsl:variable>
565
558
  <xsl:value-of select="$title-edition"/>
566
559
  <xsl:apply-templates/>
567
560
  </xsl:template>
@@ -914,6 +907,11 @@
914
907
  </xsl:template>
915
908
 
916
909
  <xsl:template name="getFigureNumber">
910
+ <xsl:variable name="title-figure">
911
+ <xsl:call-template name="getTitle">
912
+ <xsl:with-param name="name" select="'title-figure'"/>
913
+ </xsl:call-template>
914
+ </xsl:variable>
917
915
  <xsl:choose>
918
916
  <xsl:when test="ancestor::iho:annex">
919
917
  <xsl:choose>
@@ -953,6 +951,11 @@
953
951
  </xsl:if>
954
952
  <xsl:variable name="claims_id" select="ancestor::iho:clause[1]/@id"/>
955
953
  <fo:inline font-size="11pt" padding-right="2mm">
954
+ <xsl:variable name="title-note">
955
+ <xsl:call-template name="getTitle">
956
+ <xsl:with-param name="name" select="'title-note'"/>
957
+ </xsl:call-template>
958
+ </xsl:variable>
956
959
  <xsl:value-of select="$title-note"/>
957
960
  <xsl:if test="count(ancestor::iho:clause[1]//iho:note) &gt; 1">
958
961
  <xsl:number count="iho:note[ancestor::iho:clause[@id = $claims_id]]" level="any"/>
@@ -1003,7 +1006,14 @@
1003
1006
  <fo:block margin-bottom="12pt">
1004
1007
  <!-- Example:[SOURCE: [3]] -->
1005
1008
  <fo:basic-link internal-destination="{iho:origin/@bibitemid}" fox:alt-text="{iho:origin/@citeas}">
1006
- <xsl:text>[SOURCE: </xsl:text>
1009
+ <xsl:text>[</xsl:text>
1010
+ <xsl:variable name="title-source">
1011
+ <xsl:call-template name="getTitle">
1012
+ <xsl:with-param name="name" select="'title-source'"/>
1013
+ </xsl:call-template>
1014
+ </xsl:variable>
1015
+ <xsl:value-of select="$title-source"/>
1016
+ <xsl:text>: </xsl:text>
1007
1017
  <fo:inline color="blue" text-decoration="underline"><xsl:value-of select="iho:origin/@citeas"/></fo:inline>
1008
1018
 
1009
1019
  <xsl:apply-templates select="iho:origin/iho:localityStack"/>
@@ -1017,8 +1027,8 @@
1017
1027
  <xsl:template match="iho:admonition">
1018
1028
  <fo:block-container border="0.5pt solid rgb(79, 129, 189)" color="rgb(79, 129, 189)" margin-left="16mm" margin-right="16mm" margin-bottom="12pt">
1019
1029
  <fo:block-container margin-left="0mm" margin-right="0mm" padding="2mm" padding-top="3mm">
1020
- <fo:block font-size="11pt" margin-bottom="6pt" font-weight="bold" font-style="italic" text-align="center">
1021
- <xsl:value-of select="translate(@type, $lower, $upper)"/>
1030
+ <fo:block font-size="11pt" margin-bottom="6pt" font-weight="bold" font-style="italic" text-align="center">
1031
+ <xsl:value-of select="java:toUpperCase(java:java.lang.String.new(@type))"/>
1022
1032
  </fo:block>
1023
1033
  <fo:block font-style="italic">
1024
1034
  <xsl:apply-templates/>
@@ -1027,6 +1037,12 @@
1027
1037
  </fo:block-container>
1028
1038
  </xsl:template>
1029
1039
 
1040
+ <xsl:template match="iho:formula">
1041
+ <fo:block id="{@id}">
1042
+ <xsl:apply-templates/>
1043
+ </fo:block>
1044
+ </xsl:template>
1045
+
1030
1046
  <xsl:template match="iho:formula/iho:dt/iho:stem">
1031
1047
  <fo:inline>
1032
1048
  <xsl:apply-templates/>
@@ -1034,7 +1050,7 @@
1034
1050
  </xsl:template>
1035
1051
 
1036
1052
  <xsl:template match="iho:formula/iho:stem">
1037
- <fo:block id="{../@id}" margin-top="6pt" margin-bottom="12pt" text-align="center">
1053
+ <fo:block margin-top="6pt" margin-bottom="12pt" text-align="center">
1038
1054
  <xsl:apply-templates/>
1039
1055
  </fo:block>
1040
1056
  </xsl:template>
@@ -1059,7 +1075,7 @@
1059
1075
 
1060
1076
  <xsl:template match="iho:source">
1061
1077
  <fo:basic-link internal-destination="{@bibitemid}" fox:alt-text="{@citeas}">
1062
- <xsl:value-of select="@citeas" disable-output-escaping="yes"/>
1078
+ <xsl:value-of select="@citeas"/> <!-- disable-output-escaping="yes" -->
1063
1079
  <xsl:apply-templates select="iho:localityStack"/>
1064
1080
  </fo:basic-link>
1065
1081
  </xsl:template>
@@ -1080,6 +1096,11 @@
1080
1096
  <xsl:variable name="level" select="xalan:nodeset($contents)//item[@id =$target]/@level"/>
1081
1097
  <xsl:choose>
1082
1098
  <xsl:when test="$type = 'clause' and $root != 'annex' and $level = 1 and normalize-space(.) = ''"><!-- and not (ancestor::annex) -->
1099
+ <xsl:variable name="title-clause">
1100
+ <xsl:call-template name="getTitle">
1101
+ <xsl:with-param name="name" select="'title-clause'"/>
1102
+ </xsl:call-template>
1103
+ </xsl:variable>
1083
1104
  <xsl:value-of select="$title-clause"/>
1084
1105
  </xsl:when>
1085
1106
  <xsl:when test="$type = 'li'">
@@ -1116,10 +1137,20 @@
1116
1137
  <fo:block id="{@id}" font-size="13pt" font-weight="bold" text-align="center" margin-bottom="12pt" keep-with-next="always">
1117
1138
  <xsl:choose>
1118
1139
  <xsl:when test="@obligation = 'informative'">
1140
+ <xsl:variable name="title-appendix">
1141
+ <xsl:call-template name="getTitle">
1142
+ <xsl:with-param name="name" select="'title-appendix'"/>
1143
+ </xsl:call-template>
1144
+ </xsl:variable>
1119
1145
  <xsl:value-of select="$title-appendix"/>
1120
1146
  <xsl:number format="1" level="any" count="iho:annex[@obligation = 'informative']"/>
1121
1147
  </xsl:when>
1122
1148
  <xsl:otherwise>
1149
+ <xsl:variable name="title-annex">
1150
+ <xsl:call-template name="getTitle">
1151
+ <xsl:with-param name="name" select="'title-annex'"/>
1152
+ </xsl:call-template>
1153
+ </xsl:variable>
1123
1154
  <xsl:value-of select="$title-annex"/>
1124
1155
  <xsl:number format="A" level="any" count="iho:annex[not(@obligation = 'informative')]"/>
1125
1156
  </xsl:otherwise>
@@ -1180,13 +1211,13 @@
1180
1211
  <xsl:number level="any" count="iho:bibitem/iho:note"/>
1181
1212
  </xsl:variable>
1182
1213
  <fo:inline font-size="8pt" keep-with-previous.within-line="always" baseline-shift="30%"> <!--85% vertical-align="super"-->
1183
- <fo:basic-link internal-destination="footnote_{../@id}" fox:alt-text="footnote {$number}">
1214
+ <fo:basic-link internal-destination="{generate-id()}" fox:alt-text="footnote {$number}">
1184
1215
  <xsl:value-of select="$number"/><xsl:text>)</xsl:text>
1185
1216
  </fo:basic-link>
1186
1217
  </fo:inline>
1187
1218
  <fo:footnote-body>
1188
1219
  <fo:block font-size="10pt" margin-bottom="4pt" start-indent="0pt">
1189
- <fo:inline id="footnote_{../@id}" keep-with-next.within-line="always" alignment-baseline="hanging" padding-right="3mm"><!-- font-size="60%" -->
1220
+ <fo:inline id="{generate-id()}" keep-with-next.within-line="always" alignment-baseline="hanging" padding-right="3mm"><!-- font-size="60%" -->
1190
1221
  <xsl:value-of select="$number"/><xsl:text>)</xsl:text>
1191
1222
  </fo:inline>
1192
1223
  <xsl:apply-templates/>
@@ -1199,7 +1230,12 @@
1199
1230
  <fo:block font-size="11pt" margin-top="8pt" margin-bottom="12pt">
1200
1231
  <xsl:variable name="claims_id" select="ancestor::iho:clause[1]/@id"/>
1201
1232
  <fo:block margin-bottom="12pt" font-weight="bold">
1202
- <fo:inline padding-right="5mm">
1233
+ <fo:inline padding-right="5mm">
1234
+ <xsl:variable name="title-example">
1235
+ <xsl:call-template name="getTitle">
1236
+ <xsl:with-param name="name" select="'title-example'"/>
1237
+ </xsl:call-template>
1238
+ </xsl:variable>
1203
1239
  <xsl:value-of select="$title-example"/>
1204
1240
  <xsl:choose>
1205
1241
  <xsl:when test="iho:name">
@@ -1245,7 +1281,7 @@
1245
1281
  </xsl:if>
1246
1282
  <xsl:choose>
1247
1283
  <xsl:when test="@citeas and normalize-space(text()) = ''">
1248
- <xsl:value-of select="@citeas" disable-output-escaping="yes"/>
1284
+ <xsl:value-of select="@citeas"/> <!-- disable-output-escaping="yes" -->
1249
1285
  </xsl:when>
1250
1286
  <xsl:when test="@bibitemid and normalize-space(text()) = ''">
1251
1287
  <xsl:value-of select="//iho:bibitem[@id = current()/@bibitemid]/iho:docidentifier"/>
@@ -1268,7 +1304,7 @@
1268
1304
 
1269
1305
  <xsl:template match="iho:term">
1270
1306
  <xsl:param name="sectionNum"/>
1271
- <fo:block margin-bottom="10pt">
1307
+ <fo:block id="{@id}" margin-bottom="10pt">
1272
1308
  <xsl:apply-templates>
1273
1309
  <xsl:with-param name="sectionNum" select="$sectionNum"/>
1274
1310
  </xsl:apply-templates>
@@ -1279,7 +1315,7 @@
1279
1315
  <xsl:param name="sectionNum"/>
1280
1316
  <fo:block line-height="1.1">
1281
1317
  <fo:block font-weight="bold" keep-with-next="always">
1282
- <fo:inline id="{../@id}">
1318
+ <fo:inline>
1283
1319
  <xsl:variable name="section">
1284
1320
  <xsl:call-template name="getSection">
1285
1321
  <xsl:with-param name="sectionNum" select="$sectionNum"/>
@@ -1302,7 +1338,12 @@
1302
1338
  </xsl:template>
1303
1339
 
1304
1340
  <xsl:template match="iho:deprecates">
1305
- <fo:block>DEPRECATED: <xsl:apply-templates/></fo:block>
1341
+ <xsl:variable name="title-deprecated">
1342
+ <xsl:call-template name="getTitle">
1343
+ <xsl:with-param name="name" select="'title-deprecated'"/>
1344
+ </xsl:call-template>
1345
+ </xsl:variable>
1346
+ <fo:block><xsl:value-of select="$title-deprecated"/>: <xsl:apply-templates/></fo:block>
1306
1347
  </xsl:template>
1307
1348
 
1308
1349
  <xsl:template match="iho:definition[preceding-sibling::iho:domain]">
@@ -1322,7 +1363,12 @@
1322
1363
  <xsl:template match="iho:termexample">
1323
1364
  <fo:block font-size="10pt" margin-top="8pt" margin-bottom="8pt" text-align="justify">
1324
1365
  <fo:inline padding-right="5mm">
1325
- <xsl:text>EXAMPLE </xsl:text>
1366
+ <xsl:variable name="title-example">
1367
+ <xsl:call-template name="getTitle">
1368
+ <xsl:with-param name="name" select="'title-example'"/>
1369
+ </xsl:call-template>
1370
+ </xsl:variable>
1371
+ <xsl:value-of select="$title-example"/>
1326
1372
  <xsl:if test="count(ancestor::iho:term[1]//iho:termexample) &gt; 1">
1327
1373
  <xsl:number/>
1328
1374
  </xsl:if>
@@ -1342,10 +1388,14 @@
1342
1388
  </xsl:template>
1343
1389
 
1344
1390
  <xsl:template match="iho:termnote">
1345
- <fo:block font-size="10pt" margin-top="8pt" margin-bottom="8pt" text-align="justify">
1346
- <xsl:text>Note </xsl:text>
1347
- <xsl:number/>
1348
- <xsl:text> to entry: </xsl:text>
1391
+ <fo:block font-size="10pt" margin-top="8pt" margin-bottom="8pt" text-align="justify">
1392
+ <xsl:variable name="num"><xsl:number/></xsl:variable>
1393
+ <xsl:variable name="title-note-to-entry">
1394
+ <xsl:call-template name="getTitle">
1395
+ <xsl:with-param name="name" select="'title-note-to-entry'"/>
1396
+ </xsl:call-template>
1397
+ </xsl:variable>
1398
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new($title-note-to-entry),'#',$num)"/>
1349
1399
  <xsl:apply-templates/>
1350
1400
  </fo:block>
1351
1401
  </xsl:template>
@@ -1358,15 +1408,32 @@
1358
1408
  </xsl:if> -->
1359
1409
  </xsl:template>
1360
1410
 
1361
- <xsl:template match="iho:modification">
1362
- <xsl:text>, modified — </xsl:text>
1363
- <xsl:apply-templates/>
1364
- </xsl:template>
1411
+
1365
1412
  <xsl:template match="iho:modification/iho:p">
1366
1413
  <fo:inline><xsl:apply-templates/></fo:inline>
1367
1414
  </xsl:template>
1368
1415
 
1369
1416
  <xsl:template match="iho:locality">
1417
+ <xsl:variable name="title-clause">
1418
+ <xsl:call-template name="getTitle">
1419
+ <xsl:with-param name="name" select="'title-clause'"/>
1420
+ </xsl:call-template>
1421
+ </xsl:variable>
1422
+ <xsl:variable name="title-annex">
1423
+ <xsl:call-template name="getTitle">
1424
+ <xsl:with-param name="name" select="'title-annex'"/>
1425
+ </xsl:call-template>
1426
+ </xsl:variable>
1427
+ <xsl:variable name="title-appendix">
1428
+ <xsl:call-template name="getTitle">
1429
+ <xsl:with-param name="name" select="'title-appendix'"/>
1430
+ </xsl:call-template>
1431
+ </xsl:variable>
1432
+ <xsl:variable name="title-table">
1433
+ <xsl:call-template name="getTitle">
1434
+ <xsl:with-param name="name" select="'title-table'"/>
1435
+ </xsl:call-template>
1436
+ </xsl:variable>
1370
1437
  <xsl:choose>
1371
1438
  <xsl:when test="ancestor::iho:termsource"/>
1372
1439
  <xsl:when test="@type ='clause' and ancestor::iho:eref"/>
@@ -1424,38 +1491,6 @@
1424
1491
  </fo:static-content>
1425
1492
  </xsl:template>
1426
1493
 
1427
- <xsl:template name="getId">
1428
- <xsl:choose>
1429
- <xsl:when test="../@id">
1430
- <xsl:value-of select="../@id"/>
1431
- </xsl:when>
1432
- <xsl:otherwise>
1433
- <xsl:value-of select="text()"/>
1434
- </xsl:otherwise>
1435
- </xsl:choose>
1436
- </xsl:template>
1437
-
1438
- <xsl:template name="getLevel">
1439
- <xsl:variable name="level_total" select="count(ancestor::*)"/>
1440
- <xsl:variable name="level">
1441
- <xsl:choose>
1442
- <xsl:when test="ancestor::iho:preface">
1443
- <xsl:value-of select="$level_total - 2"/>
1444
- </xsl:when>
1445
- <xsl:when test="ancestor::iho:sections">
1446
- <xsl:value-of select="$level_total - 2"/>
1447
- </xsl:when>
1448
- <xsl:when test="ancestor::iho:bibliography">
1449
- <xsl:value-of select="$level_total - 2"/>
1450
- </xsl:when>
1451
- <xsl:when test="local-name(ancestor::*[1]) = 'annex'">1</xsl:when>
1452
- <xsl:otherwise>
1453
- <xsl:value-of select="$level_total - 1"/>
1454
- </xsl:otherwise>
1455
- </xsl:choose>
1456
- </xsl:variable>
1457
- <xsl:value-of select="$level"/>
1458
- </xsl:template>
1459
1494
 
1460
1495
  <xsl:template name="getSection">
1461
1496
  <xsl:param name="sectionNum"/>
@@ -1475,7 +1510,7 @@
1475
1510
  </xsl:when>
1476
1511
  <xsl:when test="$level &gt;= 2">
1477
1512
  <xsl:variable name="num">
1478
- <xsl:number format=".1" level="multiple" count="iho:clause/iho:clause | iho:clause/iho:terms | iho:terms/iho:term | iho:clause/iho:term | iho:terms/iho:clause | iho:terms/iho:definitions | iho:definitions/iho:clause | iho:clause/iho:definitions | iho:clause/iho:references"/>
1513
+ <xsl:call-template name="getSubSection"/>
1479
1514
  </xsl:variable>
1480
1515
  <xsl:value-of select="concat($sectionNum, $num)"/><xsl:text>.</xsl:text>
1481
1516
  </xsl:when>
@@ -1501,9 +1536,19 @@
1501
1536
  <xsl:when test="$level = 1">
1502
1537
  <xsl:choose>
1503
1538
  <xsl:when test="ancestor::iho:annex/@obligation = 'informative'">
1539
+ <xsl:variable name="title-appendix">
1540
+ <xsl:call-template name="getTitle">
1541
+ <xsl:with-param name="name" select="'title-appendix'"/>
1542
+ </xsl:call-template>
1543
+ </xsl:variable>
1504
1544
  <xsl:value-of select="$title-appendix"/>
1505
1545
  </xsl:when>
1506
1546
  <xsl:otherwise>
1547
+ <xsl:variable name="title-annex">
1548
+ <xsl:call-template name="getTitle">
1549
+ <xsl:with-param name="name" select="'title-annex'"/>
1550
+ </xsl:call-template>
1551
+ </xsl:variable>
1507
1552
  <xsl:value-of select="$title-annex"/>
1508
1553
  </xsl:otherwise>
1509
1554
  </xsl:choose>
@@ -1663,44 +1708,185 @@
1663
1708
  <xsl:text>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</xsl:text>
1664
1709
  </xsl:variable>
1665
1710
 
1666
- <xsl:variable name="title-table">
1711
+ <xsl:variable name="titles" select="xalan:nodeset($titles_)"/><xsl:variable name="titles_">
1667
1712
 
1668
- <xsl:text>Table </xsl:text>
1713
+ <title-table lang="en">Table </title-table>
1714
+ <title-table lang="fr">Tableau </title-table>
1715
+
1716
+ <title-table lang="zh">Table </title-table>
1669
1717
 
1670
1718
 
1671
- </xsl:variable><xsl:variable name="title-note">
1719
+
1720
+ <title-note lang="en">NOTE </title-note>
1721
+ <title-note lang="fr">NOTE </title-note>
1672
1722
 
1673
- <xsl:text>NOTE </xsl:text>
1723
+ <title-note lang="zh">NOTE </title-note>
1674
1724
 
1675
1725
 
1676
- </xsl:variable><xsl:variable name="title-figure">
1677
1726
 
1678
- <xsl:text>Figure </xsl:text>
1727
+ <title-figure lang="en">Figure </title-figure>
1728
+ <title-figure lang="fr">Figure </title-figure>
1679
1729
 
1730
+ <title-figure lang="zh">Figure </title-figure>
1680
1731
 
1681
- </xsl:variable><xsl:variable name="title-example">
1682
1732
 
1683
- <xsl:text>EXAMPLE </xsl:text>
1684
1733
 
1734
+ <title-example lang="en">EXAMPLE </title-example>
1735
+ <title-example lang="fr">EXEMPLE </title-example>
1685
1736
 
1686
- </xsl:variable><xsl:variable name="title-inequality">Inequality </xsl:variable><xsl:variable name="title-equation">Equation </xsl:variable><xsl:variable name="title-annex">
1737
+ <title-example lang="zh">EXAMPLE </title-example>
1687
1738
 
1688
- <xsl:text>Annex </xsl:text>
1689
1739
 
1690
1740
 
1691
- </xsl:variable><xsl:variable name="title-appendix">
1692
- <xsl:text>Appendix </xsl:text>
1693
- </xsl:variable><xsl:variable name="title-clause">
1741
+ <title-example-xref lang="en">Example </title-example-xref>
1742
+ <title-example-xref lang="fr">Exemple </title-example-xref>
1743
+
1744
+ <title-section lang="en">Section </title-section>
1745
+ <title-section lang="fr">Section </title-section>
1746
+
1747
+ <title-inequality lang="en">Inequality </title-inequality>
1748
+ <title-inequality lang="fr">Inequality </title-inequality>
1749
+
1750
+ <title-equation lang="en">Equation </title-equation>
1751
+ <title-equation lang="fr">Equation </title-equation>
1752
+
1753
+ <title-annex lang="en">Annex </title-annex>
1754
+ <title-annex lang="fr">Annexe </title-annex>
1755
+
1756
+ <title-annex lang="zh">Annex </title-annex>
1757
+
1758
+
1759
+
1760
+ <title-appendix lang="en">Appendix </title-appendix>
1761
+ <title-appendix lang="fr">Appendix </title-appendix>
1762
+
1763
+ <title-clause lang="en">Clause </title-clause>
1764
+ <title-clause lang="fr">Article </title-clause>
1694
1765
 
1695
- <xsl:text>Clause </xsl:text>
1766
+ <title-clause lang="zh">Clause </title-clause>
1696
1767
 
1697
1768
 
1698
- </xsl:variable><xsl:variable name="title-edition">
1699
- <xsl:text>Edition </xsl:text>
1700
- </xsl:variable><xsl:variable name="title-toc">
1701
- Contents
1702
1769
 
1703
- </xsl:variable><xsl:variable name="title-page">Page</xsl:variable><xsl:variable name="title-key">Key</xsl:variable><xsl:variable name="title-where">where</xsl:variable><xsl:variable name="title-descriptors">Descriptors</xsl:variable><xsl:variable name="title-part-en">Part </xsl:variable><xsl:variable name="title-part-fr">Partie </xsl:variable><xsl:variable name="title-note-to-entry">Note # to entry: </xsl:variable><xsl:variable name="title-modified">modified</xsl:variable><xsl:variable name="title-source">SOURCE</xsl:variable><xsl:variable name="title-keywords">Keywords</xsl:variable><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">
1770
+ <title-edition lang="en">
1771
+
1772
+ <xsl:text>Edition </xsl:text>
1773
+
1774
+
1775
+ </title-edition>
1776
+
1777
+ <title-formula lang="en">Formula </title-formula>
1778
+ <title-formula lang="fr">Formula </title-formula>
1779
+
1780
+ <title-toc lang="en">
1781
+
1782
+ <xsl:text>Contents</xsl:text>
1783
+
1784
+
1785
+
1786
+ </title-toc>
1787
+ <title-toc lang="fr">Sommaire</title-toc>
1788
+
1789
+ <title-toc lang="zh">Contents</title-toc>
1790
+
1791
+
1792
+
1793
+ <title-page lang="en">Page</title-page>
1794
+ <title-page lang="fr">Page</title-page>
1795
+
1796
+ <title-key lang="en">Key</title-key>
1797
+ <title-key lang="fr">Légende</title-key>
1798
+
1799
+ <title-where lang="en">where</title-where>
1800
+ <title-where lang="fr">où</title-where>
1801
+
1802
+ <title-descriptors lang="en">Descriptors</title-descriptors>
1803
+
1804
+ <title-part lang="en">
1805
+
1806
+
1807
+ </title-part>
1808
+ <title-part lang="fr">
1809
+
1810
+
1811
+ </title-part>
1812
+ <title-part lang="zh">第 # 部分:</title-part>
1813
+
1814
+ <title-note-to-entry lang="en">Note # to entry: </title-note-to-entry>
1815
+ <title-note-to-entry lang="fr">Note # à l'article: </title-note-to-entry>
1816
+
1817
+ <title-note-to-entry lang="zh">Note # to entry: </title-note-to-entry>
1818
+
1819
+
1820
+
1821
+ <title-modified lang="en">modified</title-modified>
1822
+ <title-modified lang="fr">modifiée</title-modified>
1823
+
1824
+ <title-modified lang="zh">modified</title-modified>
1825
+
1826
+
1827
+
1828
+ <title-source lang="en">SOURCE</title-source>
1829
+
1830
+ <title-keywords lang="en">Keywords</title-keywords>
1831
+
1832
+ <title-deprecated lang="en">DEPRECATED</title-deprecated>
1833
+ <title-deprecated lang="fr">DEPRECATED</title-deprecated>
1834
+
1835
+ <title-submitting-organizations lang="en">Submitting Organizations</title-submitting-organizations>
1836
+
1837
+ <title-list-tables lang="en">List of Tables</title-list-tables>
1838
+
1839
+ <title-list-figures lang="en">List of Figures</title-list-figures>
1840
+
1841
+ <title-recommendation lang="en">Recommendation </title-recommendation>
1842
+
1843
+ <title-acknowledgements lang="en">Acknowledgements</title-acknowledgements>
1844
+
1845
+ <title-abstract lang="en">Abstract</title-abstract>
1846
+
1847
+ <title-summary lang="en">Summary</title-summary>
1848
+
1849
+ <title-in lang="en">in </title-in>
1850
+
1851
+ <title-box lang="en">Box </title-box>
1852
+
1853
+ <title-partly-supercedes lang="en">Partly Supercedes </title-partly-supercedes>
1854
+ <title-partly-supercedes lang="zh">部分代替 </title-partly-supercedes>
1855
+
1856
+ <title-completion-date lang="en">Completion date for this manuscript</title-completion-date>
1857
+ <title-completion-date lang="zh">本稿完成日期</title-completion-date>
1858
+
1859
+ <title-issuance-date lang="en">Issuance Date: #</title-issuance-date>
1860
+ <title-issuance-date lang="zh"># 发布</title-issuance-date>
1861
+
1862
+ <title-implementation-date lang="en">Implementation Date: #</title-implementation-date>
1863
+ <title-implementation-date lang="zh"># 实施</title-implementation-date>
1864
+
1865
+ <title-obligation-normative lang="en">normative</title-obligation-normative>
1866
+ <title-obligation-normative lang="zh">规范性附录</title-obligation-normative>
1867
+
1868
+ <title-caution lang="en">CAUTION</title-caution>
1869
+ <title-caution lang="zh">注意</title-caution>
1870
+
1871
+ <title-warning lang="en">WARNING</title-warning>
1872
+ <title-warning lang="zh">警告</title-warning>
1873
+
1874
+ <title-amendment lang="en">AMENDMENT</title-amendment>
1875
+ </xsl:variable><xsl:template name="getTitle">
1876
+ <xsl:param name="name"/>
1877
+ <xsl:variable name="lang">
1878
+ <xsl:call-template name="getLang"/>
1879
+ </xsl:variable>
1880
+ <xsl:variable name="title_" select="$titles/*[local-name() = $name][@lang = $lang]"/>
1881
+ <xsl:choose>
1882
+ <xsl:when test="normalize-space($title_) != ''">
1883
+ <xsl:value-of select="$title_"/>
1884
+ </xsl:when>
1885
+ <xsl:otherwise>
1886
+ <xsl:value-of select="$titles/*[local-name() = $name][@lang = 'en']"/>
1887
+ </xsl:otherwise>
1888
+ </xsl:choose>
1889
+ </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">
1704
1890
 
1705
1891
  <xsl:attribute name="color">blue</xsl:attribute>
1706
1892
  <xsl:attribute name="text-decoration">underline</xsl:attribute>
@@ -1772,7 +1958,11 @@
1772
1958
  <xsl:attribute name="font-weight">normal</xsl:attribute>
1773
1959
  <xsl:attribute name="font-size">11pt</xsl:attribute>
1774
1960
 
1775
-
1961
+ <xsl:variable name="title-table">
1962
+ <xsl:call-template name="getTitle">
1963
+ <xsl:with-param name="name" select="'title-table'"/>
1964
+ </xsl:call-template>
1965
+ </xsl:variable>
1776
1966
  <xsl:value-of select="$title-table"/>
1777
1967
 
1778
1968
  <xsl:call-template name="getTableNumber"/>
@@ -1864,9 +2054,9 @@
1864
2054
 
1865
2055
 
1866
2056
 
1867
- <xsl:attribute name="margin-left">0mm</xsl:attribute>
1868
- <xsl:attribute name="margin-right">0mm</xsl:attribute>
1869
-
2057
+ <xsl:attribute name="margin-left">0mm</xsl:attribute>
2058
+ <xsl:attribute name="margin-right">0mm</xsl:attribute>
2059
+
1870
2060
  <xsl:for-each select="xalan:nodeset($colwidths)//column">
1871
2061
  <xsl:choose>
1872
2062
  <xsl:when test=". = 1 or . = 0">
@@ -1877,7 +2067,16 @@
1877
2067
  </xsl:otherwise>
1878
2068
  </xsl:choose>
1879
2069
  </xsl:for-each>
1880
- <xsl:apply-templates/>
2070
+
2071
+ <xsl:choose>
2072
+ <xsl:when test="not(*[local-name()='tbody']) and *[local-name()='thead']">
2073
+ <xsl:apply-templates select="*[local-name()='thead']" mode="process_tbody"/>
2074
+ </xsl:when>
2075
+ <xsl:otherwise>
2076
+ <xsl:apply-templates/>
2077
+ </xsl:otherwise>
2078
+ </xsl:choose>
2079
+
1881
2080
  </fo:table>
1882
2081
 
1883
2082
 
@@ -2026,6 +2225,10 @@
2026
2225
 
2027
2226
  <xsl:apply-templates/>
2028
2227
  </fo:table-header>
2228
+ </xsl:template><xsl:template match="*[local-name()='thead']" mode="process_tbody">
2229
+ <fo:table-body>
2230
+ <xsl:apply-templates/>
2231
+ </fo:table-body>
2029
2232
  </xsl:template><xsl:template match="*[local-name()='tfoot']"/><xsl:template match="*[local-name()='tfoot']" mode="process">
2030
2233
  <xsl:apply-templates/>
2031
2234
  </xsl:template><xsl:template name="insertTableFooter">
@@ -2197,6 +2400,11 @@
2197
2400
 
2198
2401
  <xsl:attribute name="font-size">11pt</xsl:attribute>
2199
2402
 
2403
+ <xsl:variable name="title-note">
2404
+ <xsl:call-template name="getTitle">
2405
+ <xsl:with-param name="name" select="'title-note'"/>
2406
+ </xsl:call-template>
2407
+ </xsl:variable>
2200
2408
  <xsl:value-of select="$title-note"/>
2201
2409
 
2202
2410
  <xsl:variable name="id" select="ancestor::*[local-name() = 'table'][1]/@id"/>
@@ -2277,6 +2485,36 @@
2277
2485
  </fn>
2278
2486
  </xsl:for-each>
2279
2487
  </xsl:variable>
2488
+
2489
+ <!-- current hierarchy is 'figure' element -->
2490
+ <xsl:variable name="following_dl_colwidths">
2491
+ <xsl:if test="*[local-name() = 'dl']"><!-- if there is a 'dl', then set the same columns width as for 'dl' -->
2492
+ <xsl:variable name="html-table">
2493
+ <xsl:variable name="ns" select="substring-before(name(/*), '-')"/>
2494
+ <xsl:element name="{$ns}:table">
2495
+ <xsl:for-each select="*[local-name() = 'dl'][1]">
2496
+ <tbody>
2497
+ <xsl:apply-templates mode="dl"/>
2498
+ </tbody>
2499
+ </xsl:for-each>
2500
+ </xsl:element>
2501
+ </xsl:variable>
2502
+
2503
+ <xsl:call-template name="calculate-column-widths">
2504
+ <xsl:with-param name="cols-count" select="2"/>
2505
+ <xsl:with-param name="table" select="$html-table"/>
2506
+ </xsl:call-template>
2507
+
2508
+ </xsl:if>
2509
+ </xsl:variable>
2510
+
2511
+
2512
+ <xsl:variable name="maxlength_dt">
2513
+ <xsl:for-each select="*[local-name() = 'dl'][1]">
2514
+ <xsl:call-template name="getMaxLength_dt"/>
2515
+ </xsl:for-each>
2516
+ </xsl:variable>
2517
+
2280
2518
  <xsl:if test="xalan:nodeset($references)//fn">
2281
2519
  <fo:block>
2282
2520
  <fo:table width="95%" table-layout="fixed">
@@ -2284,8 +2522,19 @@
2284
2522
  <xsl:attribute name="font-size">10pt</xsl:attribute>
2285
2523
 
2286
2524
  </xsl:if>
2287
- <fo:table-column column-width="15%"/>
2288
- <fo:table-column column-width="85%"/>
2525
+ <xsl:choose>
2526
+ <!-- if there 'dl', then set same columns width -->
2527
+ <xsl:when test="xalan:nodeset($following_dl_colwidths)//column">
2528
+ <xsl:call-template name="setColumnWidth_dl">
2529
+ <xsl:with-param name="colwidths" select="$following_dl_colwidths"/>
2530
+ <xsl:with-param name="maxlength_dt" select="$maxlength_dt"/>
2531
+ </xsl:call-template>
2532
+ </xsl:when>
2533
+ <xsl:otherwise>
2534
+ <fo:table-column column-width="15%"/>
2535
+ <fo:table-column column-width="85%"/>
2536
+ </xsl:otherwise>
2537
+ </xsl:choose>
2289
2538
  <fo:table-body>
2290
2539
  <xsl:for-each select="xalan:nodeset($references)//fn">
2291
2540
  <xsl:variable name="reference" select="@reference"/>
@@ -2346,6 +2595,11 @@
2346
2595
 
2347
2596
  <fo:block margin-bottom="12pt" text-align="left">
2348
2597
 
2598
+ <xsl:variable name="title-where">
2599
+ <xsl:call-template name="getTitle">
2600
+ <xsl:with-param name="name" select="'title-where'"/>
2601
+ </xsl:call-template>
2602
+ </xsl:variable>
2349
2603
  <xsl:value-of select="$title-where"/><xsl:text> </xsl:text>
2350
2604
  <xsl:apply-templates select="*[local-name()='dt']/*"/>
2351
2605
  <xsl:text/>
@@ -2359,14 +2613,24 @@
2359
2613
 
2360
2614
 
2361
2615
 
2616
+ <xsl:variable name="title-where">
2617
+ <xsl:call-template name="getTitle">
2618
+ <xsl:with-param name="name" select="'title-where'"/>
2619
+ </xsl:call-template>
2620
+ </xsl:variable>
2362
2621
  <xsl:value-of select="$title-where"/>
2363
2622
  </fo:block>
2364
2623
  </xsl:when>
2365
2624
  <xsl:when test="$parent = 'figure' and (not(../@class) or ../@class !='pseudocode')">
2366
- <fo:block font-weight="bold" text-align="left" margin-bottom="12pt">
2625
+ <fo:block font-weight="bold" text-align="left" margin-bottom="12pt" keep-with-next="always">
2367
2626
 
2368
2627
 
2369
2628
 
2629
+ <xsl:variable name="title-key">
2630
+ <xsl:call-template name="getTitle">
2631
+ <xsl:with-param name="name" select="'title-key'"/>
2632
+ </xsl:call-template>
2633
+ </xsl:variable>
2370
2634
  <xsl:value-of select="$title-key"/>
2371
2635
  </fo:block>
2372
2636
  </xsl:when>
@@ -2385,25 +2649,8 @@
2385
2649
 
2386
2650
 
2387
2651
 
2388
- <xsl:attribute name="margin-left">-3.5mm</xsl:attribute>
2389
-
2390
- <!-- create virtual html table for dl/[dt and dd] -->
2391
- <xsl:variable name="html-table">
2392
- <xsl:variable name="ns" select="substring-before(name(/*), '-')"/>
2393
- <xsl:element name="{$ns}:table">
2394
- <tbody>
2395
- <xsl:apply-templates mode="dl"/>
2396
- </tbody>
2397
- </xsl:element>
2398
- </xsl:variable>
2399
- <!-- html-table<xsl:copy-of select="$html-table"/> -->
2400
- <xsl:variable name="colwidths">
2401
- <xsl:call-template name="calculate-column-widths">
2402
- <xsl:with-param name="cols-count" select="2"/>
2403
- <xsl:with-param name="table" select="$html-table"/>
2404
- </xsl:call-template>
2405
- </xsl:variable>
2406
- <!-- colwidths=<xsl:value-of select="$colwidths"/> -->
2652
+ <xsl:attribute name="margin-left">-3.5mm</xsl:attribute>
2653
+
2407
2654
 
2408
2655
  <fo:table width="95%" table-layout="fixed">
2409
2656
 
@@ -2416,42 +2663,30 @@
2416
2663
 
2417
2664
  </xsl:when>
2418
2665
  </xsl:choose>
2419
- <xsl:choose>
2420
- <xsl:when test="ancestor::*[local-name()='dl']"><!-- second level, i.e. inlined table -->
2421
- <fo:table-column column-width="50%"/>
2422
- <fo:table-column column-width="50%"/>
2423
- </xsl:when>
2424
- <xsl:otherwise>
2425
- <xsl:choose>
2426
- <!-- <xsl:when test="xalan:nodeset($colwidths)/column[1] div xalan:nodeset($colwidths)/column[2] &gt; 1.7">
2427
- <fo:table-column column-width="60%"/>
2428
- <fo:table-column column-width="40%"/>
2429
- </xsl:when> -->
2430
- <xsl:when test="xalan:nodeset($colwidths)/column[1] div xalan:nodeset($colwidths)/column[2] &gt; 1.3">
2431
- <fo:table-column column-width="50%"/>
2432
- <fo:table-column column-width="50%"/>
2433
- </xsl:when>
2434
- <xsl:when test="xalan:nodeset($colwidths)/column[1] div xalan:nodeset($colwidths)/column[2] &gt; 0.5">
2435
- <fo:table-column column-width="40%"/>
2436
- <fo:table-column column-width="60%"/>
2437
- </xsl:when>
2438
- <xsl:otherwise>
2439
- <xsl:for-each select="xalan:nodeset($colwidths)//column">
2440
- <xsl:choose>
2441
- <xsl:when test=". = 1 or . = 0">
2442
- <fo:table-column column-width="proportional-column-width(2)"/>
2443
- </xsl:when>
2444
- <xsl:otherwise>
2445
- <fo:table-column column-width="proportional-column-width({.})"/>
2446
- </xsl:otherwise>
2447
- </xsl:choose>
2448
- </xsl:for-each>
2449
- </xsl:otherwise>
2450
- </xsl:choose>
2451
- <!-- <fo:table-column column-width="15%"/>
2452
- <fo:table-column column-width="85%"/> -->
2453
- </xsl:otherwise>
2454
- </xsl:choose>
2666
+ <!-- create virtual html table for dl/[dt and dd] -->
2667
+ <xsl:variable name="html-table">
2668
+ <xsl:variable name="ns" select="substring-before(name(/*), '-')"/>
2669
+ <xsl:element name="{$ns}:table">
2670
+ <tbody>
2671
+ <xsl:apply-templates mode="dl"/>
2672
+ </tbody>
2673
+ </xsl:element>
2674
+ </xsl:variable>
2675
+ <!-- html-table<xsl:copy-of select="$html-table"/> -->
2676
+ <xsl:variable name="colwidths">
2677
+ <xsl:call-template name="calculate-column-widths">
2678
+ <xsl:with-param name="cols-count" select="2"/>
2679
+ <xsl:with-param name="table" select="$html-table"/>
2680
+ </xsl:call-template>
2681
+ </xsl:variable>
2682
+ <!-- colwidths=<xsl:value-of select="$colwidths"/> -->
2683
+ <xsl:variable name="maxlength_dt">
2684
+ <xsl:call-template name="getMaxLength_dt"/>
2685
+ </xsl:variable>
2686
+ <xsl:call-template name="setColumnWidth_dl">
2687
+ <xsl:with-param name="colwidths" select="$colwidths"/>
2688
+ <xsl:with-param name="maxlength_dt" select="$maxlength_dt"/>
2689
+ </xsl:call-template>
2455
2690
  <fo:table-body>
2456
2691
  <xsl:apply-templates>
2457
2692
  <xsl:with-param name="key_iso" select="normalize-space($key_iso)"/>
@@ -2461,6 +2696,60 @@
2461
2696
  </fo:block>
2462
2697
  </fo:block>
2463
2698
  </xsl:if>
2699
+ </xsl:template><xsl:template name="setColumnWidth_dl">
2700
+ <xsl:param name="colwidths"/>
2701
+ <xsl:param name="maxlength_dt"/>
2702
+ <xsl:choose>
2703
+ <xsl:when test="ancestor::*[local-name()='dl']"><!-- second level, i.e. inlined table -->
2704
+ <fo:table-column column-width="50%"/>
2705
+ <fo:table-column column-width="50%"/>
2706
+ </xsl:when>
2707
+ <xsl:otherwise>
2708
+ <xsl:choose>
2709
+ <xsl:when test="normalize-space($maxlength_dt) != '' and number($maxlength_dt) &lt;= 2"> <!-- if dt contains short text like t90, a, etc -->
2710
+ <fo:table-column column-width="5%"/>
2711
+ <fo:table-column column-width="95%"/>
2712
+ </xsl:when>
2713
+ <xsl:when test="normalize-space($maxlength_dt) != '' and number($maxlength_dt) &lt;= 5"> <!-- if dt contains short text like t90, a, etc -->
2714
+ <fo:table-column column-width="10%"/>
2715
+ <fo:table-column column-width="90%"/>
2716
+ </xsl:when>
2717
+ <!-- <xsl:when test="xalan:nodeset($colwidths)/column[1] div xalan:nodeset($colwidths)/column[2] &gt; 1.7">
2718
+ <fo:table-column column-width="60%"/>
2719
+ <fo:table-column column-width="40%"/>
2720
+ </xsl:when> -->
2721
+ <xsl:when test="xalan:nodeset($colwidths)/column[1] div xalan:nodeset($colwidths)/column[2] &gt; 1.3">
2722
+ <fo:table-column column-width="50%"/>
2723
+ <fo:table-column column-width="50%"/>
2724
+ </xsl:when>
2725
+ <xsl:when test="xalan:nodeset($colwidths)/column[1] div xalan:nodeset($colwidths)/column[2] &gt; 0.5">
2726
+ <fo:table-column column-width="40%"/>
2727
+ <fo:table-column column-width="60%"/>
2728
+ </xsl:when>
2729
+ <xsl:otherwise>
2730
+ <xsl:for-each select="xalan:nodeset($colwidths)//column">
2731
+ <xsl:choose>
2732
+ <xsl:when test=". = 1 or . = 0">
2733
+ <fo:table-column column-width="proportional-column-width(2)"/>
2734
+ </xsl:when>
2735
+ <xsl:otherwise>
2736
+ <fo:table-column column-width="proportional-column-width({.})"/>
2737
+ </xsl:otherwise>
2738
+ </xsl:choose>
2739
+ </xsl:for-each>
2740
+ </xsl:otherwise>
2741
+ </xsl:choose>
2742
+ <!-- <fo:table-column column-width="15%"/>
2743
+ <fo:table-column column-width="85%"/> -->
2744
+ </xsl:otherwise>
2745
+ </xsl:choose>
2746
+ </xsl:template><xsl:template name="getMaxLength_dt">
2747
+ <xsl:for-each select="*[local-name()='dt']">
2748
+ <xsl:sort select="string-length(normalize-space(.))" data-type="number" order="descending"/>
2749
+ <xsl:if test="position() = 1">
2750
+ <xsl:value-of select="string-length(normalize-space(.))"/>
2751
+ </xsl:if>
2752
+ </xsl:for-each>
2464
2753
  </xsl:template><xsl:template match="*[local-name()='dl']/*[local-name()='note']">
2465
2754
  <xsl:param name="key_iso"/>
2466
2755
 
@@ -2477,6 +2766,11 @@
2477
2766
  <xsl:if test="normalize-space($key_iso) = 'true'">
2478
2767
  <xsl:attribute name="margin-top">0</xsl:attribute>
2479
2768
  </xsl:if>
2769
+ <xsl:variable name="title-note">
2770
+ <xsl:call-template name="getTitle">
2771
+ <xsl:with-param name="name" select="'title-note'"/>
2772
+ </xsl:call-template>
2773
+ </xsl:variable>
2480
2774
  <xsl:value-of select="$title-note"/>
2481
2775
  </fo:block>
2482
2776
  </fo:table-cell>
@@ -2521,7 +2815,11 @@
2521
2815
 
2522
2816
 
2523
2817
  <xsl:apply-templates/>
2524
-
2818
+ <!-- <xsl:if test="$namespace = 'gb'">
2819
+ <xsl:if test="ancestor::*[local-name()='formula']">
2820
+ <xsl:text>—</xsl:text>
2821
+ </xsl:if>
2822
+ </xsl:if> -->
2525
2823
  </fo:block>
2526
2824
  </fo:table-cell>
2527
2825
  <fo:table-cell>
@@ -2577,7 +2875,8 @@
2577
2875
  </xsl:template><xsl:template name="recursiveSmallCaps">
2578
2876
  <xsl:param name="text"/>
2579
2877
  <xsl:variable name="char" select="substring($text,1,1)"/>
2580
- <xsl:variable name="upperCase" select="translate($char, $lower, $upper)"/>
2878
+ <!-- <xsl:variable name="upperCase" select="translate($char, $lower, $upper)"/> -->
2879
+ <xsl:variable name="upperCase" select="java:toUpperCase(java:java.lang.String.new($char))"/>
2581
2880
  <xsl:choose>
2582
2881
  <xsl:when test="$char=$upperCase">
2583
2882
  <fo:inline font-size="{100 div 0.75}%">
@@ -2860,18 +3159,28 @@
2860
3159
  <xsl:choose>
2861
3160
  <xsl:when test="contains($str2, ' ')">
2862
3161
  <xsl:variable name="substr" select="substring-before($str2, ' ')"/>
2863
- <xsl:value-of select="translate(substring($substr, 1, 1), $lower, $upper)"/>
2864
- <xsl:value-of select="substring($substr, 2)"/>
3162
+ <!-- <xsl:value-of select="translate(substring($substr, 1, 1), $lower, $upper)"/>
3163
+ <xsl:value-of select="substring($substr, 2)"/> -->
3164
+ <xsl:call-template name="capitalize">
3165
+ <xsl:with-param name="str" select="$substr"/>
3166
+ </xsl:call-template>
2865
3167
  <xsl:text> </xsl:text>
2866
3168
  <xsl:call-template name="capitalizeWords">
2867
3169
  <xsl:with-param name="str" select="substring-after($str2, ' ')"/>
2868
3170
  </xsl:call-template>
2869
3171
  </xsl:when>
2870
3172
  <xsl:otherwise>
2871
- <xsl:value-of select="translate(substring($str2, 1, 1), $lower, $upper)"/>
2872
- <xsl:value-of select="substring($str2, 2)"/>
3173
+ <!-- <xsl:value-of select="translate(substring($str2, 1, 1), $lower, $upper)"/>
3174
+ <xsl:value-of select="substring($str2, 2)"/> -->
3175
+ <xsl:call-template name="capitalize">
3176
+ <xsl:with-param name="str" select="$str2"/>
3177
+ </xsl:call-template>
2873
3178
  </xsl:otherwise>
2874
3179
  </xsl:choose>
3180
+ </xsl:template><xsl:template name="capitalize">
3181
+ <xsl:param name="str"/>
3182
+ <xsl:value-of select="java:toUpperCase(java:java.lang.String.new(substring($str, 1, 1)))"/>
3183
+ <xsl:value-of select="substring($str, 2)"/>
2875
3184
  </xsl:template><xsl:template match="mathml:math">
2876
3185
  <fo:inline font-family="STIX2Math">
2877
3186
  <fo:instream-foreign-object fox:alt-text="Math">
@@ -2929,6 +3238,11 @@
2929
3238
  <fo:inline id="{@id}"/>
2930
3239
  </xsl:template><xsl:template match="*[local-name()='appendix']">
2931
3240
  <fo:block id="{@id}" xsl:use-attribute-sets="appendix-style">
3241
+ <xsl:variable name="title-appendix">
3242
+ <xsl:call-template name="getTitle">
3243
+ <xsl:with-param name="name" select="'title-appendix'"/>
3244
+ </xsl:call-template>
3245
+ </xsl:variable>
2932
3246
  <fo:inline padding-right="5mm"><xsl:value-of select="$title-appendix"/> <xsl:number/></fo:inline>
2933
3247
  <xsl:apply-templates select="*[local-name()='title']" mode="process"/>
2934
3248
  </fo:block>
@@ -2938,6 +3252,11 @@
2938
3252
  </xsl:template><xsl:template match="*[local-name()='appendix']//*[local-name()='example']">
2939
3253
  <fo:block xsl:use-attribute-sets="appendix-example-style">
2940
3254
  <xsl:variable name="claims_id" select="ancestor::*[local-name()='clause'][1]/@id"/>
3255
+ <xsl:variable name="title-example">
3256
+ <xsl:call-template name="getTitle">
3257
+ <xsl:with-param name="name" select="'title-example'"/>
3258
+ </xsl:call-template>
3259
+ </xsl:variable>
2941
3260
  <xsl:value-of select="$title-example"/>
2942
3261
  <xsl:if test="count(ancestor::*[local-name()='clause'][1]//*[local-name()='example']) &gt; 1">
2943
3262
  <xsl:number count="*[local-name()='example'][ancestor::*[local-name()='clause'][@id = $claims_id]]" level="any"/><xsl:text> </xsl:text>
@@ -2968,6 +3287,17 @@
2968
3287
  <xsl:if test="not(preceding-sibling::*[local-name() = 'p'])"><xsl:value-of select="$callout"/></xsl:if>
2969
3288
  <xsl:apply-templates/>
2970
3289
  </fo:inline>
3290
+ </xsl:template><xsl:template match="*[local-name() = 'modification']">
3291
+ <xsl:variable name="title-modified">
3292
+ <xsl:call-template name="getTitle">
3293
+ <xsl:with-param name="name" select="'title-modified'"/>
3294
+ </xsl:call-template>
3295
+ </xsl:variable>
3296
+ <xsl:choose>
3297
+ <xsl:when test="$lang = 'zh'"><xsl:text>、</xsl:text><xsl:value-of select="$title-modified"/><xsl:text>—</xsl:text></xsl:when>
3298
+ <xsl:otherwise><xsl:text>, </xsl:text><xsl:value-of select="$title-modified"/><xsl:text> — </xsl:text></xsl:otherwise>
3299
+ </xsl:choose>
3300
+ <xsl:apply-templates/>
2971
3301
  </xsl:template><xsl:template name="convertDate">
2972
3302
  <xsl:param name="date"/>
2973
3303
  <xsl:param name="format" select="'short'"/>
@@ -3032,4 +3362,107 @@
3032
3362
  <xsl:when test="position() != last()"><xsl:value-of select="$charDelim"/></xsl:when>
3033
3363
  <xsl:otherwise><xsl:value-of select="$charAtEnd"/></xsl:otherwise>
3034
3364
  </xsl:choose>
3365
+ </xsl:template><xsl:template name="addPDFUAmeta">
3366
+ <fo:declarations>
3367
+ <pdf:catalog xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf">
3368
+ <pdf:dictionary type="normal" key="ViewerPreferences">
3369
+ <pdf:boolean key="DisplayDocTitle">true</pdf:boolean>
3370
+ </pdf:dictionary>
3371
+ </pdf:catalog>
3372
+ <x:xmpmeta xmlns:x="adobe:ns:meta/">
3373
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
3374
+ <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" rdf:about="">
3375
+ <!-- Dublin Core properties go here -->
3376
+ <dc:title>
3377
+ <xsl:variable name="title">
3378
+
3379
+
3380
+ <xsl:value-of select="/*/*[local-name() = 'bibdata']/*[local-name() = 'title'][@language = 'en']"/>
3381
+
3382
+
3383
+
3384
+ </xsl:variable>
3385
+ <xsl:choose>
3386
+ <xsl:when test="normalize-space($title) != ''">
3387
+ <xsl:value-of select="$title"/>
3388
+ </xsl:when>
3389
+ <xsl:otherwise>
3390
+ <xsl:text> </xsl:text>
3391
+ </xsl:otherwise>
3392
+ </xsl:choose>
3393
+ </dc:title>
3394
+ <dc:creator>
3395
+
3396
+ <xsl:value-of select="/*/*[local-name() = 'bibdata']/*[local-name() = 'contributor'][*[local-name() = 'role']/@type='author']/*[local-name() = 'organization']/*[local-name() = 'name']"/>
3397
+
3398
+
3399
+ </dc:creator>
3400
+ <dc:description>
3401
+ <xsl:variable name="abstract">
3402
+
3403
+ <xsl:copy-of select="/*/*[local-name() = 'bibliography']/*[local-name() = 'references']/*[local-name() = 'bibitem']/*[local-name() = 'abstract']//text()"/>
3404
+
3405
+
3406
+
3407
+
3408
+ </xsl:variable>
3409
+ <xsl:value-of select="normalize-space($abstract)"/>
3410
+ </dc:description>
3411
+ <pdf:Keywords>
3412
+ <xsl:call-template name="insertKeywords"/>
3413
+ </pdf:Keywords>
3414
+ </rdf:Description>
3415
+ <rdf:Description xmlns:xmp="http://ns.adobe.com/xap/1.0/" rdf:about="">
3416
+ <!-- XMP properties go here -->
3417
+ <xmp:CreatorTool/>
3418
+ </rdf:Description>
3419
+ </rdf:RDF>
3420
+ </x:xmpmeta>
3421
+ </fo:declarations>
3422
+ </xsl:template><xsl:template name="getId">
3423
+ <xsl:choose>
3424
+ <xsl:when test="../@id">
3425
+ <xsl:value-of select="../@id"/>
3426
+ </xsl:when>
3427
+ <xsl:otherwise>
3428
+ <!-- <xsl:value-of select="concat(local-name(..), '_', text())"/> -->
3429
+ <xsl:value-of select="concat(generate-id(..), '_', text())"/>
3430
+ </xsl:otherwise>
3431
+ </xsl:choose>
3432
+ </xsl:template><xsl:template name="getLevel">
3433
+ <xsl:variable name="level_total" select="count(ancestor::*)"/>
3434
+ <xsl:variable name="level">
3435
+ <xsl:choose>
3436
+ <xsl:when test="ancestor::*[local-name() = 'preface']">
3437
+ <xsl:value-of select="$level_total - 2"/>
3438
+ </xsl:when>
3439
+ <xsl:when test="ancestor::*[local-name() = 'sections']">
3440
+ <xsl:value-of select="$level_total - 2"/>
3441
+ </xsl:when>
3442
+ <xsl:when test="ancestor::*[local-name() = 'bibliography']">
3443
+ <xsl:value-of select="$level_total - 2"/>
3444
+ </xsl:when>
3445
+ <xsl:when test="local-name(ancestor::*[1]) = 'annex'">1</xsl:when>
3446
+ <xsl:otherwise>
3447
+ <xsl:value-of select="$level_total - 1"/>
3448
+ </xsl:otherwise>
3449
+ </xsl:choose>
3450
+ </xsl:variable>
3451
+ <xsl:value-of select="$level"/>
3452
+ </xsl:template><xsl:template name="getSubSection">
3453
+ <xsl:number format=".1" level="multiple" count="*[local-name() = 'clause']/*[local-name() = 'clause'] | *[local-name() = 'clause']/*[local-name() = 'terms'] | *[local-name() = 'terms']/*[local-name() = 'term'] | *[local-name() = 'clause']/*[local-name() = 'term'] | *[local-name() = 'terms']/*[local-name() = 'clause'] | *[local-name() = 'terms']/*[local-name() = 'definitions'] | *[local-name() = 'definitions']/*[local-name() = 'clause'] | *[local-name() = 'clause']/*[local-name() = 'definitions'] | *[local-name() = 'definitions']/*[local-name() = 'definitions'] | *[local-name() = 'clause']/*[local-name() = 'references']"/>
3454
+ </xsl:template><xsl:template name="split">
3455
+ <xsl:param name="pText" select="."/>
3456
+ <xsl:param name="sep" select="','"/>
3457
+ <xsl:if test="string-length($pText) &gt;0">
3458
+ <item>
3459
+ <xsl:value-of select="normalize-space(substring-before(concat($pText, ','), $sep))"/>
3460
+ </item>
3461
+ <xsl:call-template name="split">
3462
+ <xsl:with-param name="pText" select="substring-after($pText, $sep)"/>
3463
+ <xsl:with-param name="sep" select="$sep"/>
3464
+ </xsl:call-template>
3465
+ </xsl:if>
3466
+ </xsl:template><xsl:template name="getDocumentId">
3467
+ <xsl:call-template name="getLang"/><xsl:value-of select="//*[local-name() = 'p'][1]/@id"/>
3035
3468
  </xsl:template></xsl:stylesheet>