metanorma-bipm 2.7.2 → 2.7.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 30ab2c5c62662e56c25c618f99307735e0a2ee573bcbdc29435ffa2a46d69b3a
4
- data.tar.gz: c369b13eb1a7d9320d89db146624081b3bcb00288e18c22169486c00470db035
3
+ metadata.gz: 4f61b39d47d95aa1d5cdc018b7da02b7e388d12dd3610e4dd68479411633eca9
4
+ data.tar.gz: edf3bbfd2d23ac2bd8053b56e5b7313bb92aad686a8a0f43376f6905a57f57b0
5
5
  SHA512:
6
- metadata.gz: 2c6a1215d446f6d41433ebde77298a85d593981f44534208831f62729cdb22619a0aababfc805b4b8b574249a34c0d5148e0d94a52a0a9193390d02e0ee73a8e
7
- data.tar.gz: '09dbc4b0a81a4e86b556f2d3f10df2697f979cd7b417e2f6415526e4583cc4078f95ca32985b737a89ea216d8425b372e8ec9cd8449d9eaeeaf218f8b395d5f9'
6
+ metadata.gz: e0a017712c5401020feed7cc49f9135b92908280a44231b84cff7f13b374f3d092679abac3622623622251ab1f704b6cab8eac710a0b3972e0543565d0cd0dd9
7
+ data.tar.gz: 36b300fe4b9c5e2f8d3282e2c21fceee949d5fb79ef2570bc55cb880788b5c376c51c9f08f7793d50777225a7b495371ff0d36701ab9a9e0b2b9cee4256b217c
@@ -10,37 +10,12 @@ module IsoDoc
10
10
  end
11
11
 
12
12
  def convert1(docxml, filename, dir)
13
- @jcgm = docxml&.at(ns("//bibdata/ext/editorialgroup/committee/" \
14
- "@acronym"))&.value == "JCGM"
13
+ @jcgm = docxml.at(ns(<<~XPATH))&.text == "JCGM"
14
+ //bibdata/contributor[role/description = 'committee']/organization/subdivision[@type = 'Committee']/identifier[not(@type = 'full')]
15
+ XPATH
15
16
  super
16
17
  end
17
- =begin
18
- def update_i18n(i18n)
19
- #require "debug"; binding.b
20
- if %w(2019).include?(@docscheme)
21
- %w(level2_ancillary level3_ancillary level2_ancillary_alt
22
- level3_ancillary_alt).each do |w|
23
- i18n_conditional_set(i18n, w, "#{w}_2019")
24
- end
25
- end
26
- i18n.set("annex", i18n.get["level2_ancillary"])
27
- i18n.set("appendix", i18n.get["level3_ancillary"])
28
- end
29
-
30
- def convert_i18n_init(docxml)
31
- #require "debug"; binding.b
32
- @docscheme =
33
- docxml.at(ns("//presentation-metadata[name" \
34
- "[text() = 'document-scheme']]/value"))&.text || "2021"
35
- super
36
- update_i18n(@i18n)
37
- end
38
18
 
39
- def i18n_conditional_set(i18n, old, new)
40
- i18n.get[new] or return
41
- i18n.set(old, i18n.get[new])
42
- end
43
- =end
44
19
  def middle_clause(_docxml)
45
20
  if @jcgm
46
21
  "//clause[parent::sections][not(@type = 'scope')]" \
@@ -1206,7 +1206,10 @@
1206
1206
  <!-- indexes=<xsl:copy-of select="$indexes"/> -->
1207
1207
  <!-- Index -->
1208
1208
  <xsl:apply-templates select="xalan:nodeset($indexes)/doc[@id = $docid]//mn:indexsect" mode="index">
1209
- <xsl:with-param name="isDraft" select="normalize-space(//mn:metanorma/mn:bibdata/mn:version/mn:draft or contains(//mn:metanorma/mn:bibdata/mn:status/mn:stage, 'draft') or contains(//mn:metanorma/mn:bibdata/mn:status/mn:stage, 'projet'))"/>
1209
+ <!-- <xsl:with-param name="isDraft" select="normalize-space(//mn:metanorma/mn:bibdata/mn:version/mn:draft or
1210
+ contains(//mn:metanorma/mn:bibdata/mn:status/mn:stage, 'draft') or
1211
+ contains(//mn:metanorma/mn:bibdata/mn:status/mn:stage, 'projet'))"/> -->
1212
+ <xsl:with-param name="isDraft" select="normalize-space(normalize-space(//mn:metanorma/mn:bibdata/mn:version/mn:draft) != '' or normalize-space(//mn:metanorma/mn:metanorma-extension/mn:semantic-metadata/mn:stage-published) = 'false')"/>
1210
1213
  <xsl:with-param name="lang" select="$curr_lang"/>
1211
1214
  </xsl:apply-templates>
1212
1215
 
@@ -1294,7 +1297,9 @@
1294
1297
 
1295
1298
  <fo:block> </fo:block>
1296
1299
  <fo:block font-size="9pt">
1297
- <xsl:value-of select="/mn:metanorma/mn:bibdata/mn:ext/mn:editorialgroup/mn:committee/mn:variant[@language = $curr_lang]"/>
1300
+ <!-- <xsl:value-of select="/mn:metanorma/mn:bibdata/mn:ext/mn:editorialgroup/mn:committee/mn:variant[@language = $curr_lang]"/> -->
1301
+ <!-- <xsl:value-of select="/mn:metanorma/mn:bibdata/mn:ext/mn:editorialgroup/mn:committee[@language = $curr_lang]"/> -->
1302
+ <xsl:value-of select="//mn:metanorma/mn:bibdata/mn:contributor[mn:role[@type = 'author']/mn:description = 'committee']/mn:organization/mn:subdivision[@type = 'Committee']/mn:name[@language = $curr_lang]"/>
1298
1303
  </fo:block>
1299
1304
  </fo:block-container>
1300
1305
 
@@ -1361,7 +1366,10 @@
1361
1366
 
1362
1367
  <!-- Index -->
1363
1368
  <xsl:apply-templates select="xalan:nodeset($indexes)/doc[@id = $docid]//mn:indexsect" mode="index">
1364
- <xsl:with-param name="isDraft" select="normalize-space(//mn:metanorma/mn:bibdata/mn:version/mn:draft or contains(//mn:metanorma/mn:bibdata/mn:status/mn:stage, 'draft') or contains(//mn:metanorma/mn:bibdata/mn:status/mn:stage, 'projet'))"/>
1369
+ <!-- <xsl:with-param name="isDraft" select="normalize-space(//mn:metanorma/mn:bibdata/mn:version/mn:draft or
1370
+ contains(//mn:metanorma/mn:bibdata/mn:status/mn:stage, 'draft') or
1371
+ contains(//mn:metanorma/mn:bibdata/mn:status/mn:stage, 'projet'))"/> -->
1372
+ <xsl:with-param name="isDraft" select="normalize-space(normalize-space(//mn:metanorma/mn:bibdata/mn:version/mn:draft) != '' or normalize-space(//mn:metanorma/mn:metanorma-extension/mn:semantic-metadata/mn:stage-published) = 'false')"/>
1365
1373
  <xsl:with-param name="lang" select="$curr_lang"/>
1366
1374
  </xsl:apply-templates>
1367
1375
 
@@ -1691,8 +1699,12 @@
1691
1699
 
1692
1700
  <fo:block-container absolute-position="fixed" left="12mm" top="242mm" height="42mm" width="140mm" display-align="after">
1693
1701
  <fo:block font-size="12pt">
1694
- <fo:block><xsl:value-of select="(//mn:metanorma)[1]/mn:bibdata/mn:ext/mn:editorialgroup/mn:committee/mn:variant[@language = 'fr']"/></fo:block>
1695
- <fo:block><xsl:value-of select="(//mn:metanorma)[1]/mn:bibdata/mn:ext/mn:editorialgroup/mn:committee/mn:variant[@language = 'en']"/></fo:block>
1702
+ <!-- <fo:block><xsl:value-of select="(//mn:metanorma)[1]/mn:bibdata/mn:ext/mn:editorialgroup/mn:committee/mn:variant[@language = 'fr']"/></fo:block> -->
1703
+ <!-- <fo:block><xsl:value-of select="(//mn:metanorma)[1]/mn:bibdata/mn:ext/mn:editorialgroup/mn:committee[@language = 'fr']"/></fo:block> -->
1704
+ <fo:block><xsl:value-of select="//mn:metanorma/mn:bibdata/mn:contributor[mn:role[@type = 'author']/mn:description = 'committee']/mn:organization/mn:subdivision[@type = 'Committee']/mn:name[@language = 'fr']"/></fo:block>
1705
+ <!-- <fo:block><xsl:value-of select="(//mn:metanorma)[1]/mn:bibdata/mn:ext/mn:editorialgroup/mn:committee/mn:variant[@language = 'en']"/></fo:block> -->
1706
+ <!-- <fo:block><xsl:value-of select="(//mn:metanorma)[1]/mn:bibdata/mn:ext/mn:editorialgroup/mn:committee[@language = 'en']"/></fo:block> -->
1707
+ <fo:block><xsl:value-of select="//mn:metanorma/mn:bibdata/mn:contributor[mn:role[@type = 'author']/mn:description = 'committee']/mn:organization/mn:subdivision[@type = 'Committee']/mn:name[@language = 'en']"/></fo:block>
1696
1708
  <fo:block> </fo:block>
1697
1709
 
1698
1710
  <fo:block>
@@ -3560,7 +3572,10 @@
3560
3572
  <xsl:template name="insertDraftWatermark">
3561
3573
  <xsl:param name="isDraft"/>
3562
3574
  <xsl:param name="lang"/>
3563
- <xsl:if test="$isDraft = 'true' or normalize-space(//mn:metanorma/mn:bibdata/mn:version/mn:draft or contains(//mn:metanorma/mn:bibdata/mn:status/mn:stage, 'draft') or contains(//mn:metanorma/mn:bibdata/mn:status/mn:stage, 'projet')) = 'true'">
3575
+ <!-- <xsl:if test="$isDraft = 'true' or normalize-space(//mn:metanorma/mn:bibdata/mn:version/mn:draft or
3576
+ contains(//mn:metanorma/mn:bibdata/mn:status/mn:stage, 'draft') or
3577
+ contains(//mn:metanorma/mn:bibdata/mn:status/mn:stage, 'projet')) = 'true'"> -->
3578
+ <xsl:if test="$isDraft = 'true' or normalize-space(normalize-space(//mn:metanorma/mn:bibdata/mn:version/mn:draft) != '' or normalize-space(//mn:metanorma/mn:metanorma-extension/mn:semantic-metadata/mn:stage-published) = 'false') = 'true'">
3564
3579
  <!-- DRAFT -->
3565
3580
  <xsl:variable name="draft_label">
3566
3581
  <xsl:choose>
@@ -3604,7 +3619,10 @@
3604
3619
  </xsl:template>
3605
3620
 
3606
3621
  <xsl:template name="insertHeaderDraftWatermark">
3607
- <xsl:variable name="isDraft" select="normalize-space(//mn:metanorma/mn:bibdata/mn:version/mn:draft or contains(//mn:metanorma/mn:bibdata/mn:status/mn:stage, 'draft') or contains(//mn:metanorma/mn:bibdata/mn:status/mn:stage, 'projet'))"/>
3622
+ <!-- <xsl:variable name="isDraft" select="normalize-space(//mn:metanorma/mn:bibdata/mn:version/mn:draft or
3623
+ contains(//mn:metanorma/mn:bibdata/mn:status/mn:stage, 'draft') or
3624
+ contains(//mn:metanorma/mn:bibdata/mn:status/mn:stage, 'projet'))"/> -->
3625
+ <xsl:variable name="isDraft" select="normalize-space(normalize-space(//mn:metanorma/mn:bibdata/mn:version/mn:draft) != '' or normalize-space(//mn:metanorma/mn:metanorma-extension/mn:semantic-metadata/mn:stage-published) = 'false')"/>
3608
3626
  <xsl:variable name="curr_lang" select="$doc_split_by_language"/>
3609
3627
  <xsl:if test="$isDraft = 'true'">
3610
3628
  <fo:static-content flow-name="header-blank" role="artifact">
@@ -5602,13 +5620,23 @@
5602
5620
  <xsl:attribute-set name="copyright-statement-style">
5603
5621
  </xsl:attribute-set> <!-- copyright-statement-style -->
5604
5622
 
5623
+ <xsl:template name="refine_copyright-statement-style">
5624
+ </xsl:template>
5625
+
5605
5626
  <xsl:attribute-set name="copyright-statement-title-style">
5606
5627
  </xsl:attribute-set> <!-- copyright-statement-title-style -->
5607
5628
 
5629
+ <xsl:template name="refine_copyright-statement-title-style">
5630
+ </xsl:template>
5631
+
5608
5632
  <xsl:attribute-set name="copyright-statement-p-style">
5609
5633
  </xsl:attribute-set> <!-- copyright-statement-p-style -->
5610
5634
 
5611
- <xsl:attribute-set name="license-statement-style">
5635
+ <xsl:template name="refine_copyright-statement-p-style">
5636
+
5637
+ </xsl:template>
5638
+
5639
+ <xsl:attribute-set name="license-statement-style">
5612
5640
  <xsl:attribute name="font-family">Times New Roman</xsl:attribute>
5613
5641
  <xsl:attribute name="font-size">10.5pt</xsl:attribute>
5614
5642
  </xsl:attribute-set> <!-- license-statement-style -->
@@ -5624,6 +5652,10 @@
5624
5652
  <xsl:attribute name="line-height">135%</xsl:attribute>
5625
5653
  </xsl:attribute-set> <!-- license-statement-p-style -->
5626
5654
 
5655
+ <xsl:template name="refine_license-statement-p-style">
5656
+
5657
+ </xsl:template>
5658
+
5627
5659
  <xsl:attribute-set name="legal-statement-style">
5628
5660
  </xsl:attribute-set> <!-- legal-statement-style -->
5629
5661
 
@@ -5653,6 +5685,8 @@
5653
5685
  <!-- ================================= -->
5654
5686
  <xsl:template match="mn:copyright-statement">
5655
5687
  <fo:block xsl:use-attribute-sets="copyright-statement-style" role="SKIP">
5688
+ <xsl:call-template name="refine_copyright-statement-style"/>
5689
+
5656
5690
  <xsl:apply-templates/>
5657
5691
  </fo:block>
5658
5692
  </xsl:template> <!-- copyright-statement -->
@@ -6752,7 +6786,7 @@
6752
6786
  </xsl:otherwise>
6753
6787
  </xsl:choose>
6754
6788
  </xsl:variable>
6755
- <xsl:if test="$key = 'font-family' or $key = 'font-size' or $key = 'color' or $key = 'baseline-shift'">
6789
+ <xsl:if test="$key = 'font-family' or $key = 'font-size' or $key = 'color' or $key = 'baseline-shift' or $key = 'line-height' ">
6756
6790
  <style name="{$key}"><xsl:value-of select="$value"/></style>
6757
6791
  </xsl:if>
6758
6792
  <xsl:if test="$key = 'text-indent'">
@@ -14385,13 +14419,31 @@
14385
14419
  <!-- skip here, see the template 'fmt-review-start' -->
14386
14420
  </xsl:when>
14387
14421
  <xsl:otherwise>
14388
- <!-- <fo:inline id="{@id}" font-size="1pt"/> -->
14389
- <fo:inline id="{@id}" font-size="1pt"><xsl:if test="preceding-sibling::node()[self::mn:fmt-annotation-start][@source = $bookmark_id] and following-sibling::node()[self::mn:fmt-annotation-end][@source = $bookmark_id]"><xsl:attribute name="line-height">0.1</xsl:attribute></xsl:if><xsl:value-of select="$hair_space"/></fo:inline>
14390
- <!-- we need to add zero-width space, otherwise this fo:inline is missing in IF xml -->
14391
- <xsl:if test="not(following-sibling::node()[normalize-space() != ''])"><fo:inline font-size="1pt"> </fo:inline></xsl:if>
14422
+ <xsl:choose>
14423
+ <xsl:when test="parent::mn:example or parent::mn:termexample or parent::mn:note or parent::mn:termnote">
14424
+ <fo:block font-size="1pt" line-height="0.1">
14425
+ <xsl:call-template name="fo_inline_bookmark">
14426
+ <xsl:with-param name="bookmark_id" select="$bookmark_id"/>
14427
+ </xsl:call-template>
14428
+ </fo:block>
14429
+ </xsl:when>
14430
+ <xsl:otherwise>
14431
+ <xsl:call-template name="fo_inline_bookmark">
14432
+ <xsl:with-param name="bookmark_id" select="$bookmark_id"/>
14433
+ </xsl:call-template>
14434
+ </xsl:otherwise>
14435
+ </xsl:choose>
14392
14436
  </xsl:otherwise>
14393
14437
  </xsl:choose>
14394
14438
  </xsl:template>
14439
+
14440
+ <xsl:template name="fo_inline_bookmark">
14441
+ <xsl:param name="bookmark_id"/>
14442
+ <!-- <fo:inline id="{@id}" font-size="1pt"/> -->
14443
+ <fo:inline id="{@id}" font-size="1pt"><xsl:if test="preceding-sibling::node()[self::mn:fmt-annotation-start][@source = $bookmark_id] and following-sibling::node()[self::mn:fmt-annotation-end][@source = $bookmark_id]"><xsl:attribute name="line-height">0.1</xsl:attribute></xsl:if><xsl:value-of select="$hair_space"/></fo:inline>
14444
+ <!-- we need to add zero-width space, otherwise this fo:inline is missing in IF xml -->
14445
+ <xsl:if test="not(following-sibling::node()[normalize-space() != ''])"><fo:inline font-size="1pt"> </fo:inline></xsl:if>
14446
+ </xsl:template>
14395
14447
  <!-- =================== -->
14396
14448
  <!-- End of Index processing -->
14397
14449
  <!-- =================== -->
@@ -16315,11 +16367,35 @@
16315
16367
 
16316
16368
  <xsl:template match="mn:svgmap"/>
16317
16369
 
16370
+ <xsl:template match="mn:name[following-sibling::*[1][self::mn:fmt-name]]"/>
16371
+
16318
16372
  <!-- for correct rendering combining chars, added in mode="update_xml_step2" -->
16319
16373
  <xsl:template match="*[local-name() = 'lang_none']">
16320
16374
  <fo:inline xml:lang="none"><xsl:value-of select="."/></fo:inline>
16321
16375
  </xsl:template>
16322
16376
 
16377
+ <xsl:template name="addTagElementT">
16378
+ <xsl:variable name="title_">
16379
+ <xsl:apply-templates select="mn:fmt-title"/>
16380
+ </xsl:variable>
16381
+ <xsl:variable name="title__">
16382
+ <xsl:for-each select="xalan:nodeset($title_)/*/node()">
16383
+ <xsl:choose>
16384
+ <xsl:when test="self::text()"><xsl:text> </xsl:text><xsl:value-of select="."/><xsl:text> </xsl:text></xsl:when>
16385
+ <xsl:otherwise><xsl:text> </xsl:text><xsl:copy-of select="."/><xsl:text> </xsl:text></xsl:otherwise>
16386
+ </xsl:choose>
16387
+ </xsl:for-each>
16388
+ </xsl:variable>
16389
+ <xsl:variable name="title" select="normalize-space($title__)"/>
16390
+ <xsl:if test="$title != ''">
16391
+ <xsl:attribute name="fox:title">
16392
+ <xsl:if test="ancestor::mn:sections">
16393
+ <xsl:text>Section </xsl:text>
16394
+ </xsl:if>
16395
+ <xsl:value-of select="$title"/></xsl:attribute>
16396
+ </xsl:if>
16397
+ </xsl:template>
16398
+
16323
16399
  <xsl:template name="replaceChar">
16324
16400
  <xsl:param name="text"/>
16325
16401
  <xsl:param name="replace"/>
@@ -17110,6 +17186,13 @@
17110
17186
  <xsl:with-param name="default" select="$text_align_default"/>
17111
17187
  </xsl:call-template>
17112
17188
  <xsl:call-template name="setKeepAttributes"/>
17189
+ <xsl:if test="node()[1][self::mn:span][contains(@style, 'line-height')]">
17190
+ <xsl:variable name="styles">
17191
+ <xsl:apply-templates select="*[1]"/>
17192
+ </xsl:variable>
17193
+ <!-- move attribute line-height from inline to block -->
17194
+ <xsl:attribute name="line-height"><xsl:value-of select="xalan:nodeset($styles)//*/@line-height"/></xsl:attribute>
17195
+ </xsl:if>
17113
17196
  </xsl:template>
17114
17197
 
17115
17198
  <xsl:template name="setKeepAttributes">
@@ -17135,34 +17218,41 @@
17135
17218
  <fo:block-container absolute-position="fixed" left="0mm" top="0mm" font-size="0" id="__internal_layout__coverpage{$suffix}_{$name}_{$number}_{generate-id()}">
17136
17219
  <fo:block>
17137
17220
  <xsl:for-each select="/mn:metanorma/mn:metanorma-extension/mn:presentation-metadata[mn:name = $name][1]/mn:value/mn:image[$num]">
17138
- <xsl:choose>
17139
- <xsl:when test="*[local-name() = 'svg'] or java:endsWith(java:java.lang.String.new(@src), '.svg')">
17140
- <fo:instream-foreign-object fox:alt-text="Image Front">
17141
- <xsl:attribute name="content-height"><xsl:value-of select="$pageHeight"/>mm</xsl:attribute>
17142
- <xsl:call-template name="getSVG"/>
17143
- </fo:instream-foreign-object>
17144
- </xsl:when>
17145
- <xsl:when test="starts-with(@src, 'data:application/pdf;base64')">
17146
- <fo:external-graphic src="{@src}" fox:alt-text="Image Front"/>
17147
- </xsl:when>
17148
- <xsl:otherwise> <!-- bitmap image -->
17149
- <xsl:variable name="coverimage_src" select="normalize-space(@src)"/>
17150
- <xsl:if test="$coverimage_src != ''">
17151
- <xsl:variable name="coverpage">
17152
- <xsl:call-template name="getImageURL">
17153
- <xsl:with-param name="src" select="$coverimage_src"/>
17154
- </xsl:call-template>
17155
- </xsl:variable>
17156
- <!-- <xsl:variable name="coverpage" select="concat('url(file:',$basepath, 'coverpage1.png', ')')"/> --> <!-- for DEBUG -->
17157
- <fo:external-graphic src="{$coverpage}" width="{$pageWidth}mm" content-height="scale-to-fit" scaling="uniform" fox:alt-text="Image Front"/>
17158
- </xsl:if>
17159
- </xsl:otherwise>
17160
- </xsl:choose>
17221
+
17222
+ <xsl:call-template name="insertPageImage"/>
17223
+
17161
17224
  </xsl:for-each>
17162
17225
  </fo:block>
17163
17226
  </fo:block-container>
17164
17227
  </xsl:template>
17165
17228
 
17229
+ <xsl:template name="insertPageImage">
17230
+ <xsl:param name="svg_content_height" select="$pageHeight"/>
17231
+ <xsl:param name="bitmap_width" select="$pageWidth"/>
17232
+ <xsl:choose>
17233
+ <xsl:when test="*[local-name() = 'svg'] or java:endsWith(java:java.lang.String.new(@src), '.svg')">
17234
+ <fo:instream-foreign-object fox:alt-text="Image Front">
17235
+ <xsl:attribute name="content-height"><xsl:value-of select="$svg_content_height"/>mm</xsl:attribute>
17236
+ <xsl:call-template name="getSVG"/>
17237
+ </fo:instream-foreign-object>
17238
+ </xsl:when>
17239
+ <xsl:when test="starts-with(@src, 'data:application/pdf;base64')">
17240
+ <fo:external-graphic src="{@src}" fox:alt-text="Image Front"/>
17241
+ </xsl:when>
17242
+ <xsl:otherwise> <!-- bitmap image -->
17243
+ <xsl:variable name="coverimage_src" select="normalize-space(@src)"/>
17244
+ <xsl:if test="$coverimage_src != ''">
17245
+ <xsl:variable name="coverpage">
17246
+ <xsl:call-template name="getImageURL">
17247
+ <xsl:with-param name="src" select="$coverimage_src"/>
17248
+ </xsl:call-template>
17249
+ </xsl:variable>
17250
+ <fo:external-graphic src="{$coverpage}" width="{$bitmap_width}mm" content-height="scale-to-fit" scaling="uniform" fox:alt-text="Image Front"/>
17251
+ </xsl:if>
17252
+ </xsl:otherwise>
17253
+ </xsl:choose>
17254
+ </xsl:template>
17255
+
17166
17256
  <xsl:template name="getImageURL">
17167
17257
  <xsl:param name="src"/>
17168
17258
  <xsl:choose>
@@ -17590,6 +17680,14 @@
17590
17680
  </xsl:attribute>
17591
17681
  </xsl:template>
17592
17682
 
17683
+ <xsl:template name="getCharByCodePoint">
17684
+ <xsl:param name="codepoint"/>
17685
+ <xsl:param name="radix">16</xsl:param>
17686
+ <xsl:variable name="codepointInt" select="java:java.lang.Integer.parseInt($codepoint,$radix)"/>
17687
+ <xsl:variable name="chars" select="java:java.lang.Character.toChars($codepointInt)"/>
17688
+ <xsl:value-of select="java:java.lang.String.new($chars)"/>
17689
+ </xsl:template>
17690
+
17593
17691
  <xsl:template name="substring-after-last">
17594
17692
  <xsl:param name="value"/>
17595
17693
  <xsl:param name="delimiter"/>