metanorma-iso 2.1.0 → 2.1.3
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|