metanorma-iso 2.1.0 → 2.1.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 +4 -4
- data/lib/html2doc/lists.rb +145 -10
- data/lib/isodoc/iso/base_convert.rb +11 -1
- data/lib/isodoc/iso/html/html_iso_titlepage.html +2 -0
- data/lib/isodoc/iso/html/isodoc-dis.css +216 -278
- data/lib/isodoc/iso/html/isodoc-dis.scss +294 -288
- data/lib/isodoc/iso/html/isodoc.css +38 -13
- data/lib/isodoc/iso/html/isodoc.scss +38 -12
- data/lib/isodoc/iso/html/style-human.css +14 -1
- data/lib/isodoc/iso/html/style-human.scss +10 -1
- data/lib/isodoc/iso/html/style-iso.css +35 -23
- data/lib/isodoc/iso/html/style-iso.scss +31 -23
- data/lib/isodoc/iso/html/word_iso_intro-dis.html +1 -6
- data/lib/isodoc/iso/html/word_iso_titlepage-dis.html +24 -13
- data/lib/isodoc/iso/html/word_iso_titlepage-prf.html +58 -0
- data/lib/isodoc/iso/html/word_iso_titlepage.html +10 -6
- data/lib/isodoc/iso/html/wordstyle-dis.css +12 -62
- data/lib/isodoc/iso/html/wordstyle-dis.scss +7 -56
- data/lib/isodoc/iso/html_convert.rb +7 -2
- data/lib/isodoc/iso/i18n-en.yaml +32 -4
- data/lib/isodoc/iso/i18n-fr.yaml +29 -3
- data/lib/isodoc/iso/i18n-ru.yaml +32 -4
- data/lib/isodoc/iso/i18n-zh-Hans.yaml +32 -3
- data/lib/isodoc/iso/i18n.rb +1 -1
- data/lib/isodoc/iso/iso.amendment.xsl +1570 -246
- data/lib/isodoc/iso/iso.international-standard.xsl +1570 -246
- data/lib/isodoc/iso/metadata.rb +67 -67
- data/lib/isodoc/iso/presentation_bibdata.rb +74 -0
- data/lib/isodoc/iso/presentation_xml_convert.rb +16 -5
- data/lib/isodoc/iso/presentation_xref.rb +10 -4
- data/lib/isodoc/iso/sections.rb +3 -3
- data/lib/isodoc/iso/word_cleanup.rb +3 -0
- data/lib/isodoc/iso/word_convert.rb +8 -5
- data/lib/isodoc/iso/word_dis_cleanup.rb +235 -0
- data/lib/isodoc/iso/word_dis_convert.rb +48 -100
- data/lib/isodoc/iso/xref.rb +34 -6
- data/lib/metanorma/iso/base.rb +20 -1
- data/lib/metanorma/iso/biblio.rng +134 -39
- data/lib/metanorma/iso/boilerplate-fr.xml +3 -0
- data/lib/metanorma/iso/boilerplate-ru.xml +3 -0
- data/lib/metanorma/iso/boilerplate.xml +3 -0
- data/lib/metanorma/iso/cleanup.rb +49 -11
- data/lib/metanorma/iso/front.rb +38 -6
- data/lib/metanorma/iso/front_id.rb +2 -0
- data/lib/metanorma/iso/isodoc.rng +16 -0
- data/lib/metanorma/iso/isostandard.rng +30 -12
- data/lib/metanorma/iso/macros.rb +29 -0
- data/lib/metanorma/iso/validate_section.rb +0 -12
- data/lib/metanorma/iso/version.rb +1 -1
- data/spec/isodoc/amd_spec.rb +20 -46
- data/spec/isodoc/blocks_spec.rb +499 -2
- data/spec/isodoc/i18n_spec.rb +145 -80
- data/spec/isodoc/iso_spec.rb +50 -169
- data/spec/isodoc/metadata_spec.rb +240 -99
- data/spec/isodoc/postproc_spec.rb +43 -7
- data/spec/isodoc/section_spec.rb +9 -9
- data/spec/isodoc/word_dis_spec.rb +1332 -146
- data/spec/isodoc/xref_spec.rb +87 -13
- data/spec/metanorma/amd_spec.rb +39 -23
- data/spec/metanorma/base_spec.rb +174 -44
- data/spec/metanorma/blocks_spec.rb +54 -0
- data/spec/metanorma/lists_spec.rb +2 -2
- data/spec/metanorma/section_spec.rb +2 -2
- data/spec/metanorma/validate_spec.rb +8 -19
- data/spec/spec_helper.rb +17 -7
- data/spec/vcr_cassettes/withdrawn_iso.yml +30 -30
- metadata +7 -8
- data/docs/asciiiso-syntax.adoc +0 -307
- data/docs/guidance.adoc +0 -487
- data/docs/navigation.adoc +0 -23
- data/docs/quickstart.adoc +0 -179
- data/lib/isodoc/iso/presentation_inline.rb +0 -90
@@ -30,12 +30,19 @@
|
|
30
30
|
</xsl:variable>
|
31
31
|
<xsl:variable name="copyrightYear" select="/iso:iso-standard/iso:bibdata/iso:copyright/iso:from"/>
|
32
32
|
<xsl:variable name="copyrightAbbr_">
|
33
|
-
<xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:copyright/iso:owner/iso:organization/iso:abbreviation">
|
33
|
+
<xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:copyright/iso:owner/iso:organization/iso:abbreviation[. != 'IEEE']">
|
34
34
|
<xsl:value-of select="."/><xsl:if test="position() != last()">/</xsl:if>
|
35
35
|
</xsl:for-each>
|
36
36
|
</xsl:variable>
|
37
37
|
<xsl:variable name="copyrightAbbr" select="normalize-space($copyrightAbbr_)"/>
|
38
|
-
<xsl:variable name="
|
38
|
+
<xsl:variable name="copyrightAbbrIEEE" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:copyright/iso:owner/iso:organization/iso:abbreviation[. = 'IEEE'])"/>
|
39
|
+
<xsl:variable name="copyrightText">
|
40
|
+
<xsl:value-of select="concat('© ', $copyrightAbbr, ' ', $copyrightYear ,' – ', $all_rights_reserved)"/>
|
41
|
+
<xsl:if test="$copyrightAbbrIEEE != ''">
|
42
|
+
<xsl:value-of select="$linebreak"/>
|
43
|
+
<xsl:value-of select="concat('© ', $copyrightAbbrIEEE, ' ', $copyrightYear ,' – ', $all_rights_reserved)"/>
|
44
|
+
</xsl:if>
|
45
|
+
</xsl:variable>
|
39
46
|
|
40
47
|
<xsl:variable name="lang-1st-letter_tmp" select="substring-before(substring-after(/iso:iso-standard/iso:bibdata/iso:docidentifier[@type = 'iso-with-lang'], '('), ')')"/>
|
41
48
|
<xsl:variable name="lang-1st-letter" select="concat('(', $lang-1st-letter_tmp , ')')"/>
|
@@ -195,22 +202,48 @@
|
|
195
202
|
</xsl:variable>
|
196
203
|
|
197
204
|
<xsl:variable name="editorialgroup_">
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
<xsl:
|
203
|
-
<xsl:
|
205
|
+
<!-- Example: ISO/TC 46/SC 2 -->
|
206
|
+
<!-- ISO/SG SMART/SG TS/AG 1 -->
|
207
|
+
<xsl:variable name="approvalgroup" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:ext/iso:approvalgroup/@identifier)"/>
|
208
|
+
<xsl:variable name="parts_by_slash">
|
209
|
+
<xsl:call-template name="split">
|
210
|
+
<xsl:with-param name="pText" select="$approvalgroup"/>
|
211
|
+
<xsl:with-param name="sep" select="'/'"/>
|
212
|
+
<xsl:with-param name="normalize-space">false</xsl:with-param>
|
213
|
+
<xsl:with-param name="keep_sep">true</xsl:with-param>
|
214
|
+
</xsl:call-template>
|
215
|
+
</xsl:variable>
|
216
|
+
<xsl:variable name="parts_with_subparts">
|
217
|
+
<xsl:for-each select="xalan:nodeset($parts_by_slash)//item">
|
218
|
+
<subitem>
|
219
|
+
<xsl:call-template name="split">
|
220
|
+
<xsl:with-param name="pText" select="."/>
|
221
|
+
<xsl:with-param name="sep" select="' '"/>
|
222
|
+
<xsl:with-param name="normalize-space">false</xsl:with-param>
|
223
|
+
<xsl:with-param name="keep_sep">true</xsl:with-param>
|
224
|
+
</xsl:call-template>
|
225
|
+
</subitem>
|
204
226
|
</xsl:for-each>
|
205
|
-
<xsl:if test="not($stage-abbreviation = 'DIS' or $stage-abbreviation = 'FDIS')">
|
206
|
-
<xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:ext/iso:editorialgroup/iso:workgroup[normalize-space(@number) != '']">
|
207
|
-
<xsl:text>/WG </xsl:text><fo:inline font-weight="bold"><xsl:value-of select="@number"/></fo:inline>
|
208
|
-
</xsl:for-each>
|
209
|
-
</xsl:if>
|
210
227
|
</xsl:variable>
|
211
|
-
<xsl:
|
212
|
-
<xsl:
|
213
|
-
|
228
|
+
<xsl:for-each select="xalan:nodeset($parts_with_subparts)//subitem">
|
229
|
+
<xsl:choose>
|
230
|
+
<xsl:when test="position() = 1">
|
231
|
+
<xsl:value-of select="."/>
|
232
|
+
</xsl:when>
|
233
|
+
<xsl:otherwise>
|
234
|
+
<xsl:for-each select="item">
|
235
|
+
<xsl:choose>
|
236
|
+
<xsl:when test="position() = last()">
|
237
|
+
<fo:inline font-weight="bold"><xsl:value-of select="."/></fo:inline>
|
238
|
+
</xsl:when>
|
239
|
+
<xsl:otherwise>
|
240
|
+
<xsl:value-of select="."/>
|
241
|
+
</xsl:otherwise>
|
242
|
+
</xsl:choose>
|
243
|
+
</xsl:for-each>
|
244
|
+
</xsl:otherwise>
|
245
|
+
</xsl:choose>
|
246
|
+
</xsl:for-each>
|
214
247
|
</xsl:variable>
|
215
248
|
<xsl:variable name="editorialgroup" select="xalan:nodeset($editorialgroup_)"/>
|
216
249
|
|
@@ -243,9 +276,9 @@
|
|
243
276
|
|
244
277
|
<xsl:variable name="root-style">
|
245
278
|
<root-style xsl:use-attribute-sets="root-style">
|
246
|
-
<xsl:if test="$lang = 'zh'">
|
279
|
+
<!-- <xsl:if test="$lang = 'zh'">
|
247
280
|
<xsl:attribute name="font-family">Source Han Sans, Times New Roman, Cambria Math</xsl:attribute>
|
248
|
-
</xsl:if>
|
281
|
+
</xsl:if> -->
|
249
282
|
</root-style>
|
250
283
|
</xsl:variable>
|
251
284
|
<xsl:call-template name="insertRootStyle">
|
@@ -264,25 +297,25 @@
|
|
264
297
|
</fo:simple-page-master>
|
265
298
|
|
266
299
|
<fo:simple-page-master master-name="cover-page-published" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
|
267
|
-
<fo:region-body margin-top="12.7mm" margin-bottom="
|
300
|
+
<fo:region-body margin-top="12.7mm" margin-bottom="75mm" margin-left="78mm" margin-right="18.5mm"/>
|
268
301
|
<fo:region-before region-name="cover-page-header" extent="12.7mm"/>
|
269
|
-
<fo:region-after region-name="cover-page-footer" extent="
|
302
|
+
<fo:region-after region-name="cover-page-footer" extent="75mm" display-align="after"/>
|
270
303
|
<fo:region-start region-name="cover-left-region" extent="78mm"/>
|
271
304
|
<fo:region-end region-name="cover-right-region" extent="18.5mm"/>
|
272
305
|
</fo:simple-page-master>
|
273
306
|
|
274
307
|
|
275
308
|
<fo:simple-page-master master-name="cover-page-publishedISO-odd" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
|
276
|
-
<fo:region-body margin-top="12.7mm" margin-bottom="
|
309
|
+
<fo:region-body margin-top="12.7mm" margin-bottom="75mm" margin-left="{$marginLeftRight1}mm" margin-right="{$marginLeftRight2}mm"/>
|
277
310
|
<fo:region-before region-name="cover-page-header" extent="12.7mm"/>
|
278
|
-
<fo:region-after region-name="cover-page-footer" extent="
|
311
|
+
<fo:region-after region-name="cover-page-footer" extent="75mm" display-align="after"/>
|
279
312
|
<fo:region-start region-name="cover-left-region" extent="{$marginLeftRight1}mm"/>
|
280
313
|
<fo:region-end region-name="cover-right-region" extent="{$marginLeftRight2}mm"/>
|
281
314
|
</fo:simple-page-master>
|
282
315
|
<fo:simple-page-master master-name="cover-page-publishedISO-even" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
|
283
|
-
<fo:region-body margin-top="12.7mm" margin-bottom="
|
316
|
+
<fo:region-body margin-top="12.7mm" margin-bottom="75mm" margin-left="{$marginLeftRight2}mm" margin-right="{$marginLeftRight1}mm"/>
|
284
317
|
<fo:region-before region-name="cover-page-header" extent="12.7mm"/>
|
285
|
-
<fo:region-after region-name="cover-page-footer" extent="
|
318
|
+
<fo:region-after region-name="cover-page-footer" extent="75mm" display-align="after"/>
|
286
319
|
<fo:region-start region-name="cover-left-region" extent="{$marginLeftRight2}mm"/>
|
287
320
|
<fo:region-end region-name="cover-right-region" extent="{$marginLeftRight1}mm"/>
|
288
321
|
</fo:simple-page-master>
|
@@ -431,9 +464,9 @@
|
|
431
464
|
<fo:table-column column-width="112.5mm"/>
|
432
465
|
<fo:table-body>
|
433
466
|
<fo:table-row>
|
434
|
-
<fo:table-cell font-size="6.5pt" text-align="justify" display-align="after" padding-bottom="8mm"
|
467
|
+
<fo:table-cell font-size="6.5pt" text-align="justify" display-align="after" padding-bottom="8mm">
|
435
468
|
<!-- margin-top="-30mm" -->
|
436
|
-
<fo:block margin-top="-100mm"
|
469
|
+
<fo:block> <!-- margin-top="-100mm" -->
|
437
470
|
<xsl:if test="$stage-abbreviation = 'DIS' or $stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP' or $stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD'">
|
438
471
|
<fo:block margin-bottom="1.5mm">
|
439
472
|
<xsl:text>THIS DOCUMENT IS A DRAFT CIRCULATED FOR COMMENT AND APPROVAL. IT IS THEREFORE SUBJECT TO CHANGE AND MAY NOT BE REFERRED TO AS AN INTERNATIONAL STANDARD UNTIL PUBLISHED AS SUCH.</xsl:text>
|
@@ -463,31 +496,82 @@
|
|
463
496
|
<fo:table-cell>
|
464
497
|
<fo:block> </fo:block>
|
465
498
|
</fo:table-cell>
|
466
|
-
<fo:table-cell>
|
467
|
-
<
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
499
|
+
<fo:table-cell display-align="after" padding-bottom="3mm">
|
500
|
+
<fo:block-container height="22.5mm" display-align="center">
|
501
|
+
|
502
|
+
<xsl:variable name="iso-fast-track">false</xsl:variable>
|
503
|
+
|
504
|
+
<xsl:if test="normalize-space($iso-fast-track) = 'true'">
|
505
|
+
<xsl:attribute name="height">28mm</xsl:attribute>
|
506
|
+
</xsl:if>
|
507
|
+
|
508
|
+
<fo:block>
|
509
|
+
<xsl:if test="$stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP' or $stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD' or $stage-abbreviation = 'DIS' or $stage-abbreviation = 'FDIS'">
|
510
|
+
<xsl:variable name="text">
|
511
|
+
<xsl:for-each select="/iso:iso-standard/iso:preface/iso:note[@coverpage='true']/iso:p">
|
512
|
+
<fo:block>
|
513
|
+
<xsl:apply-templates/>
|
514
|
+
</fo:block>
|
515
|
+
</xsl:for-each>
|
516
|
+
</xsl:variable>
|
517
|
+
<xsl:if test="normalize-space($text) != ''">
|
518
|
+
<fo:block-container margin-left="1mm"> <!-- margin-bottom="7mm" margin-top="-15mm" -->
|
519
|
+
<fo:block font-size="9pt" border="0.5pt solid black" fox:border-radius="5pt" padding-left="2mm" padding-top="2mm" padding-bottom="2mm">
|
520
|
+
<!-- <xsl:text>This document is circulated as received from the committee secretariat.</xsl:text> -->
|
521
|
+
<xsl:copy-of select="xalan:nodeset($text)/node()"/>
|
522
|
+
</fo:block>
|
523
|
+
</fo:block-container>
|
524
|
+
</xsl:if>
|
525
|
+
|
526
|
+
<xsl:if test="normalize-space($iso-fast-track) = 'true'">
|
527
|
+
<fo:block-container space-before="2mm">
|
528
|
+
<fo:block background-color="rgb(77,77,77)" color="white" fox:border-radius="5pt" text-align="center" display-align="center" font-size="19pt" font-weight="bold">
|
529
|
+
<fo:block-container height="13.2mm">
|
530
|
+
<fo:block>
|
531
|
+
<xsl:text>FAST TRACK PROCEDURE</xsl:text>
|
532
|
+
</fo:block>
|
533
|
+
</fo:block-container>
|
534
|
+
</fo:block>
|
535
|
+
</fo:block-container>
|
536
|
+
</xsl:if>
|
537
|
+
</xsl:if>
|
538
|
+
</fo:block>
|
539
|
+
</fo:block-container>
|
474
540
|
<fo:block>
|
475
541
|
<xsl:call-template name="insertTripleLine"/>
|
476
|
-
<fo:table table-layout="fixed" width="100%" margin-bottom="3mm"
|
542
|
+
<fo:table table-layout="fixed" width="100%"> <!-- margin-bottom="3mm" -->
|
477
543
|
<fo:table-column column-width="50%"/>
|
478
544
|
<fo:table-column column-width="50%"/>
|
479
545
|
<fo:table-body>
|
480
546
|
<fo:table-row height="34mm">
|
481
547
|
<fo:table-cell display-align="center">
|
548
|
+
|
549
|
+
<xsl:if test="$copyrightAbbrIEEE != ''">
|
550
|
+
<xsl:attribute name="display-align">before</xsl:attribute>
|
551
|
+
</xsl:if>
|
552
|
+
|
482
553
|
<fo:block text-align="left" margin-top="2mm">
|
483
|
-
|
484
|
-
<xsl:
|
554
|
+
|
555
|
+
<xsl:if test="$copyrightAbbrIEEE != ''">
|
556
|
+
<xsl:attribute name="margin-top">0</xsl:attribute>
|
557
|
+
</xsl:if>
|
558
|
+
|
559
|
+
<!-- <xsl:variable name="docid" select="substring-before(/iso:iso-standard/iso:bibdata/iso:docidentifier, ' ')"/>
|
560
|
+
<xsl:for-each select="xalan:tokenize($docid, '/')"> -->
|
561
|
+
<xsl:variable name="content-height">
|
562
|
+
<xsl:choose>
|
563
|
+
<xsl:when test="$copyrightAbbrIEEE != ''">13.9</xsl:when>
|
564
|
+
<xsl:otherwise>19</xsl:otherwise>
|
565
|
+
</xsl:choose>
|
566
|
+
</xsl:variable>
|
567
|
+
|
568
|
+
<xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:copyright/iso:owner/iso:organization/iso:abbreviation[. != 'IEEE']">
|
485
569
|
<xsl:choose>
|
486
570
|
<xsl:when test=". = 'ISO'">
|
487
|
-
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-ISO-Logo))}" content-height="
|
571
|
+
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-ISO-Logo))}" content-height="{$content-height}mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image {@alt}"/>
|
488
572
|
</xsl:when>
|
489
573
|
<xsl:when test=". = 'IEC'">
|
490
|
-
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-IEC-Logo))}" content-height="
|
574
|
+
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-IEC-Logo))}" content-height="{$content-height}mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image {@alt}"/>
|
491
575
|
</xsl:when>
|
492
576
|
<xsl:otherwise/>
|
493
577
|
</xsl:choose>
|
@@ -495,6 +579,11 @@
|
|
495
579
|
<fo:inline padding-right="1mm"> </fo:inline>
|
496
580
|
</xsl:if>
|
497
581
|
</xsl:for-each>
|
582
|
+
<xsl:if test="$copyrightAbbrIEEE != ''">
|
583
|
+
<fo:block>
|
584
|
+
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-IEEE-Logo))}" content-height="11mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image {@alt}"/>
|
585
|
+
</fo:block>
|
586
|
+
</xsl:if>
|
498
587
|
</fo:block>
|
499
588
|
</fo:table-cell>
|
500
589
|
<fo:table-cell display-align="center">
|
@@ -508,7 +597,17 @@
|
|
508
597
|
<fo:block>
|
509
598
|
<xsl:value-of select="$ISOname"/>
|
510
599
|
</fo:block>
|
511
|
-
<fo:block space-before="28pt"
|
600
|
+
<fo:block space-before="28pt">
|
601
|
+
<xsl:if test="$copyrightAbbrIEEE != ''">
|
602
|
+
<xsl:attribute name="space-before">14pt</xsl:attribute>
|
603
|
+
</xsl:if>
|
604
|
+
<fo:inline font-size="9pt">©</fo:inline><xsl:value-of select="concat(' ', $copyrightAbbr, ' ', $copyrightYear)"/>
|
605
|
+
<xsl:if test="$copyrightAbbrIEEE != ''">
|
606
|
+
<xsl:value-of select="$linebreak"/>
|
607
|
+
<fo:inline font-size="9pt">©</fo:inline>
|
608
|
+
<xsl:value-of select="concat(' ', $copyrightAbbrIEEE, ' ', $copyrightYear)"/>
|
609
|
+
</xsl:if>
|
610
|
+
</fo:block>
|
512
611
|
</fo:block>
|
513
612
|
</fo:table-cell>
|
514
613
|
</fo:table-row>
|
@@ -713,7 +812,7 @@
|
|
713
812
|
<xsl:call-template name="printEdition"/>
|
714
813
|
</xsl:if>
|
715
814
|
<xsl:choose>
|
716
|
-
<xsl:when test="($stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD') and /iso:iso-standard/iso:bibdata/iso:version/iso:revision-date">
|
815
|
+
<xsl:when test="($stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP' or $stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD' or $stage-abbreviation = 'FDIS') and /iso:iso-standard/iso:bibdata/iso:version/iso:revision-date">
|
717
816
|
<xsl:value-of select="$linebreak"/>
|
718
817
|
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:version/iso:revision-date"/>
|
719
818
|
</xsl:when>
|
@@ -756,7 +855,7 @@
|
|
756
855
|
<fo:table-cell><fo:block/></fo:table-cell>
|
757
856
|
<fo:table-cell number-columns-spanned="2" font-size="10pt" line-height="1.2" display-align="center">
|
758
857
|
<fo:block>
|
759
|
-
<xsl:if test="$stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD'">
|
858
|
+
<xsl:if test="$stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP' or $stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD' or $stage-abbreviation = 'FDIS'">
|
760
859
|
<fo:table table-layout="fixed" width="100%">
|
761
860
|
<fo:table-column column-width="50%"/>
|
762
861
|
<fo:table-column column-width="50%"/>
|
@@ -868,7 +967,7 @@
|
|
868
967
|
</fo:block>
|
869
968
|
</xsl:for-each>
|
870
969
|
|
871
|
-
<xsl:if test="$stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD'">
|
970
|
+
<xsl:if test="$stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP' or $stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD' or $stage-abbreviation = 'FDIS'">
|
872
971
|
<fo:block margin-top="10mm">
|
873
972
|
<xsl:copy-of select="$ics"/>
|
874
973
|
</fo:block>
|
@@ -920,7 +1019,13 @@
|
|
920
1019
|
<fo:block><xsl:value-of select="$ISOname"/></fo:block>
|
921
1020
|
<fo:block> </fo:block>
|
922
1021
|
<fo:block> </fo:block>
|
923
|
-
<fo:block><fo:inline font-size="9pt">©</fo:inline><xsl:value-of select="concat(' ', $copyrightAbbr, ' ', $copyrightYear)"
|
1022
|
+
<fo:block><fo:inline font-size="9pt">©</fo:inline><xsl:value-of select="concat(' ', $copyrightAbbr, ' ', $copyrightYear)"/>
|
1023
|
+
<xsl:if test="$copyrightAbbrIEEE != ''">
|
1024
|
+
<xsl:value-of select="$linebreak"/>
|
1025
|
+
<fo:inline font-size="9pt">©</fo:inline>
|
1026
|
+
<xsl:value-of select="concat(' ', $copyrightAbbrIEEE, ' ', $copyrightYear)"/>
|
1027
|
+
</xsl:if>
|
1028
|
+
</fo:block>
|
924
1029
|
</fo:block>
|
925
1030
|
</fo:table-cell>
|
926
1031
|
</fo:table-row>
|
@@ -1770,6 +1875,7 @@
|
|
1770
1875
|
|
1771
1876
|
<xsl:template match="iso:p" name="paragraph">
|
1772
1877
|
<xsl:param name="inline" select="'false'"/>
|
1878
|
+
<xsl:param name="split_keep-within-line"/>
|
1773
1879
|
<xsl:variable name="previous-element" select="local-name(preceding-sibling::*[1])"/>
|
1774
1880
|
<xsl:variable name="element-name">
|
1775
1881
|
<xsl:choose>
|
@@ -1799,7 +1905,9 @@
|
|
1799
1905
|
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
|
1800
1906
|
<xsl:attribute name="line-height">0</xsl:attribute>
|
1801
1907
|
</xsl:if>
|
1802
|
-
<xsl:apply-templates
|
1908
|
+
<xsl:apply-templates>
|
1909
|
+
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
|
1910
|
+
</xsl:apply-templates>
|
1803
1911
|
</xsl:element>
|
1804
1912
|
<xsl:if test="$element-name = 'fo:inline' and not($inline = 'true') and not(local-name(..) = 'admonition')">
|
1805
1913
|
<fo:block margin-bottom="12pt">
|
@@ -1924,6 +2032,9 @@
|
|
1924
2032
|
<fo:table-body>
|
1925
2033
|
<fo:table-row>
|
1926
2034
|
<fo:table-cell display-align="center" padding-top="0mm" font-size="11pt" font-weight="{$font-weight}">
|
2035
|
+
<xsl:if test="contains($copyrightText, 'IEEE')">
|
2036
|
+
<xsl:attribute name="display-align">before</xsl:attribute>
|
2037
|
+
</xsl:if>
|
1927
2038
|
<fo:block><fo:page-number/></fo:block>
|
1928
2039
|
</fo:table-cell>
|
1929
2040
|
<fo:table-cell display-align="center">
|
@@ -1978,6 +2089,9 @@
|
|
1978
2089
|
</fo:block>
|
1979
2090
|
</fo:table-cell>
|
1980
2091
|
<fo:table-cell display-align="center" padding-top="0mm" font-size="11pt" font-weight="{$font-weight}">
|
2092
|
+
<xsl:if test="contains($copyrightText, 'IEEE')">
|
2093
|
+
<xsl:attribute name="display-align">before</xsl:attribute>
|
2094
|
+
</xsl:if>
|
1981
2095
|
<fo:block text-align="right"><fo:page-number/></fo:block>
|
1982
2096
|
</fo:table-cell>
|
1983
2097
|
</fo:table-row>
|
@@ -2010,16 +2124,51 @@
|
|
2010
2124
|
<xsl:text>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</xsl:text>
|
2011
2125
|
</xsl:variable>
|
2012
2126
|
|
2127
|
+
<xsl:variable name="Image-IEEE-Logo">
|
2128
|
+
<xsl:text>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</xsl:text>
|
2129
|
+
</xsl:variable>
|
2130
|
+
|
2013
2131
|
<xsl:variable name="Image-Attention">
|
2014
2132
|
<xsl:text>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</xsl:text>
|
2015
2133
|
</xsl:variable>
|
2016
2134
|
|
2017
|
-
<xsl:param name="svg_images"/><xsl:variable name="images" select="document($svg_images)"/><xsl:param name="basepath"/><xsl:param name="external_index"/><xsl:param name="syntax-highlight">false</xsl:param><xsl:param name="add_math_as_text">true</xsl:param><xsl:variable name="
|
2135
|
+
<xsl:param name="svg_images"/><xsl:variable name="images" select="document($svg_images)"/><xsl:param name="basepath"/><xsl:param name="external_index"/><xsl:param name="syntax-highlight">false</xsl:param><xsl:param name="add_math_as_text">true</xsl:param><xsl:param name="table_if">false</xsl:param><xsl:param name="table_widths"/><xsl:variable name="table_widths_from_if" select="xalan:nodeset($table_widths)"/><xsl:variable name="table_widths_from_if_calculated_">
|
2136
|
+
<xsl:for-each select="$table_widths_from_if//table">
|
2137
|
+
<xsl:copy>
|
2138
|
+
<xsl:copy-of select="@*"/>
|
2139
|
+
<xsl:call-template name="calculate-column-widths-autolayout-algorithm"/>
|
2140
|
+
</xsl:copy>
|
2141
|
+
</xsl:for-each>
|
2142
|
+
</xsl:variable><xsl:variable name="table_widths_from_if_calculated" select="xalan:nodeset($table_widths_from_if_calculated_)"/><xsl:param name="table_if_debug">false</xsl:param><xsl:variable name="isGenerateTableIF_">
|
2143
|
+
|
2144
|
+
<xsl:value-of select="normalize-space($table_if) = 'true'"/>
|
2145
|
+
|
2146
|
+
</xsl:variable><xsl:variable name="isGenerateTableIF" select="normalize-space($isGenerateTableIF_)"/><xsl:variable name="lang">
|
2018
2147
|
<xsl:call-template name="getLang"/>
|
2019
|
-
</xsl:variable><xsl:variable name="
|
2020
|
-
|
2148
|
+
</xsl:variable><xsl:variable name="papersize" select="java:toLowerCase(java:java.lang.String.new(normalize-space(//*[contains(local-name(), '-standard')]/*[local-name() = 'misc-container']/*[local-name() = 'presentation-metadata']/*[local-name() = 'papersize'])))"/><xsl:variable name="papersize_width_">
|
2149
|
+
<xsl:choose>
|
2150
|
+
<xsl:when test="$papersize = 'letter'">215.9</xsl:when>
|
2151
|
+
<xsl:when test="$papersize = 'a4'">210</xsl:when>
|
2152
|
+
</xsl:choose>
|
2153
|
+
</xsl:variable><xsl:variable name="papersize_width" select="normalize-space($papersize_width_)"/><xsl:variable name="papersize_height_">
|
2154
|
+
<xsl:choose>
|
2155
|
+
<xsl:when test="$papersize = 'letter'">279.4</xsl:when>
|
2156
|
+
<xsl:when test="$papersize = 'a4'">297</xsl:when>
|
2157
|
+
</xsl:choose>
|
2158
|
+
</xsl:variable><xsl:variable name="papersize_height" select="normalize-space($papersize_height_)"/><xsl:variable name="pageWidth_">
|
2159
|
+
<xsl:choose>
|
2160
|
+
<xsl:when test="$papersize_width != ''"><xsl:value-of select="$papersize_width"/></xsl:when>
|
2161
|
+
<xsl:otherwise>
|
2162
|
+
210
|
2163
|
+
</xsl:otherwise>
|
2164
|
+
</xsl:choose>
|
2021
2165
|
</xsl:variable><xsl:variable name="pageWidth" select="normalize-space($pageWidth_)"/><xsl:variable name="pageHeight_">
|
2022
|
-
|
2166
|
+
<xsl:choose>
|
2167
|
+
<xsl:when test="$papersize_height != ''"><xsl:value-of select="$papersize_height"/></xsl:when>
|
2168
|
+
<xsl:otherwise>
|
2169
|
+
297
|
2170
|
+
</xsl:otherwise>
|
2171
|
+
</xsl:choose>
|
2023
2172
|
</xsl:variable><xsl:variable name="pageHeight" select="normalize-space($pageHeight_)"/><xsl:variable name="marginLeftRight1_">
|
2024
2173
|
25
|
2025
2174
|
</xsl:variable><xsl:variable name="marginLeftRight1" select="normalize-space($marginLeftRight1_)"/><xsl:variable name="marginLeftRight2_">
|
@@ -2137,7 +2286,8 @@
|
|
2137
2286
|
<xsl:value-of select="$titles/*[local-name() = $name][@lang = 'en']"/>
|
2138
2287
|
</xsl:otherwise>
|
2139
2288
|
</xsl:choose>
|
2140
|
-
</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:attribute-set name="root-style">
|
2289
|
+
</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="font_noto_sans">Noto Sans, Noto Sans HK, Noto Sans JP, Noto Sans KR, Noto Sans SC, Noto Sans TC</xsl:variable><xsl:variable name="font_noto_sans_mono">Noto Sans Mono, Noto Sans Mono CJK HK, Noto Sans Mono CJK JP, Noto Sans Mono CJK KR, Noto Sans Mono CJK SC, Noto Sans Mono CJK TC</xsl:variable><xsl:variable name="font_noto_serif">Noto Serif, Noto Serif HK, Noto Serif JP, Noto Serif KR, Noto Serif SC, Noto Serif TC</xsl:variable><xsl:attribute-set name="root-style">
|
2290
|
+
|
2141
2291
|
|
2142
2292
|
|
2143
2293
|
|
@@ -2146,7 +2296,8 @@
|
|
2146
2296
|
|
2147
2297
|
|
2148
2298
|
|
2149
|
-
<xsl:attribute name="font-family">Cambria, Times New Roman, Cambria Math,
|
2299
|
+
<xsl:attribute name="font-family">Cambria, Times New Roman, Cambria Math, <xsl:value-of select="$font_noto_serif"/></xsl:attribute>
|
2300
|
+
<xsl:attribute name="font-family-generic">Serif</xsl:attribute>
|
2150
2301
|
<xsl:attribute name="font-size">11pt</xsl:attribute>
|
2151
2302
|
|
2152
2303
|
|
@@ -2168,17 +2319,60 @@
|
|
2168
2319
|
</xsl:variable>
|
2169
2320
|
<xsl:variable name="additional_fonts" select="normalize-space($additional_fonts_)"/>
|
2170
2321
|
|
2322
|
+
<xsl:variable name="font_family_generic" select="$root-style_/root-style/@font-family-generic"/>
|
2323
|
+
|
2171
2324
|
<xsl:for-each select="$root-style_/root-style/@*">
|
2325
|
+
|
2172
2326
|
<xsl:choose>
|
2173
|
-
<xsl:when test="local-name() = 'font-family'
|
2327
|
+
<xsl:when test="local-name() = 'font-family-generic'"><!-- skip, it's using for determine 'sans' or 'serif' --></xsl:when>
|
2328
|
+
<xsl:when test="local-name() = 'font-family'">
|
2329
|
+
|
2330
|
+
<xsl:variable name="font_regional_prefix">
|
2331
|
+
<xsl:choose>
|
2332
|
+
<xsl:when test="$font_family_generic = 'Sans'">Noto Sans</xsl:when>
|
2333
|
+
<xsl:otherwise>Noto Serif</xsl:otherwise>
|
2334
|
+
</xsl:choose>
|
2335
|
+
</xsl:variable>
|
2336
|
+
|
2174
2337
|
<xsl:attribute name="{local-name()}">
|
2175
|
-
|
2338
|
+
|
2339
|
+
<xsl:variable name="font_extended">
|
2340
|
+
<xsl:choose>
|
2341
|
+
<xsl:when test="$lang = 'zh'"><xsl:value-of select="$font_regional_prefix"/> SC</xsl:when>
|
2342
|
+
<xsl:when test="$lang = 'hk'"><xsl:value-of select="$font_regional_prefix"/> HK</xsl:when>
|
2343
|
+
<xsl:when test="$lang = 'jp'"><xsl:value-of select="$font_regional_prefix"/> JP</xsl:when>
|
2344
|
+
<xsl:when test="$lang = 'kr'"><xsl:value-of select="$font_regional_prefix"/> KR</xsl:when>
|
2345
|
+
<xsl:when test="$lang = 'sc'"><xsl:value-of select="$font_regional_prefix"/> SC</xsl:when>
|
2346
|
+
<xsl:when test="$lang = 'tc'"><xsl:value-of select="$font_regional_prefix"/> TC</xsl:when>
|
2347
|
+
</xsl:choose>
|
2348
|
+
</xsl:variable>
|
2349
|
+
<xsl:if test="normalize-space($font_extended) != ''">
|
2350
|
+
<xsl:value-of select="$font_regional_prefix"/><xsl:text>, </xsl:text>
|
2351
|
+
<xsl:value-of select="$font_extended"/><xsl:text>, </xsl:text>
|
2352
|
+
</xsl:if>
|
2353
|
+
|
2354
|
+
<xsl:value-of select="."/>
|
2355
|
+
|
2356
|
+
<xsl:if test="$additional_fonts != ''">
|
2357
|
+
<xsl:text>, </xsl:text><xsl:value-of select="$additional_fonts"/>
|
2358
|
+
</xsl:if>
|
2176
2359
|
</xsl:attribute>
|
2177
2360
|
</xsl:when>
|
2178
2361
|
<xsl:otherwise>
|
2179
2362
|
<xsl:copy-of select="."/>
|
2180
2363
|
</xsl:otherwise>
|
2181
2364
|
</xsl:choose>
|
2365
|
+
|
2366
|
+
<!-- <xsl:choose>
|
2367
|
+
<xsl:when test="local-name() = 'font-family'">
|
2368
|
+
<xsl:attribute name="{local-name()}">
|
2369
|
+
<xsl:value-of select="."/>, <xsl:value-of select="$additional_fonts"/>
|
2370
|
+
</xsl:attribute>
|
2371
|
+
</xsl:when>
|
2372
|
+
<xsl:otherwise>
|
2373
|
+
<xsl:copy-of select="."/>
|
2374
|
+
</xsl:otherwise>
|
2375
|
+
</xsl:choose> -->
|
2182
2376
|
</xsl:for-each>
|
2183
2377
|
</xsl:template><xsl:attribute-set name="copyright-statement-style">
|
2184
2378
|
|
@@ -2255,7 +2449,8 @@
|
|
2255
2449
|
|
2256
2450
|
|
2257
2451
|
|
2258
|
-
|
2452
|
+
|
2453
|
+
<xsl:attribute name="font-family">Courier New, <xsl:value-of select="$font_noto_sans_mono"/></xsl:attribute>
|
2259
2454
|
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
|
2260
2455
|
|
2261
2456
|
|
@@ -2298,6 +2493,7 @@
|
|
2298
2493
|
|
2299
2494
|
|
2300
2495
|
|
2496
|
+
|
2301
2497
|
<xsl:attribute name="font-size">10pt</xsl:attribute>
|
2302
2498
|
<xsl:attribute name="margin-top">8pt</xsl:attribute>
|
2303
2499
|
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
|
@@ -2310,6 +2506,7 @@
|
|
2310
2506
|
|
2311
2507
|
|
2312
2508
|
|
2509
|
+
|
2313
2510
|
<xsl:attribute name="font-size">10pt</xsl:attribute>
|
2314
2511
|
<xsl:attribute name="margin-top">8pt</xsl:attribute>
|
2315
2512
|
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
|
@@ -2350,6 +2547,7 @@
|
|
2350
2547
|
|
2351
2548
|
|
2352
2549
|
|
2550
|
+
|
2353
2551
|
|
2354
2552
|
|
2355
2553
|
|
@@ -2388,6 +2586,7 @@
|
|
2388
2586
|
|
2389
2587
|
</xsl:attribute-set><xsl:variable name="table-border_">
|
2390
2588
|
|
2589
|
+
|
2391
2590
|
</xsl:variable><xsl:variable name="table-border" select="normalize-space($table-border_)"/><xsl:attribute-set name="table-container-style">
|
2392
2591
|
<xsl:attribute name="margin-left">0mm</xsl:attribute>
|
2393
2592
|
<xsl:attribute name="margin-right">0mm</xsl:attribute>
|
@@ -2400,6 +2599,7 @@
|
|
2400
2599
|
|
2401
2600
|
|
2402
2601
|
|
2602
|
+
|
2403
2603
|
<xsl:attribute name="font-size">10pt</xsl:attribute>
|
2404
2604
|
<xsl:attribute name="margin-top">12pt</xsl:attribute>
|
2405
2605
|
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
|
@@ -2430,6 +2630,7 @@
|
|
2430
2630
|
|
2431
2631
|
|
2432
2632
|
|
2633
|
+
|
2433
2634
|
<xsl:attribute name="border">1.5pt solid black</xsl:attribute>
|
2434
2635
|
|
2435
2636
|
|
@@ -2449,6 +2650,7 @@
|
|
2449
2650
|
|
2450
2651
|
|
2451
2652
|
|
2653
|
+
|
2452
2654
|
|
2453
2655
|
|
2454
2656
|
<xsl:attribute name="font-size">11pt</xsl:attribute>
|
@@ -2498,6 +2700,7 @@
|
|
2498
2700
|
<xsl:attribute name="font-weight">bold</xsl:attribute>
|
2499
2701
|
<xsl:attribute name="border">solid black 1pt</xsl:attribute>
|
2500
2702
|
<xsl:attribute name="padding-left">1mm</xsl:attribute>
|
2703
|
+
<xsl:attribute name="padding-right">1mm</xsl:attribute>
|
2501
2704
|
<xsl:attribute name="display-align">center</xsl:attribute>
|
2502
2705
|
|
2503
2706
|
|
@@ -2518,6 +2721,7 @@
|
|
2518
2721
|
<xsl:attribute name="display-align">center</xsl:attribute>
|
2519
2722
|
<xsl:attribute name="border">solid black 1pt</xsl:attribute>
|
2520
2723
|
<xsl:attribute name="padding-left">1mm</xsl:attribute>
|
2724
|
+
<xsl:attribute name="padding-right">1mm</xsl:attribute>
|
2521
2725
|
|
2522
2726
|
|
2523
2727
|
|
@@ -2533,6 +2737,7 @@
|
|
2533
2737
|
|
2534
2738
|
|
2535
2739
|
|
2740
|
+
|
2536
2741
|
</xsl:attribute-set><xsl:attribute-set name="table-footer-cell-style">
|
2537
2742
|
<xsl:attribute name="border">solid black 1pt</xsl:attribute>
|
2538
2743
|
<xsl:attribute name="padding-left">1mm</xsl:attribute>
|
@@ -2547,7 +2752,7 @@
|
|
2547
2752
|
<xsl:attribute name="border-top">solid black 0pt</xsl:attribute>
|
2548
2753
|
|
2549
2754
|
|
2550
|
-
|
2755
|
+
|
2551
2756
|
|
2552
2757
|
|
2553
2758
|
|
@@ -2565,6 +2770,7 @@
|
|
2565
2770
|
|
2566
2771
|
|
2567
2772
|
|
2773
|
+
|
2568
2774
|
</xsl:attribute-set><xsl:attribute-set name="table-fn-style">
|
2569
2775
|
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
|
2570
2776
|
|
@@ -2576,6 +2782,8 @@
|
|
2576
2782
|
|
2577
2783
|
|
2578
2784
|
|
2785
|
+
|
2786
|
+
|
2579
2787
|
</xsl:attribute-set><xsl:attribute-set name="table-fn-number-style">
|
2580
2788
|
<xsl:attribute name="font-size">80%</xsl:attribute>
|
2581
2789
|
<xsl:attribute name="padding-right">5mm</xsl:attribute>
|
@@ -2593,6 +2801,7 @@
|
|
2593
2801
|
|
2594
2802
|
|
2595
2803
|
|
2804
|
+
|
2596
2805
|
</xsl:attribute-set><xsl:attribute-set name="fn-container-body-style">
|
2597
2806
|
<xsl:attribute name="text-indent">0</xsl:attribute>
|
2598
2807
|
<xsl:attribute name="start-indent">0</xsl:attribute>
|
@@ -2612,7 +2821,8 @@
|
|
2612
2821
|
</xsl:attribute-set><xsl:attribute-set name="dt-row-style">
|
2613
2822
|
|
2614
2823
|
|
2615
|
-
</xsl:attribute-set><xsl:attribute-set name="dt-style">
|
2824
|
+
</xsl:attribute-set><xsl:attribute-set name="dt-cell-style">
|
2825
|
+
</xsl:attribute-set><xsl:attribute-set name="dt-block-style">
|
2616
2826
|
<xsl:attribute name="margin-top">6pt</xsl:attribute>
|
2617
2827
|
|
2618
2828
|
|
@@ -2620,12 +2830,35 @@
|
|
2620
2830
|
|
2621
2831
|
|
2622
2832
|
|
2833
|
+
|
2623
2834
|
<xsl:attribute name="margin-top">0pt</xsl:attribute>
|
2624
2835
|
|
2625
2836
|
|
2626
2837
|
|
2627
2838
|
|
2628
2839
|
|
2840
|
+
</xsl:attribute-set><xsl:attribute-set name="dl-name-style">
|
2841
|
+
<xsl:attribute name="keep-with-next">always</xsl:attribute>
|
2842
|
+
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
|
2843
|
+
|
2844
|
+
|
2845
|
+
|
2846
|
+
|
2847
|
+
|
2848
|
+
|
2849
|
+
|
2850
|
+
<xsl:attribute name="font-weight">bold</xsl:attribute>
|
2851
|
+
|
2852
|
+
|
2853
|
+
|
2854
|
+
|
2855
|
+
|
2856
|
+
|
2857
|
+
|
2858
|
+
|
2859
|
+
|
2860
|
+
</xsl:attribute-set><xsl:attribute-set name="dd-cell-style">
|
2861
|
+
<xsl:attribute name="padding-left">2mm</xsl:attribute>
|
2629
2862
|
</xsl:attribute-set><xsl:attribute-set name="appendix-style">
|
2630
2863
|
|
2631
2864
|
<xsl:attribute name="font-size">12pt</xsl:attribute>
|
@@ -2665,6 +2898,7 @@
|
|
2665
2898
|
|
2666
2899
|
|
2667
2900
|
|
2901
|
+
|
2668
2902
|
|
2669
2903
|
|
2670
2904
|
<xsl:attribute name="font-size">10pt</xsl:attribute>
|
@@ -2738,6 +2972,8 @@
|
|
2738
2972
|
|
2739
2973
|
|
2740
2974
|
|
2975
|
+
</xsl:attribute-set><xsl:attribute-set name="termnote-p-style">
|
2976
|
+
|
2741
2977
|
</xsl:attribute-set><xsl:attribute-set name="quote-style">
|
2742
2978
|
<xsl:attribute name="margin-left">12mm</xsl:attribute>
|
2743
2979
|
<xsl:attribute name="margin-right">12mm</xsl:attribute>
|
@@ -2784,6 +3020,7 @@
|
|
2784
3020
|
</xsl:attribute-set><xsl:attribute-set name="figure-name-style">
|
2785
3021
|
|
2786
3022
|
|
3023
|
+
|
2787
3024
|
|
2788
3025
|
|
2789
3026
|
|
@@ -2824,6 +3061,7 @@
|
|
2824
3061
|
|
2825
3062
|
|
2826
3063
|
|
3064
|
+
|
2827
3065
|
<xsl:attribute name="text-align">left</xsl:attribute>
|
2828
3066
|
<xsl:attribute name="margin-left">5mm</xsl:attribute>
|
2829
3067
|
|
@@ -2851,20 +3089,20 @@
|
|
2851
3089
|
</xsl:attribute-set><xsl:attribute-set name="figure-pseudocode-p-style">
|
2852
3090
|
|
2853
3091
|
</xsl:attribute-set><xsl:attribute-set name="image-graphic-style">
|
3092
|
+
<xsl:attribute name="width">100%</xsl:attribute>
|
3093
|
+
<xsl:attribute name="content-height">100%</xsl:attribute>
|
3094
|
+
<xsl:attribute name="scaling">uniform</xsl:attribute>
|
2854
3095
|
|
2855
3096
|
|
2856
|
-
<xsl:attribute name="width">100%</xsl:attribute>
|
2857
3097
|
<xsl:attribute name="content-height">scale-to-fit</xsl:attribute>
|
2858
|
-
<xsl:attribute name="scaling">uniform</xsl:attribute>
|
2859
3098
|
|
2860
3099
|
|
2861
3100
|
|
2862
|
-
|
2863
|
-
|
3101
|
+
|
2864
3102
|
</xsl:attribute-set><xsl:attribute-set name="tt-style">
|
2865
3103
|
|
2866
3104
|
|
2867
|
-
<xsl:attribute name="font-family">Courier New
|
3105
|
+
<xsl:attribute name="font-family">Courier New, <xsl:value-of select="$font_noto_sans_mono"/></xsl:attribute>
|
2868
3106
|
|
2869
3107
|
|
2870
3108
|
</xsl:attribute-set><xsl:attribute-set name="sourcecode-name-style">
|
@@ -2937,6 +3175,7 @@
|
|
2937
3175
|
|
2938
3176
|
|
2939
3177
|
|
3178
|
+
|
2940
3179
|
<xsl:attribute name="provisional-distance-between-starts">7mm</xsl:attribute>
|
2941
3180
|
<xsl:attribute name="margin-top">8pt</xsl:attribute>
|
2942
3181
|
|
@@ -2950,6 +3189,25 @@
|
|
2950
3189
|
|
2951
3190
|
|
2952
3191
|
|
3192
|
+
</xsl:attribute-set><xsl:attribute-set name="list-name-style">
|
3193
|
+
<xsl:attribute name="keep-with-next">always</xsl:attribute>
|
3194
|
+
|
3195
|
+
|
3196
|
+
|
3197
|
+
|
3198
|
+
|
3199
|
+
|
3200
|
+
<xsl:attribute name="margin-top">8pt</xsl:attribute>
|
3201
|
+
<xsl:attribute name="font-weight">bold</xsl:attribute>
|
3202
|
+
|
3203
|
+
|
3204
|
+
|
3205
|
+
|
3206
|
+
|
3207
|
+
|
3208
|
+
|
3209
|
+
|
3210
|
+
|
2953
3211
|
</xsl:attribute-set><xsl:attribute-set name="list-item-style">
|
2954
3212
|
|
2955
3213
|
|
@@ -2986,6 +3244,7 @@
|
|
2986
3244
|
|
2987
3245
|
|
2988
3246
|
|
3247
|
+
|
2989
3248
|
<xsl:attribute name="font-size">80%</xsl:attribute>
|
2990
3249
|
<xsl:attribute name="vertical-align">super</xsl:attribute>
|
2991
3250
|
|
@@ -3010,6 +3269,7 @@
|
|
3010
3269
|
|
3011
3270
|
|
3012
3271
|
|
3272
|
+
|
3013
3273
|
<xsl:attribute name="font-size">10pt</xsl:attribute>
|
3014
3274
|
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
|
3015
3275
|
|
@@ -3033,6 +3293,7 @@
|
|
3033
3293
|
|
3034
3294
|
|
3035
3295
|
|
3296
|
+
|
3036
3297
|
<xsl:attribute name="padding-right">3mm</xsl:attribute>
|
3037
3298
|
|
3038
3299
|
|
@@ -3052,6 +3313,7 @@
|
|
3052
3313
|
|
3053
3314
|
|
3054
3315
|
|
3316
|
+
|
3055
3317
|
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
|
3056
3318
|
<xsl:attribute name="font-weight">bold</xsl:attribute>
|
3057
3319
|
|
@@ -3063,6 +3325,9 @@
|
|
3063
3325
|
|
3064
3326
|
|
3065
3327
|
</xsl:attribute-set><xsl:attribute-set name="admonition-container-style">
|
3328
|
+
<xsl:attribute name="margin-left">0mm</xsl:attribute>
|
3329
|
+
<xsl:attribute name="margin-right">0mm</xsl:attribute>
|
3330
|
+
|
3066
3331
|
|
3067
3332
|
|
3068
3333
|
|
@@ -3100,6 +3365,7 @@
|
|
3100
3365
|
|
3101
3366
|
|
3102
3367
|
|
3368
|
+
|
3103
3369
|
</xsl:attribute-set><xsl:attribute-set name="bibitem-normative-style">
|
3104
3370
|
|
3105
3371
|
|
@@ -3130,6 +3396,7 @@
|
|
3130
3396
|
|
3131
3397
|
|
3132
3398
|
|
3399
|
+
|
3133
3400
|
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
|
3134
3401
|
|
3135
3402
|
|
@@ -3151,6 +3418,7 @@
|
|
3151
3418
|
|
3152
3419
|
|
3153
3420
|
|
3421
|
+
|
3154
3422
|
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
|
3155
3423
|
|
3156
3424
|
|
@@ -3176,6 +3444,7 @@
|
|
3176
3444
|
|
3177
3445
|
|
3178
3446
|
|
3447
|
+
|
3179
3448
|
<xsl:attribute name="font-size">8pt</xsl:attribute>
|
3180
3449
|
<xsl:attribute name="baseline-shift">30%</xsl:attribute>
|
3181
3450
|
|
@@ -3197,6 +3466,7 @@
|
|
3197
3466
|
|
3198
3467
|
|
3199
3468
|
|
3469
|
+
|
3200
3470
|
<xsl:attribute name="alignment-baseline">hanging</xsl:attribute>
|
3201
3471
|
<xsl:attribute name="padding-right">3mm</xsl:attribute>
|
3202
3472
|
|
@@ -3218,6 +3488,7 @@
|
|
3218
3488
|
|
3219
3489
|
|
3220
3490
|
|
3491
|
+
|
3221
3492
|
<xsl:attribute name="margin-bottom">4pt</xsl:attribute>
|
3222
3493
|
|
3223
3494
|
|
@@ -3344,13 +3615,13 @@
|
|
3344
3615
|
|
3345
3616
|
</xsl:attribute-set><xsl:variable name="border-block-added">2.5pt solid rgb(0, 176, 80)</xsl:variable><xsl:variable name="border-block-deleted">2.5pt solid rgb(255, 0, 0)</xsl:variable><xsl:variable name="ace_tag">ace-tag_</xsl:variable><xsl:template name="processPrefaceSectionsDefault_Contents">
|
3346
3617
|
<xsl:variable name="nodes_preface_">
|
3347
|
-
<xsl:for-each select="/*/*[local-name()='preface']/*">
|
3618
|
+
<xsl:for-each select="/*/*[local-name()='preface']/*[not(local-name() = 'note' or local-name() = 'admonition')]">
|
3348
3619
|
<node id="{@id}"/>
|
3349
3620
|
</xsl:for-each>
|
3350
3621
|
</xsl:variable>
|
3351
3622
|
<xsl:variable name="nodes_preface" select="xalan:nodeset($nodes_preface_)"/>
|
3352
3623
|
|
3353
|
-
<xsl:for-each select="/*/*[local-name()='preface']/*">
|
3624
|
+
<xsl:for-each select="/*/*[local-name()='preface']/*[not(local-name() = 'note' or local-name() = 'admonition')]">
|
3354
3625
|
<xsl:sort select="@displayorder" data-type="number"/>
|
3355
3626
|
|
3356
3627
|
<!-- process Section's title -->
|
@@ -3416,7 +3687,7 @@
|
|
3416
3687
|
</xsl:for-each>
|
3417
3688
|
</figures>
|
3418
3689
|
</xsl:template><xsl:template name="processPrefaceSectionsDefault">
|
3419
|
-
<xsl:for-each select="/*/*[local-name()='preface']/*">
|
3690
|
+
<xsl:for-each select="/*/*[local-name()='preface']/*[not(local-name() = 'note' or local-name() = 'admonition')]">
|
3420
3691
|
<xsl:sort select="@displayorder" data-type="number"/>
|
3421
3692
|
<xsl:apply-templates select="."/>
|
3422
3693
|
</xsl:for-each>
|
@@ -3462,7 +3733,38 @@
|
|
3462
3733
|
</xsl:template><xsl:template match="*[local-name()='br']">
|
3463
3734
|
<xsl:value-of select="$linebreak"/>
|
3464
3735
|
</xsl:template><xsl:template match="*[local-name() = 'keep-together_within-line']">
|
3465
|
-
<
|
3736
|
+
<xsl:param name="split_keep-within-line"/>
|
3737
|
+
|
3738
|
+
<!-- <fo:inline>split_keep-within-line='<xsl:value-of select="$split_keep-within-line"/>'</fo:inline> -->
|
3739
|
+
<xsl:choose>
|
3740
|
+
|
3741
|
+
<xsl:when test="normalize-space($split_keep-within-line) = 'true'">
|
3742
|
+
<xsl:variable name="sep">_</xsl:variable>
|
3743
|
+
<xsl:variable name="items">
|
3744
|
+
<xsl:call-template name="split">
|
3745
|
+
<xsl:with-param name="pText" select="."/>
|
3746
|
+
<xsl:with-param name="sep" select="$sep"/>
|
3747
|
+
<xsl:with-param name="normalize-space">false</xsl:with-param>
|
3748
|
+
<xsl:with-param name="keep_sep">true</xsl:with-param>
|
3749
|
+
</xsl:call-template>
|
3750
|
+
</xsl:variable>
|
3751
|
+
<xsl:for-each select="xalan:nodeset($items)/item">
|
3752
|
+
<xsl:choose>
|
3753
|
+
<xsl:when test=". = $sep">
|
3754
|
+
<xsl:value-of select="$sep"/><xsl:value-of select="$zero_width_space"/>
|
3755
|
+
</xsl:when>
|
3756
|
+
<xsl:otherwise>
|
3757
|
+
<fo:inline keep-together.within-line="always"><xsl:apply-templates/></fo:inline>
|
3758
|
+
</xsl:otherwise>
|
3759
|
+
</xsl:choose>
|
3760
|
+
</xsl:for-each>
|
3761
|
+
</xsl:when>
|
3762
|
+
|
3763
|
+
<xsl:otherwise>
|
3764
|
+
<fo:inline keep-together.within-line="always"><xsl:apply-templates/></fo:inline>
|
3765
|
+
</xsl:otherwise>
|
3766
|
+
|
3767
|
+
</xsl:choose>
|
3466
3768
|
</xsl:template><xsl:template match="*[local-name()='copyright-statement']">
|
3467
3769
|
<fo:block xsl:use-attribute-sets="copyright-statement-style">
|
3468
3770
|
<xsl:apply-templates/>
|
@@ -3569,9 +3871,14 @@
|
|
3569
3871
|
|
3570
3872
|
<xsl:variable name="table">
|
3571
3873
|
|
3572
|
-
<xsl:variable name="simple-table">
|
3573
|
-
<xsl:call-template name="getSimpleTable"
|
3874
|
+
<xsl:variable name="simple-table">
|
3875
|
+
<xsl:call-template name="getSimpleTable">
|
3876
|
+
<xsl:with-param name="id" select="@id"/>
|
3877
|
+
</xsl:call-template>
|
3574
3878
|
</xsl:variable>
|
3879
|
+
<!-- <xsl:variable name="simple-table" select="xalan:nodeset($simple-table_)"/> -->
|
3880
|
+
|
3881
|
+
<!-- simple-table=<xsl:copy-of select="$simple-table"/> -->
|
3575
3882
|
|
3576
3883
|
|
3577
3884
|
<!-- Display table's name before table as standalone block -->
|
@@ -3590,7 +3897,23 @@
|
|
3590
3897
|
</xsl:call-template>
|
3591
3898
|
</xsl:if>
|
3592
3899
|
</xsl:variable>
|
3593
|
-
<!--
|
3900
|
+
<!-- <xsl:variable name="colwidths" select="xalan:nodeset($colwidths_)"/> -->
|
3901
|
+
|
3902
|
+
<!-- DEBUG -->
|
3903
|
+
<xsl:if test="$table_if_debug = 'true'">
|
3904
|
+
<fo:block font-size="60%">
|
3905
|
+
<xsl:apply-templates select="xalan:nodeset($colwidths)" mode="print_as_xml"/>
|
3906
|
+
</fo:block>
|
3907
|
+
</xsl:if>
|
3908
|
+
|
3909
|
+
|
3910
|
+
<!-- <xsl:copy-of select="$colwidths"/> -->
|
3911
|
+
|
3912
|
+
<!-- <xsl:text disable-output-escaping="yes"><!- -</xsl:text>
|
3913
|
+
DEBUG
|
3914
|
+
colwidths=<xsl:copy-of select="$colwidths"/>
|
3915
|
+
<xsl:text disable-output-escaping="yes">- -></xsl:text> -->
|
3916
|
+
|
3594
3917
|
|
3595
3918
|
|
3596
3919
|
<xsl:variable name="margin-side">
|
@@ -3612,6 +3935,8 @@
|
|
3612
3935
|
|
3613
3936
|
|
3614
3937
|
|
3938
|
+
|
3939
|
+
|
3615
3940
|
|
3616
3941
|
|
3617
3942
|
|
@@ -3642,6 +3967,8 @@
|
|
3642
3967
|
|
3643
3968
|
|
3644
3969
|
|
3970
|
+
|
3971
|
+
|
3645
3972
|
<xsl:if test="*[local-name()='thead']">
|
3646
3973
|
<xsl:attribute name="border-top">1pt solid black</xsl:attribute>
|
3647
3974
|
</xsl:if>
|
@@ -3659,9 +3986,17 @@
|
|
3659
3986
|
</xsl:element>
|
3660
3987
|
</xsl:variable>
|
3661
3988
|
|
3989
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
3990
|
+
<!-- to determine start of table -->
|
3991
|
+
<fo:block id="{concat('table_if_start_',@id)}" keep-with-next="always" font-size="1pt">Start table '<xsl:value-of select="@id"/>'.</fo:block>
|
3992
|
+
</xsl:if>
|
3662
3993
|
|
3663
3994
|
<fo:table id="{@id}">
|
3664
3995
|
|
3996
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
3997
|
+
<xsl:attribute name="wrap-option">no-wrap</xsl:attribute>
|
3998
|
+
</xsl:if>
|
3999
|
+
|
3665
4000
|
<xsl:for-each select="xalan:nodeset($table_attributes)/table_attributes/@*">
|
3666
4001
|
<xsl:attribute name="{local-name()}">
|
3667
4002
|
<xsl:value-of select="."/>
|
@@ -3675,24 +4010,47 @@
|
|
3675
4010
|
|
3676
4011
|
|
3677
4012
|
<xsl:choose>
|
3678
|
-
<xsl:when test="
|
3679
|
-
|
3680
|
-
|
3681
|
-
|
4013
|
+
<xsl:when test="$isGenerateTableIF = 'true'">
|
4014
|
+
<!-- generate IF for table widths -->
|
4015
|
+
<!-- example:
|
4016
|
+
<tr>
|
4017
|
+
<td valign="top" align="left" id="tab-symdu_1_1">
|
4018
|
+
<p>Symbol</p>
|
4019
|
+
<word id="tab-symdu_1_1_word_1">Symbol</word>
|
4020
|
+
</td>
|
4021
|
+
<td valign="top" align="left" id="tab-symdu_1_2">
|
4022
|
+
<p>Description</p>
|
4023
|
+
<word id="tab-symdu_1_2_word_1">Description</word>
|
4024
|
+
</td>
|
4025
|
+
</tr>
|
4026
|
+
-->
|
4027
|
+
<xsl:apply-templates select="xalan:nodeset($simple-table)" mode="process_table-if"/>
|
4028
|
+
|
3682
4029
|
</xsl:when>
|
3683
4030
|
<xsl:otherwise>
|
3684
|
-
<xsl:call-template name="insertTableColumnWidth">
|
3685
|
-
<xsl:with-param name="colwidths" select="$colwidths"/>
|
3686
|
-
</xsl:call-template>
|
3687
|
-
</xsl:otherwise>
|
3688
|
-
</xsl:choose>
|
3689
4031
|
|
3690
|
-
|
3691
|
-
|
3692
|
-
|
3693
|
-
|
3694
|
-
|
3695
|
-
|
4032
|
+
<xsl:choose>
|
4033
|
+
<xsl:when test="*[local-name()='colgroup']/*[local-name()='col']">
|
4034
|
+
<xsl:for-each select="*[local-name()='colgroup']/*[local-name()='col']">
|
4035
|
+
<fo:table-column column-width="{@width}"/>
|
4036
|
+
</xsl:for-each>
|
4037
|
+
</xsl:when>
|
4038
|
+
<xsl:otherwise>
|
4039
|
+
<xsl:call-template name="insertTableColumnWidth">
|
4040
|
+
<xsl:with-param name="colwidths" select="$colwidths"/>
|
4041
|
+
</xsl:call-template>
|
4042
|
+
</xsl:otherwise>
|
4043
|
+
</xsl:choose>
|
4044
|
+
|
4045
|
+
<xsl:choose>
|
4046
|
+
<xsl:when test="not(*[local-name()='tbody']) and *[local-name()='thead']">
|
4047
|
+
<xsl:apply-templates select="*[local-name()='thead']" mode="process_tbody"/>
|
4048
|
+
</xsl:when>
|
4049
|
+
<xsl:otherwise>
|
4050
|
+
<xsl:apply-templates select="node()[not(local-name() = 'name') and not(local-name() = 'note') and not(local-name() = 'thead') and not(local-name() = 'tfoot')]"/> <!-- process all table' elements, except name, header, footer and note that renders separaterely -->
|
4051
|
+
</xsl:otherwise>
|
4052
|
+
</xsl:choose>
|
4053
|
+
|
3696
4054
|
</xsl:otherwise>
|
3697
4055
|
</xsl:choose>
|
3698
4056
|
|
@@ -3770,38 +4128,52 @@
|
|
3770
4128
|
</xsl:template><xsl:template match="*[local-name()='table']/*[local-name() = 'name']">
|
3771
4129
|
<xsl:param name="continued"/>
|
3772
4130
|
<xsl:if test="normalize-space() != ''">
|
3773
|
-
|
3774
|
-
|
3775
|
-
|
3776
|
-
|
3777
|
-
|
4131
|
+
|
4132
|
+
|
3778
4133
|
|
3779
|
-
|
3780
|
-
|
4134
|
+
<fo:block xsl:use-attribute-sets="table-name-style">
|
4135
|
+
|
3781
4136
|
|
3782
|
-
<xsl:apply-templates/>
|
3783
4137
|
|
3784
|
-
|
3785
|
-
|
3786
|
-
<xsl:
|
3787
|
-
|
3788
|
-
|
3789
|
-
|
3790
|
-
|
3791
|
-
|
3792
|
-
|
3793
|
-
|
3794
|
-
|
4138
|
+
|
4139
|
+
|
4140
|
+
<xsl:choose>
|
4141
|
+
<xsl:when test="$continued = 'true'">
|
4142
|
+
|
4143
|
+
<xsl:apply-templates/>
|
4144
|
+
|
4145
|
+
</xsl:when>
|
4146
|
+
<xsl:otherwise>
|
4147
|
+
<xsl:apply-templates/>
|
4148
|
+
</xsl:otherwise>
|
4149
|
+
</xsl:choose>
|
4150
|
+
|
4151
|
+
|
4152
|
+
</fo:block>
|
4153
|
+
|
4154
|
+
|
4155
|
+
|
4156
|
+
</xsl:if>
|
4157
|
+
</xsl:template><xsl:template name="calculate-columns-numbers">
|
4158
|
+
<xsl:param name="table-row"/>
|
3795
4159
|
<xsl:variable name="columns-count" select="count($table-row/*)"/>
|
3796
4160
|
<xsl:variable name="sum-colspans" select="sum($table-row/*/@colspan)"/>
|
3797
4161
|
<xsl:variable name="columns-with-colspan" select="count($table-row/*[@colspan])"/>
|
3798
4162
|
<xsl:value-of select="$columns-count + $sum-colspans - $columns-with-colspan"/>
|
3799
4163
|
</xsl:template><xsl:template name="calculate-column-widths">
|
4164
|
+
<xsl:param name="table"/>
|
4165
|
+
<xsl:param name="cols-count"/>
|
4166
|
+
|
4167
|
+
<xsl:call-template name="get-calculated-column-widths-autolayout-algorithm"/>
|
4168
|
+
|
4169
|
+
</xsl:template><xsl:template name="calculate-column-widths-proportional">
|
3800
4170
|
<xsl:param name="table"/>
|
3801
4171
|
<xsl:param name="cols-count"/>
|
3802
4172
|
<xsl:param name="curr-col" select="1"/>
|
3803
4173
|
<xsl:param name="width" select="0"/>
|
3804
4174
|
|
4175
|
+
<!-- table=<xsl:copy-of select="$table"/> -->
|
4176
|
+
|
3805
4177
|
<xsl:if test="$curr-col <= $cols-count">
|
3806
4178
|
<xsl:variable name="widths">
|
3807
4179
|
<xsl:choose>
|
@@ -3839,10 +4211,15 @@
|
|
3839
4211
|
</xsl:for-each>
|
3840
4212
|
</xsl:when>
|
3841
4213
|
<xsl:otherwise>
|
3842
|
-
<xsl:
|
4214
|
+
<!-- <curr_col><xsl:value-of select="$curr-col"/></curr_col> -->
|
4215
|
+
|
4216
|
+
<!-- <table><xsl:copy-of select="$table"/></table>
|
4217
|
+
-->
|
4218
|
+
<xsl:for-each select="xalan:nodeset($table)/*/*[local-name()='tr']">
|
3843
4219
|
<xsl:variable name="td_text">
|
3844
4220
|
<xsl:apply-templates select="td[$curr-col]" mode="td_text"/>
|
3845
4221
|
</xsl:variable>
|
4222
|
+
<!-- <td_text><xsl:value-of select="$td_text"/></td_text> -->
|
3846
4223
|
<xsl:variable name="words">
|
3847
4224
|
<xsl:variable name="string_with_added_zerospaces">
|
3848
4225
|
<xsl:call-template name="add-zero-spaces-java">
|
@@ -3857,6 +4234,7 @@
|
|
3857
4234
|
<xsl:with-param name="text" select="normalize-space(translate($string_with_added_zerospaces, '', ' '))"/> <!-- replace zero-width-space and soft-hyphen to space -->
|
3858
4235
|
</xsl:call-template>
|
3859
4236
|
</xsl:variable>
|
4237
|
+
<!-- words=<xsl:copy-of select="$words"/> -->
|
3860
4238
|
<xsl:variable name="max_length">
|
3861
4239
|
<xsl:call-template name="max_length">
|
3862
4240
|
<xsl:with-param name="words" select="xalan:nodeset($words)"/>
|
@@ -3881,6 +4259,8 @@
|
|
3881
4259
|
</xsl:choose>
|
3882
4260
|
</xsl:variable>
|
3883
4261
|
|
4262
|
+
<!-- widths=<xsl:copy-of select="$widths"/> -->
|
4263
|
+
|
3884
4264
|
<column>
|
3885
4265
|
<xsl:for-each select="xalan:nodeset($widths)//width">
|
3886
4266
|
<xsl:sort select="." data-type="number" order="descending"/>
|
@@ -3889,33 +4269,271 @@
|
|
3889
4269
|
</xsl:if>
|
3890
4270
|
</xsl:for-each>
|
3891
4271
|
</column>
|
3892
|
-
<xsl:call-template name="calculate-column-widths">
|
4272
|
+
<xsl:call-template name="calculate-column-widths-proportional">
|
3893
4273
|
<xsl:with-param name="cols-count" select="$cols-count"/>
|
3894
4274
|
<xsl:with-param name="curr-col" select="$curr-col +1"/>
|
3895
4275
|
<xsl:with-param name="table" select="$table"/>
|
3896
4276
|
</xsl:call-template>
|
3897
4277
|
</xsl:if>
|
3898
|
-
</xsl:template><xsl:template match="*[@keep-together.within-line]/text()" priority="2" mode="td_text">
|
4278
|
+
</xsl:template><xsl:template match="*[@keep-together.within-line or local-name() = 'keep-together_within-line']/text()" priority="2" mode="td_text">
|
3899
4279
|
<!-- <xsl:message>DEBUG t1=<xsl:value-of select="."/></xsl:message>
|
3900
4280
|
<xsl:message>DEBUG t2=<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),'.','X')"/></xsl:message> -->
|
3901
4281
|
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),'.','X')"/>
|
4282
|
+
|
4283
|
+
<!-- if all capitals english letters or digits -->
|
4284
|
+
<xsl:if test="normalize-space(translate(., concat($upper,'0123456789'), '')) = ''">
|
4285
|
+
<xsl:call-template name="repeat">
|
4286
|
+
<xsl:with-param name="char" select="'X'"/>
|
4287
|
+
<xsl:with-param name="count" select="string-length(normalize-space(.)) * 0.5"/>
|
4288
|
+
</xsl:call-template>
|
4289
|
+
</xsl:if>
|
3902
4290
|
</xsl:template><xsl:template match="text()" mode="td_text">
|
3903
4291
|
<xsl:value-of select="translate(., $zero_width_space, ' ')"/><xsl:text> </xsl:text>
|
3904
4292
|
</xsl:template><xsl:template match="*[local-name()='termsource']" mode="td_text">
|
3905
4293
|
<xsl:value-of select="*[local-name()='origin']/@citeas"/>
|
3906
4294
|
</xsl:template><xsl:template match="*[local-name()='link']" mode="td_text">
|
3907
4295
|
<xsl:value-of select="@target"/>
|
3908
|
-
</xsl:template><xsl:template match="*[local-name()='math']" mode="td_text">
|
3909
|
-
<xsl:
|
3910
|
-
<xsl:
|
3911
|
-
<xsl:
|
3912
|
-
<xsl:
|
3913
|
-
|
4296
|
+
</xsl:template><xsl:template match="*[local-name()='math']" mode="td_text" name="math_length">
|
4297
|
+
<xsl:if test="$isGenerateTableIF = 'false'">
|
4298
|
+
<xsl:variable name="mathml_">
|
4299
|
+
<xsl:for-each select="*">
|
4300
|
+
<xsl:if test="local-name() != 'unit' and local-name() != 'prefix' and local-name() != 'dimension' and local-name() != 'quantity'">
|
4301
|
+
<xsl:copy-of select="."/>
|
4302
|
+
</xsl:if>
|
4303
|
+
</xsl:for-each>
|
4304
|
+
</xsl:variable>
|
4305
|
+
<xsl:variable name="mathml" select="xalan:nodeset($mathml_)"/>
|
4306
|
+
|
4307
|
+
<xsl:variable name="math_text">
|
4308
|
+
<xsl:value-of select="normalize-space($mathml)"/>
|
4309
|
+
<xsl:for-each select="$mathml//@open"><xsl:value-of select="."/></xsl:for-each>
|
4310
|
+
<xsl:for-each select="$mathml//@close"><xsl:value-of select="."/></xsl:for-each>
|
4311
|
+
</xsl:variable>
|
4312
|
+
<xsl:value-of select="translate($math_text, ' ', '#')"/><!-- mathml images as one 'word' without spaces -->
|
4313
|
+
</xsl:if>
|
4314
|
+
</xsl:template><xsl:template name="calculate-column-widths-autolayout-algorithm">
|
4315
|
+
<xsl:param name="parent_table_page-width"/> <!-- for nested tables, in re-calculate step -->
|
4316
|
+
|
4317
|
+
<!-- via intermediate format -->
|
4318
|
+
|
4319
|
+
<!-- The algorithm uses two passes through the table data and scales linearly with the size of the table -->
|
4320
|
+
|
4321
|
+
<!-- In the first pass, line wrapping is disabled, and the user agent keeps track of the minimum and maximum width of each cell. -->
|
4322
|
+
|
4323
|
+
<!-- Since line wrap has been disabled, paragraphs are treated as long lines unless broken by BR elements. -->
|
4324
|
+
|
4325
|
+
<!-- get current table id -->
|
4326
|
+
<xsl:variable name="table_id" select="@id"/>
|
4327
|
+
<!-- find table by id in the file 'table_widths' -->
|
4328
|
+
<!-- <xsl:variable name="table-if_" select="$table_widths_from_if//table[@id = $table_id]"/>
|
4329
|
+
<xsl:variable name="table-if" select="xalan:nodeset($table-if_)"/> -->
|
4330
|
+
|
4331
|
+
<!-- table='<xsl:copy-of select="$table"/>' -->
|
4332
|
+
<!-- table_id='<xsl:value-of select="$table_id"/>\ -->
|
4333
|
+
<!-- table-if='<xsl:copy-of select="$table-if"/>' -->
|
4334
|
+
<!-- table_widths_from_if='<xsl:copy-of select="$table_widths_from_if"/>' -->
|
4335
|
+
|
4336
|
+
<xsl:variable name="table_with_cell_widths_">
|
4337
|
+
<xsl:apply-templates select="." mode="determine_cell_widths-if"/> <!-- read column's width from IF -->
|
4338
|
+
</xsl:variable>
|
4339
|
+
<xsl:variable name="table_with_cell_widths" select="xalan:nodeset($table_with_cell_widths_)"/>
|
4340
|
+
|
4341
|
+
<!-- <xsl:if test="$table_if_debug = 'true'">
|
4342
|
+
<xsl:copy-of select="$table_with_cell_widths"/>
|
4343
|
+
</xsl:if> -->
|
4344
|
+
|
4345
|
+
|
4346
|
+
<!-- The minimum and maximum cell widths are then used to determine the corresponding minimum and maximum widths for the columns. -->
|
4347
|
+
|
4348
|
+
<xsl:variable name="column_widths_">
|
4349
|
+
<!-- iteration of columns -->
|
4350
|
+
<xsl:for-each select="$table_with_cell_widths//tr[1]/td">
|
4351
|
+
<xsl:variable name="pos" select="position()"/>
|
4352
|
+
<column>
|
4353
|
+
<xsl:attribute name="width_max">
|
4354
|
+
<xsl:for-each select="ancestor::tbody//tr/td[$pos]/@width_max">
|
4355
|
+
<xsl:sort select="." data-type="number" order="descending"/>
|
4356
|
+
<xsl:if test="position() = 1"><xsl:value-of select="."/></xsl:if>
|
4357
|
+
</xsl:for-each>
|
4358
|
+
</xsl:attribute>
|
4359
|
+
<xsl:attribute name="width_min">
|
4360
|
+
<xsl:for-each select="ancestor::tbody//tr/td[$pos]/@width_min">
|
4361
|
+
<xsl:sort select="." data-type="number" order="descending"/>
|
4362
|
+
<xsl:if test="position() = 1"><xsl:value-of select="."/></xsl:if>
|
4363
|
+
</xsl:for-each>
|
4364
|
+
</xsl:attribute>
|
4365
|
+
</column>
|
3914
4366
|
</xsl:for-each>
|
3915
4367
|
</xsl:variable>
|
4368
|
+
<xsl:variable name="column_widths" select="xalan:nodeset($column_widths_)"/>
|
4369
|
+
|
4370
|
+
<!-- <column_widths>
|
4371
|
+
<xsl:copy-of select="$column_widths"/>
|
4372
|
+
</column_widths> -->
|
4373
|
+
|
4374
|
+
<!-- These in turn, are used to find the minimum and maximum width for the table. -->
|
4375
|
+
<xsl:variable name="table_widths_">
|
4376
|
+
<table>
|
4377
|
+
<xsl:attribute name="width_max">
|
4378
|
+
<xsl:value-of select="sum($column_widths/column/@width_max)"/>
|
4379
|
+
</xsl:attribute>
|
4380
|
+
<xsl:attribute name="width_min">
|
4381
|
+
<xsl:value-of select="sum($column_widths/column/@width_min)"/>
|
4382
|
+
</xsl:attribute>
|
4383
|
+
</table>
|
4384
|
+
</xsl:variable>
|
4385
|
+
<xsl:variable name="table_widths" select="xalan:nodeset($table_widths_)"/>
|
4386
|
+
|
4387
|
+
<xsl:variable name="page_width">
|
4388
|
+
<xsl:choose>
|
4389
|
+
<xsl:when test="$parent_table_page-width != ''">
|
4390
|
+
<xsl:value-of select="$parent_table_page-width"/>
|
4391
|
+
</xsl:when>
|
4392
|
+
<xsl:otherwise>
|
4393
|
+
<xsl:value-of select="@page-width"/>
|
4394
|
+
</xsl:otherwise>
|
4395
|
+
</xsl:choose>
|
4396
|
+
</xsl:variable>
|
4397
|
+
|
4398
|
+
<xsl:if test="$table_if_debug = 'true'">
|
4399
|
+
<table_width>
|
4400
|
+
<xsl:copy-of select="$table_widths"/>
|
4401
|
+
</table_width>
|
4402
|
+
<debug>$page_width=<xsl:value-of select="$page_width"/></debug>
|
4403
|
+
</xsl:if>
|
4404
|
+
|
4405
|
+
|
4406
|
+
<!-- There are three cases: -->
|
4407
|
+
<xsl:choose>
|
4408
|
+
<!-- 1. The minimum table width is equal to or wider than the available space -->
|
4409
|
+
<xsl:when test="$table_widths/table/@width_min >= $page_width and 1 = 2"> <!-- this condition isn't working see case 3 below -->
|
4410
|
+
<!-- call old algorithm -->
|
4411
|
+
<case1/>
|
4412
|
+
<!-- <xsl:variable name="cols-count" select="count(xalan:nodeset($table)/*/tr[1]/td)"/>
|
4413
|
+
<xsl:call-template name="calculate-column-widths-proportional">
|
4414
|
+
<xsl:with-param name="cols-count" select="$cols-count"/>
|
4415
|
+
<xsl:with-param name="table" select="$table"/>
|
4416
|
+
</xsl:call-template> -->
|
4417
|
+
</xsl:when>
|
4418
|
+
<!-- 2. The maximum table width fits within the available space. In this case, set the columns to their maximum widths. -->
|
4419
|
+
<xsl:when test="$table_widths/table/@width_max <= $page_width">
|
4420
|
+
<case2/>
|
4421
|
+
<autolayout/>
|
4422
|
+
<xsl:for-each select="$column_widths/column/@width_max">
|
4423
|
+
<column divider="100"><xsl:value-of select="."/></column>
|
4424
|
+
</xsl:for-each>
|
4425
|
+
</xsl:when>
|
4426
|
+
<!-- 3. The maximum width of the table is greater than the available space, but the minimum table width is smaller.
|
4427
|
+
In this case, find the difference between the available space and the minimum table width, lets call it W.
|
4428
|
+
Lets also call D the difference between maximum and minimum width of the table.
|
4429
|
+
For each column, let d be the difference between maximum and minimum width of that column.
|
4430
|
+
Now set the column's width to the minimum width plus d times W over D.
|
4431
|
+
This makes columns with large differences between minimum and maximum widths wider than columns with smaller differences. -->
|
4432
|
+
<xsl:when test="($table_widths/table/@width_max > $page_width and $table_widths/table/@width_min < $page_width) or ($table_widths/table/@width_min >= $page_width)">
|
4433
|
+
<!-- difference between the available space and the minimum table width -->
|
4434
|
+
<xsl:variable name="W" select="$page_width - $table_widths/table/@width_min"/>
|
4435
|
+
<W><xsl:value-of select="$W"/></W>
|
4436
|
+
<!-- difference between maximum and minimum width of the table -->
|
4437
|
+
<xsl:variable name="D" select="$table_widths/table/@width_max - $table_widths/table/@width_min"/>
|
4438
|
+
<D><xsl:value-of select="$D"/></D>
|
4439
|
+
<case3/>
|
4440
|
+
<autolayout/>
|
4441
|
+
<xsl:if test="$table_widths/table/@width_min >= $page_width">
|
4442
|
+
<split_keep-within-line>true</split_keep-within-line>
|
4443
|
+
</xsl:if>
|
4444
|
+
<xsl:for-each select="$column_widths/column">
|
4445
|
+
<!-- difference between maximum and minimum width of that column. -->
|
4446
|
+
<xsl:variable name="d" select="@width_max - @width_min"/>
|
4447
|
+
<d><xsl:value-of select="$d"/></d>
|
4448
|
+
<width_min><xsl:value-of select="@width_min"/></width_min>
|
4449
|
+
<e><xsl:value-of select="$d * $W div $D"/></e>
|
4450
|
+
<!-- set the column's width to the minimum width plus d times W over D. -->
|
4451
|
+
<column divider="100">
|
4452
|
+
<xsl:value-of select="round(@width_min + $d * $W div $D)"/> <!-- * 10 -->
|
4453
|
+
</column>
|
4454
|
+
</xsl:for-each>
|
4455
|
+
|
4456
|
+
</xsl:when>
|
4457
|
+
<xsl:otherwise><unknown_case/></xsl:otherwise>
|
4458
|
+
</xsl:choose>
|
4459
|
+
|
4460
|
+
</xsl:template><xsl:template name="get-calculated-column-widths-autolayout-algorithm">
|
4461
|
+
|
4462
|
+
<!-- if nested 'dl' or 'table' -->
|
4463
|
+
<xsl:variable name="parent_table_id" select="normalize-space(ancestor::*[local-name() = 'table' or local-name() = 'dl'][1]/@id)"/>
|
4464
|
+
<parent_table_id><xsl:value-of select="$parent_table_id"/></parent_table_id>
|
4465
|
+
|
4466
|
+
<parent_element><xsl:value-of select="local-name(..)"/></parent_element>
|
4467
|
+
|
4468
|
+
<xsl:variable name="parent_table_page-width_">
|
4469
|
+
<xsl:if test="$parent_table_id != ''">
|
4470
|
+
<!-- determine column number in the parent table -->
|
4471
|
+
<xsl:variable name="parent_table_column_number">
|
4472
|
+
<xsl:choose>
|
4473
|
+
<xsl:when test="parent::*[local-name() = 'dd']">2</xsl:when>
|
4474
|
+
<xsl:otherwise> <!-- parent is table -->
|
4475
|
+
<xsl:value-of select="count(ancestor::*[local-name() = 'td'][1]/preceding-sibling::*[local-name() = 'td']) + 1"/>
|
4476
|
+
</xsl:otherwise>
|
4477
|
+
</xsl:choose>
|
4478
|
+
</xsl:variable>
|
4479
|
+
<!-- find table by id in the file 'table_widths' and get all Nth `<column>...</column> -->
|
4480
|
+
<xsl:value-of select="$table_widths_from_if_calculated//table[@id = $parent_table_id]/column[number($parent_table_column_number)]"/>
|
4481
|
+
</xsl:if>
|
4482
|
+
</xsl:variable>
|
4483
|
+
<xsl:variable name="parent_table_page-width" select="normalize-space($parent_table_page-width_)"/>
|
3916
4484
|
|
3917
|
-
|
3918
|
-
<xsl:
|
4485
|
+
<!-- get current table id -->
|
4486
|
+
<xsl:variable name="table_id" select="@id"/>
|
4487
|
+
|
4488
|
+
<xsl:choose>
|
4489
|
+
<xsl:when test="$parent_table_id = '' or $parent_table_page-width = ''">
|
4490
|
+
<!-- find table by id in the file 'table_widths' and get all `<column>...</column> -->
|
4491
|
+
<xsl:copy-of select="$table_widths_from_if_calculated//table[@id = $table_id]/node()"/>
|
4492
|
+
</xsl:when>
|
4493
|
+
<xsl:otherwise>
|
4494
|
+
<!-- recalculate columns width based on parent table width -->
|
4495
|
+
<xsl:for-each select="$table_widths_from_if//table[@id = $table_id]">
|
4496
|
+
<xsl:call-template name="calculate-column-widths-autolayout-algorithm">
|
4497
|
+
<xsl:with-param name="parent_table_page-width" select="$parent_table_page-width"/> <!-- padding-left = 2mm = 50000-->
|
4498
|
+
</xsl:call-template>
|
4499
|
+
</xsl:for-each>
|
4500
|
+
</xsl:otherwise>
|
4501
|
+
</xsl:choose>
|
4502
|
+
|
4503
|
+
</xsl:template><xsl:template match="@*|node()" mode="determine_cell_widths-if">
|
4504
|
+
<xsl:copy>
|
4505
|
+
<xsl:apply-templates select="@*|node()" mode="determine_cell_widths-if"/>
|
4506
|
+
</xsl:copy>
|
4507
|
+
</xsl:template><xsl:template match="td | th" mode="determine_cell_widths-if">
|
4508
|
+
<xsl:copy>
|
4509
|
+
<xsl:copy-of select="@*"/>
|
4510
|
+
|
4511
|
+
<!-- The maximum width is given by the widest line. -->
|
4512
|
+
<xsl:attribute name="width_max">
|
4513
|
+
<xsl:for-each select="p_len">
|
4514
|
+
<xsl:sort select="." data-type="number" order="descending"/>
|
4515
|
+
<xsl:if test="position() = 1"><xsl:value-of select="."/></xsl:if>
|
4516
|
+
</xsl:for-each>
|
4517
|
+
</xsl:attribute>
|
4518
|
+
|
4519
|
+
<!-- The minimum width is given by the widest text element (word, image, etc.) -->
|
4520
|
+
<xsl:variable name="width_min">
|
4521
|
+
<xsl:for-each select="word_len">
|
4522
|
+
<xsl:sort select="." data-type="number" order="descending"/>
|
4523
|
+
<xsl:if test="position() = 1"><xsl:value-of select="."/></xsl:if>
|
4524
|
+
</xsl:for-each>
|
4525
|
+
</xsl:variable>
|
4526
|
+
<xsl:attribute name="width_min">
|
4527
|
+
<xsl:value-of select="$width_min"/>
|
4528
|
+
</xsl:attribute>
|
4529
|
+
|
4530
|
+
<xsl:if test="$width_min = 0">
|
4531
|
+
<xsl:attribute name="width_min">1</xsl:attribute>
|
4532
|
+
</xsl:if>
|
4533
|
+
|
4534
|
+
<xsl:apply-templates select="node()" mode="determine_cell_widths-if"/>
|
4535
|
+
|
4536
|
+
</xsl:copy>
|
3919
4537
|
</xsl:template><xsl:template match="*[local-name()='thead']">
|
3920
4538
|
<xsl:param name="cols-count"/>
|
3921
4539
|
<fo:table-header>
|
@@ -3933,19 +4551,25 @@
|
|
3933
4551
|
<fo:table-row>
|
3934
4552
|
<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">
|
3935
4553
|
|
3936
|
-
<xsl:apply-templates select="ancestor::*[local-name()='table']/*[local-name()='name']">
|
3937
|
-
<xsl:with-param name="continued">true</xsl:with-param>
|
3938
|
-
</xsl:apply-templates>
|
3939
4554
|
|
3940
4555
|
|
3941
|
-
|
3942
|
-
<xsl:
|
3943
|
-
|
4556
|
+
|
4557
|
+
<xsl:apply-templates select="ancestor::*[local-name()='table']/*[local-name()='name']">
|
4558
|
+
<xsl:with-param name="continued">true</xsl:with-param>
|
4559
|
+
</xsl:apply-templates>
|
4560
|
+
|
4561
|
+
|
4562
|
+
<xsl:for-each select="ancestor::*[local-name()='table'][1]">
|
4563
|
+
<xsl:call-template name="table_name_fn_display"/>
|
4564
|
+
</xsl:for-each>
|
3944
4565
|
|
3945
|
-
|
3946
|
-
|
3947
|
-
|
3948
|
-
|
4566
|
+
<fo:block text-align="right" font-style="italic">
|
4567
|
+
<xsl:text> </xsl:text>
|
4568
|
+
<fo:retrieve-table-marker retrieve-class-name="table_continued"/>
|
4569
|
+
</fo:block>
|
4570
|
+
|
4571
|
+
|
4572
|
+
|
3949
4573
|
|
3950
4574
|
|
3951
4575
|
</fo:table-cell>
|
@@ -4013,6 +4637,7 @@
|
|
4013
4637
|
</xsl:for-each>
|
4014
4638
|
</xsl:when>
|
4015
4639
|
<xsl:otherwise>
|
4640
|
+
<!-- $colwidths=<xsl:copy-of select="$colwidths"/> -->
|
4016
4641
|
<xsl:call-template name="insertTableColumnWidth">
|
4017
4642
|
<xsl:with-param name="colwidths" select="$colwidths"/>
|
4018
4643
|
</xsl:call-template>
|
@@ -4047,7 +4672,10 @@
|
|
4047
4672
|
|
4048
4673
|
|
4049
4674
|
<!-- fn processing -->
|
4050
|
-
|
4675
|
+
|
4676
|
+
<xsl:call-template name="table_fn_display"/>
|
4677
|
+
|
4678
|
+
|
4051
4679
|
|
4052
4680
|
<!-- for PAS display Notes after footnotes -->
|
4053
4681
|
|
@@ -4057,6 +4685,9 @@
|
|
4057
4685
|
</fo:table-body>
|
4058
4686
|
|
4059
4687
|
</fo:table>
|
4688
|
+
|
4689
|
+
|
4690
|
+
|
4060
4691
|
</xsl:if>
|
4061
4692
|
</xsl:template><xsl:template match="*[local-name()='tbody']">
|
4062
4693
|
|
@@ -4137,6 +4768,52 @@
|
|
4137
4768
|
|
4138
4769
|
</fo:table-body>
|
4139
4770
|
|
4771
|
+
</xsl:template><xsl:template match="/" mode="process_table-if">
|
4772
|
+
<xsl:param name="table_or_dl">table</xsl:param>
|
4773
|
+
<xsl:apply-templates mode="process_table-if">
|
4774
|
+
<xsl:with-param name="table_or_dl" select="$table_or_dl"/>
|
4775
|
+
</xsl:apply-templates>
|
4776
|
+
</xsl:template><xsl:template match="*[local-name()='tbody']" mode="process_table-if">
|
4777
|
+
<xsl:param name="table_or_dl">table</xsl:param>
|
4778
|
+
|
4779
|
+
<fo:table-body>
|
4780
|
+
<xsl:for-each select="*[local-name() = 'tr']">
|
4781
|
+
<xsl:variable name="col_count" select="count(*)"/>
|
4782
|
+
|
4783
|
+
<!-- iteration for each tr/td -->
|
4784
|
+
|
4785
|
+
<xsl:choose>
|
4786
|
+
<xsl:when test="$table_or_dl = 'table'">
|
4787
|
+
<xsl:for-each select="*[local-name() = 'td' or local-name() = 'th']/*">
|
4788
|
+
<fo:table-row number-columns-spanned="{$col_count}">
|
4789
|
+
<!-- <test_table><xsl:copy-of select="."/></test_table> -->
|
4790
|
+
<xsl:call-template name="td"/>
|
4791
|
+
</fo:table-row>
|
4792
|
+
</xsl:for-each>
|
4793
|
+
</xsl:when>
|
4794
|
+
<xsl:otherwise> <!-- $table_or_dl = 'dl' -->
|
4795
|
+
<xsl:for-each select="*[local-name() = 'td' or local-name() = 'th']">
|
4796
|
+
<xsl:variable name="is_dt" select="position() = 1"/>
|
4797
|
+
|
4798
|
+
<xsl:for-each select="*">
|
4799
|
+
<!-- <test><xsl:copy-of select="."/></test> -->
|
4800
|
+
<fo:table-row number-columns-spanned="{$col_count}">
|
4801
|
+
<xsl:choose>
|
4802
|
+
<xsl:when test="$is_dt">
|
4803
|
+
<xsl:call-template name="insert_dt_cell"/>
|
4804
|
+
</xsl:when>
|
4805
|
+
<xsl:otherwise>
|
4806
|
+
<xsl:call-template name="insert_dd_cell"/>
|
4807
|
+
</xsl:otherwise>
|
4808
|
+
</xsl:choose>
|
4809
|
+
</fo:table-row>
|
4810
|
+
</xsl:for-each>
|
4811
|
+
</xsl:for-each>
|
4812
|
+
</xsl:otherwise>
|
4813
|
+
</xsl:choose>
|
4814
|
+
|
4815
|
+
</xsl:for-each>
|
4816
|
+
</fo:table-body>
|
4140
4817
|
</xsl:template><xsl:template match="*[local-name()='thead']/*[local-name()='tr']" priority="2">
|
4141
4818
|
<fo:table-row xsl:use-attribute-sets="table-header-row-style">
|
4142
4819
|
|
@@ -4155,6 +4832,9 @@
|
|
4155
4832
|
</xsl:choose>
|
4156
4833
|
|
4157
4834
|
|
4835
|
+
|
4836
|
+
|
4837
|
+
|
4158
4838
|
|
4159
4839
|
|
4160
4840
|
<xsl:call-template name="setTableRowAttributes"/>
|
@@ -4174,6 +4854,8 @@
|
|
4174
4854
|
|
4175
4855
|
|
4176
4856
|
|
4857
|
+
|
4858
|
+
|
4177
4859
|
<xsl:call-template name="setTableRowAttributes"/>
|
4178
4860
|
<xsl:apply-templates/>
|
4179
4861
|
</fo:table-row>
|
@@ -4234,7 +4916,7 @@
|
|
4234
4916
|
</xsl:choose>
|
4235
4917
|
</xsl:attribute>
|
4236
4918
|
</xsl:if>
|
4237
|
-
</xsl:template><xsl:template match="*[local-name()='td']">
|
4919
|
+
</xsl:template><xsl:template match="*[local-name()='td']" name="td">
|
4238
4920
|
<fo:table-cell xsl:use-attribute-sets="table-cell-style"> <!-- text-align="{@align}" -->
|
4239
4921
|
<xsl:call-template name="setTextAlignment">
|
4240
4922
|
<xsl:with-param name="default">left</xsl:with-param>
|
@@ -4253,6 +4935,8 @@
|
|
4253
4935
|
|
4254
4936
|
|
4255
4937
|
|
4938
|
+
|
4939
|
+
|
4256
4940
|
<xsl:if test="ancestor::*[local-name() = 'tfoot']">
|
4257
4941
|
<xsl:attribute name="border">solid black 0</xsl:attribute>
|
4258
4942
|
</xsl:if>
|
@@ -4272,11 +4956,24 @@
|
|
4272
4956
|
|
4273
4957
|
<xsl:call-template name="setTableCellAttributes"/>
|
4274
4958
|
|
4959
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
4960
|
+
<xsl:attribute name="border">1pt solid black</xsl:attribute> <!-- border is mandatory, to determine page width -->
|
4961
|
+
<xsl:attribute name="text-align">left</xsl:attribute>
|
4962
|
+
</xsl:if>
|
4963
|
+
|
4275
4964
|
<fo:block>
|
4276
4965
|
|
4966
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
4967
|
+
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
|
4968
|
+
</xsl:if>
|
4969
|
+
|
4970
|
+
|
4277
4971
|
|
4278
4972
|
|
4279
4973
|
<xsl:apply-templates/>
|
4974
|
+
|
4975
|
+
<xsl:if test="$isGenerateTableIF = 'true'"><fo:inline id="{@id}_end">end</fo:inline></xsl:if> <!-- to determine width of text --> <!-- <xsl:value-of select="$hair_space"/> -->
|
4976
|
+
|
4280
4977
|
</fo:block>
|
4281
4978
|
</fo:table-cell>
|
4282
4979
|
</xsl:template><xsl:template match="*[local-name()='table']/*[local-name()='note']" priority="2">
|
@@ -4317,7 +5014,11 @@
|
|
4317
5014
|
|
4318
5015
|
<xsl:variable name="gen_id" select="generate-id(.)"/>
|
4319
5016
|
<xsl:variable name="lang" select="ancestor::*[contains(local-name(), '-standard')]/*[local-name()='bibdata']//*[local-name()='language'][@current = 'true']"/>
|
4320
|
-
<xsl:variable name="
|
5017
|
+
<xsl:variable name="reference_">
|
5018
|
+
<xsl:value-of select="@reference"/>
|
5019
|
+
<xsl:if test="normalize-space(@reference) = ''"><xsl:value-of select="$gen_id"/></xsl:if>
|
5020
|
+
</xsl:variable>
|
5021
|
+
<xsl:variable name="reference" select="normalize-space($reference_)"/>
|
4321
5022
|
<!-- fn sequence number in document -->
|
4322
5023
|
<xsl:variable name="current_fn_number">
|
4323
5024
|
<xsl:choose>
|
@@ -4394,7 +5095,7 @@
|
|
4394
5095
|
<xsl:copy-of select="node()"/>
|
4395
5096
|
</fn>
|
4396
5097
|
</xsl:for-each>
|
4397
|
-
<xsl:for-each select="ancestor::*[contains(local-name(), '-standard')]/*[local-name()='preface']/* | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='sections']/* | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='annex'] | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='bibliography']/*">
|
5098
|
+
<xsl:for-each select="ancestor::*[contains(local-name(), '-standard')]/*[local-name()='boilerplate']/* | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='preface']/* | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='sections']/* | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='annex'] | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='bibliography']/*">
|
4398
5099
|
<xsl:sort select="@displayorder" data-type="number"/>
|
4399
5100
|
<xsl:for-each select=".//*[local-name() = 'bibitem'][ancestor::*[local-name() = 'references']]/*[local-name() = 'note'] | .//*[local-name() = 'fn'][not(ancestor::*[(local-name() = 'table' or local-name() = 'figure') and not(ancestor::*[local-name() = 'name'])])][generate-id(.)=generate-id(key('kfn',@reference)[1])]">
|
4400
5101
|
<!-- copy unique fn -->
|
@@ -4475,9 +5176,9 @@
|
|
4475
5176
|
<!-- current hierarchy is 'figure' element -->
|
4476
5177
|
<xsl:variable name="following_dl_colwidths">
|
4477
5178
|
<xsl:if test="*[local-name() = 'dl']"><!-- if there is a 'dl', then set the same columns width as for 'dl' -->
|
4478
|
-
<xsl:variable name="
|
4479
|
-
<xsl:variable name="doc_ns">
|
4480
|
-
|
5179
|
+
<xsl:variable name="simple-table">
|
5180
|
+
<!-- <xsl:variable name="doc_ns">
|
5181
|
+
<xsl:if test="$namespace = 'bipm'">bipm</xsl:if>
|
4481
5182
|
</xsl:variable>
|
4482
5183
|
<xsl:variable name="ns">
|
4483
5184
|
<xsl:choose>
|
@@ -4488,7 +5189,7 @@
|
|
4488
5189
|
<xsl:value-of select="substring-before(name(/*), '-')"/>
|
4489
5190
|
</xsl:otherwise>
|
4490
5191
|
</xsl:choose>
|
4491
|
-
</xsl:variable>
|
5192
|
+
</xsl:variable> -->
|
4492
5193
|
|
4493
5194
|
<xsl:for-each select="*[local-name() = 'dl'][1]">
|
4494
5195
|
<tbody>
|
@@ -4499,7 +5200,7 @@
|
|
4499
5200
|
|
4500
5201
|
<xsl:call-template name="calculate-column-widths">
|
4501
5202
|
<xsl:with-param name="cols-count" select="2"/>
|
4502
|
-
<xsl:with-param name="table" select="$
|
5203
|
+
<xsl:with-param name="table" select="$simple-table"/>
|
4503
5204
|
</xsl:call-template>
|
4504
5205
|
|
4505
5206
|
</xsl:if>
|
@@ -4693,12 +5394,31 @@
|
|
4693
5394
|
|
4694
5395
|
|
4695
5396
|
|
5397
|
+
|
5398
|
+
<xsl:if test="ancestor::*[local-name() = 'dd' or local-name() = 'td']">
|
5399
|
+
<xsl:attribute name="margin-top">0</xsl:attribute>
|
5400
|
+
</xsl:if>
|
5401
|
+
|
4696
5402
|
<fo:block>
|
4697
5403
|
|
4698
5404
|
|
4699
5405
|
|
4700
5406
|
|
5407
|
+
<xsl:apply-templates select="*[local-name() = 'name']">
|
5408
|
+
<xsl:with-param name="process">true</xsl:with-param>
|
5409
|
+
</xsl:apply-templates>
|
5410
|
+
|
5411
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
5412
|
+
<!-- to determine start of table -->
|
5413
|
+
<fo:block id="{concat('table_if_start_',@id)}" keep-with-next="always" font-size="1pt">Start table '<xsl:value-of select="@id"/>'.</fo:block>
|
5414
|
+
</xsl:if>
|
5415
|
+
|
4701
5416
|
<fo:table width="95%" table-layout="fixed">
|
5417
|
+
|
5418
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
5419
|
+
<xsl:attribute name="wrap-option">no-wrap</xsl:attribute>
|
5420
|
+
</xsl:if>
|
5421
|
+
|
4702
5422
|
|
4703
5423
|
<xsl:choose>
|
4704
5424
|
<xsl:when test="normalize-space($key_iso) = 'true' and $parent = 'formula'"/>
|
@@ -4707,72 +5427,177 @@
|
|
4707
5427
|
|
4708
5428
|
</xsl:when>
|
4709
5429
|
</xsl:choose>
|
4710
|
-
|
4711
|
-
|
4712
|
-
<xsl:
|
5430
|
+
|
5431
|
+
|
5432
|
+
<xsl:attribute name="width">100%</xsl:attribute>
|
5433
|
+
|
5434
|
+
|
5435
|
+
<xsl:choose>
|
5436
|
+
<xsl:when test="$isGenerateTableIF = 'true'">
|
5437
|
+
<!-- generate IF for table widths -->
|
5438
|
+
<!-- example:
|
5439
|
+
<tr>
|
5440
|
+
<td valign="top" align="left" id="tab-symdu_1_1">
|
5441
|
+
<p>Symbol</p>
|
5442
|
+
<word id="tab-symdu_1_1_word_1">Symbol</word>
|
5443
|
+
</td>
|
5444
|
+
<td valign="top" align="left" id="tab-symdu_1_2">
|
5445
|
+
<p>Description</p>
|
5446
|
+
<word id="tab-symdu_1_2_word_1">Description</word>
|
5447
|
+
</td>
|
5448
|
+
</tr>
|
5449
|
+
-->
|
4713
5450
|
|
4714
|
-
|
4715
|
-
|
4716
|
-
|
4717
|
-
<xsl:
|
4718
|
-
<
|
4719
|
-
|
4720
|
-
|
4721
|
-
|
4722
|
-
|
4723
|
-
|
4724
|
-
|
4725
|
-
|
4726
|
-
|
4727
|
-
|
4728
|
-
|
4729
|
-
|
4730
|
-
|
4731
|
-
|
4732
|
-
|
4733
|
-
|
4734
|
-
|
4735
|
-
|
4736
|
-
|
4737
|
-
|
4738
|
-
|
4739
|
-
|
4740
|
-
|
4741
|
-
|
4742
|
-
|
4743
|
-
|
5451
|
+
<!-- create virtual html table for dl/[dt and dd] -->
|
5452
|
+
<xsl:variable name="simple-table">
|
5453
|
+
|
5454
|
+
<xsl:variable name="dl_table">
|
5455
|
+
<tbody>
|
5456
|
+
<xsl:apply-templates mode="dl_if">
|
5457
|
+
<xsl:with-param name="id" select="@id"/>
|
5458
|
+
</xsl:apply-templates>
|
5459
|
+
</tbody>
|
5460
|
+
</xsl:variable>
|
5461
|
+
|
5462
|
+
<!-- dl_table='<xsl:copy-of select="$dl_table"/>' -->
|
5463
|
+
|
5464
|
+
<!-- Step: replace <br/> to <p>...</p> -->
|
5465
|
+
<xsl:variable name="table_without_br">
|
5466
|
+
<xsl:apply-templates select="xalan:nodeset($dl_table)" mode="table-without-br"/>
|
5467
|
+
</xsl:variable>
|
5468
|
+
|
5469
|
+
<!-- table_without_br='<xsl:copy-of select="$table_without_br"/>' -->
|
5470
|
+
|
5471
|
+
<!-- Step: add id to each cell -->
|
5472
|
+
<!-- add <word>...</word> for each word, image, math -->
|
5473
|
+
<xsl:variable name="simple-table-id">
|
5474
|
+
<xsl:apply-templates select="xalan:nodeset($table_without_br)" mode="simple-table-id">
|
5475
|
+
<xsl:with-param name="id" select="@id"/>
|
5476
|
+
</xsl:apply-templates>
|
5477
|
+
</xsl:variable>
|
5478
|
+
|
5479
|
+
<!-- simple-table-id='<xsl:copy-of select="$simple-table-id"/>' -->
|
5480
|
+
|
5481
|
+
<xsl:copy-of select="xalan:nodeset($simple-table-id)"/>
|
5482
|
+
|
5483
|
+
</xsl:variable>
|
4744
5484
|
|
4745
|
-
|
4746
|
-
|
4747
|
-
|
4748
|
-
|
4749
|
-
|
4750
|
-
|
4751
|
-
|
4752
|
-
|
5485
|
+
<!-- DEBUG: simple-table<xsl:copy-of select="$simple-table"/> -->
|
5486
|
+
|
5487
|
+
<xsl:apply-templates select="xalan:nodeset($simple-table)" mode="process_table-if">
|
5488
|
+
<xsl:with-param name="table_or_dl">dl</xsl:with-param>
|
5489
|
+
</xsl:apply-templates>
|
5490
|
+
|
5491
|
+
</xsl:when>
|
5492
|
+
<xsl:otherwise>
|
4753
5493
|
|
4754
|
-
|
4755
|
-
|
4756
|
-
|
4757
|
-
|
4758
|
-
|
5494
|
+
<xsl:variable name="simple-table">
|
5495
|
+
|
5496
|
+
<xsl:variable name="dl_table">
|
5497
|
+
<tbody>
|
5498
|
+
<xsl:apply-templates mode="dl">
|
5499
|
+
<xsl:with-param name="id" select="@id"/>
|
5500
|
+
</xsl:apply-templates>
|
5501
|
+
</tbody>
|
5502
|
+
</xsl:variable>
|
5503
|
+
|
5504
|
+
<xsl:copy-of select="$dl_table"/>
|
5505
|
+
</xsl:variable>
|
5506
|
+
|
5507
|
+
<xsl:variable name="colwidths">
|
5508
|
+
<xsl:call-template name="calculate-column-widths">
|
5509
|
+
<xsl:with-param name="cols-count" select="2"/>
|
5510
|
+
<xsl:with-param name="table" select="$simple-table"/>
|
5511
|
+
</xsl:call-template>
|
5512
|
+
</xsl:variable>
|
5513
|
+
|
5514
|
+
<!-- <xsl:text disable-output-escaping="yes"><!- -</xsl:text>
|
5515
|
+
DEBUG
|
5516
|
+
colwidths=<xsl:copy-of select="$colwidths"/>
|
5517
|
+
<xsl:text disable-output-escaping="yes">- -></xsl:text> -->
|
5518
|
+
|
5519
|
+
<!-- colwidths=<xsl:copy-of select="$colwidths"/> -->
|
5520
|
+
|
5521
|
+
<xsl:variable name="maxlength_dt">
|
5522
|
+
<xsl:call-template name="getMaxLength_dt"/>
|
5523
|
+
</xsl:variable>
|
5524
|
+
|
5525
|
+
<xsl:variable name="isContainsKeepTogetherTag_">
|
5526
|
+
|
5527
|
+
<xsl:value-of select="count(.//*[local-name() = $element_name_keep-together_within-line]) > 0"/>
|
5528
|
+
|
5529
|
+
</xsl:variable>
|
5530
|
+
<xsl:variable name="isContainsKeepTogetherTag" select="normalize-space($isContainsKeepTogetherTag_)"/>
|
5531
|
+
<!-- isContainsExpressReference=<xsl:value-of select="$isContainsExpressReference"/> -->
|
5532
|
+
|
5533
|
+
|
5534
|
+
<xsl:call-template name="setColumnWidth_dl">
|
5535
|
+
<xsl:with-param name="colwidths" select="$colwidths"/>
|
5536
|
+
<xsl:with-param name="maxlength_dt" select="$maxlength_dt"/>
|
5537
|
+
<xsl:with-param name="isContainsKeepTogetherTag" select="$isContainsKeepTogetherTag"/>
|
5538
|
+
</xsl:call-template>
|
5539
|
+
|
5540
|
+
<fo:table-body>
|
5541
|
+
|
5542
|
+
<!-- DEBUG -->
|
5543
|
+
<xsl:if test="$table_if_debug = 'true'">
|
5544
|
+
<fo:table-row>
|
5545
|
+
<fo:table-cell number-columns-spanned="2" font-size="60%">
|
5546
|
+
<xsl:apply-templates select="xalan:nodeset($colwidths)" mode="print_as_xml"/>
|
5547
|
+
</fo:table-cell>
|
5548
|
+
</fo:table-row>
|
5549
|
+
</xsl:if>
|
5550
|
+
|
5551
|
+
<xsl:apply-templates>
|
5552
|
+
<xsl:with-param name="key_iso" select="normalize-space($key_iso)"/>
|
5553
|
+
<xsl:with-param name="split_keep-within-line" select="xalan:nodeset($colwidths)/split_keep-within-line"/>
|
5554
|
+
</xsl:apply-templates>
|
5555
|
+
|
5556
|
+
</fo:table-body>
|
5557
|
+
</xsl:otherwise>
|
5558
|
+
</xsl:choose>
|
4759
5559
|
</fo:table>
|
4760
5560
|
</fo:block>
|
4761
5561
|
</fo:block>
|
4762
5562
|
</xsl:if> <!-- END: a few components -->
|
4763
5563
|
</fo:block-container>
|
4764
5564
|
</fo:block-container>
|
5565
|
+
|
5566
|
+
<xsl:if test="$isGenerateTableIF = 'true'"> <!-- process nested 'dl' -->
|
5567
|
+
<xsl:apply-templates select="*[local-name() = 'dd']/*[local-name() = 'dl']"/>
|
5568
|
+
</xsl:if>
|
5569
|
+
|
5570
|
+
</xsl:template><xsl:template match="*[local-name() = 'dl']/*[local-name() = 'name']">
|
5571
|
+
<xsl:param name="process">false</xsl:param>
|
5572
|
+
<xsl:if test="$process = 'true'">
|
5573
|
+
<fo:block xsl:use-attribute-sets="dl-name-style">
|
5574
|
+
<xsl:apply-templates/>
|
5575
|
+
</fo:block>
|
5576
|
+
</xsl:if>
|
4765
5577
|
</xsl:template><xsl:template name="setColumnWidth_dl">
|
4766
5578
|
<xsl:param name="colwidths"/>
|
4767
5579
|
<xsl:param name="maxlength_dt"/>
|
4768
5580
|
<xsl:param name="isContainsKeepTogetherTag"/>
|
5581
|
+
|
5582
|
+
<!-- <colwidths><xsl:copy-of select="$colwidths"/></colwidths> -->
|
5583
|
+
|
4769
5584
|
<xsl:choose>
|
5585
|
+
<xsl:when test="xalan:nodeset($colwidths)/autolayout">
|
5586
|
+
<xsl:call-template name="insertTableColumnWidth">
|
5587
|
+
<xsl:with-param name="colwidths" select="$colwidths"/>
|
5588
|
+
</xsl:call-template>
|
5589
|
+
</xsl:when>
|
4770
5590
|
<xsl:when test="ancestor::*[local-name()='dl']"><!-- second level, i.e. inlined table -->
|
4771
5591
|
<fo:table-column column-width="50%"/>
|
4772
5592
|
<fo:table-column column-width="50%"/>
|
4773
5593
|
</xsl:when>
|
4774
5594
|
<xsl:otherwise>
|
4775
5595
|
<xsl:choose>
|
5596
|
+
<xsl:when test="xalan:nodeset($colwidths)/autolayout">
|
5597
|
+
<xsl:call-template name="insertTableColumnWidth">
|
5598
|
+
<xsl:with-param name="colwidths" select="$colwidths"/>
|
5599
|
+
</xsl:call-template>
|
5600
|
+
</xsl:when>
|
4776
5601
|
<xsl:when test="$isContainsKeepTogetherTag">
|
4777
5602
|
<xsl:call-template name="insertTableColumnWidth">
|
4778
5603
|
<xsl:with-param name="colwidths" select="$colwidths"/>
|
@@ -4817,13 +5642,19 @@
|
|
4817
5642
|
</xsl:choose>
|
4818
5643
|
</xsl:template><xsl:template name="insertTableColumnWidth">
|
4819
5644
|
<xsl:param name="colwidths"/>
|
5645
|
+
|
4820
5646
|
<xsl:for-each select="xalan:nodeset($colwidths)//column">
|
4821
5647
|
<xsl:choose>
|
4822
5648
|
<xsl:when test=". = 1 or . = 0">
|
4823
5649
|
<fo:table-column column-width="proportional-column-width(2)"/>
|
4824
5650
|
</xsl:when>
|
4825
5651
|
<xsl:otherwise>
|
4826
|
-
<fo:table-column column-width="proportional-column-width({.})"/>
|
5652
|
+
<!-- <fo:table-column column-width="proportional-column-width({.})"/> -->
|
5653
|
+
<xsl:variable name="divider">
|
5654
|
+
<xsl:value-of select="@divider"/>
|
5655
|
+
<xsl:if test="not(@divider)">1</xsl:if>
|
5656
|
+
</xsl:variable>
|
5657
|
+
<fo:table-column column-width="proportional-column-width({round(. div $divider)})"/>
|
4827
5658
|
</xsl:otherwise>
|
4828
5659
|
</xsl:choose>
|
4829
5660
|
</xsl:for-each>
|
@@ -4885,11 +5716,19 @@
|
|
4885
5716
|
</fo:table-cell>
|
4886
5717
|
</fo:table-row>
|
4887
5718
|
</xsl:template><xsl:template match="*[local-name()='dt']" mode="dl">
|
5719
|
+
<xsl:param name="id"/>
|
5720
|
+
<xsl:variable name="row_number" select="count(preceding-sibling::*[local-name()='dt']) + 1"/>
|
4888
5721
|
<tr>
|
4889
5722
|
<td>
|
5723
|
+
<xsl:attribute name="id">
|
5724
|
+
<xsl:value-of select="concat($id,'_',$row_number,'_1')"/>
|
5725
|
+
</xsl:attribute>
|
4890
5726
|
<xsl:apply-templates/>
|
4891
5727
|
</td>
|
4892
5728
|
<td>
|
5729
|
+
<xsl:attribute name="id">
|
5730
|
+
<xsl:value-of select="concat($id,'_',$row_number,'_2')"/>
|
5731
|
+
</xsl:attribute>
|
4893
5732
|
|
4894
5733
|
<xsl:apply-templates select="following-sibling::*[local-name()='dd'][1]">
|
4895
5734
|
<xsl:with-param name="process">true</xsl:with-param>
|
@@ -4900,50 +5739,134 @@
|
|
4900
5739
|
|
4901
5740
|
</xsl:template><xsl:template match="*[local-name()='dt']">
|
4902
5741
|
<xsl:param name="key_iso"/>
|
5742
|
+
<xsl:param name="split_keep-within-line"/>
|
4903
5743
|
|
4904
5744
|
<fo:table-row xsl:use-attribute-sets="dt-row-style">
|
4905
|
-
<
|
5745
|
+
<xsl:call-template name="insert_dt_cell">
|
5746
|
+
<xsl:with-param name="key_iso" select="$key_iso"/>
|
5747
|
+
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
|
5748
|
+
</xsl:call-template>
|
5749
|
+
<xsl:for-each select="following-sibling::*[local-name()='dd'][1]">
|
5750
|
+
<xsl:call-template name="insert_dd_cell">
|
5751
|
+
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
|
5752
|
+
</xsl:call-template>
|
5753
|
+
</xsl:for-each>
|
5754
|
+
</fo:table-row>
|
5755
|
+
</xsl:template><xsl:template name="insert_dt_cell">
|
5756
|
+
<xsl:param name="key_iso"/>
|
5757
|
+
<xsl:param name="split_keep-within-line"/>
|
5758
|
+
<fo:table-cell xsl:use-attribute-sets="dt-cell-style">
|
5759
|
+
|
5760
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
5761
|
+
<!-- border is mandatory, to calculate real width -->
|
5762
|
+
<xsl:attribute name="border">0.1pt solid black</xsl:attribute>
|
5763
|
+
<xsl:attribute name="text-align">left</xsl:attribute>
|
5764
|
+
</xsl:if>
|
5765
|
+
|
5766
|
+
|
5767
|
+
<fo:block xsl:use-attribute-sets="dt-block-style">
|
5768
|
+
<xsl:copy-of select="@id"/>
|
5769
|
+
|
5770
|
+
<xsl:if test="normalize-space($key_iso) = 'true'">
|
5771
|
+
<xsl:attribute name="margin-top">0</xsl:attribute>
|
5772
|
+
</xsl:if>
|
5773
|
+
|
5774
|
+
|
5775
|
+
|
5776
|
+
<xsl:apply-templates>
|
5777
|
+
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
|
5778
|
+
</xsl:apply-templates>
|
5779
|
+
|
5780
|
+
<xsl:if test="$isGenerateTableIF = 'true'"><fo:inline id="{@id}_end">end</fo:inline></xsl:if> <!-- to determine width of text --> <!-- <xsl:value-of select="$hair_space"/> -->
|
5781
|
+
|
5782
|
+
</fo:block>
|
5783
|
+
</fo:table-cell>
|
5784
|
+
</xsl:template><xsl:template name="insert_dd_cell">
|
5785
|
+
<xsl:param name="split_keep-within-line"/>
|
5786
|
+
<fo:table-cell xsl:use-attribute-sets="dd-cell-style">
|
5787
|
+
|
5788
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
5789
|
+
<!-- border is mandatory, to calculate real width -->
|
5790
|
+
<xsl:attribute name="border">0.1pt solid black</xsl:attribute>
|
5791
|
+
</xsl:if>
|
5792
|
+
|
5793
|
+
<fo:block>
|
5794
|
+
|
5795
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
5796
|
+
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
|
5797
|
+
</xsl:if>
|
5798
|
+
|
4906
5799
|
|
4907
|
-
<fo:block xsl:use-attribute-sets="dt-style">
|
4908
|
-
<xsl:copy-of select="@id"/>
|
4909
|
-
|
4910
|
-
<xsl:if test="normalize-space($key_iso) = 'true'">
|
4911
|
-
<xsl:attribute name="margin-top">0</xsl:attribute>
|
4912
|
-
</xsl:if>
|
4913
|
-
|
4914
|
-
|
4915
|
-
|
4916
|
-
<xsl:apply-templates/>
|
4917
|
-
</fo:block>
|
4918
|
-
</fo:table-cell>
|
4919
|
-
<fo:table-cell>
|
4920
|
-
<fo:block>
|
4921
|
-
|
4922
5800
|
|
4923
|
-
|
4924
|
-
|
4925
|
-
|
4926
|
-
|
4927
|
-
|
4928
|
-
|
5801
|
+
<xsl:choose>
|
5802
|
+
<xsl:when test="$isGenerateTableIF = 'true'">
|
5803
|
+
<xsl:apply-templates> <!-- following-sibling::*[local-name()='dd'][1] -->
|
5804
|
+
<xsl:with-param name="process">true</xsl:with-param>
|
5805
|
+
</xsl:apply-templates>
|
5806
|
+
</xsl:when>
|
5807
|
+
<xsl:otherwise>
|
5808
|
+
<xsl:apply-templates select="."> <!-- following-sibling::*[local-name()='dd'][1] -->
|
5809
|
+
<xsl:with-param name="process">true</xsl:with-param>
|
5810
|
+
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
|
5811
|
+
</xsl:apply-templates>
|
5812
|
+
</xsl:otherwise>
|
5813
|
+
|
5814
|
+
</xsl:choose>
|
5815
|
+
|
5816
|
+
<xsl:if test="$isGenerateTableIF = 'true'"><fo:inline id="{@id}_end">end</fo:inline></xsl:if> <!-- to determine width of text --> <!-- <xsl:value-of select="$hair_space"/> -->
|
5817
|
+
|
5818
|
+
</fo:block>
|
5819
|
+
</fo:table-cell>
|
4929
5820
|
</xsl:template><xsl:template match="*[local-name()='dd']" mode="dl"/><xsl:template match="*[local-name()='dd']" mode="dl_process">
|
4930
5821
|
<xsl:apply-templates/>
|
4931
5822
|
</xsl:template><xsl:template match="*[local-name()='dd']">
|
4932
5823
|
<xsl:param name="process">false</xsl:param>
|
5824
|
+
<xsl:param name="split_keep-within-line"/>
|
4933
5825
|
<xsl:if test="$process = 'true'">
|
4934
5826
|
<xsl:apply-templates select="@language"/>
|
4935
|
-
<xsl:apply-templates
|
5827
|
+
<xsl:apply-templates>
|
5828
|
+
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
|
5829
|
+
</xsl:apply-templates>
|
4936
5830
|
</xsl:if>
|
4937
5831
|
</xsl:template><xsl:template match="*[local-name()='dd']/*[local-name()='p']" mode="inline">
|
4938
5832
|
<fo:inline><xsl:text> </xsl:text><xsl:apply-templates/></fo:inline>
|
4939
|
-
</xsl:template><xsl:template match="*[local-name()='
|
5833
|
+
</xsl:template><xsl:template match="*[local-name()='dt']" mode="dl_if">
|
5834
|
+
<xsl:param name="id"/>
|
5835
|
+
<xsl:variable name="row_number" select="count(preceding-sibling::*[local-name()='dt']) + 1"/>
|
5836
|
+
<tr>
|
5837
|
+
<td>
|
5838
|
+
<xsl:copy-of select="node()"/>
|
5839
|
+
</td>
|
5840
|
+
<td>
|
5841
|
+
|
5842
|
+
<xsl:copy-of select="following-sibling::*[local-name()='dd'][1]/node()[not(local-name() = 'dl')]"/>
|
5843
|
+
|
5844
|
+
<!-- get paragraphs from nested 'dl' -->
|
5845
|
+
<xsl:apply-templates select="following-sibling::*[local-name()='dd'][1]/*[local-name() = 'dl']" mode="dl_if_nested"/>
|
5846
|
+
|
5847
|
+
|
5848
|
+
</td>
|
5849
|
+
</tr>
|
5850
|
+
|
5851
|
+
</xsl:template><xsl:template match="*[local-name()='dd']" mode="dl_if"/><xsl:template match="*[local-name()='dl']" mode="dl_if_nested">
|
5852
|
+
<xsl:for-each select="*[local-name() = 'dt']">
|
5853
|
+
<p>
|
5854
|
+
<xsl:copy-of select="node()"/>
|
5855
|
+
<xsl:text> </xsl:text>
|
5856
|
+
<xsl:copy-of select="following-sibling::*[local-name()='dd'][1]/*[local-name() = 'p']/node()"/>
|
5857
|
+
</p>
|
5858
|
+
</xsl:for-each>
|
5859
|
+
</xsl:template><xsl:template match="*[local-name()='dd']" mode="dl_if_nested"/><xsl:template match="*[local-name()='em']">
|
4940
5860
|
<fo:inline font-style="italic">
|
4941
5861
|
<xsl:apply-templates/>
|
4942
5862
|
</fo:inline>
|
4943
5863
|
</xsl:template><xsl:template match="*[local-name()='strong'] | *[local-name()='b']">
|
5864
|
+
<xsl:param name="split_keep-within-line"/>
|
4944
5865
|
<fo:inline font-weight="bold">
|
4945
5866
|
|
4946
|
-
<xsl:apply-templates
|
5867
|
+
<xsl:apply-templates>
|
5868
|
+
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
|
5869
|
+
</xsl:apply-templates>
|
4947
5870
|
</fo:inline>
|
4948
5871
|
</xsl:template><xsl:template match="*[local-name()='padding']">
|
4949
5872
|
<fo:inline padding-right="{@value}"> </fo:inline>
|
@@ -4964,7 +5887,7 @@
|
|
4964
5887
|
|
4965
5888
|
|
4966
5889
|
|
4967
|
-
10
|
5890
|
+
inherit <!-- 10 -->
|
4968
5891
|
|
4969
5892
|
|
4970
5893
|
|
@@ -5144,6 +6067,10 @@
|
|
5144
6067
|
<xsl:param name="text"/>
|
5145
6068
|
<xsl:param name="separator" select="' '"/>
|
5146
6069
|
<xsl:choose>
|
6070
|
+
|
6071
|
+
<xsl:when test="$isGenerateTableIF = 'true' and not(contains($text, $separator))">
|
6072
|
+
<word><xsl:value-of select="normalize-space($text)"/></word>
|
6073
|
+
</xsl:when>
|
5147
6074
|
<xsl:when test="not(contains($text, $separator))">
|
5148
6075
|
<word>
|
5149
6076
|
<xsl:variable name="len_str_tmp" select="string-length(normalize-space($text))"/>
|
@@ -5188,13 +6115,66 @@
|
|
5188
6115
|
</xsl:when>
|
5189
6116
|
<xsl:otherwise>
|
5190
6117
|
<word>
|
5191
|
-
<xsl:
|
6118
|
+
<xsl:variable name="word" select="normalize-space(substring-before($text, $separator))"/>
|
6119
|
+
<xsl:choose>
|
6120
|
+
<xsl:when test="$isGenerateTableIF = 'true'">
|
6121
|
+
<xsl:value-of select="$word"/>
|
6122
|
+
</xsl:when>
|
6123
|
+
<xsl:otherwise>
|
6124
|
+
<xsl:value-of select="string-length($word)"/>
|
6125
|
+
</xsl:otherwise>
|
6126
|
+
</xsl:choose>
|
5192
6127
|
</word>
|
5193
6128
|
<xsl:call-template name="tokenize">
|
5194
6129
|
<xsl:with-param name="text" select="substring-after($text, $separator)"/>
|
5195
6130
|
</xsl:call-template>
|
5196
6131
|
</xsl:otherwise>
|
5197
6132
|
</xsl:choose>
|
6133
|
+
</xsl:template><xsl:template name="tokenize_with_tags">
|
6134
|
+
<xsl:param name="tags"/>
|
6135
|
+
<xsl:param name="text"/>
|
6136
|
+
<xsl:param name="separator" select="' '"/>
|
6137
|
+
<xsl:choose>
|
6138
|
+
|
6139
|
+
<xsl:when test="not(contains($text, $separator))">
|
6140
|
+
<word>
|
6141
|
+
<xsl:call-template name="enclose_text_in_tags">
|
6142
|
+
<xsl:with-param name="text" select="normalize-space($text)"/>
|
6143
|
+
<xsl:with-param name="tags" select="$tags"/>
|
6144
|
+
</xsl:call-template>
|
6145
|
+
</word>
|
6146
|
+
</xsl:when>
|
6147
|
+
<xsl:otherwise>
|
6148
|
+
<word>
|
6149
|
+
<xsl:call-template name="enclose_text_in_tags">
|
6150
|
+
<xsl:with-param name="text" select="normalize-space(substring-before($text, $separator))"/>
|
6151
|
+
<xsl:with-param name="tags" select="$tags"/>
|
6152
|
+
</xsl:call-template>
|
6153
|
+
</word>
|
6154
|
+
<xsl:call-template name="tokenize_with_tags">
|
6155
|
+
<xsl:with-param name="text" select="substring-after($text, $separator)"/>
|
6156
|
+
</xsl:call-template>
|
6157
|
+
</xsl:otherwise>
|
6158
|
+
</xsl:choose>
|
6159
|
+
</xsl:template><xsl:template name="enclose_text_in_tags">
|
6160
|
+
<xsl:param name="text"/>
|
6161
|
+
<xsl:param name="tags"/>
|
6162
|
+
<xsl:param name="num">1</xsl:param> <!-- default (start) value -->
|
6163
|
+
|
6164
|
+
<xsl:variable name="tag_name" select="normalize-space(xalan:nodeset($tags)//tag[$num])"/>
|
6165
|
+
|
6166
|
+
<xsl:choose>
|
6167
|
+
<xsl:when test="$tag_name = ''"><xsl:value-of select="$text"/></xsl:when>
|
6168
|
+
<xsl:otherwise>
|
6169
|
+
<xsl:element name="{$tag_name}">
|
6170
|
+
<xsl:call-template name="enclose_text_in_tags">
|
6171
|
+
<xsl:with-param name="text" select="$text"/>
|
6172
|
+
<xsl:with-param name="tags" select="$tags"/>
|
6173
|
+
<xsl:with-param name="num" select="$num + 1"/>
|
6174
|
+
</xsl:call-template>
|
6175
|
+
</xsl:element>
|
6176
|
+
</xsl:otherwise>
|
6177
|
+
</xsl:choose>
|
5198
6178
|
</xsl:template><xsl:template name="max_length">
|
5199
6179
|
<xsl:param name="words"/>
|
5200
6180
|
<xsl:for-each select="$words//word">
|
@@ -5295,12 +6275,19 @@
|
|
5295
6275
|
</xsl:otherwise>
|
5296
6276
|
</xsl:choose>
|
5297
6277
|
</xsl:template><xsl:template name="getSimpleTable">
|
6278
|
+
<xsl:param name="id"/>
|
6279
|
+
|
5298
6280
|
<xsl:variable name="simple-table">
|
5299
6281
|
|
6282
|
+
<!-- Step 0. replace <br/> to <p>...</p> -->
|
6283
|
+
<xsl:variable name="table_without_br">
|
6284
|
+
<xsl:apply-templates mode="table-without-br"/>
|
6285
|
+
</xsl:variable>
|
6286
|
+
|
5300
6287
|
<!-- Step 1. colspan processing -->
|
5301
6288
|
<xsl:variable name="simple-table-colspan">
|
5302
6289
|
<tbody>
|
5303
|
-
<xsl:apply-templates mode="simple-table-colspan"/>
|
6290
|
+
<xsl:apply-templates select="xalan:nodeset($table_without_br)" mode="simple-table-colspan"/>
|
5304
6291
|
</tbody>
|
5305
6292
|
</xsl:variable>
|
5306
6293
|
|
@@ -5309,10 +6296,67 @@
|
|
5309
6296
|
<xsl:apply-templates select="xalan:nodeset($simple-table-colspan)" mode="simple-table-rowspan"/>
|
5310
6297
|
</xsl:variable>
|
5311
6298
|
|
5312
|
-
|
5313
|
-
|
6299
|
+
<!-- Step 3: add id to each cell -->
|
6300
|
+
<!-- add <word>...</word> for each word, image, math -->
|
6301
|
+
<xsl:variable name="simple-table-id">
|
6302
|
+
<xsl:apply-templates select="xalan:nodeset($simple-table-rowspan)" mode="simple-table-id">
|
6303
|
+
<xsl:with-param name="id" select="$id"/>
|
6304
|
+
</xsl:apply-templates>
|
6305
|
+
</xsl:variable>
|
6306
|
+
|
6307
|
+
<xsl:copy-of select="xalan:nodeset($simple-table-id)"/>
|
6308
|
+
|
5314
6309
|
</xsl:variable>
|
5315
6310
|
<xsl:copy-of select="$simple-table"/>
|
6311
|
+
</xsl:template><xsl:template match="@*|node()" mode="table-without-br">
|
6312
|
+
<xsl:copy>
|
6313
|
+
<xsl:apply-templates select="@*|node()" mode="table-without-br"/>
|
6314
|
+
</xsl:copy>
|
6315
|
+
</xsl:template><xsl:template match="*[local-name()='th' or local-name() = 'td'][not(*[local-name()='br']) and not(*[local-name()='p'])]" mode="table-without-br">
|
6316
|
+
<xsl:copy>
|
6317
|
+
<xsl:copy-of select="@*"/>
|
6318
|
+
<p>
|
6319
|
+
<xsl:copy-of select="node()"/>
|
6320
|
+
</p>
|
6321
|
+
</xsl:copy>
|
6322
|
+
</xsl:template><xsl:template match="*[local-name()='th' or local-name()='td'][*[local-name()='br']]" mode="table-without-br">
|
6323
|
+
<xsl:copy>
|
6324
|
+
<xsl:copy-of select="@*"/>
|
6325
|
+
<xsl:for-each select="*[local-name()='br']">
|
6326
|
+
<xsl:variable name="current_id" select="generate-id()"/>
|
6327
|
+
<p>
|
6328
|
+
<xsl:for-each select="preceding-sibling::node()[following-sibling::*[local-name() = 'br'][1][generate-id() = $current_id]][not(local-name() = 'br')]">
|
6329
|
+
<xsl:copy-of select="."/>
|
6330
|
+
</xsl:for-each>
|
6331
|
+
</p>
|
6332
|
+
<xsl:if test="not(following-sibling::*[local-name() = 'br'])">
|
6333
|
+
<p>
|
6334
|
+
<xsl:for-each select="following-sibling::node()">
|
6335
|
+
<xsl:copy-of select="."/>
|
6336
|
+
</xsl:for-each>
|
6337
|
+
</p>
|
6338
|
+
</xsl:if>
|
6339
|
+
</xsl:for-each>
|
6340
|
+
</xsl:copy>
|
6341
|
+
</xsl:template><xsl:template match="*[local-name()='th' or local-name()='td']/*[local-name() = 'p'][*[local-name()='br']]" mode="table-without-br">
|
6342
|
+
<xsl:for-each select="*[local-name()='br']">
|
6343
|
+
<xsl:variable name="current_id" select="generate-id()"/>
|
6344
|
+
<p>
|
6345
|
+
<xsl:for-each select="preceding-sibling::node()[following-sibling::*[local-name() = 'br'][1][generate-id() = $current_id]][not(local-name() = 'br')]">
|
6346
|
+
<xsl:copy-of select="."/>
|
6347
|
+
</xsl:for-each>
|
6348
|
+
</p>
|
6349
|
+
<xsl:if test="not(following-sibling::*[local-name() = 'br'])">
|
6350
|
+
<p>
|
6351
|
+
<xsl:for-each select="following-sibling::node()">
|
6352
|
+
<xsl:copy-of select="."/>
|
6353
|
+
</xsl:for-each>
|
6354
|
+
</p>
|
6355
|
+
</xsl:if>
|
6356
|
+
</xsl:for-each>
|
6357
|
+
</xsl:template><xsl:template match="text()[not(ancestor::*[local-name() = 'sourcecode'])]" mode="table-without-br">
|
6358
|
+
<xsl:variable name="text" select="translate(.,'	 ','')"/>
|
6359
|
+
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($text),' {2,}',' ')"/>
|
5316
6360
|
</xsl:template><xsl:template match="*[local-name()='thead'] | *[local-name()='tbody']" mode="simple-table-colspan">
|
5317
6361
|
<xsl:apply-templates mode="simple-table-colspan"/>
|
5318
6362
|
</xsl:template><xsl:template match="*[local-name()='fn']" mode="simple-table-colspan"/><xsl:template match="*[local-name()='th'] | *[local-name()='td']" mode="simple-table-colspan">
|
@@ -5402,6 +6446,126 @@
|
|
5402
6446
|
<xsl:apply-templates select="following-sibling::tr[1]" mode="simple-table-rowspan">
|
5403
6447
|
<xsl:with-param name="previousRow" select="$newRow"/>
|
5404
6448
|
</xsl:apply-templates>
|
6449
|
+
</xsl:template><xsl:template match="/" mode="simple-table-id">
|
6450
|
+
<xsl:param name="id"/>
|
6451
|
+
<xsl:variable name="id_prefixed" select="concat('table_if_',$id)"/> <!-- table id prefixed by 'table_if_' to simple search in IF -->
|
6452
|
+
<xsl:apply-templates select="@*|node()" mode="simple-table-id">
|
6453
|
+
<xsl:with-param name="id" select="$id_prefixed"/>
|
6454
|
+
</xsl:apply-templates>
|
6455
|
+
</xsl:template><xsl:template match="@*|node()" mode="simple-table-id">
|
6456
|
+
<xsl:param name="id"/>
|
6457
|
+
<xsl:copy>
|
6458
|
+
<xsl:apply-templates select="@*|node()" mode="simple-table-id">
|
6459
|
+
<xsl:with-param name="id" select="$id"/>
|
6460
|
+
</xsl:apply-templates>
|
6461
|
+
</xsl:copy>
|
6462
|
+
</xsl:template><xsl:template match="*[local-name()='tbody']" mode="simple-table-id">
|
6463
|
+
<xsl:param name="id"/>
|
6464
|
+
<xsl:copy>
|
6465
|
+
<xsl:copy-of select="@*"/>
|
6466
|
+
<xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
|
6467
|
+
<xsl:apply-templates select="node()" mode="simple-table-id">
|
6468
|
+
<xsl:with-param name="id" select="$id"/>
|
6469
|
+
</xsl:apply-templates>
|
6470
|
+
</xsl:copy>
|
6471
|
+
</xsl:template><xsl:template match="*[local-name()='th' or local-name()='td']" mode="simple-table-id">
|
6472
|
+
<xsl:param name="id"/>
|
6473
|
+
<xsl:copy>
|
6474
|
+
<xsl:copy-of select="@*"/>
|
6475
|
+
<xsl:variable name="row_number" select="count(../preceding-sibling::*) + 1"/>
|
6476
|
+
<xsl:variable name="col_number" select="count(preceding-sibling::*) + 1"/>
|
6477
|
+
<xsl:attribute name="id">
|
6478
|
+
<xsl:value-of select="concat($id,'_',$row_number,'_',$col_number)"/>
|
6479
|
+
</xsl:attribute>
|
6480
|
+
|
6481
|
+
<xsl:for-each select="*[local-name() = 'p']">
|
6482
|
+
<xsl:copy>
|
6483
|
+
<xsl:copy-of select="@*"/>
|
6484
|
+
<xsl:variable name="p_num" select="count(preceding-sibling::*[local-name() = 'p']) + 1"/>
|
6485
|
+
<xsl:attribute name="id">
|
6486
|
+
<xsl:value-of select="concat($id,'_',$row_number,'_',$col_number,'_p_',$p_num)"/>
|
6487
|
+
</xsl:attribute>
|
6488
|
+
|
6489
|
+
<xsl:copy-of select="node()"/>
|
6490
|
+
</xsl:copy>
|
6491
|
+
</xsl:for-each>
|
6492
|
+
|
6493
|
+
|
6494
|
+
<xsl:if test="$isGenerateTableIF = 'true'"> <!-- split each paragraph to words, image, math -->
|
6495
|
+
|
6496
|
+
<xsl:variable name="td_text">
|
6497
|
+
<xsl:apply-templates select="." mode="td_text_with_formatting"/>
|
6498
|
+
</xsl:variable>
|
6499
|
+
|
6500
|
+
<!-- td_text='<xsl:copy-of select="$td_text"/>' -->
|
6501
|
+
|
6502
|
+
<xsl:variable name="words">
|
6503
|
+
<xsl:for-each select=".//*[local-name() = 'image' or local-name() = 'stem']">
|
6504
|
+
<word>
|
6505
|
+
<xsl:copy-of select="."/>
|
6506
|
+
</word>
|
6507
|
+
</xsl:for-each>
|
6508
|
+
|
6509
|
+
<xsl:for-each select="xalan:nodeset($td_text)//*[local-name() = 'word'][normalize-space() != '']">
|
6510
|
+
<xsl:copy-of select="."/>
|
6511
|
+
</xsl:for-each>
|
6512
|
+
|
6513
|
+
</xsl:variable>
|
6514
|
+
|
6515
|
+
<xsl:for-each select="xalan:nodeset($words)/word">
|
6516
|
+
<xsl:variable name="num" select="count(preceding-sibling::word) + 1"/>
|
6517
|
+
<xsl:copy>
|
6518
|
+
<xsl:attribute name="id">
|
6519
|
+
<xsl:value-of select="concat($id,'_',$row_number,'_',$col_number,'_word_',$num)"/>
|
6520
|
+
</xsl:attribute>
|
6521
|
+
<xsl:copy-of select="node()"/>
|
6522
|
+
</xsl:copy>
|
6523
|
+
</xsl:for-each>
|
6524
|
+
</xsl:if>
|
6525
|
+
</xsl:copy>
|
6526
|
+
|
6527
|
+
</xsl:template><xsl:template match="@*|node()" mode="td_text_with_formatting">
|
6528
|
+
<xsl:copy>
|
6529
|
+
<xsl:apply-templates select="@*|node()" mode="td_text_with_formatting"/>
|
6530
|
+
</xsl:copy>
|
6531
|
+
</xsl:template><xsl:template match="*[local-name() = 'stem' or local-name() = 'image']" mode="td_text_with_formatting"/><xsl:template match="*[local-name() = 'keep-together_within-line']/text()" mode="td_text_with_formatting">
|
6532
|
+
<xsl:variable name="formatting_tags">
|
6533
|
+
<xsl:call-template name="getFormattingTags"/>
|
6534
|
+
</xsl:variable>
|
6535
|
+
<word>
|
6536
|
+
<xsl:call-template name="enclose_text_in_tags">
|
6537
|
+
<xsl:with-param name="text" select="normalize-space(.)"/>
|
6538
|
+
<xsl:with-param name="tags" select="$formatting_tags"/>
|
6539
|
+
</xsl:call-template>
|
6540
|
+
</word>
|
6541
|
+
</xsl:template><xsl:template match="*[local-name() != 'keep-together_within-line']/text()" mode="td_text_with_formatting">
|
6542
|
+
|
6543
|
+
<xsl:variable name="td_text" select="."/>
|
6544
|
+
|
6545
|
+
<xsl:variable name="string_with_added_zerospaces">
|
6546
|
+
<xsl:call-template name="add-zero-spaces-java">
|
6547
|
+
<xsl:with-param name="text" select="$td_text"/>
|
6548
|
+
</xsl:call-template>
|
6549
|
+
</xsl:variable>
|
6550
|
+
|
6551
|
+
<xsl:variable name="formatting_tags">
|
6552
|
+
<xsl:call-template name="getFormattingTags"/>
|
6553
|
+
</xsl:variable>
|
6554
|
+
|
6555
|
+
<!-- <word>text</word> -->
|
6556
|
+
<xsl:call-template name="tokenize_with_tags">
|
6557
|
+
<xsl:with-param name="tags" select="$formatting_tags"/>
|
6558
|
+
<xsl:with-param name="text" select="normalize-space(translate($string_with_added_zerospaces, '', ' '))"/> <!-- replace zero-width-space and soft-hyphen to space -->
|
6559
|
+
</xsl:call-template>
|
6560
|
+
</xsl:template><xsl:template name="getFormattingTags">
|
6561
|
+
<tags>
|
6562
|
+
<xsl:if test="ancestor::*[local-name() = 'strong']"><tag>strong</tag></xsl:if>
|
6563
|
+
<xsl:if test="ancestor::*[local-name() = 'em']"><tag>em</tag></xsl:if>
|
6564
|
+
<xsl:if test="ancestor::*[local-name() = 'sub']"><tag>sub</tag></xsl:if>
|
6565
|
+
<xsl:if test="ancestor::*[local-name() = 'sup']"><tag>sup</tag></xsl:if>
|
6566
|
+
<xsl:if test="ancestor::*[local-name() = 'tt']"><tag>tt</tag></xsl:if>
|
6567
|
+
<xsl:if test="ancestor::*[local-name() = 'keep-together_within-line']"><tag>keep-together_within-line</tag></xsl:if>
|
6568
|
+
</tags>
|
5405
6569
|
</xsl:template><xsl:template name="getLang">
|
5406
6570
|
<xsl:variable name="language_current" select="normalize-space(//*[local-name()='bibdata']//*[local-name()='language'][@current = 'true'])"/>
|
5407
6571
|
<xsl:variable name="language">
|
@@ -5602,6 +6766,11 @@
|
|
5602
6766
|
</xsl:variable>
|
5603
6767
|
<fo:inline xsl:use-attribute-sets="link-style">
|
5604
6768
|
|
6769
|
+
<xsl:if test="starts-with(normalize-space(@target), 'mailto:')">
|
6770
|
+
<xsl:attribute name="keep-together.within-line">always</xsl:attribute>
|
6771
|
+
</xsl:if>
|
6772
|
+
|
6773
|
+
|
5605
6774
|
|
5606
6775
|
|
5607
6776
|
|
@@ -5864,7 +7033,19 @@
|
|
5864
7033
|
<xsl:value-of select="$suffix"/>
|
5865
7034
|
</xsl:if>
|
5866
7035
|
</xsl:template><xsl:template match="*[local-name() = 'termnote']/*[local-name() = 'p']">
|
5867
|
-
<
|
7036
|
+
<xsl:variable name="num"><xsl:number/></xsl:variable>
|
7037
|
+
<xsl:choose>
|
7038
|
+
<xsl:when test="$num = 1"> <!-- first paragraph renders in the same line as titlenote name -->
|
7039
|
+
<fo:inline xsl:use-attribute-sets="termnote-p-style">
|
7040
|
+
<xsl:apply-templates/>
|
7041
|
+
</fo:inline>
|
7042
|
+
</xsl:when>
|
7043
|
+
<xsl:otherwise>
|
7044
|
+
<fo:block xsl:use-attribute-sets="termnote-p-style">
|
7045
|
+
<xsl:apply-templates/>
|
7046
|
+
</fo:block>
|
7047
|
+
</xsl:otherwise>
|
7048
|
+
</xsl:choose>
|
5868
7049
|
</xsl:template><xsl:template match="*[local-name() = 'terms']">
|
5869
7050
|
<!-- <xsl:message>'terms' <xsl:number/> processing...</xsl:message> -->
|
5870
7051
|
<fo:block id="{@id}">
|
@@ -6683,7 +7864,7 @@
|
|
6683
7864
|
</xsl:choose>
|
6684
7865
|
</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() = 'xref']" mode="contents">
|
6685
7866
|
<xsl:value-of select="."/>
|
6686
|
-
</xsl:template><xsl:template match="*[local-name() = 'tab']" mode="contents_item">
|
7867
|
+
</xsl:template><xsl:template match="*[local-name() = 'review']" mode="contents_item"/><xsl:template match="*[local-name() = 'tab']" mode="contents_item">
|
6687
7868
|
<xsl:text> </xsl:text>
|
6688
7869
|
</xsl:template><xsl:template match="*[local-name() = 'strong']" mode="contents_item">
|
6689
7870
|
<xsl:copy>
|
@@ -6754,7 +7935,7 @@
|
|
6754
7935
|
|
6755
7936
|
|
6756
7937
|
|
6757
|
-
9
|
7938
|
+
inherit<!-- 9 -->
|
6758
7939
|
|
6759
7940
|
|
6760
7941
|
|
@@ -6838,7 +8019,7 @@
|
|
6838
8019
|
<xsl:for-each select="xalan:nodeset($text_step4)/node()">
|
6839
8020
|
<xsl:choose>
|
6840
8021
|
<xsl:when test="local-name() = 'interspers'"> <!-- word with length more than 30 will be interspersed with zero-width space -->
|
6841
|
-
<xsl:call-template name="interspers">
|
8022
|
+
<xsl:call-template name="interspers-java">
|
6842
8023
|
<xsl:with-param name="str" select="."/>
|
6843
8024
|
</xsl:call-template>
|
6844
8025
|
</xsl:when>
|
@@ -6888,6 +8069,10 @@
|
|
6888
8069
|
<xsl:with-param name="char" select="$char"/>
|
6889
8070
|
</xsl:call-template>
|
6890
8071
|
</xsl:if>
|
8072
|
+
</xsl:template><xsl:template name="interspers-java">
|
8073
|
+
<xsl:param name="str"/>
|
8074
|
+
<xsl:param name="char" select="$zero_width_space"/>
|
8075
|
+
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($str),'([^ -.:=_—])',concat('$1', $char))"/> <!-- insert $char after each char excep space, - . : = _ etc. -->
|
6891
8076
|
</xsl:template><xsl:template match="*" mode="syntax_highlight">
|
6892
8077
|
<xsl:apply-templates mode="syntax_highlight"/>
|
6893
8078
|
</xsl:template><xsl:variable name="syntax_highlight_styles_">
|
@@ -7100,7 +8285,9 @@
|
|
7100
8285
|
<!-- <xsl:attribute name="border">0.5pt solid black</xsl:attribute> -->
|
7101
8286
|
</xsl:if>
|
7102
8287
|
<xsl:variable name="simple-table">
|
7103
|
-
<xsl:call-template name="getSimpleTable"
|
8288
|
+
<xsl:call-template name="getSimpleTable">
|
8289
|
+
<xsl:with-param name="id" select="@id"/>
|
8290
|
+
</xsl:call-template>
|
7104
8291
|
</xsl:variable>
|
7105
8292
|
<xsl:variable name="cols-count" select="count(xalan:nodeset($simple-table)//tr[1]/td)"/>
|
7106
8293
|
<xsl:if test="$cols-count = 2 and not(ancestor::*[local-name()='table'])">
|
@@ -7520,6 +8707,7 @@
|
|
7520
8707
|
|
7521
8708
|
|
7522
8709
|
|
8710
|
+
|
7523
8711
|
<xsl:choose>
|
7524
8712
|
<xsl:when test="$depth = 2">3</xsl:when>
|
7525
8713
|
<xsl:otherwise>4</xsl:otherwise>
|
@@ -7792,7 +8980,7 @@
|
|
7792
8980
|
<xsl:variable name="format">
|
7793
8981
|
<xsl:choose>
|
7794
8982
|
<xsl:when test="$type = 'arabic'">
|
7795
|
-
1
|
8983
|
+
1)
|
7796
8984
|
</xsl:when>
|
7797
8985
|
<xsl:when test="$type = 'alphabet'">
|
7798
8986
|
a)
|
@@ -7839,6 +9027,11 @@
|
|
7839
9027
|
</xsl:otherwise>
|
7840
9028
|
</xsl:choose>
|
7841
9029
|
</xsl:template><xsl:template match="*[local-name()='ul'] | *[local-name()='ol']" mode="list" name="list">
|
9030
|
+
|
9031
|
+
<xsl:apply-templates select="*[local-name() = 'name']">
|
9032
|
+
<xsl:with-param name="process">true</xsl:with-param>
|
9033
|
+
</xsl:apply-templates>
|
9034
|
+
|
7842
9035
|
<fo:list-block xsl:use-attribute-sets="list-style">
|
7843
9036
|
|
7844
9037
|
|
@@ -7849,12 +9042,23 @@
|
|
7849
9042
|
|
7850
9043
|
|
7851
9044
|
|
9045
|
+
<xsl:if test="*[local-name() = 'name']">
|
9046
|
+
<xsl:attribute name="margin-top">0pt</xsl:attribute>
|
9047
|
+
</xsl:if>
|
9048
|
+
|
7852
9049
|
<xsl:apply-templates select="node()[not(local-name() = 'note')]"/>
|
7853
9050
|
</fo:list-block>
|
7854
9051
|
<!-- <xsl:for-each select="./iho:note">
|
7855
9052
|
<xsl:call-template name="note"/>
|
7856
9053
|
</xsl:for-each> -->
|
7857
9054
|
<xsl:apply-templates select="./*[local-name() = 'note']"/>
|
9055
|
+
</xsl:template><xsl:template match="*[local-name() = 'ol' or local-name() = 'ul']/*[local-name() = 'name']">
|
9056
|
+
<xsl:param name="process">false</xsl:param>
|
9057
|
+
<xsl:if test="$process = 'true'">
|
9058
|
+
<fo:block xsl:use-attribute-sets="list-name-style">
|
9059
|
+
<xsl:apply-templates/>
|
9060
|
+
</fo:block>
|
9061
|
+
</xsl:if>
|
7858
9062
|
</xsl:template><xsl:template match="*[local-name()='li']">
|
7859
9063
|
<fo:list-item xsl:use-attribute-sets="list-item-style">
|
7860
9064
|
<xsl:copy-of select="@id"/>
|
@@ -8054,7 +9258,7 @@
|
|
8054
9258
|
<!-- <fo:inline id="{@id}" font-size="1pt"/> -->
|
8055
9259
|
<fo:inline id="{@id}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:inline>
|
8056
9260
|
<!-- we need to add zero-width space, otherwise this fo:inline is missing in IF xml -->
|
8057
|
-
<xsl:if test="not(following-sibling::node()[normalize-space() != ''])"> </xsl:if>
|
9261
|
+
<xsl:if test="not(following-sibling::node()[normalize-space() != ''])"><fo:inline font-size="1pt"> </fo:inline></xsl:if>
|
8058
9262
|
</xsl:template><xsl:template match="*[local-name() = 'errata']">
|
8059
9263
|
<!-- <row>
|
8060
9264
|
<date>05-07-2013</date>
|
@@ -8125,7 +9329,7 @@
|
|
8125
9329
|
|
8126
9330
|
</xsl:template><xsl:template match="*[local-name() = 'references'][not(@normative='true')]/*[local-name() = 'bibitem']" priority="2">
|
8127
9331
|
|
8128
|
-
<!-- $namespace = 'csd' or $namespace = 'gb' or $namespace = 'iec' or $namespace = 'iso' or $namespace = 'jcgm' or $namespace = 'm3d' or
|
9332
|
+
<!-- $namespace = 'csd' or $namespace = 'gb' or $namespace = 'iec' or $namespace = 'ieee' or $namespace = 'iso' or $namespace = 'jcgm' or $namespace = 'm3d' or
|
8129
9333
|
$namespace = 'mpfd' or $namespace = 'ogc' or $namespace = 'ogc-white-paper' -->
|
8130
9334
|
<!-- Example: [1] ISO 9:1995, Information and documentation – Transliteration of Cyrillic characters into Latin characters – Slavic and non-Slavic languages -->
|
8131
9335
|
<fo:list-block id="{@id}" xsl:use-attribute-sets="bibitem-non-normative-list-style">
|
@@ -8136,7 +9340,9 @@
|
|
8136
9340
|
|
8137
9341
|
<xsl:value-of select="*[local-name()='docidentifier'][@type = 'metanorma-ordinal']"/>
|
8138
9342
|
<xsl:if test="not(*[local-name()='docidentifier'][@type = 'metanorma-ordinal'])">
|
8139
|
-
|
9343
|
+
|
9344
|
+
<xsl:number format="[1]" count="*[local-name()='bibitem'][not(@hidden = 'true')]"/>
|
9345
|
+
|
8140
9346
|
</xsl:if>
|
8141
9347
|
|
8142
9348
|
</fo:inline>
|
@@ -8158,26 +9364,23 @@
|
|
8158
9364
|
<xsl:if test=".//*[local-name() = 'fn']">
|
8159
9365
|
<xsl:attribute name="line-height-shift-adjustment">disregard-shifts</xsl:attribute>
|
8160
9366
|
</xsl:if>
|
9367
|
+
|
9368
|
+
<!-- display document identifier, not number [1] -->
|
8161
9369
|
<xsl:variable name="docidentifier">
|
8162
9370
|
<xsl:choose>
|
8163
9371
|
<xsl:when test="*[local-name() = 'docidentifier']/@type = 'metanorma'"/>
|
8164
9372
|
<xsl:otherwise><xsl:value-of select="*[local-name() = 'docidentifier'][not(@type = 'metanorma-ordinal')]"/></xsl:otherwise>
|
8165
9373
|
</xsl:choose>
|
8166
9374
|
</xsl:variable>
|
8167
|
-
<
|
9375
|
+
<xsl:value-of select="$docidentifier"/>
|
9376
|
+
|
8168
9377
|
<xsl:apply-templates select="*[local-name() = 'note']"/>
|
8169
|
-
|
8170
|
-
<xsl:
|
8171
|
-
<xsl:
|
8172
|
-
|
8173
|
-
|
8174
|
-
|
8175
|
-
<xsl:apply-templates select="*[local-name() = 'title'][@type = 'main' and @language = 'en']"/>
|
8176
|
-
</xsl:when>
|
8177
|
-
<xsl:otherwise>
|
8178
|
-
<xsl:apply-templates select="*[local-name() = 'title']"/>
|
8179
|
-
</xsl:otherwise>
|
8180
|
-
</xsl:choose>
|
9378
|
+
|
9379
|
+
<xsl:if test="normalize-space($docidentifier) != '' and *[local-name() = 'formattedref']">
|
9380
|
+
<xsl:text>,</xsl:text>
|
9381
|
+
<xsl:text> </xsl:text>
|
9382
|
+
</xsl:if>
|
9383
|
+
|
8181
9384
|
<xsl:apply-templates select="*[local-name() = 'formattedref']"/>
|
8182
9385
|
<!-- end bibitem processing -->
|
8183
9386
|
|
@@ -8484,36 +9687,60 @@
|
|
8484
9687
|
|
8485
9688
|
|
8486
9689
|
|
9690
|
+
<xsl:if test="@type = 'editorial'">
|
9691
|
+
<xsl:attribute name="color">green</xsl:attribute>
|
9692
|
+
<xsl:attribute name="font-weight">normal</xsl:attribute>
|
9693
|
+
|
9694
|
+
<!-- <xsl:variable name="note-style">
|
9695
|
+
<style xsl:use-attribute-sets="note-style"></style>
|
9696
|
+
</xsl:variable>
|
9697
|
+
<xsl:for-each select="xalan:nodeset($note-style)//style/@*">
|
9698
|
+
<xsl:attribute name="{local-name()}"><xsl:value-of select="."/></xsl:attribute>
|
9699
|
+
</xsl:for-each> -->
|
9700
|
+
</xsl:if>
|
9701
|
+
|
9702
|
+
|
8487
9703
|
|
8488
9704
|
|
9705
|
+
<xsl:if test="@type != 'editorial'">
|
9706
|
+
<xsl:call-template name="displayAdmonitionName">
|
9707
|
+
<xsl:with-param name="sep"> — </xsl:with-param>
|
9708
|
+
</xsl:call-template>
|
9709
|
+
</xsl:if>
|
9710
|
+
|
8489
9711
|
|
8490
|
-
<xsl:call-template name="displayAdmonitionName"/>
|
8491
|
-
<xsl:text> — </xsl:text>
|
8492
9712
|
|
8493
9713
|
|
8494
9714
|
<xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
|
8495
9715
|
</fo:block>
|
8496
9716
|
|
8497
9717
|
</xsl:template><xsl:template name="displayAdmonitionName">
|
8498
|
-
|
9718
|
+
<xsl:param name="sep"/> <!-- Example: ' - ' -->
|
9719
|
+
<!-- <xsl:choose>
|
9720
|
+
<xsl:when test="$namespace = 'nist-cswp' or $namespace = 'nist-sp'">
|
9721
|
+
<xsl:choose>
|
9722
|
+
<xsl:when test="@type='important'"><xsl:apply-templates select="@type"/></xsl:when>
|
9723
|
+
<xsl:otherwise>
|
9724
|
+
<xsl:apply-templates select="*[local-name() = 'name']"/>
|
9725
|
+
</xsl:otherwise>
|
9726
|
+
</xsl:choose>
|
9727
|
+
</xsl:when>
|
9728
|
+
<xsl:otherwise>
|
8499
9729
|
<xsl:apply-templates select="*[local-name() = 'name']"/>
|
8500
9730
|
<xsl:if test="not(*[local-name() = 'name'])">
|
8501
9731
|
<xsl:apply-templates select="@type"/>
|
8502
9732
|
</xsl:if>
|
8503
|
-
|
8504
|
-
|
8505
|
-
<xsl:
|
8506
|
-
|
8507
|
-
<xsl:variable name="admonition_type_">
|
8508
|
-
<xsl:call-template name="getLocalizedString">
|
8509
|
-
<xsl:with-param name="key">admonition.<xsl:value-of select="."/></xsl:with-param>
|
8510
|
-
</xsl:call-template>
|
9733
|
+
</xsl:otherwise>
|
9734
|
+
</xsl:choose> -->
|
9735
|
+
<xsl:variable name="name">
|
9736
|
+
<xsl:apply-templates select="*[local-name() = 'name']"/>
|
8511
9737
|
</xsl:variable>
|
8512
|
-
<xsl:
|
8513
|
-
<xsl:
|
8514
|
-
|
8515
|
-
<xsl:value-of select="java:toUpperCase(java:java.lang.String.new(.))"/>
|
9738
|
+
<xsl:copy-of select="$name"/>
|
9739
|
+
<xsl:if test="normalize-space($name) != ''">
|
9740
|
+
<xsl:value-of select="$sep"/>
|
8516
9741
|
</xsl:if>
|
9742
|
+
</xsl:template><xsl:template match="*[local-name() = 'admonition']/*[local-name() = 'name']">
|
9743
|
+
<xsl:apply-templates/>
|
8517
9744
|
</xsl:template><xsl:template match="*[local-name() = 'admonition']/*[local-name() = 'p']">
|
8518
9745
|
<!-- processing for admonition/p found in the template for 'p' -->
|
8519
9746
|
<xsl:call-template name="paragraph"/>
|
@@ -8640,6 +9867,26 @@
|
|
8640
9867
|
</xsl:if>
|
8641
9868
|
</xsl:template>
|
8642
9869
|
|
9870
|
+
<!-- add id for table without id (for autolayout algorithm) -->
|
9871
|
+
<!-- <xsl:template match="*[local-name() = 'table'][not(@id)]" mode="update_xml_step2">
|
9872
|
+
<xsl:copy>
|
9873
|
+
<xsl:apply-templates select="@*" mode="update_xml_step2"/>
|
9874
|
+
<xsl:attribute name="id">_abc<xsl:value-of select="generate-id()"/></xsl:attribute>
|
9875
|
+
|
9876
|
+
<xsl:apply-templates select="node()" mode="update_xml_step2"/>
|
9877
|
+
</xsl:copy>
|
9878
|
+
</xsl:template> -->
|
9879
|
+
|
9880
|
+
<!-- add @reference for fn -->
|
9881
|
+
<xsl:template match="*[local-name() = 'fn'][not(@reference)]" mode="update_xml_step2">
|
9882
|
+
<xsl:copy>
|
9883
|
+
<xsl:apply-templates select="@*" mode="update_xml_step2"/>
|
9884
|
+
<xsl:attribute name="reference"><xsl:value-of select="generate-id(.)"/></xsl:attribute>
|
9885
|
+
<xsl:apply-templates select="node()" mode="update_xml_step2"/>
|
9886
|
+
</xsl:copy>
|
9887
|
+
</xsl:template>
|
9888
|
+
|
9889
|
+
|
8643
9890
|
<!-- add @reference for bibitem/note, similar to fn/reference -->
|
8644
9891
|
<xsl:template match="*[local-name() = 'bibitem']/*[local-name() = 'note']" mode="update_xml_step2">
|
8645
9892
|
<xsl:copy>
|
@@ -8654,6 +9901,23 @@
|
|
8654
9901
|
</xsl:template>
|
8655
9902
|
|
8656
9903
|
<!-- END STEP2: add 'fn' after 'eref' and 'origin', if referenced to bibitem with 'note' = Withdrawn.' or 'Cancelled and replaced...' -->
|
9904
|
+
|
9905
|
+
|
9906
|
+
<!-- enclose sequence of 'char x' + 'combining char y' to <lang_none>xy</lang_none> -->
|
9907
|
+
<xsl:variable name="regex_combining_chars">(.[̀-ͯ])</xsl:variable>
|
9908
|
+
<xsl:variable name="element_name_lang_none">lang_none</xsl:variable>
|
9909
|
+
<xsl:variable name="tag_element_name_lang_none_open">###<xsl:value-of select="$element_name_lang_none"/>###</xsl:variable>
|
9910
|
+
<xsl:variable name="tag_element_name_lang_none_close">###/<xsl:value-of select="$element_name_lang_none"/>###</xsl:variable>
|
9911
|
+
|
9912
|
+
<xsl:template match="text()" mode="update_xml_step2">
|
9913
|
+
<xsl:variable name="text_" select="java:replaceAll(java:java.lang.String.new(.), $regex_combining_chars, concat($tag_element_name_lang_none_open,'$1',$tag_element_name_lang_none_close))"/>
|
9914
|
+
<xsl:call-template name="replace_text_tags">
|
9915
|
+
<xsl:with-param name="tag_open" select="$tag_element_name_lang_none_open"/>
|
9916
|
+
<xsl:with-param name="tag_close" select="$tag_element_name_lang_none_close"/>
|
9917
|
+
<xsl:with-param name="text" select="$text_"/>
|
9918
|
+
</xsl:call-template>
|
9919
|
+
</xsl:template>
|
9920
|
+
|
8657
9921
|
<xsl:template match="@*|node()" mode="update_xml_enclose_keep-together_within-line">
|
8658
9922
|
<xsl:copy>
|
8659
9923
|
<xsl:apply-templates select="@*|node()" mode="update_xml_enclose_keep-together_within-line"/>
|
@@ -8749,6 +10013,8 @@
|
|
8749
10013
|
</xsl:when>
|
8750
10014
|
<xsl:otherwise><xsl:value-of select="$text"/></xsl:otherwise>
|
8751
10015
|
</xsl:choose>
|
10016
|
+
</xsl:template><xsl:template match="*[local-name() = 'lang_none']">
|
10017
|
+
<fo:inline xml:lang="none"><xsl:value-of select="."/></fo:inline>
|
8752
10018
|
</xsl:template><xsl:template name="printEdition">
|
8753
10019
|
<xsl:variable name="edition_i18n" select="normalize-space((//*[contains(local-name(), '-standard')])[1]/*[local-name() = 'bibdata']/*[local-name() = 'edition'][normalize-space(@language) != ''])"/>
|
8754
10020
|
<xsl:text> </xsl:text>
|
@@ -8855,6 +10121,27 @@
|
|
8855
10121
|
</xsl:when>
|
8856
10122
|
<xsl:otherwise><xsl:value-of select="$monthStr_"/></xsl:otherwise>
|
8857
10123
|
</xsl:choose>
|
10124
|
+
</xsl:template><xsl:template name="getMonthLocalizedByNum">
|
10125
|
+
<xsl:param name="num"/>
|
10126
|
+
<xsl:variable name="monthStr">
|
10127
|
+
<xsl:choose>
|
10128
|
+
<xsl:when test="$num = '01'">january</xsl:when>
|
10129
|
+
<xsl:when test="$num = '02'">february</xsl:when>
|
10130
|
+
<xsl:when test="$num = '03'">march</xsl:when>
|
10131
|
+
<xsl:when test="$num = '04'">april</xsl:when>
|
10132
|
+
<xsl:when test="$num = '05'">may</xsl:when>
|
10133
|
+
<xsl:when test="$num = '06'">june</xsl:when>
|
10134
|
+
<xsl:when test="$num = '07'">july</xsl:when>
|
10135
|
+
<xsl:when test="$num = '08'">august</xsl:when>
|
10136
|
+
<xsl:when test="$num = '09'">september</xsl:when>
|
10137
|
+
<xsl:when test="$num = '10'">october</xsl:when>
|
10138
|
+
<xsl:when test="$num = '11'">november</xsl:when>
|
10139
|
+
<xsl:when test="$num = '12'">december</xsl:when>
|
10140
|
+
</xsl:choose>
|
10141
|
+
</xsl:variable>
|
10142
|
+
<xsl:call-template name="getLocalizedString">
|
10143
|
+
<xsl:with-param name="key">month_<xsl:value-of select="$monthStr"/></xsl:with-param>
|
10144
|
+
</xsl:call-template>
|
8858
10145
|
</xsl:template><xsl:template name="insertKeywords">
|
8859
10146
|
<xsl:param name="sorting" select="'true'"/>
|
8860
10147
|
<xsl:param name="charAtEnd" select="'.'"/>
|
@@ -9056,6 +10343,7 @@
|
|
9056
10343
|
|
9057
10344
|
|
9058
10345
|
|
10346
|
+
|
9059
10347
|
|
9060
10348
|
|
9061
10349
|
|
@@ -9461,4 +10749,40 @@
|
|
9461
10749
|
<xsl:value-of select="$value"/>
|
9462
10750
|
</xsl:otherwise>
|
9463
10751
|
</xsl:choose>
|
10752
|
+
</xsl:template><xsl:template match="*" mode="print_as_xml">
|
10753
|
+
<xsl:param name="level">0</xsl:param>
|
10754
|
+
|
10755
|
+
<fo:block margin-left="{2*$level}mm">
|
10756
|
+
<xsl:text>
|
10757
|
+
<</xsl:text>
|
10758
|
+
<xsl:value-of select="local-name()"/>
|
10759
|
+
<xsl:for-each select="@*">
|
10760
|
+
<xsl:text> </xsl:text>
|
10761
|
+
<xsl:value-of select="local-name()"/>
|
10762
|
+
<xsl:text>="</xsl:text>
|
10763
|
+
<xsl:value-of select="."/>
|
10764
|
+
<xsl:text>"</xsl:text>
|
10765
|
+
</xsl:for-each>
|
10766
|
+
<xsl:text>></xsl:text>
|
10767
|
+
|
10768
|
+
<xsl:if test="not(*)">
|
10769
|
+
<fo:inline font-weight="bold"><xsl:value-of select="."/></fo:inline>
|
10770
|
+
<xsl:text></</xsl:text>
|
10771
|
+
<xsl:value-of select="local-name()"/>
|
10772
|
+
<xsl:text>></xsl:text>
|
10773
|
+
</xsl:if>
|
10774
|
+
</fo:block>
|
10775
|
+
|
10776
|
+
<xsl:if test="*">
|
10777
|
+
<fo:block>
|
10778
|
+
<xsl:apply-templates mode="print_as_xml">
|
10779
|
+
<xsl:with-param name="level" select="$level + 1"/>
|
10780
|
+
</xsl:apply-templates>
|
10781
|
+
</fo:block>
|
10782
|
+
<fo:block margin-left="{2*$level}mm">
|
10783
|
+
<xsl:text></</xsl:text>
|
10784
|
+
<xsl:value-of select="local-name()"/>
|
10785
|
+
<xsl:text>></xsl:text>
|
10786
|
+
</fo:block>
|
10787
|
+
</xsl:if>
|
9464
10788
|
</xsl:template></xsl:stylesheet>
|