metanorma-un 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/isodoc/un/html/word_unece_titlepage.html +4 -4
- data/lib/isodoc/un/un.plenary-attachment.xsl +1042 -114
- data/lib/isodoc/un/un.plenary.xsl +1042 -114
- data/lib/isodoc/un/un.recommendation.xsl +1042 -114
- data/lib/isodoc/un/word_convert.rb +27 -21
- data/lib/metanorma/un/version.rb +1 -1
- metadata +2 -2
@@ -615,6 +615,7 @@
|
|
615
615
|
</xsl:template>
|
616
616
|
|
617
617
|
<xsl:template match="un:p" name="paragraph">
|
618
|
+
<xsl:param name="split_keep-within-line"/>
|
618
619
|
<fo:block>
|
619
620
|
<xsl:if test="following-sibling::*">
|
620
621
|
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
|
@@ -625,7 +626,9 @@
|
|
625
626
|
<xsl:otherwise>justify</xsl:otherwise>
|
626
627
|
</xsl:choose>
|
627
628
|
</xsl:attribute>
|
628
|
-
<xsl:apply-templates
|
629
|
+
<xsl:apply-templates>
|
630
|
+
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
|
631
|
+
</xsl:apply-templates>
|
629
632
|
</fo:block>
|
630
633
|
</xsl:template>
|
631
634
|
|
@@ -902,7 +905,9 @@
|
|
902
905
|
<xsl:text>iVBORw0KGgoAAAANSUhEUgAAAUgAAAEfCAYAAAAjn198AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA8BpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4M0JCQjMxNzJBNjcxMUVBQjQ3MkM1NDNGQjcxMjlFQyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4M0JCQjMxNjJBNjcxMUVBQjQ3MkM1NDNGQjcxMjlFQyIgeG1wOkNyZWF0b3JUb29sPSJBY3JvYmF0IFBERk1ha2VyIDE4IGZvciBXb3JkIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InV1aWQ6OTM1MzU0ZmUtYzRmYS00Y2I4LTlkOGMtYjk0M2E4OTk2YzhiIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOjhlMzkwMGEzLTMwZWUtNGRlNy04NDc0LTlhZTA5ZTFjZjhmMiIvPiA8ZGM6Y3JlYXRvcj4gPHJkZjpTZXE+IDxyZGY6bGk+U3RlcGhl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</xsl:text>
|
903
906
|
</xsl:variable>
|
904
907
|
|
905
|
-
<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="
|
908
|
+
<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:param name="table_if_debug">false</xsl:param><xsl:variable name="isGenerateTableIF_">
|
909
|
+
false
|
910
|
+
</xsl:variable><xsl:variable name="isGenerateTableIF" select="normalize-space($isGenerateTableIF_)"/><xsl:variable name="lang">
|
906
911
|
<xsl:call-template name="getLang"/>
|
907
912
|
</xsl:variable><xsl:variable name="pageWidth_">
|
908
913
|
210
|
@@ -1354,6 +1359,7 @@
|
|
1354
1359
|
<xsl:attribute name="font-weight">bold</xsl:attribute>
|
1355
1360
|
<xsl:attribute name="border">solid black 1pt</xsl:attribute>
|
1356
1361
|
<xsl:attribute name="padding-left">1mm</xsl:attribute>
|
1362
|
+
<xsl:attribute name="padding-right">1mm</xsl:attribute>
|
1357
1363
|
<xsl:attribute name="display-align">center</xsl:attribute>
|
1358
1364
|
|
1359
1365
|
|
@@ -1374,6 +1380,7 @@
|
|
1374
1380
|
<xsl:attribute name="display-align">center</xsl:attribute>
|
1375
1381
|
<xsl:attribute name="border">solid black 1pt</xsl:attribute>
|
1376
1382
|
<xsl:attribute name="padding-left">1mm</xsl:attribute>
|
1383
|
+
<xsl:attribute name="padding-right">1mm</xsl:attribute>
|
1377
1384
|
|
1378
1385
|
|
1379
1386
|
|
@@ -1461,7 +1468,8 @@
|
|
1461
1468
|
</xsl:attribute-set><xsl:attribute-set name="dt-row-style">
|
1462
1469
|
|
1463
1470
|
|
1464
|
-
</xsl:attribute-set><xsl:attribute-set name="dt-style">
|
1471
|
+
</xsl:attribute-set><xsl:attribute-set name="dt-cell-style">
|
1472
|
+
</xsl:attribute-set><xsl:attribute-set name="dt-block-style">
|
1465
1473
|
<xsl:attribute name="margin-top">6pt</xsl:attribute>
|
1466
1474
|
|
1467
1475
|
|
@@ -1473,6 +1481,8 @@
|
|
1473
1481
|
|
1474
1482
|
|
1475
1483
|
|
1484
|
+
</xsl:attribute-set><xsl:attribute-set name="dd-cell-style">
|
1485
|
+
<xsl:attribute name="padding-left">2mm</xsl:attribute>
|
1476
1486
|
</xsl:attribute-set><xsl:attribute-set name="appendix-style">
|
1477
1487
|
|
1478
1488
|
|
@@ -2297,7 +2307,38 @@
|
|
2297
2307
|
</xsl:template><xsl:template match="*[local-name()='br']">
|
2298
2308
|
<xsl:value-of select="$linebreak"/>
|
2299
2309
|
</xsl:template><xsl:template match="*[local-name() = 'keep-together_within-line']">
|
2300
|
-
<
|
2310
|
+
<xsl:param name="split_keep-within-line"/>
|
2311
|
+
|
2312
|
+
<!-- <fo:inline>split_keep-within-line='<xsl:value-of select="$split_keep-within-line"/>'</fo:inline> -->
|
2313
|
+
<xsl:choose>
|
2314
|
+
|
2315
|
+
<xsl:when test="normalize-space($split_keep-within-line) = 'true'">
|
2316
|
+
<xsl:variable name="sep">_</xsl:variable>
|
2317
|
+
<xsl:variable name="items">
|
2318
|
+
<xsl:call-template name="split">
|
2319
|
+
<xsl:with-param name="pText" select="."/>
|
2320
|
+
<xsl:with-param name="sep" select="$sep"/>
|
2321
|
+
<xsl:with-param name="normalize-space">false</xsl:with-param>
|
2322
|
+
<xsl:with-param name="keep_sep">true</xsl:with-param>
|
2323
|
+
</xsl:call-template>
|
2324
|
+
</xsl:variable>
|
2325
|
+
<xsl:for-each select="xalan:nodeset($items)/item">
|
2326
|
+
<xsl:choose>
|
2327
|
+
<xsl:when test=". = $sep">
|
2328
|
+
<xsl:value-of select="$sep"/><xsl:value-of select="$zero_width_space"/>
|
2329
|
+
</xsl:when>
|
2330
|
+
<xsl:otherwise>
|
2331
|
+
<fo:inline keep-together.within-line="always"><xsl:apply-templates/></fo:inline>
|
2332
|
+
</xsl:otherwise>
|
2333
|
+
</xsl:choose>
|
2334
|
+
</xsl:for-each>
|
2335
|
+
</xsl:when>
|
2336
|
+
|
2337
|
+
<xsl:otherwise>
|
2338
|
+
<fo:inline keep-together.within-line="always"><xsl:apply-templates/></fo:inline>
|
2339
|
+
</xsl:otherwise>
|
2340
|
+
|
2341
|
+
</xsl:choose>
|
2301
2342
|
</xsl:template><xsl:template match="*[local-name()='copyright-statement']">
|
2302
2343
|
<fo:block xsl:use-attribute-sets="copyright-statement-style">
|
2303
2344
|
<xsl:apply-templates/>
|
@@ -2389,9 +2430,14 @@
|
|
2389
2430
|
|
2390
2431
|
<xsl:variable name="table">
|
2391
2432
|
|
2392
|
-
<xsl:variable name="simple-table">
|
2393
|
-
<xsl:call-template name="getSimpleTable"
|
2433
|
+
<xsl:variable name="simple-table">
|
2434
|
+
<xsl:call-template name="getSimpleTable">
|
2435
|
+
<xsl:with-param name="id" select="@id"/>
|
2436
|
+
</xsl:call-template>
|
2394
2437
|
</xsl:variable>
|
2438
|
+
<!-- <xsl:variable name="simple-table" select="xalan:nodeset($simple-table_)"/> -->
|
2439
|
+
|
2440
|
+
<!-- simple-table=<xsl:copy-of select="$simple-table"/> -->
|
2395
2441
|
|
2396
2442
|
|
2397
2443
|
<!-- Display table's name before table as standalone block -->
|
@@ -2414,7 +2460,23 @@
|
|
2414
2460
|
</xsl:call-template>
|
2415
2461
|
</xsl:if>
|
2416
2462
|
</xsl:variable>
|
2417
|
-
<!--
|
2463
|
+
<!-- <xsl:variable name="colwidths" select="xalan:nodeset($colwidths_)"/> -->
|
2464
|
+
|
2465
|
+
<!-- DEBUG -->
|
2466
|
+
<xsl:if test="$table_if_debug = 'true'">
|
2467
|
+
<fo:block font-size="60%">
|
2468
|
+
<xsl:apply-templates select="xalan:nodeset($colwidths)" mode="print_as_xml"/>
|
2469
|
+
</fo:block>
|
2470
|
+
</xsl:if>
|
2471
|
+
|
2472
|
+
|
2473
|
+
<!-- <xsl:copy-of select="$colwidths"/> -->
|
2474
|
+
|
2475
|
+
<!-- <xsl:text disable-output-escaping="yes"><!- -</xsl:text>
|
2476
|
+
DEBUG
|
2477
|
+
colwidths=<xsl:copy-of select="$colwidths"/>
|
2478
|
+
<xsl:text disable-output-escaping="yes">- -></xsl:text> -->
|
2479
|
+
|
2418
2480
|
|
2419
2481
|
|
2420
2482
|
<xsl:variable name="margin-side">
|
@@ -2495,9 +2557,17 @@
|
|
2495
2557
|
</xsl:element>
|
2496
2558
|
</xsl:variable>
|
2497
2559
|
|
2560
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
2561
|
+
<!-- to determine start of table -->
|
2562
|
+
<fo:block id="{concat('table_if_start_',@id)}" keep-with-next="always" font-size="1pt">Start table '<xsl:value-of select="@id"/>'.</fo:block>
|
2563
|
+
</xsl:if>
|
2498
2564
|
|
2499
2565
|
<fo:table id="{@id}">
|
2500
2566
|
|
2567
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
2568
|
+
<xsl:attribute name="wrap-option">no-wrap</xsl:attribute>
|
2569
|
+
</xsl:if>
|
2570
|
+
|
2501
2571
|
<xsl:for-each select="xalan:nodeset($table_attributes)/table_attributes/@*">
|
2502
2572
|
<xsl:attribute name="{local-name()}">
|
2503
2573
|
<xsl:value-of select="."/>
|
@@ -2511,24 +2581,47 @@
|
|
2511
2581
|
|
2512
2582
|
|
2513
2583
|
<xsl:choose>
|
2514
|
-
<xsl:when test="
|
2515
|
-
|
2516
|
-
|
2517
|
-
|
2584
|
+
<xsl:when test="$isGenerateTableIF = 'true'">
|
2585
|
+
<!-- generate IF for table widths -->
|
2586
|
+
<!-- example:
|
2587
|
+
<tr>
|
2588
|
+
<td valign="top" align="left" id="tab-symdu_1_1">
|
2589
|
+
<p>Symbol</p>
|
2590
|
+
<word id="tab-symdu_1_1_word_1">Symbol</word>
|
2591
|
+
</td>
|
2592
|
+
<td valign="top" align="left" id="tab-symdu_1_2">
|
2593
|
+
<p>Description</p>
|
2594
|
+
<word id="tab-symdu_1_2_word_1">Description</word>
|
2595
|
+
</td>
|
2596
|
+
</tr>
|
2597
|
+
-->
|
2598
|
+
<xsl:apply-templates select="xalan:nodeset($simple-table)" mode="process_table-if"/>
|
2599
|
+
|
2518
2600
|
</xsl:when>
|
2519
2601
|
<xsl:otherwise>
|
2520
|
-
<xsl:call-template name="insertTableColumnWidth">
|
2521
|
-
<xsl:with-param name="colwidths" select="$colwidths"/>
|
2522
|
-
</xsl:call-template>
|
2523
|
-
</xsl:otherwise>
|
2524
|
-
</xsl:choose>
|
2525
2602
|
|
2526
|
-
|
2527
|
-
|
2528
|
-
|
2529
|
-
|
2530
|
-
|
2531
|
-
|
2603
|
+
<xsl:choose>
|
2604
|
+
<xsl:when test="*[local-name()='colgroup']/*[local-name()='col']">
|
2605
|
+
<xsl:for-each select="*[local-name()='colgroup']/*[local-name()='col']">
|
2606
|
+
<fo:table-column column-width="{@width}"/>
|
2607
|
+
</xsl:for-each>
|
2608
|
+
</xsl:when>
|
2609
|
+
<xsl:otherwise>
|
2610
|
+
<xsl:call-template name="insertTableColumnWidth">
|
2611
|
+
<xsl:with-param name="colwidths" select="$colwidths"/>
|
2612
|
+
</xsl:call-template>
|
2613
|
+
</xsl:otherwise>
|
2614
|
+
</xsl:choose>
|
2615
|
+
|
2616
|
+
<xsl:choose>
|
2617
|
+
<xsl:when test="not(*[local-name()='tbody']) and *[local-name()='thead']">
|
2618
|
+
<xsl:apply-templates select="*[local-name()='thead']" mode="process_tbody"/>
|
2619
|
+
</xsl:when>
|
2620
|
+
<xsl:otherwise>
|
2621
|
+
<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 -->
|
2622
|
+
</xsl:otherwise>
|
2623
|
+
</xsl:choose>
|
2624
|
+
|
2532
2625
|
</xsl:otherwise>
|
2533
2626
|
</xsl:choose>
|
2534
2627
|
|
@@ -2628,11 +2721,22 @@
|
|
2628
2721
|
<xsl:variable name="columns-with-colspan" select="count($table-row/*[@colspan])"/>
|
2629
2722
|
<xsl:value-of select="$columns-count + $sum-colspans - $columns-with-colspan"/>
|
2630
2723
|
</xsl:template><xsl:template name="calculate-column-widths">
|
2724
|
+
<xsl:param name="table"/>
|
2725
|
+
<xsl:param name="cols-count"/>
|
2726
|
+
|
2727
|
+
<xsl:call-template name="calculate-column-widths-proportional">
|
2728
|
+
<xsl:with-param name="cols-count" select="$cols-count"/>
|
2729
|
+
<xsl:with-param name="table" select="$table"/>
|
2730
|
+
</xsl:call-template>
|
2731
|
+
|
2732
|
+
</xsl:template><xsl:template name="calculate-column-widths-proportional">
|
2631
2733
|
<xsl:param name="table"/>
|
2632
2734
|
<xsl:param name="cols-count"/>
|
2633
2735
|
<xsl:param name="curr-col" select="1"/>
|
2634
2736
|
<xsl:param name="width" select="0"/>
|
2635
2737
|
|
2738
|
+
<!-- table=<xsl:copy-of select="$table"/> -->
|
2739
|
+
|
2636
2740
|
<xsl:if test="$curr-col <= $cols-count">
|
2637
2741
|
<xsl:variable name="widths">
|
2638
2742
|
<xsl:choose>
|
@@ -2670,10 +2774,15 @@
|
|
2670
2774
|
</xsl:for-each>
|
2671
2775
|
</xsl:when>
|
2672
2776
|
<xsl:otherwise>
|
2673
|
-
<xsl:
|
2777
|
+
<!-- <curr_col><xsl:value-of select="$curr-col"/></curr_col> -->
|
2778
|
+
|
2779
|
+
<!-- <table><xsl:copy-of select="$table"/></table>
|
2780
|
+
-->
|
2781
|
+
<xsl:for-each select="xalan:nodeset($table)/*/*[local-name()='tr']">
|
2674
2782
|
<xsl:variable name="td_text">
|
2675
2783
|
<xsl:apply-templates select="td[$curr-col]" mode="td_text"/>
|
2676
2784
|
</xsl:variable>
|
2785
|
+
<!-- <td_text><xsl:value-of select="$td_text"/></td_text> -->
|
2677
2786
|
<xsl:variable name="words">
|
2678
2787
|
<xsl:variable name="string_with_added_zerospaces">
|
2679
2788
|
<xsl:call-template name="add-zero-spaces-java">
|
@@ -2688,6 +2797,7 @@
|
|
2688
2797
|
<xsl:with-param name="text" select="normalize-space(translate($string_with_added_zerospaces, '', ' '))"/> <!-- replace zero-width-space and soft-hyphen to space -->
|
2689
2798
|
</xsl:call-template>
|
2690
2799
|
</xsl:variable>
|
2800
|
+
<!-- words=<xsl:copy-of select="$words"/> -->
|
2691
2801
|
<xsl:variable name="max_length">
|
2692
2802
|
<xsl:call-template name="max_length">
|
2693
2803
|
<xsl:with-param name="words" select="xalan:nodeset($words)"/>
|
@@ -2712,6 +2822,8 @@
|
|
2712
2822
|
</xsl:choose>
|
2713
2823
|
</xsl:variable>
|
2714
2824
|
|
2825
|
+
<!-- widths=<xsl:copy-of select="$widths"/> -->
|
2826
|
+
|
2715
2827
|
<column>
|
2716
2828
|
<xsl:for-each select="xalan:nodeset($widths)//width">
|
2717
2829
|
<xsl:sort select="." data-type="number" order="descending"/>
|
@@ -2720,33 +2832,327 @@
|
|
2720
2832
|
</xsl:if>
|
2721
2833
|
</xsl:for-each>
|
2722
2834
|
</column>
|
2723
|
-
<xsl:call-template name="calculate-column-widths">
|
2835
|
+
<xsl:call-template name="calculate-column-widths-proportional">
|
2724
2836
|
<xsl:with-param name="cols-count" select="$cols-count"/>
|
2725
2837
|
<xsl:with-param name="curr-col" select="$curr-col +1"/>
|
2726
2838
|
<xsl:with-param name="table" select="$table"/>
|
2727
2839
|
</xsl:call-template>
|
2728
2840
|
</xsl:if>
|
2729
|
-
</xsl:template><xsl:template match="*[@keep-together.within-line]/text()" priority="2" mode="td_text">
|
2841
|
+
</xsl:template><xsl:template match="*[@keep-together.within-line or local-name() = 'keep-together_within-line']/text()" priority="2" mode="td_text">
|
2730
2842
|
<!-- <xsl:message>DEBUG t1=<xsl:value-of select="."/></xsl:message>
|
2731
2843
|
<xsl:message>DEBUG t2=<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),'.','X')"/></xsl:message> -->
|
2732
2844
|
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),'.','X')"/>
|
2845
|
+
|
2846
|
+
<!-- if all capitals english letters or digits -->
|
2847
|
+
<xsl:if test="normalize-space(translate(., concat($upper,'0123456789'), '')) = ''">
|
2848
|
+
<xsl:call-template name="repeat">
|
2849
|
+
<xsl:with-param name="char" select="'X'"/>
|
2850
|
+
<xsl:with-param name="count" select="string-length(normalize-space(.)) * 0.5"/>
|
2851
|
+
</xsl:call-template>
|
2852
|
+
</xsl:if>
|
2733
2853
|
</xsl:template><xsl:template match="text()" mode="td_text">
|
2734
2854
|
<xsl:value-of select="translate(., $zero_width_space, ' ')"/><xsl:text> </xsl:text>
|
2735
2855
|
</xsl:template><xsl:template match="*[local-name()='termsource']" mode="td_text">
|
2736
2856
|
<xsl:value-of select="*[local-name()='origin']/@citeas"/>
|
2737
2857
|
</xsl:template><xsl:template match="*[local-name()='link']" mode="td_text">
|
2738
2858
|
<xsl:value-of select="@target"/>
|
2739
|
-
</xsl:template><xsl:template match="*[local-name()='math']" mode="td_text">
|
2740
|
-
<xsl:
|
2741
|
-
<xsl:
|
2742
|
-
<xsl:
|
2743
|
-
<xsl:
|
2859
|
+
</xsl:template><xsl:template match="*[local-name()='math']" mode="td_text" name="math_length">
|
2860
|
+
<xsl:if test="$isGenerateTableIF = 'false'">
|
2861
|
+
<xsl:variable name="mathml_">
|
2862
|
+
<xsl:for-each select="*">
|
2863
|
+
<xsl:if test="local-name() != 'unit' and local-name() != 'prefix' and local-name() != 'dimension' and local-name() != 'quantity'">
|
2864
|
+
<xsl:copy-of select="."/>
|
2865
|
+
</xsl:if>
|
2866
|
+
</xsl:for-each>
|
2867
|
+
</xsl:variable>
|
2868
|
+
<xsl:variable name="mathml" select="xalan:nodeset($mathml_)"/>
|
2869
|
+
|
2870
|
+
<xsl:variable name="math_text">
|
2871
|
+
<xsl:value-of select="normalize-space($mathml)"/>
|
2872
|
+
<xsl:for-each select="$mathml//@open"><xsl:value-of select="."/></xsl:for-each>
|
2873
|
+
<xsl:for-each select="$mathml//@close"><xsl:value-of select="."/></xsl:for-each>
|
2874
|
+
</xsl:variable>
|
2875
|
+
<xsl:value-of select="translate($math_text, ' ', '#')"/><!-- mathml images as one 'word' without spaces -->
|
2876
|
+
</xsl:if>
|
2877
|
+
</xsl:template><xsl:template name="calculate-column-widths-autolayout-algorithm">
|
2878
|
+
<xsl:param name="table"/>
|
2879
|
+
<xsl:param name="if">false</xsl:param> <!-- via intermediate format -->
|
2880
|
+
|
2881
|
+
<!-- The algorithm uses two passes through the table data and scales linearly with the size of the table -->
|
2882
|
+
|
2883
|
+
<!-- In the first pass, line wrapping is disabled, and the user agent keeps track of the minimum and maximum width of each cell. -->
|
2884
|
+
|
2885
|
+
<!-- Since line wrap has been disabled, paragraphs are treated as long lines unless broken by BR elements. -->
|
2886
|
+
|
2887
|
+
<!-- get current table id -->
|
2888
|
+
<xsl:variable name="table_id" select="@id"/>
|
2889
|
+
<!-- find table by id in the file 'table_widths' -->
|
2890
|
+
<xsl:variable name="table-if_" select="$table_widths_from_if//table[@id = $table_id]"/>
|
2891
|
+
<xsl:variable name="table-if" select="xalan:nodeset($table-if_)"/>
|
2892
|
+
|
2893
|
+
|
2894
|
+
<!-- table='<xsl:copy-of select="$table"/>' -->
|
2895
|
+
<!-- table_id='<xsl:value-of select="$table_id"/>\ -->
|
2896
|
+
<!-- table-if='<xsl:copy-of select="$table-if"/>' -->
|
2897
|
+
<!-- table_widths_from_if='<xsl:copy-of select="$table_widths_from_if"/>' -->
|
2898
|
+
|
2899
|
+
<xsl:variable name="table_with_cell_widths_">
|
2900
|
+
<xsl:choose>
|
2901
|
+
<xsl:when test="$if = 'true' and normalize-space($table-if) != ''"> <!-- if we read column's width from IF and there is table in IF -->
|
2902
|
+
|
2903
|
+
<!-- Example: <column>10</column>
|
2904
|
+
<column>11</column>
|
2905
|
+
-->
|
2906
|
+
<xsl:apply-templates select="$table-if" mode="determine_cell_widths-if"/>
|
2907
|
+
</xsl:when>
|
2908
|
+
<xsl:otherwise>
|
2909
|
+
<xsl:apply-templates select="xalan:nodeset($table)" mode="determine_cell_widths"/>
|
2910
|
+
</xsl:otherwise>
|
2911
|
+
</xsl:choose>
|
2912
|
+
</xsl:variable>
|
2913
|
+
<xsl:variable name="table_with_cell_widths" select="xalan:nodeset($table_with_cell_widths_)"/>
|
2914
|
+
|
2915
|
+
<xsl:if test="$table_if_debug = 'true'">
|
2916
|
+
<xsl:copy-of select="$table_with_cell_widths"/>
|
2917
|
+
</xsl:if>
|
2918
|
+
|
2919
|
+
|
2920
|
+
<!-- The minimum and maximum cell widths are then used to determine the corresponding minimum and maximum widths for the columns. -->
|
2921
|
+
|
2922
|
+
<xsl:variable name="column_widths_">
|
2923
|
+
<!-- iteration of columns -->
|
2924
|
+
<xsl:for-each select="$table_with_cell_widths//tr[1]/td">
|
2925
|
+
<xsl:variable name="pos" select="position()"/>
|
2926
|
+
<column>
|
2927
|
+
<xsl:attribute name="width_max">
|
2928
|
+
<xsl:for-each select="ancestor::tbody//tr/td[$pos]/@width_max">
|
2929
|
+
<xsl:sort select="." data-type="number" order="descending"/>
|
2930
|
+
<xsl:if test="position() = 1"><xsl:value-of select="."/></xsl:if>
|
2931
|
+
</xsl:for-each>
|
2932
|
+
</xsl:attribute>
|
2933
|
+
<xsl:attribute name="width_min">
|
2934
|
+
<xsl:for-each select="ancestor::tbody//tr/td[$pos]/@width_min">
|
2935
|
+
<xsl:sort select="." data-type="number" order="descending"/>
|
2936
|
+
<xsl:if test="position() = 1"><xsl:value-of select="."/></xsl:if>
|
2937
|
+
</xsl:for-each>
|
2938
|
+
</xsl:attribute>
|
2939
|
+
</column>
|
2940
|
+
</xsl:for-each>
|
2941
|
+
</xsl:variable>
|
2942
|
+
<xsl:variable name="column_widths" select="xalan:nodeset($column_widths_)"/>
|
2943
|
+
|
2944
|
+
<!-- <column_widths>
|
2945
|
+
<xsl:copy-of select="$column_widths"/>
|
2946
|
+
</column_widths> -->
|
2947
|
+
|
2948
|
+
<!-- These in turn, are used to find the minimum and maximum width for the table. -->
|
2949
|
+
<xsl:variable name="table_widths_">
|
2950
|
+
<table>
|
2951
|
+
<xsl:attribute name="width_max">
|
2952
|
+
<xsl:value-of select="sum($column_widths/column/@width_max)"/>
|
2953
|
+
</xsl:attribute>
|
2954
|
+
<xsl:attribute name="width_min">
|
2955
|
+
<xsl:value-of select="sum($column_widths/column/@width_min)"/>
|
2956
|
+
</xsl:attribute>
|
2957
|
+
</table>
|
2958
|
+
</xsl:variable>
|
2959
|
+
<xsl:variable name="table_widths" select="xalan:nodeset($table_widths_)"/>
|
2960
|
+
|
2961
|
+
<xsl:variable name="page_width">
|
2962
|
+
<xsl:choose>
|
2963
|
+
<xsl:when test="$if = 'true'"><xsl:value-of select="$table-if/@page-width"/></xsl:when>
|
2964
|
+
<xsl:otherwise>75</xsl:otherwise>
|
2965
|
+
</xsl:choose>
|
2966
|
+
</xsl:variable>
|
2967
|
+
|
2968
|
+
<xsl:if test="$table_if_debug = 'true'">
|
2969
|
+
<table_width>
|
2970
|
+
<xsl:copy-of select="$table_widths"/>
|
2971
|
+
</table_width>
|
2972
|
+
<!-- <debug>$table_widths/@width_min=<xsl:value-of select="$table_widths/table/@width_min"/></debug>
|
2973
|
+
<debug>$table_widths/@width_max=<xsl:value-of select="$table_widths/table/@width_max"/></debug>
|
2974
|
+
-->
|
2975
|
+
<debug>$page_width=<xsl:value-of select="$page_width"/></debug>
|
2976
|
+
</xsl:if>
|
2977
|
+
|
2978
|
+
|
2979
|
+
<!-- There are three cases: -->
|
2980
|
+
<xsl:choose>
|
2981
|
+
<!-- 1. The minimum table width is equal to or wider than the available space -->
|
2982
|
+
<xsl:when test="$table_widths/table/@width_min >= $page_width and 1 = 2"> <!-- this condition isn't working see case 3 below -->
|
2983
|
+
<!-- call old algorithm -->
|
2984
|
+
<case1/>
|
2985
|
+
<xsl:variable name="cols-count" select="count(xalan:nodeset($table)/*/tr[1]/td)"/>
|
2986
|
+
<xsl:call-template name="calculate-column-widths-proportional">
|
2987
|
+
<xsl:with-param name="cols-count" select="$cols-count"/>
|
2988
|
+
<xsl:with-param name="table" select="$table"/>
|
2989
|
+
</xsl:call-template>
|
2990
|
+
</xsl:when>
|
2991
|
+
<!-- 2. The maximum table width fits within the available space. In this case, set the columns to their maximum widths. -->
|
2992
|
+
<xsl:when test="$table_widths/table/@width_max <= $page_width">
|
2993
|
+
<case2/>
|
2994
|
+
<autolayout/>
|
2995
|
+
<xsl:for-each select="$column_widths/column/@width_max">
|
2996
|
+
<column divider="100"><xsl:value-of select="."/></column>
|
2997
|
+
</xsl:for-each>
|
2998
|
+
</xsl:when>
|
2999
|
+
<!-- 3. The maximum width of the table is greater than the available space, but the minimum table width is smaller.
|
3000
|
+
In this case, find the difference between the available space and the minimum table width, lets call it W.
|
3001
|
+
Lets also call D the difference between maximum and minimum width of the table.
|
3002
|
+
For each column, let d be the difference between maximum and minimum width of that column.
|
3003
|
+
Now set the column's width to the minimum width plus d times W over D.
|
3004
|
+
This makes columns with large differences between minimum and maximum widths wider than columns with smaller differences. -->
|
3005
|
+
<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)">
|
3006
|
+
<!-- difference between the available space and the minimum table width -->
|
3007
|
+
<xsl:variable name="W" select="$page_width - $table_widths/table/@width_min"/>
|
3008
|
+
<W><xsl:value-of select="$W"/></W>
|
3009
|
+
<!-- difference between maximum and minimum width of the table -->
|
3010
|
+
<xsl:variable name="D" select="$table_widths/table/@width_max - $table_widths/table/@width_min"/>
|
3011
|
+
<D><xsl:value-of select="$D"/></D>
|
3012
|
+
<case3/>
|
3013
|
+
<autolayout/>
|
3014
|
+
<xsl:if test="$table_widths/table/@width_min >= $page_width">
|
3015
|
+
<split_keep-within-line>true</split_keep-within-line>
|
3016
|
+
</xsl:if>
|
3017
|
+
<xsl:for-each select="$column_widths/column">
|
3018
|
+
<!-- difference between maximum and minimum width of that column. -->
|
3019
|
+
<xsl:variable name="d" select="@width_max - @width_min"/>
|
3020
|
+
<d><xsl:value-of select="$d"/></d>
|
3021
|
+
<width_min><xsl:value-of select="@width_min"/></width_min>
|
3022
|
+
<e><xsl:value-of select="$d * $W div $D"/></e>
|
3023
|
+
<!-- set the column's width to the minimum width plus d times W over D. -->
|
3024
|
+
<column divider="100">
|
3025
|
+
<xsl:value-of select="round(@width_min + $d * $W div $D)"/> <!-- * 10 -->
|
3026
|
+
</column>
|
3027
|
+
</xsl:for-each>
|
3028
|
+
|
3029
|
+
</xsl:when>
|
3030
|
+
<xsl:otherwise><unknown_case/></xsl:otherwise>
|
3031
|
+
</xsl:choose>
|
3032
|
+
|
3033
|
+
|
3034
|
+
</xsl:template><xsl:template match="@*|node()" mode="determine_cell_widths">
|
3035
|
+
<xsl:copy>
|
3036
|
+
<xsl:apply-templates select="@*|node()" mode="determine_cell_widths"/>
|
3037
|
+
</xsl:copy>
|
3038
|
+
</xsl:template><xsl:template match="td | th" mode="determine_cell_widths">
|
3039
|
+
<xsl:copy>
|
3040
|
+
<xsl:copy-of select="@*"/>
|
3041
|
+
|
3042
|
+
<!-- The maximum width is given by the widest line. -->
|
3043
|
+
<xsl:variable name="widths_max">
|
3044
|
+
<xsl:for-each select=".//*[local-name() = 'p']">
|
3045
|
+
<xsl:call-template name="add_width"/>
|
3046
|
+
</xsl:for-each>
|
3047
|
+
<xsl:if test="not(*[local-name() = 'p'])">
|
3048
|
+
<xsl:call-template name="add_width"/>
|
2744
3049
|
</xsl:if>
|
3050
|
+
</xsl:variable>
|
3051
|
+
<xsl:variable name="width_max">
|
3052
|
+
<xsl:for-each select="xalan:nodeset($widths_max)//width">
|
3053
|
+
<xsl:sort select="." data-type="number" order="descending"/>
|
3054
|
+
<xsl:if test="position() = 1"><xsl:value-of select="."/></xsl:if>
|
3055
|
+
</xsl:for-each>
|
3056
|
+
</xsl:variable>
|
3057
|
+
<xsl:attribute name="width_max">
|
3058
|
+
<xsl:value-of select="$width_max"/>
|
3059
|
+
</xsl:attribute>
|
3060
|
+
|
3061
|
+
<!-- The minimum width is given by the widest text element (word, image, etc.) -->
|
3062
|
+
<!-- To do: image width -->
|
3063
|
+
<xsl:variable name="td_text">
|
3064
|
+
<xsl:apply-templates select="." mode="td_text"/>
|
3065
|
+
</xsl:variable>
|
3066
|
+
<xsl:variable name="words">
|
3067
|
+
<xsl:variable name="string_with_added_zerospaces">
|
3068
|
+
<xsl:call-template name="add-zero-spaces-java">
|
3069
|
+
<xsl:with-param name="text" select="$td_text"/>
|
3070
|
+
</xsl:call-template>
|
3071
|
+
</xsl:variable>
|
3072
|
+
<xsl:call-template name="tokenize">
|
3073
|
+
<xsl:with-param name="text" select="normalize-space(translate($string_with_added_zerospaces, '', ' '))"/> <!-- replace zero-width-space and soft-hyphen to space -->
|
3074
|
+
</xsl:call-template>
|
3075
|
+
</xsl:variable>
|
3076
|
+
|
3077
|
+
<xsl:variable name="max_word_length">
|
3078
|
+
<xsl:call-template name="max_length">
|
3079
|
+
<xsl:with-param name="words" select="xalan:nodeset($words)"/>
|
3080
|
+
</xsl:call-template>
|
3081
|
+
</xsl:variable>
|
3082
|
+
<xsl:variable name="width_min">
|
3083
|
+
<xsl:value-of select="$max_word_length"/>
|
3084
|
+
</xsl:variable>
|
3085
|
+
<xsl:attribute name="width_min">
|
3086
|
+
<xsl:value-of select="$width_min"/>
|
3087
|
+
</xsl:attribute>
|
3088
|
+
<!-- width_max="1" width_min="1.5"> --> <!-- see 'tokenize' template, multiply 1.5 for all latin capitals -->
|
3089
|
+
<xsl:if test="$width_min > $width_max">
|
3090
|
+
<xsl:attribute name="width_max">
|
3091
|
+
<xsl:value-of select="$width_min"/>
|
3092
|
+
</xsl:attribute>
|
3093
|
+
</xsl:if>
|
3094
|
+
<xsl:if test="$width_min = 0">
|
3095
|
+
<xsl:attribute name="width_min">1</xsl:attribute>
|
3096
|
+
</xsl:if>
|
3097
|
+
|
3098
|
+
<xsl:apply-templates select="node()" mode="determine_cell_widths"/>
|
3099
|
+
|
3100
|
+
</xsl:copy>
|
3101
|
+
</xsl:template><xsl:template name="add_width">
|
3102
|
+
<xsl:variable name="p_text"><xsl:apply-templates select="." mode="td_text"/></xsl:variable>
|
3103
|
+
<xsl:variable name="p_text_len_" select="string-length(normalize-space($p_text))"/>
|
3104
|
+
|
3105
|
+
<xsl:variable name="p_text_len">
|
3106
|
+
<xsl:choose>
|
3107
|
+
<xsl:when test="normalize-space(translate($p_text, concat($upper,'0123456789'), '')) = ''"> <!-- english word in CAPITAL letters -->
|
3108
|
+
<xsl:value-of select="$p_text_len_ * 1.5"/>
|
3109
|
+
</xsl:when>
|
3110
|
+
<xsl:otherwise><xsl:value-of select="$p_text_len_"/></xsl:otherwise>
|
3111
|
+
</xsl:choose>
|
3112
|
+
</xsl:variable>
|
3113
|
+
|
3114
|
+
<xsl:variable name="math_addon_text">
|
3115
|
+
<xsl:for-each select=".//*[local-name() = 'math']">
|
3116
|
+
<xsl:apply-templates mode="td_text"/>
|
2745
3117
|
</xsl:for-each>
|
2746
3118
|
</xsl:variable>
|
3119
|
+
<xsl:variable name="math_addon_length" select="string-length(normalize-space($math_addon_text)) * 0.2"/> <!-- plus 20% -->
|
2747
3120
|
|
2748
|
-
<xsl:
|
2749
|
-
|
3121
|
+
<width><xsl:value-of select="$p_text_len + $math_addon_length"/></width>
|
3122
|
+
</xsl:template><xsl:template match="@*|node()" mode="determine_cell_widths-if">
|
3123
|
+
<xsl:copy>
|
3124
|
+
<xsl:apply-templates select="@*|node()" mode="determine_cell_widths-if"/>
|
3125
|
+
</xsl:copy>
|
3126
|
+
</xsl:template><xsl:template match="td | th" mode="determine_cell_widths-if">
|
3127
|
+
<xsl:copy>
|
3128
|
+
<xsl:copy-of select="@*"/>
|
3129
|
+
|
3130
|
+
<!-- The maximum width is given by the widest line. -->
|
3131
|
+
<xsl:attribute name="width_max">
|
3132
|
+
<xsl:for-each select="p_len">
|
3133
|
+
<xsl:sort select="." data-type="number" order="descending"/>
|
3134
|
+
<xsl:if test="position() = 1"><xsl:value-of select="."/></xsl:if>
|
3135
|
+
</xsl:for-each>
|
3136
|
+
</xsl:attribute>
|
3137
|
+
|
3138
|
+
<!-- The minimum width is given by the widest text element (word, image, etc.) -->
|
3139
|
+
<xsl:variable name="width_min">
|
3140
|
+
<xsl:for-each select="word_len">
|
3141
|
+
<xsl:sort select="." data-type="number" order="descending"/>
|
3142
|
+
<xsl:if test="position() = 1"><xsl:value-of select="."/></xsl:if>
|
3143
|
+
</xsl:for-each>
|
3144
|
+
</xsl:variable>
|
3145
|
+
<xsl:attribute name="width_min">
|
3146
|
+
<xsl:value-of select="$width_min"/>
|
3147
|
+
</xsl:attribute>
|
3148
|
+
|
3149
|
+
<xsl:if test="$width_min = 0">
|
3150
|
+
<xsl:attribute name="width_min">1</xsl:attribute>
|
3151
|
+
</xsl:if>
|
3152
|
+
|
3153
|
+
<xsl:apply-templates select="node()" mode="determine_cell_widths-if"/>
|
3154
|
+
|
3155
|
+
</xsl:copy>
|
2750
3156
|
</xsl:template><xsl:template match="*[local-name()='thead']">
|
2751
3157
|
<xsl:param name="cols-count"/>
|
2752
3158
|
<fo:table-header>
|
@@ -2831,6 +3237,7 @@
|
|
2831
3237
|
</xsl:for-each>
|
2832
3238
|
</xsl:when>
|
2833
3239
|
<xsl:otherwise>
|
3240
|
+
<!-- $colwidths=<xsl:copy-of select="$colwidths"/> -->
|
2834
3241
|
<xsl:call-template name="insertTableColumnWidth">
|
2835
3242
|
<xsl:with-param name="colwidths" select="$colwidths"/>
|
2836
3243
|
</xsl:call-template>
|
@@ -2910,6 +3317,52 @@
|
|
2910
3317
|
|
2911
3318
|
</fo:table-body>
|
2912
3319
|
|
3320
|
+
</xsl:template><xsl:template match="/" mode="process_table-if">
|
3321
|
+
<xsl:param name="table_or_dl">table</xsl:param>
|
3322
|
+
<xsl:apply-templates mode="process_table-if">
|
3323
|
+
<xsl:with-param name="table_or_dl" select="$table_or_dl"/>
|
3324
|
+
</xsl:apply-templates>
|
3325
|
+
</xsl:template><xsl:template match="*[local-name()='tbody']" mode="process_table-if">
|
3326
|
+
<xsl:param name="table_or_dl">table</xsl:param>
|
3327
|
+
|
3328
|
+
<fo:table-body>
|
3329
|
+
<xsl:for-each select="*[local-name() = 'tr']">
|
3330
|
+
<xsl:variable name="col_count" select="count(*)"/>
|
3331
|
+
|
3332
|
+
<!-- iteration for each tr/td -->
|
3333
|
+
|
3334
|
+
<xsl:choose>
|
3335
|
+
<xsl:when test="$table_or_dl = 'table'">
|
3336
|
+
<xsl:for-each select="*[local-name() = 'td' or local-name() = 'th']/*">
|
3337
|
+
<fo:table-row number-columns-spanned="{$col_count}">
|
3338
|
+
<!-- <test_table><xsl:copy-of select="."/></test_table> -->
|
3339
|
+
<xsl:call-template name="td"/>
|
3340
|
+
</fo:table-row>
|
3341
|
+
</xsl:for-each>
|
3342
|
+
</xsl:when>
|
3343
|
+
<xsl:otherwise> <!-- $table_or_dl = 'dl' -->
|
3344
|
+
<xsl:for-each select="*[local-name() = 'td' or local-name() = 'th']">
|
3345
|
+
<xsl:variable name="is_dt" select="position() = 1"/>
|
3346
|
+
|
3347
|
+
<xsl:for-each select="*">
|
3348
|
+
<!-- <test><xsl:copy-of select="."/></test> -->
|
3349
|
+
<fo:table-row number-columns-spanned="{$col_count}">
|
3350
|
+
<xsl:choose>
|
3351
|
+
<xsl:when test="$is_dt">
|
3352
|
+
<xsl:call-template name="insert_dt_cell"/>
|
3353
|
+
</xsl:when>
|
3354
|
+
<xsl:otherwise>
|
3355
|
+
<xsl:call-template name="insert_dd_cell"/>
|
3356
|
+
</xsl:otherwise>
|
3357
|
+
</xsl:choose>
|
3358
|
+
</fo:table-row>
|
3359
|
+
</xsl:for-each>
|
3360
|
+
</xsl:for-each>
|
3361
|
+
</xsl:otherwise>
|
3362
|
+
</xsl:choose>
|
3363
|
+
|
3364
|
+
</xsl:for-each>
|
3365
|
+
</fo:table-body>
|
2913
3366
|
</xsl:template><xsl:template match="*[local-name()='thead']/*[local-name()='tr']" priority="2">
|
2914
3367
|
<fo:table-row xsl:use-attribute-sets="table-header-row-style">
|
2915
3368
|
|
@@ -3011,7 +3464,7 @@
|
|
3011
3464
|
</xsl:choose>
|
3012
3465
|
</xsl:attribute>
|
3013
3466
|
</xsl:if>
|
3014
|
-
</xsl:template><xsl:template match="*[local-name()='td']">
|
3467
|
+
</xsl:template><xsl:template match="*[local-name()='td']" name="td">
|
3015
3468
|
<fo:table-cell xsl:use-attribute-sets="table-cell-style"> <!-- text-align="{@align}" -->
|
3016
3469
|
<xsl:call-template name="setTextAlignment">
|
3017
3470
|
<xsl:with-param name="default">left</xsl:with-param>
|
@@ -3050,11 +3503,24 @@
|
|
3050
3503
|
|
3051
3504
|
<xsl:call-template name="setTableCellAttributes"/>
|
3052
3505
|
|
3506
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
3507
|
+
<xsl:attribute name="border">1pt solid black</xsl:attribute> <!-- border is mandatory, to determine page width -->
|
3508
|
+
<xsl:attribute name="text-align">left</xsl:attribute>
|
3509
|
+
</xsl:if>
|
3510
|
+
|
3053
3511
|
<fo:block>
|
3054
3512
|
|
3513
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
3514
|
+
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
|
3515
|
+
</xsl:if>
|
3516
|
+
|
3517
|
+
|
3055
3518
|
|
3056
3519
|
|
3057
3520
|
<xsl:apply-templates/>
|
3521
|
+
|
3522
|
+
<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"/> -->
|
3523
|
+
|
3058
3524
|
</fo:block>
|
3059
3525
|
</fo:table-cell>
|
3060
3526
|
</xsl:template><xsl:template match="*[local-name()='table']/*[local-name()='note']" priority="2">
|
@@ -3255,9 +3721,9 @@
|
|
3255
3721
|
<!-- current hierarchy is 'figure' element -->
|
3256
3722
|
<xsl:variable name="following_dl_colwidths">
|
3257
3723
|
<xsl:if test="*[local-name() = 'dl']"><!-- if there is a 'dl', then set the same columns width as for 'dl' -->
|
3258
|
-
<xsl:variable name="
|
3259
|
-
<xsl:variable name="doc_ns">
|
3260
|
-
|
3724
|
+
<xsl:variable name="simple-table">
|
3725
|
+
<!-- <xsl:variable name="doc_ns">
|
3726
|
+
<xsl:if test="$namespace = 'bipm'">bipm</xsl:if>
|
3261
3727
|
</xsl:variable>
|
3262
3728
|
<xsl:variable name="ns">
|
3263
3729
|
<xsl:choose>
|
@@ -3268,7 +3734,7 @@
|
|
3268
3734
|
<xsl:value-of select="substring-before(name(/*), '-')"/>
|
3269
3735
|
</xsl:otherwise>
|
3270
3736
|
</xsl:choose>
|
3271
|
-
</xsl:variable>
|
3737
|
+
</xsl:variable> -->
|
3272
3738
|
|
3273
3739
|
<xsl:for-each select="*[local-name() = 'dl'][1]">
|
3274
3740
|
<tbody>
|
@@ -3279,7 +3745,7 @@
|
|
3279
3745
|
|
3280
3746
|
<xsl:call-template name="calculate-column-widths">
|
3281
3747
|
<xsl:with-param name="cols-count" select="2"/>
|
3282
|
-
<xsl:with-param name="table" select="$
|
3748
|
+
<xsl:with-param name="table" select="$simple-table"/>
|
3283
3749
|
</xsl:call-template>
|
3284
3750
|
|
3285
3751
|
</xsl:if>
|
@@ -3459,7 +3925,18 @@
|
|
3459
3925
|
|
3460
3926
|
|
3461
3927
|
|
3928
|
+
|
3929
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
3930
|
+
<!-- to determine start of table -->
|
3931
|
+
<fo:block id="{concat('table_if_start_',@id)}" keep-with-next="always" font-size="1pt">Start table '<xsl:value-of select="@id"/>'.</fo:block>
|
3932
|
+
</xsl:if>
|
3933
|
+
|
3462
3934
|
<fo:table width="95%" table-layout="fixed">
|
3935
|
+
|
3936
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
3937
|
+
<xsl:attribute name="wrap-option">no-wrap</xsl:attribute>
|
3938
|
+
</xsl:if>
|
3939
|
+
|
3463
3940
|
|
3464
3941
|
<xsl:choose>
|
3465
3942
|
<xsl:when test="normalize-space($key_iso) = 'true' and $parent = 'formula'"/>
|
@@ -3468,52 +3945,130 @@
|
|
3468
3945
|
|
3469
3946
|
</xsl:when>
|
3470
3947
|
</xsl:choose>
|
3471
|
-
|
3472
|
-
|
3473
|
-
|
3948
|
+
|
3949
|
+
|
3950
|
+
<xsl:choose>
|
3951
|
+
<xsl:when test="$isGenerateTableIF = 'true'">
|
3952
|
+
<!-- generate IF for table widths -->
|
3953
|
+
<!-- example:
|
3954
|
+
<tr>
|
3955
|
+
<td valign="top" align="left" id="tab-symdu_1_1">
|
3956
|
+
<p>Symbol</p>
|
3957
|
+
<word id="tab-symdu_1_1_word_1">Symbol</word>
|
3958
|
+
</td>
|
3959
|
+
<td valign="top" align="left" id="tab-symdu_1_2">
|
3960
|
+
<p>Description</p>
|
3961
|
+
<word id="tab-symdu_1_2_word_1">Description</word>
|
3962
|
+
</td>
|
3963
|
+
</tr>
|
3964
|
+
-->
|
3474
3965
|
|
3475
|
-
|
3476
|
-
|
3477
|
-
|
3478
|
-
<xsl:
|
3479
|
-
<
|
3480
|
-
|
3481
|
-
|
3482
|
-
|
3483
|
-
|
3484
|
-
|
3485
|
-
|
3486
|
-
|
3487
|
-
|
3488
|
-
|
3489
|
-
|
3490
|
-
|
3491
|
-
|
3492
|
-
|
3493
|
-
|
3494
|
-
|
3495
|
-
|
3496
|
-
|
3497
|
-
|
3498
|
-
|
3499
|
-
|
3500
|
-
|
3501
|
-
|
3502
|
-
|
3503
|
-
|
3504
|
-
|
3505
|
-
|
3506
|
-
|
3507
|
-
|
3508
|
-
|
3509
|
-
|
3510
|
-
|
3966
|
+
<!-- create virtual html table for dl/[dt and dd] -->
|
3967
|
+
<xsl:variable name="simple-table">
|
3968
|
+
|
3969
|
+
<xsl:variable name="dl_table">
|
3970
|
+
<tbody>
|
3971
|
+
<xsl:apply-templates mode="dl_if">
|
3972
|
+
<xsl:with-param name="id" select="@id"/>
|
3973
|
+
</xsl:apply-templates>
|
3974
|
+
</tbody>
|
3975
|
+
</xsl:variable>
|
3976
|
+
|
3977
|
+
<!-- dl_table='<xsl:copy-of select="$dl_table"/>' -->
|
3978
|
+
|
3979
|
+
<!-- Step: replace <br/> to <p>...</p> -->
|
3980
|
+
<xsl:variable name="table_without_br">
|
3981
|
+
<xsl:apply-templates select="xalan:nodeset($dl_table)" mode="table-without-br"/>
|
3982
|
+
</xsl:variable>
|
3983
|
+
|
3984
|
+
<!-- table_without_br='<xsl:copy-of select="$table_without_br"/>' -->
|
3985
|
+
|
3986
|
+
<!-- Step: add id to each cell -->
|
3987
|
+
<!-- add <word>...</word> for each word, image, math -->
|
3988
|
+
<xsl:variable name="simple-table-id">
|
3989
|
+
<xsl:apply-templates select="xalan:nodeset($table_without_br)" mode="simple-table-id">
|
3990
|
+
<xsl:with-param name="id" select="@id"/>
|
3991
|
+
</xsl:apply-templates>
|
3992
|
+
</xsl:variable>
|
3993
|
+
|
3994
|
+
<!-- simple-table-id='<xsl:copy-of select="$simple-table-id"/>' -->
|
3995
|
+
|
3996
|
+
<xsl:copy-of select="xalan:nodeset($simple-table-id)"/>
|
3997
|
+
|
3998
|
+
</xsl:variable>
|
3999
|
+
|
4000
|
+
<!-- DEBUG: simple-table<xsl:copy-of select="$simple-table"/> -->
|
4001
|
+
|
4002
|
+
<xsl:apply-templates select="xalan:nodeset($simple-table)" mode="process_table-if">
|
4003
|
+
<xsl:with-param name="table_or_dl">dl</xsl:with-param>
|
4004
|
+
</xsl:apply-templates>
|
4005
|
+
|
4006
|
+
</xsl:when>
|
4007
|
+
<xsl:otherwise>
|
3511
4008
|
|
3512
|
-
|
3513
|
-
|
3514
|
-
|
3515
|
-
|
3516
|
-
|
4009
|
+
<xsl:variable name="simple-table">
|
4010
|
+
|
4011
|
+
<xsl:variable name="dl_table">
|
4012
|
+
<tbody>
|
4013
|
+
<xsl:apply-templates mode="dl">
|
4014
|
+
<xsl:with-param name="id" select="@id"/>
|
4015
|
+
</xsl:apply-templates>
|
4016
|
+
</tbody>
|
4017
|
+
</xsl:variable>
|
4018
|
+
|
4019
|
+
<xsl:copy-of select="$dl_table"/>
|
4020
|
+
</xsl:variable>
|
4021
|
+
|
4022
|
+
<xsl:variable name="colwidths">
|
4023
|
+
<xsl:call-template name="calculate-column-widths">
|
4024
|
+
<xsl:with-param name="cols-count" select="2"/>
|
4025
|
+
<xsl:with-param name="table" select="$simple-table"/>
|
4026
|
+
</xsl:call-template>
|
4027
|
+
</xsl:variable>
|
4028
|
+
|
4029
|
+
<!-- <xsl:text disable-output-escaping="yes"><!- -</xsl:text>
|
4030
|
+
DEBUG
|
4031
|
+
colwidths=<xsl:copy-of select="$colwidths"/>
|
4032
|
+
<xsl:text disable-output-escaping="yes">- -></xsl:text> -->
|
4033
|
+
|
4034
|
+
<!-- colwidths=<xsl:copy-of select="$colwidths"/> -->
|
4035
|
+
|
4036
|
+
<xsl:variable name="maxlength_dt">
|
4037
|
+
<xsl:call-template name="getMaxLength_dt"/>
|
4038
|
+
</xsl:variable>
|
4039
|
+
|
4040
|
+
<xsl:variable name="isContainsKeepTogetherTag_">
|
4041
|
+
false
|
4042
|
+
</xsl:variable>
|
4043
|
+
<xsl:variable name="isContainsKeepTogetherTag" select="normalize-space($isContainsKeepTogetherTag_)"/>
|
4044
|
+
<!-- isContainsExpressReference=<xsl:value-of select="$isContainsExpressReference"/> -->
|
4045
|
+
|
4046
|
+
|
4047
|
+
<xsl:call-template name="setColumnWidth_dl">
|
4048
|
+
<xsl:with-param name="colwidths" select="$colwidths"/>
|
4049
|
+
<xsl:with-param name="maxlength_dt" select="$maxlength_dt"/>
|
4050
|
+
<xsl:with-param name="isContainsKeepTogetherTag" select="$isContainsKeepTogetherTag"/>
|
4051
|
+
</xsl:call-template>
|
4052
|
+
|
4053
|
+
<fo:table-body>
|
4054
|
+
|
4055
|
+
<!-- DEBUG -->
|
4056
|
+
<xsl:if test="$table_if_debug = 'true'">
|
4057
|
+
<fo:table-row>
|
4058
|
+
<fo:table-cell number-columns-spanned="2" font-size="60%">
|
4059
|
+
<xsl:apply-templates select="xalan:nodeset($colwidths)" mode="print_as_xml"/>
|
4060
|
+
</fo:table-cell>
|
4061
|
+
</fo:table-row>
|
4062
|
+
</xsl:if>
|
4063
|
+
|
4064
|
+
<xsl:apply-templates>
|
4065
|
+
<xsl:with-param name="key_iso" select="normalize-space($key_iso)"/>
|
4066
|
+
<xsl:with-param name="split_keep-within-line" select="xalan:nodeset($colwidths)/split_keep-within-line"/>
|
4067
|
+
</xsl:apply-templates>
|
4068
|
+
|
4069
|
+
</fo:table-body>
|
4070
|
+
</xsl:otherwise>
|
4071
|
+
</xsl:choose>
|
3517
4072
|
</fo:table>
|
3518
4073
|
</fo:block>
|
3519
4074
|
</fo:block>
|
@@ -3524,6 +4079,9 @@
|
|
3524
4079
|
<xsl:param name="colwidths"/>
|
3525
4080
|
<xsl:param name="maxlength_dt"/>
|
3526
4081
|
<xsl:param name="isContainsKeepTogetherTag"/>
|
4082
|
+
|
4083
|
+
<!-- <colwidths><xsl:copy-of select="$colwidths"/></colwidths> -->
|
4084
|
+
|
3527
4085
|
<xsl:choose>
|
3528
4086
|
<xsl:when test="ancestor::*[local-name()='dl']"><!-- second level, i.e. inlined table -->
|
3529
4087
|
<fo:table-column column-width="50%"/>
|
@@ -3531,6 +4089,11 @@
|
|
3531
4089
|
</xsl:when>
|
3532
4090
|
<xsl:otherwise>
|
3533
4091
|
<xsl:choose>
|
4092
|
+
<xsl:when test="xalan:nodeset($colwidths)/autolayout">
|
4093
|
+
<xsl:call-template name="insertTableColumnWidth">
|
4094
|
+
<xsl:with-param name="colwidths" select="$colwidths"/>
|
4095
|
+
</xsl:call-template>
|
4096
|
+
</xsl:when>
|
3534
4097
|
<xsl:when test="$isContainsKeepTogetherTag">
|
3535
4098
|
<xsl:call-template name="insertTableColumnWidth">
|
3536
4099
|
<xsl:with-param name="colwidths" select="$colwidths"/>
|
@@ -3575,13 +4138,19 @@
|
|
3575
4138
|
</xsl:choose>
|
3576
4139
|
</xsl:template><xsl:template name="insertTableColumnWidth">
|
3577
4140
|
<xsl:param name="colwidths"/>
|
4141
|
+
|
3578
4142
|
<xsl:for-each select="xalan:nodeset($colwidths)//column">
|
3579
4143
|
<xsl:choose>
|
3580
4144
|
<xsl:when test=". = 1 or . = 0">
|
3581
4145
|
<fo:table-column column-width="proportional-column-width(2)"/>
|
3582
4146
|
</xsl:when>
|
3583
4147
|
<xsl:otherwise>
|
3584
|
-
<fo:table-column column-width="proportional-column-width({.})"/>
|
4148
|
+
<!-- <fo:table-column column-width="proportional-column-width({.})"/> -->
|
4149
|
+
<xsl:variable name="divider">
|
4150
|
+
<xsl:value-of select="@divider"/>
|
4151
|
+
<xsl:if test="not(@divider)">1</xsl:if>
|
4152
|
+
</xsl:variable>
|
4153
|
+
<fo:table-column column-width="proportional-column-width({round(. div $divider)})"/>
|
3585
4154
|
</xsl:otherwise>
|
3586
4155
|
</xsl:choose>
|
3587
4156
|
</xsl:for-each>
|
@@ -3643,11 +4212,19 @@
|
|
3643
4212
|
</fo:table-cell>
|
3644
4213
|
</fo:table-row>
|
3645
4214
|
</xsl:template><xsl:template match="*[local-name()='dt']" mode="dl">
|
4215
|
+
<xsl:param name="id"/>
|
4216
|
+
<xsl:variable name="row_number" select="count(preceding-sibling::*[local-name()='dt']) + 1"/>
|
3646
4217
|
<tr>
|
3647
4218
|
<td>
|
4219
|
+
<xsl:attribute name="id">
|
4220
|
+
<xsl:value-of select="concat($id,'_',$row_number,'_1')"/>
|
4221
|
+
</xsl:attribute>
|
3648
4222
|
<xsl:apply-templates/>
|
3649
4223
|
</td>
|
3650
4224
|
<td>
|
4225
|
+
<xsl:attribute name="id">
|
4226
|
+
<xsl:value-of select="concat($id,'_',$row_number,'_2')"/>
|
4227
|
+
</xsl:attribute>
|
3651
4228
|
|
3652
4229
|
<xsl:apply-templates select="following-sibling::*[local-name()='dd'][1]">
|
3653
4230
|
<xsl:with-param name="process">true</xsl:with-param>
|
@@ -3658,50 +4235,122 @@
|
|
3658
4235
|
|
3659
4236
|
</xsl:template><xsl:template match="*[local-name()='dt']">
|
3660
4237
|
<xsl:param name="key_iso"/>
|
4238
|
+
<xsl:param name="split_keep-within-line"/>
|
3661
4239
|
|
3662
4240
|
<fo:table-row xsl:use-attribute-sets="dt-row-style">
|
3663
|
-
<
|
4241
|
+
<xsl:call-template name="insert_dt_cell">
|
4242
|
+
<xsl:with-param name="key_iso" select="$key_iso"/>
|
4243
|
+
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
|
4244
|
+
</xsl:call-template>
|
4245
|
+
<xsl:for-each select="following-sibling::*[local-name()='dd'][1]">
|
4246
|
+
<xsl:call-template name="insert_dd_cell">
|
4247
|
+
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
|
4248
|
+
</xsl:call-template>
|
4249
|
+
</xsl:for-each>
|
4250
|
+
</fo:table-row>
|
4251
|
+
</xsl:template><xsl:template name="insert_dt_cell">
|
4252
|
+
<xsl:param name="key_iso"/>
|
4253
|
+
<xsl:param name="split_keep-within-line"/>
|
4254
|
+
<fo:table-cell xsl:use-attribute-sets="dt-cell-style">
|
4255
|
+
|
4256
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
4257
|
+
<!-- border is mandatory, to calculate real width -->
|
4258
|
+
<xsl:attribute name="border">0.1pt solid black</xsl:attribute>
|
4259
|
+
<xsl:attribute name="text-align">left</xsl:attribute>
|
4260
|
+
</xsl:if>
|
4261
|
+
|
4262
|
+
|
4263
|
+
<fo:block xsl:use-attribute-sets="dt-block-style">
|
4264
|
+
<xsl:copy-of select="@id"/>
|
4265
|
+
|
4266
|
+
<xsl:if test="normalize-space($key_iso) = 'true'">
|
4267
|
+
<xsl:attribute name="margin-top">0</xsl:attribute>
|
4268
|
+
</xsl:if>
|
4269
|
+
|
4270
|
+
|
4271
|
+
|
4272
|
+
<xsl:apply-templates>
|
4273
|
+
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
|
4274
|
+
</xsl:apply-templates>
|
4275
|
+
|
4276
|
+
<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"/> -->
|
4277
|
+
|
4278
|
+
</fo:block>
|
4279
|
+
</fo:table-cell>
|
4280
|
+
</xsl:template><xsl:template name="insert_dd_cell">
|
4281
|
+
<xsl:param name="split_keep-within-line"/>
|
4282
|
+
<fo:table-cell xsl:use-attribute-sets="dd-cell-style">
|
4283
|
+
|
4284
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
4285
|
+
<!-- border is mandatory, to calculate real width -->
|
4286
|
+
<xsl:attribute name="border">0.1pt solid black</xsl:attribute>
|
4287
|
+
</xsl:if>
|
4288
|
+
|
4289
|
+
<fo:block>
|
4290
|
+
|
4291
|
+
<xsl:if test="$isGenerateTableIF = 'true'">
|
4292
|
+
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
|
4293
|
+
</xsl:if>
|
4294
|
+
|
3664
4295
|
|
3665
|
-
<fo:block xsl:use-attribute-sets="dt-style">
|
3666
|
-
<xsl:copy-of select="@id"/>
|
3667
|
-
|
3668
|
-
<xsl:if test="normalize-space($key_iso) = 'true'">
|
3669
|
-
<xsl:attribute name="margin-top">0</xsl:attribute>
|
3670
|
-
</xsl:if>
|
3671
|
-
|
3672
|
-
|
3673
|
-
|
3674
|
-
<xsl:apply-templates/>
|
3675
|
-
</fo:block>
|
3676
|
-
</fo:table-cell>
|
3677
|
-
<fo:table-cell>
|
3678
|
-
<fo:block>
|
3679
|
-
|
3680
4296
|
|
3681
|
-
|
3682
|
-
|
3683
|
-
|
3684
|
-
|
3685
|
-
|
3686
|
-
|
4297
|
+
<xsl:choose>
|
4298
|
+
<xsl:when test="$isGenerateTableIF = 'true'">
|
4299
|
+
<xsl:apply-templates> <!-- following-sibling::*[local-name()='dd'][1] -->
|
4300
|
+
<xsl:with-param name="process">true</xsl:with-param>
|
4301
|
+
</xsl:apply-templates>
|
4302
|
+
</xsl:when>
|
4303
|
+
<xsl:otherwise>
|
4304
|
+
<xsl:apply-templates select="."> <!-- following-sibling::*[local-name()='dd'][1] -->
|
4305
|
+
<xsl:with-param name="process">true</xsl:with-param>
|
4306
|
+
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
|
4307
|
+
</xsl:apply-templates>
|
4308
|
+
</xsl:otherwise>
|
4309
|
+
|
4310
|
+
</xsl:choose>
|
4311
|
+
|
4312
|
+
<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"/> -->
|
4313
|
+
|
4314
|
+
</fo:block>
|
4315
|
+
</fo:table-cell>
|
3687
4316
|
</xsl:template><xsl:template match="*[local-name()='dd']" mode="dl"/><xsl:template match="*[local-name()='dd']" mode="dl_process">
|
3688
4317
|
<xsl:apply-templates/>
|
3689
4318
|
</xsl:template><xsl:template match="*[local-name()='dd']">
|
3690
4319
|
<xsl:param name="process">false</xsl:param>
|
4320
|
+
<xsl:param name="split_keep-within-line"/>
|
3691
4321
|
<xsl:if test="$process = 'true'">
|
3692
4322
|
<xsl:apply-templates select="@language"/>
|
3693
|
-
<xsl:apply-templates
|
4323
|
+
<xsl:apply-templates>
|
4324
|
+
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
|
4325
|
+
</xsl:apply-templates>
|
3694
4326
|
</xsl:if>
|
3695
4327
|
</xsl:template><xsl:template match="*[local-name()='dd']/*[local-name()='p']" mode="inline">
|
3696
4328
|
<fo:inline><xsl:text> </xsl:text><xsl:apply-templates/></fo:inline>
|
3697
|
-
</xsl:template><xsl:template match="*[local-name()='
|
4329
|
+
</xsl:template><xsl:template match="*[local-name()='dt']" mode="dl_if">
|
4330
|
+
<xsl:param name="id"/>
|
4331
|
+
<xsl:variable name="row_number" select="count(preceding-sibling::*[local-name()='dt']) + 1"/>
|
4332
|
+
<tr>
|
4333
|
+
<td>
|
4334
|
+
<xsl:copy-of select="node()"/>
|
4335
|
+
</td>
|
4336
|
+
<td>
|
4337
|
+
|
4338
|
+
<xsl:copy-of select="following-sibling::*[local-name()='dd'][1]/node()"/>
|
4339
|
+
|
4340
|
+
</td>
|
4341
|
+
</tr>
|
4342
|
+
|
4343
|
+
</xsl:template><xsl:template match="*[local-name()='dd']" mode="dl_if"/><xsl:template match="*[local-name()='em']">
|
3698
4344
|
<fo:inline font-style="italic">
|
3699
4345
|
<xsl:apply-templates/>
|
3700
4346
|
</fo:inline>
|
3701
4347
|
</xsl:template><xsl:template match="*[local-name()='strong'] | *[local-name()='b']">
|
4348
|
+
<xsl:param name="split_keep-within-line"/>
|
3702
4349
|
<fo:inline font-weight="bold">
|
3703
4350
|
|
3704
|
-
<xsl:apply-templates
|
4351
|
+
<xsl:apply-templates>
|
4352
|
+
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
|
4353
|
+
</xsl:apply-templates>
|
3705
4354
|
</fo:inline>
|
3706
4355
|
</xsl:template><xsl:template match="*[local-name()='padding']">
|
3707
4356
|
<fo:inline padding-right="{@value}"> </fo:inline>
|
@@ -3902,6 +4551,10 @@
|
|
3902
4551
|
<xsl:param name="text"/>
|
3903
4552
|
<xsl:param name="separator" select="' '"/>
|
3904
4553
|
<xsl:choose>
|
4554
|
+
|
4555
|
+
<xsl:when test="$isGenerateTableIF = 'true' and not(contains($text, $separator))">
|
4556
|
+
<word><xsl:value-of select="normalize-space($text)"/></word>
|
4557
|
+
</xsl:when>
|
3905
4558
|
<xsl:when test="not(contains($text, $separator))">
|
3906
4559
|
<word>
|
3907
4560
|
<xsl:variable name="len_str_tmp" select="string-length(normalize-space($text))"/>
|
@@ -3946,13 +4599,66 @@
|
|
3946
4599
|
</xsl:when>
|
3947
4600
|
<xsl:otherwise>
|
3948
4601
|
<word>
|
3949
|
-
<xsl:
|
4602
|
+
<xsl:variable name="word" select="normalize-space(substring-before($text, $separator))"/>
|
4603
|
+
<xsl:choose>
|
4604
|
+
<xsl:when test="$isGenerateTableIF = 'true'">
|
4605
|
+
<xsl:value-of select="$word"/>
|
4606
|
+
</xsl:when>
|
4607
|
+
<xsl:otherwise>
|
4608
|
+
<xsl:value-of select="string-length($word)"/>
|
4609
|
+
</xsl:otherwise>
|
4610
|
+
</xsl:choose>
|
3950
4611
|
</word>
|
3951
4612
|
<xsl:call-template name="tokenize">
|
3952
4613
|
<xsl:with-param name="text" select="substring-after($text, $separator)"/>
|
3953
4614
|
</xsl:call-template>
|
3954
4615
|
</xsl:otherwise>
|
3955
4616
|
</xsl:choose>
|
4617
|
+
</xsl:template><xsl:template name="tokenize_with_tags">
|
4618
|
+
<xsl:param name="tags"/>
|
4619
|
+
<xsl:param name="text"/>
|
4620
|
+
<xsl:param name="separator" select="' '"/>
|
4621
|
+
<xsl:choose>
|
4622
|
+
|
4623
|
+
<xsl:when test="not(contains($text, $separator))">
|
4624
|
+
<word>
|
4625
|
+
<xsl:call-template name="enclose_text_in_tags">
|
4626
|
+
<xsl:with-param name="text" select="normalize-space($text)"/>
|
4627
|
+
<xsl:with-param name="tags" select="$tags"/>
|
4628
|
+
</xsl:call-template>
|
4629
|
+
</word>
|
4630
|
+
</xsl:when>
|
4631
|
+
<xsl:otherwise>
|
4632
|
+
<word>
|
4633
|
+
<xsl:call-template name="enclose_text_in_tags">
|
4634
|
+
<xsl:with-param name="text" select="normalize-space(substring-before($text, $separator))"/>
|
4635
|
+
<xsl:with-param name="tags" select="$tags"/>
|
4636
|
+
</xsl:call-template>
|
4637
|
+
</word>
|
4638
|
+
<xsl:call-template name="tokenize_with_tags">
|
4639
|
+
<xsl:with-param name="text" select="substring-after($text, $separator)"/>
|
4640
|
+
</xsl:call-template>
|
4641
|
+
</xsl:otherwise>
|
4642
|
+
</xsl:choose>
|
4643
|
+
</xsl:template><xsl:template name="enclose_text_in_tags">
|
4644
|
+
<xsl:param name="text"/>
|
4645
|
+
<xsl:param name="tags"/>
|
4646
|
+
<xsl:param name="num">1</xsl:param> <!-- default (start) value -->
|
4647
|
+
|
4648
|
+
<xsl:variable name="tag_name" select="normalize-space(xalan:nodeset($tags)//tag[$num])"/>
|
4649
|
+
|
4650
|
+
<xsl:choose>
|
4651
|
+
<xsl:when test="$tag_name = ''"><xsl:value-of select="$text"/></xsl:when>
|
4652
|
+
<xsl:otherwise>
|
4653
|
+
<xsl:element name="{$tag_name}">
|
4654
|
+
<xsl:call-template name="enclose_text_in_tags">
|
4655
|
+
<xsl:with-param name="text" select="$text"/>
|
4656
|
+
<xsl:with-param name="tags" select="$tags"/>
|
4657
|
+
<xsl:with-param name="num" select="$num + 1"/>
|
4658
|
+
</xsl:call-template>
|
4659
|
+
</xsl:element>
|
4660
|
+
</xsl:otherwise>
|
4661
|
+
</xsl:choose>
|
3956
4662
|
</xsl:template><xsl:template name="max_length">
|
3957
4663
|
<xsl:param name="words"/>
|
3958
4664
|
<xsl:for-each select="$words//word">
|
@@ -4053,12 +4759,19 @@
|
|
4053
4759
|
</xsl:otherwise>
|
4054
4760
|
</xsl:choose>
|
4055
4761
|
</xsl:template><xsl:template name="getSimpleTable">
|
4762
|
+
<xsl:param name="id"/>
|
4763
|
+
|
4056
4764
|
<xsl:variable name="simple-table">
|
4057
4765
|
|
4766
|
+
<!-- Step 0. replace <br/> to <p>...</p> -->
|
4767
|
+
<xsl:variable name="table_without_br">
|
4768
|
+
<xsl:apply-templates mode="table-without-br"/>
|
4769
|
+
</xsl:variable>
|
4770
|
+
|
4058
4771
|
<!-- Step 1. colspan processing -->
|
4059
4772
|
<xsl:variable name="simple-table-colspan">
|
4060
4773
|
<tbody>
|
4061
|
-
<xsl:apply-templates mode="simple-table-colspan"/>
|
4774
|
+
<xsl:apply-templates select="xalan:nodeset($table_without_br)" mode="simple-table-colspan"/>
|
4062
4775
|
</tbody>
|
4063
4776
|
</xsl:variable>
|
4064
4777
|
|
@@ -4067,10 +4780,67 @@
|
|
4067
4780
|
<xsl:apply-templates select="xalan:nodeset($simple-table-colspan)" mode="simple-table-rowspan"/>
|
4068
4781
|
</xsl:variable>
|
4069
4782
|
|
4070
|
-
|
4071
|
-
|
4783
|
+
<!-- Step 3: add id to each cell -->
|
4784
|
+
<!-- add <word>...</word> for each word, image, math -->
|
4785
|
+
<xsl:variable name="simple-table-id">
|
4786
|
+
<xsl:apply-templates select="xalan:nodeset($simple-table-rowspan)" mode="simple-table-id">
|
4787
|
+
<xsl:with-param name="id" select="$id"/>
|
4788
|
+
</xsl:apply-templates>
|
4789
|
+
</xsl:variable>
|
4790
|
+
|
4791
|
+
<xsl:copy-of select="xalan:nodeset($simple-table-id)"/>
|
4792
|
+
|
4072
4793
|
</xsl:variable>
|
4073
4794
|
<xsl:copy-of select="$simple-table"/>
|
4795
|
+
</xsl:template><xsl:template match="@*|node()" mode="table-without-br">
|
4796
|
+
<xsl:copy>
|
4797
|
+
<xsl:apply-templates select="@*|node()" mode="table-without-br"/>
|
4798
|
+
</xsl:copy>
|
4799
|
+
</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">
|
4800
|
+
<xsl:copy>
|
4801
|
+
<xsl:copy-of select="@*"/>
|
4802
|
+
<p>
|
4803
|
+
<xsl:copy-of select="node()"/>
|
4804
|
+
</p>
|
4805
|
+
</xsl:copy>
|
4806
|
+
</xsl:template><xsl:template match="*[local-name()='th' or local-name()='td'][*[local-name()='br']]" mode="table-without-br">
|
4807
|
+
<xsl:copy>
|
4808
|
+
<xsl:copy-of select="@*"/>
|
4809
|
+
<xsl:for-each select="*[local-name()='br']">
|
4810
|
+
<xsl:variable name="current_id" select="generate-id()"/>
|
4811
|
+
<p>
|
4812
|
+
<xsl:for-each select="preceding-sibling::node()[following-sibling::*[local-name() = 'br'][1][generate-id() = $current_id]][not(local-name() = 'br')]">
|
4813
|
+
<xsl:copy-of select="."/>
|
4814
|
+
</xsl:for-each>
|
4815
|
+
</p>
|
4816
|
+
<xsl:if test="not(following-sibling::*[local-name() = 'br'])">
|
4817
|
+
<p>
|
4818
|
+
<xsl:for-each select="following-sibling::node()">
|
4819
|
+
<xsl:copy-of select="."/>
|
4820
|
+
</xsl:for-each>
|
4821
|
+
</p>
|
4822
|
+
</xsl:if>
|
4823
|
+
</xsl:for-each>
|
4824
|
+
</xsl:copy>
|
4825
|
+
</xsl:template><xsl:template match="*[local-name()='th' or local-name()='td']/*[local-name() = 'p'][*[local-name()='br']]" mode="table-without-br">
|
4826
|
+
<xsl:for-each select="*[local-name()='br']">
|
4827
|
+
<xsl:variable name="current_id" select="generate-id()"/>
|
4828
|
+
<p>
|
4829
|
+
<xsl:for-each select="preceding-sibling::node()[following-sibling::*[local-name() = 'br'][1][generate-id() = $current_id]][not(local-name() = 'br')]">
|
4830
|
+
<xsl:copy-of select="."/>
|
4831
|
+
</xsl:for-each>
|
4832
|
+
</p>
|
4833
|
+
<xsl:if test="not(following-sibling::*[local-name() = 'br'])">
|
4834
|
+
<p>
|
4835
|
+
<xsl:for-each select="following-sibling::node()">
|
4836
|
+
<xsl:copy-of select="."/>
|
4837
|
+
</xsl:for-each>
|
4838
|
+
</p>
|
4839
|
+
</xsl:if>
|
4840
|
+
</xsl:for-each>
|
4841
|
+
</xsl:template><xsl:template match="text()[not(ancestor::*[local-name() = 'sourcecode'])]" mode="table-without-br">
|
4842
|
+
<xsl:variable name="text" select="translate(.,'	 ','')"/>
|
4843
|
+
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($text),' {2,}',' ')"/>
|
4074
4844
|
</xsl:template><xsl:template match="*[local-name()='thead'] | *[local-name()='tbody']" mode="simple-table-colspan">
|
4075
4845
|
<xsl:apply-templates mode="simple-table-colspan"/>
|
4076
4846
|
</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">
|
@@ -4160,6 +4930,126 @@
|
|
4160
4930
|
<xsl:apply-templates select="following-sibling::tr[1]" mode="simple-table-rowspan">
|
4161
4931
|
<xsl:with-param name="previousRow" select="$newRow"/>
|
4162
4932
|
</xsl:apply-templates>
|
4933
|
+
</xsl:template><xsl:template match="/" mode="simple-table-id">
|
4934
|
+
<xsl:param name="id"/>
|
4935
|
+
<xsl:variable name="id_prefixed" select="concat('table_if_',$id)"/> <!-- table id prefixed by 'table_if_' to simple search in IF -->
|
4936
|
+
<xsl:apply-templates select="@*|node()" mode="simple-table-id">
|
4937
|
+
<xsl:with-param name="id" select="$id_prefixed"/>
|
4938
|
+
</xsl:apply-templates>
|
4939
|
+
</xsl:template><xsl:template match="@*|node()" mode="simple-table-id">
|
4940
|
+
<xsl:param name="id"/>
|
4941
|
+
<xsl:copy>
|
4942
|
+
<xsl:apply-templates select="@*|node()" mode="simple-table-id">
|
4943
|
+
<xsl:with-param name="id" select="$id"/>
|
4944
|
+
</xsl:apply-templates>
|
4945
|
+
</xsl:copy>
|
4946
|
+
</xsl:template><xsl:template match="*[local-name()='tbody']" mode="simple-table-id">
|
4947
|
+
<xsl:param name="id"/>
|
4948
|
+
<xsl:copy>
|
4949
|
+
<xsl:copy-of select="@*"/>
|
4950
|
+
<xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
|
4951
|
+
<xsl:apply-templates select="node()" mode="simple-table-id">
|
4952
|
+
<xsl:with-param name="id" select="$id"/>
|
4953
|
+
</xsl:apply-templates>
|
4954
|
+
</xsl:copy>
|
4955
|
+
</xsl:template><xsl:template match="*[local-name()='th' or local-name()='td']" mode="simple-table-id">
|
4956
|
+
<xsl:param name="id"/>
|
4957
|
+
<xsl:copy>
|
4958
|
+
<xsl:copy-of select="@*"/>
|
4959
|
+
<xsl:variable name="row_number" select="count(../preceding-sibling::*) + 1"/>
|
4960
|
+
<xsl:variable name="col_number" select="count(preceding-sibling::*) + 1"/>
|
4961
|
+
<xsl:attribute name="id">
|
4962
|
+
<xsl:value-of select="concat($id,'_',$row_number,'_',$col_number)"/>
|
4963
|
+
</xsl:attribute>
|
4964
|
+
|
4965
|
+
<xsl:for-each select="*[local-name() = 'p']">
|
4966
|
+
<xsl:copy>
|
4967
|
+
<xsl:copy-of select="@*"/>
|
4968
|
+
<xsl:variable name="p_num" select="count(preceding-sibling::*[local-name() = 'p']) + 1"/>
|
4969
|
+
<xsl:attribute name="id">
|
4970
|
+
<xsl:value-of select="concat($id,'_',$row_number,'_',$col_number,'_p_',$p_num)"/>
|
4971
|
+
</xsl:attribute>
|
4972
|
+
|
4973
|
+
<xsl:copy-of select="node()"/>
|
4974
|
+
</xsl:copy>
|
4975
|
+
</xsl:for-each>
|
4976
|
+
|
4977
|
+
|
4978
|
+
<xsl:if test="$isGenerateTableIF = 'true'"> <!-- split each paragraph to words, image, math -->
|
4979
|
+
|
4980
|
+
<xsl:variable name="td_text">
|
4981
|
+
<xsl:apply-templates select="." mode="td_text_with_formatting"/>
|
4982
|
+
</xsl:variable>
|
4983
|
+
|
4984
|
+
<!-- td_text='<xsl:copy-of select="$td_text"/>' -->
|
4985
|
+
|
4986
|
+
<xsl:variable name="words">
|
4987
|
+
<xsl:for-each select=".//*[local-name() = 'image' or local-name() = 'stem']">
|
4988
|
+
<word>
|
4989
|
+
<xsl:copy-of select="."/>
|
4990
|
+
</word>
|
4991
|
+
</xsl:for-each>
|
4992
|
+
|
4993
|
+
<xsl:for-each select="xalan:nodeset($td_text)//*[local-name() = 'word'][normalize-space() != '']">
|
4994
|
+
<xsl:copy-of select="."/>
|
4995
|
+
</xsl:for-each>
|
4996
|
+
|
4997
|
+
</xsl:variable>
|
4998
|
+
|
4999
|
+
<xsl:for-each select="xalan:nodeset($words)/word">
|
5000
|
+
<xsl:variable name="num" select="count(preceding-sibling::word) + 1"/>
|
5001
|
+
<xsl:copy>
|
5002
|
+
<xsl:attribute name="id">
|
5003
|
+
<xsl:value-of select="concat($id,'_',$row_number,'_',$col_number,'_word_',$num)"/>
|
5004
|
+
</xsl:attribute>
|
5005
|
+
<xsl:copy-of select="node()"/>
|
5006
|
+
</xsl:copy>
|
5007
|
+
</xsl:for-each>
|
5008
|
+
</xsl:if>
|
5009
|
+
</xsl:copy>
|
5010
|
+
|
5011
|
+
</xsl:template><xsl:template match="@*|node()" mode="td_text_with_formatting">
|
5012
|
+
<xsl:copy>
|
5013
|
+
<xsl:apply-templates select="@*|node()" mode="td_text_with_formatting"/>
|
5014
|
+
</xsl:copy>
|
5015
|
+
</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">
|
5016
|
+
<xsl:variable name="formatting_tags">
|
5017
|
+
<xsl:call-template name="getFormattingTags"/>
|
5018
|
+
</xsl:variable>
|
5019
|
+
<word>
|
5020
|
+
<xsl:call-template name="enclose_text_in_tags">
|
5021
|
+
<xsl:with-param name="text" select="normalize-space(.)"/>
|
5022
|
+
<xsl:with-param name="tags" select="$formatting_tags"/>
|
5023
|
+
</xsl:call-template>
|
5024
|
+
</word>
|
5025
|
+
</xsl:template><xsl:template match="*[local-name() != 'keep-together_within-line']/text()" mode="td_text_with_formatting">
|
5026
|
+
|
5027
|
+
<xsl:variable name="td_text" select="."/>
|
5028
|
+
|
5029
|
+
<xsl:variable name="string_with_added_zerospaces">
|
5030
|
+
<xsl:call-template name="add-zero-spaces-java">
|
5031
|
+
<xsl:with-param name="text" select="$td_text"/>
|
5032
|
+
</xsl:call-template>
|
5033
|
+
</xsl:variable>
|
5034
|
+
|
5035
|
+
<xsl:variable name="formatting_tags">
|
5036
|
+
<xsl:call-template name="getFormattingTags"/>
|
5037
|
+
</xsl:variable>
|
5038
|
+
|
5039
|
+
<!-- <word>text</word> -->
|
5040
|
+
<xsl:call-template name="tokenize_with_tags">
|
5041
|
+
<xsl:with-param name="tags" select="$formatting_tags"/>
|
5042
|
+
<xsl:with-param name="text" select="normalize-space(translate($string_with_added_zerospaces, '', ' '))"/> <!-- replace zero-width-space and soft-hyphen to space -->
|
5043
|
+
</xsl:call-template>
|
5044
|
+
</xsl:template><xsl:template name="getFormattingTags">
|
5045
|
+
<tags>
|
5046
|
+
<xsl:if test="ancestor::*[local-name() = 'strong']"><tag>strong</tag></xsl:if>
|
5047
|
+
<xsl:if test="ancestor::*[local-name() = 'em']"><tag>em</tag></xsl:if>
|
5048
|
+
<xsl:if test="ancestor::*[local-name() = 'sub']"><tag>sub</tag></xsl:if>
|
5049
|
+
<xsl:if test="ancestor::*[local-name() = 'sup']"><tag>sup</tag></xsl:if>
|
5050
|
+
<xsl:if test="ancestor::*[local-name() = 'tt']"><tag>tt</tag></xsl:if>
|
5051
|
+
<xsl:if test="ancestor::*[local-name() = 'keep-together_within-line']"><tag>keep-together_within-line</tag></xsl:if>
|
5052
|
+
</tags>
|
4163
5053
|
</xsl:template><xsl:template name="getLang">
|
4164
5054
|
<xsl:variable name="language_current" select="normalize-space(//*[local-name()='bibdata']//*[local-name()='language'][@current = 'true'])"/>
|
4165
5055
|
<xsl:variable name="language">
|
@@ -5874,7 +6764,9 @@
|
|
5874
6764
|
<!-- <xsl:attribute name="border">0.5pt solid black</xsl:attribute> -->
|
5875
6765
|
</xsl:if>
|
5876
6766
|
<xsl:variable name="simple-table">
|
5877
|
-
<xsl:call-template name="getSimpleTable"
|
6767
|
+
<xsl:call-template name="getSimpleTable">
|
6768
|
+
<xsl:with-param name="id" select="@id"/>
|
6769
|
+
</xsl:call-template>
|
5878
6770
|
</xsl:variable>
|
5879
6771
|
<xsl:variable name="cols-count" select="count(xalan:nodeset($simple-table)//tr[1]/td)"/>
|
5880
6772
|
<xsl:if test="$cols-count = 2 and not(ancestor::*[local-name()='table'])">
|
@@ -6834,7 +7726,7 @@
|
|
6834
7726
|
<!-- <fo:inline id="{@id}" font-size="1pt"/> -->
|
6835
7727
|
<fo:inline id="{@id}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:inline>
|
6836
7728
|
<!-- we need to add zero-width space, otherwise this fo:inline is missing in IF xml -->
|
6837
|
-
<xsl:if test="not(following-sibling::node()[normalize-space() != ''])"> </xsl:if>
|
7729
|
+
<xsl:if test="not(following-sibling::node()[normalize-space() != ''])"><fo:inline font-size="1pt"> </fo:inline></xsl:if>
|
6838
7730
|
</xsl:template><xsl:template match="*[local-name() = 'errata']">
|
6839
7731
|
<!-- <row>
|
6840
7732
|
<date>05-07-2013</date>
|
@@ -8155,4 +9047,40 @@
|
|
8155
9047
|
<xsl:value-of select="$value"/>
|
8156
9048
|
</xsl:otherwise>
|
8157
9049
|
</xsl:choose>
|
9050
|
+
</xsl:template><xsl:template match="*" mode="print_as_xml">
|
9051
|
+
<xsl:param name="level">0</xsl:param>
|
9052
|
+
|
9053
|
+
<fo:block margin-left="{2*$level}mm">
|
9054
|
+
<xsl:text>
|
9055
|
+
<</xsl:text>
|
9056
|
+
<xsl:value-of select="local-name()"/>
|
9057
|
+
<xsl:for-each select="@*">
|
9058
|
+
<xsl:text> </xsl:text>
|
9059
|
+
<xsl:value-of select="local-name()"/>
|
9060
|
+
<xsl:text>="</xsl:text>
|
9061
|
+
<xsl:value-of select="."/>
|
9062
|
+
<xsl:text>"</xsl:text>
|
9063
|
+
</xsl:for-each>
|
9064
|
+
<xsl:text>></xsl:text>
|
9065
|
+
|
9066
|
+
<xsl:if test="not(*)">
|
9067
|
+
<fo:inline font-weight="bold"><xsl:value-of select="."/></fo:inline>
|
9068
|
+
<xsl:text></</xsl:text>
|
9069
|
+
<xsl:value-of select="local-name()"/>
|
9070
|
+
<xsl:text>></xsl:text>
|
9071
|
+
</xsl:if>
|
9072
|
+
</fo:block>
|
9073
|
+
|
9074
|
+
<xsl:if test="*">
|
9075
|
+
<fo:block>
|
9076
|
+
<xsl:apply-templates mode="print_as_xml">
|
9077
|
+
<xsl:with-param name="level" select="$level + 1"/>
|
9078
|
+
</xsl:apply-templates>
|
9079
|
+
</fo:block>
|
9080
|
+
<fo:block margin-left="{2*$level}mm">
|
9081
|
+
<xsl:text></</xsl:text>
|
9082
|
+
<xsl:value-of select="local-name()"/>
|
9083
|
+
<xsl:text>></xsl:text>
|
9084
|
+
</fo:block>
|
9085
|
+
</xsl:if>
|
8158
9086
|
</xsl:template></xsl:stylesheet>
|