metanorma-iho 0.7.4 → 0.7.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d32cbaa857fe5083ce8d434831b7f9124205fafe7401c244f8034ae90004aa81
4
- data.tar.gz: d3b34abd94dfbbb636fbc07d86565faabaaa6a5c179ee773f32e275dfa7ce21a
3
+ metadata.gz: 12eb31ff59fda5679c4aad936fdd15576d12967a8453842c4fbf75e4c48ae18e
4
+ data.tar.gz: dc8fa3b74a13882d829ab20660225e06b21537d1059df84d0e9791360ca2b311
5
5
  SHA512:
6
- metadata.gz: ac677f15e9b347f9c436d1e5d2ad0aadd6b876b67625f79b8d028be3f60e1681bb54e52f26f7b499f473eefa7bbc567a659db76f6b90e030b8c2142e7f690869
7
- data.tar.gz: 0e1978eac7b0cf129df8d90a357f4679e0b2f927b1059847ed1a9fa3b70314d4d58119f1de845720534ea52f85ca77ff43cbcc1cf46e956715504d45c5558f92
6
+ metadata.gz: 77d8b4f49f0cd3b15d4fb93a21192851005ddccc21bbc693dcac5835656ec7dd491b3dcd06eb48d2e769763373da56b3d0e1ac07d5d1188ec5db88f2622ba677
7
+ data.tar.gz: 793feae3e390979825af2d19755b995aefc693238837a4b39182021f0e5b5d83e89acdd3302292bb69754732170575ea532971f8764b5821a40bcc1af08423d5
@@ -437,6 +437,10 @@ div.figure {
437
437
  max-width: 100%;
438
438
  height: auto; }
439
439
 
440
+ table div.figure {
441
+ padding: 0;
442
+ margin: 0; }
443
+
440
444
  /*
441
445
  Document types + stages
442
446
  */
@@ -88,6 +88,12 @@ div.figure {
88
88
  @include figureBlock();
89
89
  }
90
90
 
91
+ table div.figure {
92
+ padding: 0;
93
+ margin: 0;
94
+ }
95
+
96
+
91
97
  /*
92
98
  Document types + stages
93
99
  */
@@ -357,6 +357,7 @@
357
357
  <xsl:apply-templates select="/*/*[local-name()='sections']/*[local-name()='definitions']"/>
358
358
  <xsl:apply-templates select="/*/*[local-name()='sections']/*[local-name() != 'terms' and local-name() != 'definitions' and not(@type='scope')]"/>
359
359
 
360
+ <xsl:if test="$table_if = 'true'"><fo:block/></xsl:if>
360
361
  </fo:block-container>
361
362
  </fo:flow>
362
363
  </fo:page-sequence>
@@ -373,6 +374,8 @@
373
374
  <fo:flow flow-name="xsl-region-body">
374
375
  <fo:block-container>
375
376
  <xsl:apply-templates select="/*/*[local-name()='annex']"/>
377
+
378
+ <xsl:if test="$table_if = 'true'"><fo:block/></xsl:if>
376
379
  </fo:block-container>
377
380
  </fo:flow>
378
381
  </fo:page-sequence>
@@ -390,6 +393,8 @@
390
393
  <fo:block-container>
391
394
  <!-- Bibliography -->
392
395
  <xsl:apply-templates select="/*/*[local-name()='bibliography']/*[local-name()='references'][not(@normative='true')]"/>
396
+
397
+ <xsl:if test="$table_if = 'true'"><fo:block/></xsl:if>
393
398
  </fo:block-container>
394
399
  </fo:flow>
395
400
  </fo:page-sequence>
@@ -2639,7 +2644,7 @@
2639
2644
  <xsl:variable name="isDeleted" select="@deleted"/>
2640
2645
 
2641
2646
  <xsl:choose>
2642
- <xsl:when test="@width">
2647
+ <xsl:when test="@width and @width != 'full-page-width' and @width != 'text-width'">
2643
2648
 
2644
2649
  <!-- centered table when table name is centered (see table-name-style) -->
2645
2650
 
@@ -2964,6 +2969,7 @@
2964
2969
  This makes columns with large differences between minimum and maximum widths wider than columns with smaller differences. -->
2965
2970
  <xsl:when test="(@width_max &gt; $page_width and @width_min &lt; $page_width) or (@width_min &gt;= $page_width)">
2966
2971
  <!-- difference between the available space and the minimum table width -->
2972
+ <_width_min><xsl:value-of select="@width_min"/></_width_min>
2967
2973
  <xsl:variable name="W" select="$page_width - @width_min"/>
2968
2974
  <W><xsl:value-of select="$W"/></W>
2969
2975
  <!-- difference between maximum and minimum width of the table -->
@@ -3581,17 +3587,20 @@
3581
3587
  <xsl:for-each select="xalan:nodeset($references)//fn">
3582
3588
  <xsl:variable name="reference" select="@reference"/>
3583
3589
  <xsl:if test="not(preceding-sibling::*[@reference = $reference])"> <!-- only unique reference puts in note-->
3584
- <fo:block xsl:use-attribute-sets="table-fn-style">
3585
3590
 
3586
- <fo:inline id="{@id}" xsl:use-attribute-sets="table-fn-number-style">
3591
+ <fo:block xsl:use-attribute-sets="table-fn-style">
3587
3592
 
3588
- <xsl:value-of select="@reference"/>
3593
+ <fo:inline id="{@id}" xsl:use-attribute-sets="table-fn-number-style">
3594
+
3595
+ <xsl:value-of select="@reference"/>
3596
+
3597
+ </fo:inline>
3598
+ <fo:inline xsl:use-attribute-sets="table-fn-body-style">
3599
+ <xsl:copy-of select="./node()"/>
3600
+ </fo:inline>
3601
+
3602
+ </fo:block>
3589
3603
 
3590
- </fo:inline>
3591
- <fo:inline xsl:use-attribute-sets="table-fn-body-style">
3592
- <xsl:copy-of select="./node()"/>
3593
- </fo:inline>
3594
- </fo:block>
3595
3604
  </xsl:if>
3596
3605
  </xsl:for-each>
3597
3606
  </xsl:template>
@@ -4534,12 +4543,12 @@
4534
4543
  <xsl:param name="value"/>
4535
4544
  <xsl:variable name="add_width" select="string-length($value) * 20"/>
4536
4545
  <xsl:variable name="maxwidth" select="60 + $add_width"/>
4537
- <fo:instream-foreign-object fox:alt-text="OpeningTag" baseline-shift="-20%"><!-- alignment-baseline="middle" -->
4538
- <xsl:attribute name="height">5mm</xsl:attribute>
4546
+ <fo:instream-foreign-object fox:alt-text="OpeningTag" baseline-shift="-10%"><!-- alignment-baseline="middle" -->
4547
+ <xsl:attribute name="height">3.5mm</xsl:attribute> <!-- 5mm -->
4539
4548
  <xsl:attribute name="content-width">100%</xsl:attribute>
4540
4549
  <xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
4541
4550
  <xsl:attribute name="scaling">uniform</xsl:attribute>
4542
- <svg xmlns="http://www.w3.org/2000/svg" width="{$maxwidth + 32}" height="80">
4551
+ <!-- <svg xmlns="http://www.w3.org/2000/svg" width="{$maxwidth + 32}" height="80">
4543
4552
  <g>
4544
4553
  <xsl:if test="$type = 'closing' or $type = 'end'">
4545
4554
  <xsl:attribute name="transform">scale(-1 1) translate(-<xsl:value-of select="$maxwidth + 32"/>,0)</xsl:attribute>
@@ -4553,6 +4562,27 @@
4553
4562
  </xsl:if>
4554
4563
  <xsl:value-of select="$kind"/><tspan dy="10" font-size="30pt"><xsl:value-of select="$value"/></tspan>
4555
4564
  </text>
4565
+ </svg> -->
4566
+ <svg xmlns="http://www.w3.org/2000/svg" width="{$maxwidth + 32}" height="80">
4567
+ <g>
4568
+ <xsl:if test="$type = 'closing' or $type = 'end'">
4569
+ <xsl:attribute name="transform">scale(-1 1) translate(-<xsl:value-of select="$maxwidth + 32"/>,0)</xsl:attribute>
4570
+ </xsl:if>
4571
+ <polyline points="0,2.5 {$maxwidth},2.5 {$maxwidth + 20},40 {$maxwidth},77.5 0,77.5" stroke="black" stroke-width="5" fill="white"/>
4572
+ <line x1="9.5" y1="0" x2="9.5" y2="80" stroke="black" stroke-width="19"/>
4573
+ </g>
4574
+ <xsl:variable name="text_x">
4575
+ <xsl:choose>
4576
+ <xsl:when test="$type = 'closing' or $type = 'end'">28</xsl:when>
4577
+ <xsl:otherwise>22</xsl:otherwise>
4578
+ </xsl:choose>
4579
+ </xsl:variable>
4580
+ <text font-family="Arial" x="{$text_x}" y="50" font-size="40pt">
4581
+ <xsl:value-of select="$kind"/>
4582
+ </text>
4583
+ <text font-family="Arial" x="{$text_x + 33}" y="65" font-size="38pt">
4584
+ <xsl:value-of select="$value"/>
4585
+ </text>
4556
4586
  </svg>
4557
4587
  </fo:instream-foreign-object>
4558
4588
  </xsl:template>
@@ -4621,7 +4651,7 @@
4621
4651
  </xsl:copy>
4622
4652
  </xsl:template>
4623
4653
 
4624
- <xsl:template match="*[local-name() = 'pagebreak']" mode="landscape_portrait">
4654
+ <xsl:template match="*[local-name() = 'pagebreak'][not(following-sibling::*[1][local-name() = 'pagebreak'])]" mode="landscape_portrait">
4625
4655
 
4626
4656
  <!-- determine pagebreak is last element before </fo:flow> or not -->
4627
4657
  <xsl:variable name="isLast">
@@ -4633,16 +4663,18 @@
4633
4663
  <xsl:if test="contains($isLast, 'false')">
4634
4664
 
4635
4665
  <xsl:variable name="orientation" select="normalize-space(@orientation)"/>
4636
- <xsl:variable name="tree">
4666
+
4667
+ <xsl:variable name="tree_">
4637
4668
  <xsl:for-each select="ancestor::*[ancestor::fo:flow]">
4638
4669
  <element pos="{position()}">
4639
4670
  <xsl:value-of select="name()"/>
4640
4671
  </element>
4641
4672
  </xsl:for-each>
4642
4673
  </xsl:variable>
4674
+ <xsl:variable name="tree" select="xalan:nodeset($tree_)"/>
4643
4675
 
4644
4676
  <!-- close fo:page-sequence (closing preceding fo elements) -->
4645
- <xsl:for-each select="xalan:nodeset($tree)//element">
4677
+ <xsl:for-each select="$tree//element">
4646
4678
  <xsl:sort data-type="number" order="descending" select="@pos"/>
4647
4679
  <xsl:text disable-output-escaping="yes">&lt;/</xsl:text>
4648
4680
  <xsl:value-of select="."/>
@@ -4653,7 +4685,6 @@
4653
4685
 
4654
4686
  <!-- <pagebreak/> -->
4655
4687
  <!-- create a new fo:page-sequence (opening fo elements) -->
4656
-
4657
4688
  <xsl:text disable-output-escaping="yes">&lt;fo:page-sequence master-reference="document</xsl:text><xsl:if test="$orientation != ''">-<xsl:value-of select="$orientation"/></xsl:if><xsl:text disable-output-escaping="yes">"&gt;</xsl:text>
4658
4689
  <fo:static-content flow-name="xsl-footnote-separator">
4659
4690
  <fo:block>
@@ -4663,7 +4694,7 @@
4663
4694
  <xsl:call-template name="insertHeaderFooter"/>
4664
4695
  <xsl:text disable-output-escaping="yes">&lt;fo:flow flow-name="xsl-region-body"&gt;</xsl:text>
4665
4696
 
4666
- <xsl:for-each select="xalan:nodeset($tree)//element">
4697
+ <xsl:for-each select="$tree//element">
4667
4698
  <xsl:text disable-output-escaping="yes">&lt;</xsl:text>
4668
4699
  <xsl:value-of select="."/>
4669
4700
  <xsl:for-each select="@*[local-name() != 'pos']">
@@ -4675,6 +4706,7 @@
4675
4706
  </xsl:for-each>
4676
4707
  <xsl:text disable-output-escaping="yes">&gt;</xsl:text>
4677
4708
  </xsl:for-each>
4709
+
4678
4710
  </xsl:if>
4679
4711
  </xsl:template>
4680
4712
  <!-- ================================================================ -->
@@ -4876,18 +4908,23 @@
4876
4908
 
4877
4909
  <xsl:template name="add-zero-spaces-java">
4878
4910
  <xsl:param name="text" select="."/>
4879
- <!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space, arrow right -->
4880
- <xsl:variable name="text1" select="java:replaceAll(java:java.lang.String.new($text),'(-|\.|:|=|_|—| |→)','$1​')"/>
4911
+
4912
+ <!-- add zero-width space (#x200B) after dot with next non-digit -->
4913
+ <xsl:variable name="text1" select="java:replaceAll(java:java.lang.String.new($text),'(\.)([^\d\s])','$1​$2')"/>
4914
+ <!-- add zero-width space (#x200B) after characters: dash, equal, underscore, em dash, thin space, arrow right -->
4915
+ <xsl:variable name="text2" select="java:replaceAll(java:java.lang.String.new($text1),'(-|=|_|—| |→)','$1​')"/>
4916
+ <!-- add zero-width space (#x200B) after characters: colon, if there aren't digits after -->
4917
+ <xsl:variable name="text3" select="java:replaceAll(java:java.lang.String.new($text2),'(:)(\D)','$1​$2')"/>
4881
4918
  <!-- add zero-width space (#x200B) after characters: 'great than' -->
4882
- <xsl:variable name="text2" select="java:replaceAll(java:java.lang.String.new($text1), '(\u003e)(?!\u003e)', '$1​')"/><!-- negative lookahead: 'great than' not followed by 'great than' -->
4919
+ <xsl:variable name="text4" select="java:replaceAll(java:java.lang.String.new($text3), '(\u003e)(?!\u003e)', '$1​')"/><!-- negative lookahead: 'great than' not followed by 'great than' -->
4883
4920
  <!-- add zero-width space (#x200B) before characters: 'less than' -->
4884
- <xsl:variable name="text3" select="java:replaceAll(java:java.lang.String.new($text2), '(?&lt;!\u003c)(\u003c)', '​$1')"/> <!-- (?<!\u003c)(\u003c) --> <!-- negative lookbehind: 'less than' not preceeded by 'less than' -->
4921
+ <xsl:variable name="text5" select="java:replaceAll(java:java.lang.String.new($text4), '(?&lt;!\u003c)(\u003c)', '​$1')"/> <!-- (?<!\u003c)(\u003c) --> <!-- negative lookbehind: 'less than' not preceeded by 'less than' -->
4885
4922
  <!-- add zero-width space (#x200B) before character: { -->
4886
- <xsl:variable name="text4" select="java:replaceAll(java:java.lang.String.new($text3), '(?&lt;!\W)(\{)', '​$1')"/> <!-- negative lookbehind: '{' not preceeded by 'punctuation char' -->
4923
+ <xsl:variable name="text6" select="java:replaceAll(java:java.lang.String.new($text5), '(?&lt;!\W)(\{)', '​$1')"/> <!-- negative lookbehind: '{' not preceeded by 'punctuation char' -->
4887
4924
  <!-- add zero-width space (#x200B) after character: , -->
4888
- <xsl:variable name="text5" select="java:replaceAll(java:java.lang.String.new($text4), '(\,)(?!\d)', '$1​')"/> <!-- negative lookahead: ',' not followed by digit -->
4925
+ <xsl:variable name="text7" select="java:replaceAll(java:java.lang.String.new($text6), '(\,)(?!\d)', '$1​')"/> <!-- negative lookahead: ',' not followed by digit -->
4889
4926
 
4890
- <xsl:value-of select="$text5"/>
4927
+ <xsl:value-of select="$text7"/>
4891
4928
  </xsl:template>
4892
4929
 
4893
4930
  <xsl:template name="add-zero-spaces-link-java">
@@ -4896,7 +4933,9 @@
4896
4933
  <xsl:value-of select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$1')"/> <!-- http://. https:// or www. -->
4897
4934
  <xsl:variable name="url_continue" select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$2')"/>
4898
4935
  <!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space -->
4899
- <xsl:value-of select="java:replaceAll(java:java.lang.String.new($url_continue),'(-|\.|:|=|_|—| |,|/)','$1​')"/>
4936
+ <xsl:variable name="url" select="java:replaceAll(java:java.lang.String.new($url_continue),'(-|\.|:|=|_|—| |,|/)','$1​')"/>
4937
+ <!-- remove zero-width space at the end -->
4938
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new($url), '​$', '')"/>
4900
4939
  </xsl:template>
4901
4940
 
4902
4941
  <!-- add zero space after dash character (for table's entries) -->
@@ -5033,7 +5072,7 @@
5033
5072
  </xsl:copy>
5034
5073
  </xsl:template>
5035
5074
 
5036
- <xsl:template match="*[local-name()='th' or local-name() = 'td'][not(*[local-name()='br']) and not(*[local-name()='p']) and not(*[local-name()='sourcecode'])]" mode="table-without-br">
5075
+ <xsl:template match="*[local-name()='th' or local-name() = 'td'][not(*[local-name()='br']) and not(*[local-name()='p']) and not(*[local-name()='sourcecode']) and not(*[local-name()='ul']) and not(*[local-name()='ol'])]" mode="table-without-br">
5037
5076
  <xsl:copy>
5038
5077
  <xsl:copy-of select="@*"/>
5039
5078
  <p>
@@ -5109,6 +5148,14 @@
5109
5148
  <xsl:value-of select="java:replaceAll(java:java.lang.String.new($text),' {2,}',' ')"/>
5110
5149
  </xsl:template>
5111
5150
 
5151
+ <xsl:template match="*[local-name()='th' or local-name()='td']//*[local-name() = 'ol' or local-name() = 'ul']" mode="table-without-br">
5152
+ <xsl:apply-templates mode="table-without-br"/>
5153
+ </xsl:template>
5154
+
5155
+ <xsl:template match="*[local-name()='th' or local-name()='td']//*[local-name() = 'li']" mode="table-without-br">
5156
+ <xsl:apply-templates mode="table-without-br"/>
5157
+ </xsl:template>
5158
+
5112
5159
  <!-- mode="table-without-br" -->
5113
5160
  <!-- ================================== -->
5114
5161
  <!-- END: Step 0. replace <br/> to <p>...</p> -->
@@ -5922,7 +5969,7 @@
5922
5969
 
5923
5970
  <fo:block-container id="{@id}" xsl:use-attribute-sets="note-style">
5924
5971
 
5925
- <fo:block-container margin-left="0mm">
5972
+ <fo:block-container margin-left="0mm" margin-right="0mm">
5926
5973
 
5927
5974
  <fo:block>
5928
5975
 
@@ -6098,11 +6145,14 @@
6098
6145
  <xsl:with-param name="isDeleted" select="$isDeleted"/>
6099
6146
  </xsl:call-template>
6100
6147
 
6148
+ <!-- Example: Dimensions in millimeters -->
6149
+ <xsl:apply-templates select="*[local-name() = 'note'][@type = 'units']"/>
6150
+
6101
6151
  <fo:block xsl:use-attribute-sets="figure-style">
6102
- <xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
6152
+ <xsl:apply-templates select="node()[not(local-name() = 'name') and not(local-name() = 'note' and @type = 'units')]"/>
6103
6153
  </fo:block>
6104
6154
  <xsl:call-template name="fn_display_figure"/>
6105
- <xsl:for-each select="*[local-name() = 'note']">
6155
+ <xsl:for-each select="*[local-name() = 'note'][not(@type = 'units')]">
6106
6156
  <xsl:call-template name="note"/>
6107
6157
  </xsl:for-each>
6108
6158
 
@@ -6359,24 +6409,47 @@
6359
6409
 
6360
6410
  </xsl:when>
6361
6411
  <xsl:otherwise>
6362
- <fo:block xsl:use-attribute-sets="image-style">
6363
- <fo:instream-foreign-object fox:alt-text="{$alt-text}">
6364
- <xsl:attribute name="width">100%</xsl:attribute>
6365
- <xsl:attribute name="content-height">100%</xsl:attribute>
6366
- <xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
6367
- <xsl:variable name="svg_width" select="xalan:nodeset($svg_content)/*/@width"/>
6368
- <xsl:variable name="svg_height" select="xalan:nodeset($svg_content)/*/@height"/>
6369
- <!-- effective height 297 - 27.4 - 13 = 256.6 -->
6370
- <!-- effective width 210 - 12.5 - 25 = 172.5 -->
6371
- <!-- effective height / width = 1.48, 1.4 - with title -->
6372
- <xsl:if test="$svg_height &gt; ($svg_width * 1.4)"> <!-- for images with big height -->
6373
- <xsl:variable name="width" select="(($svg_width * 1.4) div $svg_height) * 100"/>
6374
- <xsl:attribute name="width"><xsl:value-of select="$width"/>%</xsl:attribute>
6375
- </xsl:if>
6376
- <xsl:attribute name="scaling">uniform</xsl:attribute>
6377
- <xsl:copy-of select="$svg_content"/>
6378
- </fo:instream-foreign-object>
6379
- </fo:block>
6412
+
6413
+ <xsl:variable name="element">
6414
+ <xsl:choose>
6415
+ <xsl:when test="ancestor::*[local-name() = 'tr'] and $isGenerateTableIF = 'true'">
6416
+ <fo:inline xsl:use-attribute-sets="image-style" text-align="left"/>
6417
+ </xsl:when>
6418
+ <xsl:otherwise>
6419
+ <fo:block xsl:use-attribute-sets="image-style">
6420
+ <xsl:if test="ancestor::*[local-name() = 'dt']">
6421
+ <xsl:attribute name="text-align">left</xsl:attribute>
6422
+ </xsl:if>
6423
+ </fo:block>
6424
+ </xsl:otherwise>
6425
+ </xsl:choose>
6426
+ </xsl:variable>
6427
+
6428
+ <xsl:for-each select="xalan:nodeset($element)/*">
6429
+ <xsl:copy>
6430
+ <xsl:copy-of select="@*"/>
6431
+ <!-- <fo:block xsl:use-attribute-sets="image-style"> -->
6432
+ <fo:instream-foreign-object fox:alt-text="{$alt-text}">
6433
+ <xsl:if test="$isGenerateTableIF = 'false'">
6434
+ <xsl:attribute name="width">100%</xsl:attribute>
6435
+ </xsl:if>
6436
+ <xsl:attribute name="content-height">100%</xsl:attribute>
6437
+ <xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
6438
+ <xsl:variable name="svg_width" select="xalan:nodeset($svg_content)/*/@width"/>
6439
+ <xsl:variable name="svg_height" select="xalan:nodeset($svg_content)/*/@height"/>
6440
+ <!-- effective height 297 - 27.4 - 13 = 256.6 -->
6441
+ <!-- effective width 210 - 12.5 - 25 = 172.5 -->
6442
+ <!-- effective height / width = 1.48, 1.4 - with title -->
6443
+ <xsl:if test="$svg_height &gt; ($svg_width * 1.4)"> <!-- for images with big height -->
6444
+ <xsl:variable name="width" select="(($svg_width * 1.4) div $svg_height) * 100"/>
6445
+ <xsl:attribute name="width"><xsl:value-of select="$width"/>%</xsl:attribute>
6446
+ </xsl:if>
6447
+ <xsl:attribute name="scaling">uniform</xsl:attribute>
6448
+ <xsl:copy-of select="$svg_content"/>
6449
+ </fo:instream-foreign-object>
6450
+ <!-- </fo:block> -->
6451
+ </xsl:copy>
6452
+ </xsl:for-each>
6380
6453
  </xsl:otherwise>
6381
6454
  </xsl:choose>
6382
6455
  </xsl:template>
@@ -6468,6 +6541,13 @@
6468
6541
  </xsl:for-each>
6469
6542
  </xsl:template>
6470
6543
 
6544
+ <!-- For the structures like: <dt><image src="" mimetype="image/svg+xml" height="" width=""><svg xmlns="http://www.w3.org/2000/svg" ... -->
6545
+ <xsl:template match="*[local-name() != 'figure']/*[local-name() = 'image'][*[local-name() = 'svg']]" priority="3">
6546
+ <xsl:for-each select="*[local-name() = 'svg']">
6547
+ <xsl:call-template name="image_svg"/>
6548
+ </xsl:for-each>
6549
+ </xsl:template>
6550
+
6471
6551
  <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'image'][@mimetype = 'image/svg+xml' and @src[not(starts-with(., 'data:image/'))]]" priority="2">
6472
6552
  <xsl:variable name="svg_content" select="document(@src)"/>
6473
6553
  <xsl:variable name="name" select="ancestor::*[local-name() = 'figure']/*[local-name() = 'name']"/>
@@ -6606,6 +6686,8 @@
6606
6686
  <xsl:value-of select="."/>
6607
6687
  </xsl:template>
6608
6688
 
6689
+ <xsl:template match="*[local-name() = 'add'][starts-with(., $ace_tag)]/text()" mode="bookmarks" priority="3"/>
6690
+
6609
6691
  <xsl:template match="node()" mode="contents">
6610
6692
  <xsl:apply-templates mode="contents"/>
6611
6693
  </xsl:template>
@@ -6913,7 +6995,15 @@
6913
6995
  <xsl:value-of select="@section"/>
6914
6996
  <xsl:text> </xsl:text>
6915
6997
  </xsl:if>
6916
- <xsl:value-of select="normalize-space(title)"/>
6998
+ <xsl:variable name="title">
6999
+ <xsl:for-each select="title/node()">
7000
+ <xsl:choose>
7001
+ <xsl:when test="local-name() = 'add' and starts-with(., $ace_tag)"><!-- skip --></xsl:when>
7002
+ <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
7003
+ </xsl:choose>
7004
+ </xsl:for-each>
7005
+ </xsl:variable>
7006
+ <xsl:value-of select="normalize-space($title)"/>
6917
7007
  </fo:bookmark-title>
6918
7008
  <xsl:apply-templates mode="bookmark"/>
6919
7009
  </fo:bookmark>
@@ -6939,6 +7029,12 @@
6939
7029
  <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'fn']" priority="2"/>
6940
7030
  <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'note']"/>
6941
7031
 
7032
+ <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'note'][@type = 'units'] | *[local-name() = 'image']/*[local-name() = 'note'][@type = 'units']" priority="2">
7033
+ <fo:block text-align="right" keep-with-next="always">
7034
+ <xsl:apply-templates/>
7035
+ </fo:block>
7036
+ </xsl:template>
7037
+
6942
7038
  <!-- ====== -->
6943
7039
  <!-- ====== -->
6944
7040
  <xsl:template match="*[local-name() = 'title']" mode="contents_item">
@@ -7088,6 +7184,10 @@
7088
7184
  </xsl:for-each>
7089
7185
  </xsl:template>
7090
7186
 
7187
+ <xsl:template match="*[local-name() = 'add'][starts-with(., $ace_tag)]/text()" mode="contents_item" priority="2">
7188
+ <xsl:value-of select="."/>
7189
+ </xsl:template>
7190
+
7091
7191
  <!-- Note: to enable the addition of character span markup with semantic styling for DIS Word output -->
7092
7192
  <xsl:template match="*[local-name() = 'span']" mode="contents_item">
7093
7193
  <xsl:apply-templates mode="contents_item"/>
@@ -357,6 +357,7 @@
357
357
  <xsl:apply-templates select="/*/*[local-name()='sections']/*[local-name()='definitions']"/>
358
358
  <xsl:apply-templates select="/*/*[local-name()='sections']/*[local-name() != 'terms' and local-name() != 'definitions' and not(@type='scope')]"/>
359
359
 
360
+ <xsl:if test="$table_if = 'true'"><fo:block/></xsl:if>
360
361
  </fo:block-container>
361
362
  </fo:flow>
362
363
  </fo:page-sequence>
@@ -373,6 +374,8 @@
373
374
  <fo:flow flow-name="xsl-region-body">
374
375
  <fo:block-container>
375
376
  <xsl:apply-templates select="/*/*[local-name()='annex']"/>
377
+
378
+ <xsl:if test="$table_if = 'true'"><fo:block/></xsl:if>
376
379
  </fo:block-container>
377
380
  </fo:flow>
378
381
  </fo:page-sequence>
@@ -390,6 +393,8 @@
390
393
  <fo:block-container>
391
394
  <!-- Bibliography -->
392
395
  <xsl:apply-templates select="/*/*[local-name()='bibliography']/*[local-name()='references'][not(@normative='true')]"/>
396
+
397
+ <xsl:if test="$table_if = 'true'"><fo:block/></xsl:if>
393
398
  </fo:block-container>
394
399
  </fo:flow>
395
400
  </fo:page-sequence>
@@ -2639,7 +2644,7 @@
2639
2644
  <xsl:variable name="isDeleted" select="@deleted"/>
2640
2645
 
2641
2646
  <xsl:choose>
2642
- <xsl:when test="@width">
2647
+ <xsl:when test="@width and @width != 'full-page-width' and @width != 'text-width'">
2643
2648
 
2644
2649
  <!-- centered table when table name is centered (see table-name-style) -->
2645
2650
 
@@ -2964,6 +2969,7 @@
2964
2969
  This makes columns with large differences between minimum and maximum widths wider than columns with smaller differences. -->
2965
2970
  <xsl:when test="(@width_max &gt; $page_width and @width_min &lt; $page_width) or (@width_min &gt;= $page_width)">
2966
2971
  <!-- difference between the available space and the minimum table width -->
2972
+ <_width_min><xsl:value-of select="@width_min"/></_width_min>
2967
2973
  <xsl:variable name="W" select="$page_width - @width_min"/>
2968
2974
  <W><xsl:value-of select="$W"/></W>
2969
2975
  <!-- difference between maximum and minimum width of the table -->
@@ -3581,17 +3587,20 @@
3581
3587
  <xsl:for-each select="xalan:nodeset($references)//fn">
3582
3588
  <xsl:variable name="reference" select="@reference"/>
3583
3589
  <xsl:if test="not(preceding-sibling::*[@reference = $reference])"> <!-- only unique reference puts in note-->
3584
- <fo:block xsl:use-attribute-sets="table-fn-style">
3585
3590
 
3586
- <fo:inline id="{@id}" xsl:use-attribute-sets="table-fn-number-style">
3591
+ <fo:block xsl:use-attribute-sets="table-fn-style">
3587
3592
 
3588
- <xsl:value-of select="@reference"/>
3593
+ <fo:inline id="{@id}" xsl:use-attribute-sets="table-fn-number-style">
3594
+
3595
+ <xsl:value-of select="@reference"/>
3596
+
3597
+ </fo:inline>
3598
+ <fo:inline xsl:use-attribute-sets="table-fn-body-style">
3599
+ <xsl:copy-of select="./node()"/>
3600
+ </fo:inline>
3601
+
3602
+ </fo:block>
3589
3603
 
3590
- </fo:inline>
3591
- <fo:inline xsl:use-attribute-sets="table-fn-body-style">
3592
- <xsl:copy-of select="./node()"/>
3593
- </fo:inline>
3594
- </fo:block>
3595
3604
  </xsl:if>
3596
3605
  </xsl:for-each>
3597
3606
  </xsl:template>
@@ -4534,12 +4543,12 @@
4534
4543
  <xsl:param name="value"/>
4535
4544
  <xsl:variable name="add_width" select="string-length($value) * 20"/>
4536
4545
  <xsl:variable name="maxwidth" select="60 + $add_width"/>
4537
- <fo:instream-foreign-object fox:alt-text="OpeningTag" baseline-shift="-20%"><!-- alignment-baseline="middle" -->
4538
- <xsl:attribute name="height">5mm</xsl:attribute>
4546
+ <fo:instream-foreign-object fox:alt-text="OpeningTag" baseline-shift="-10%"><!-- alignment-baseline="middle" -->
4547
+ <xsl:attribute name="height">3.5mm</xsl:attribute> <!-- 5mm -->
4539
4548
  <xsl:attribute name="content-width">100%</xsl:attribute>
4540
4549
  <xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
4541
4550
  <xsl:attribute name="scaling">uniform</xsl:attribute>
4542
- <svg xmlns="http://www.w3.org/2000/svg" width="{$maxwidth + 32}" height="80">
4551
+ <!-- <svg xmlns="http://www.w3.org/2000/svg" width="{$maxwidth + 32}" height="80">
4543
4552
  <g>
4544
4553
  <xsl:if test="$type = 'closing' or $type = 'end'">
4545
4554
  <xsl:attribute name="transform">scale(-1 1) translate(-<xsl:value-of select="$maxwidth + 32"/>,0)</xsl:attribute>
@@ -4553,6 +4562,27 @@
4553
4562
  </xsl:if>
4554
4563
  <xsl:value-of select="$kind"/><tspan dy="10" font-size="30pt"><xsl:value-of select="$value"/></tspan>
4555
4564
  </text>
4565
+ </svg> -->
4566
+ <svg xmlns="http://www.w3.org/2000/svg" width="{$maxwidth + 32}" height="80">
4567
+ <g>
4568
+ <xsl:if test="$type = 'closing' or $type = 'end'">
4569
+ <xsl:attribute name="transform">scale(-1 1) translate(-<xsl:value-of select="$maxwidth + 32"/>,0)</xsl:attribute>
4570
+ </xsl:if>
4571
+ <polyline points="0,2.5 {$maxwidth},2.5 {$maxwidth + 20},40 {$maxwidth},77.5 0,77.5" stroke="black" stroke-width="5" fill="white"/>
4572
+ <line x1="9.5" y1="0" x2="9.5" y2="80" stroke="black" stroke-width="19"/>
4573
+ </g>
4574
+ <xsl:variable name="text_x">
4575
+ <xsl:choose>
4576
+ <xsl:when test="$type = 'closing' or $type = 'end'">28</xsl:when>
4577
+ <xsl:otherwise>22</xsl:otherwise>
4578
+ </xsl:choose>
4579
+ </xsl:variable>
4580
+ <text font-family="Arial" x="{$text_x}" y="50" font-size="40pt">
4581
+ <xsl:value-of select="$kind"/>
4582
+ </text>
4583
+ <text font-family="Arial" x="{$text_x + 33}" y="65" font-size="38pt">
4584
+ <xsl:value-of select="$value"/>
4585
+ </text>
4556
4586
  </svg>
4557
4587
  </fo:instream-foreign-object>
4558
4588
  </xsl:template>
@@ -4621,7 +4651,7 @@
4621
4651
  </xsl:copy>
4622
4652
  </xsl:template>
4623
4653
 
4624
- <xsl:template match="*[local-name() = 'pagebreak']" mode="landscape_portrait">
4654
+ <xsl:template match="*[local-name() = 'pagebreak'][not(following-sibling::*[1][local-name() = 'pagebreak'])]" mode="landscape_portrait">
4625
4655
 
4626
4656
  <!-- determine pagebreak is last element before </fo:flow> or not -->
4627
4657
  <xsl:variable name="isLast">
@@ -4633,16 +4663,18 @@
4633
4663
  <xsl:if test="contains($isLast, 'false')">
4634
4664
 
4635
4665
  <xsl:variable name="orientation" select="normalize-space(@orientation)"/>
4636
- <xsl:variable name="tree">
4666
+
4667
+ <xsl:variable name="tree_">
4637
4668
  <xsl:for-each select="ancestor::*[ancestor::fo:flow]">
4638
4669
  <element pos="{position()}">
4639
4670
  <xsl:value-of select="name()"/>
4640
4671
  </element>
4641
4672
  </xsl:for-each>
4642
4673
  </xsl:variable>
4674
+ <xsl:variable name="tree" select="xalan:nodeset($tree_)"/>
4643
4675
 
4644
4676
  <!-- close fo:page-sequence (closing preceding fo elements) -->
4645
- <xsl:for-each select="xalan:nodeset($tree)//element">
4677
+ <xsl:for-each select="$tree//element">
4646
4678
  <xsl:sort data-type="number" order="descending" select="@pos"/>
4647
4679
  <xsl:text disable-output-escaping="yes">&lt;/</xsl:text>
4648
4680
  <xsl:value-of select="."/>
@@ -4653,7 +4685,6 @@
4653
4685
 
4654
4686
  <!-- <pagebreak/> -->
4655
4687
  <!-- create a new fo:page-sequence (opening fo elements) -->
4656
-
4657
4688
  <xsl:text disable-output-escaping="yes">&lt;fo:page-sequence master-reference="document</xsl:text><xsl:if test="$orientation != ''">-<xsl:value-of select="$orientation"/></xsl:if><xsl:text disable-output-escaping="yes">"&gt;</xsl:text>
4658
4689
  <fo:static-content flow-name="xsl-footnote-separator">
4659
4690
  <fo:block>
@@ -4663,7 +4694,7 @@
4663
4694
  <xsl:call-template name="insertHeaderFooter"/>
4664
4695
  <xsl:text disable-output-escaping="yes">&lt;fo:flow flow-name="xsl-region-body"&gt;</xsl:text>
4665
4696
 
4666
- <xsl:for-each select="xalan:nodeset($tree)//element">
4697
+ <xsl:for-each select="$tree//element">
4667
4698
  <xsl:text disable-output-escaping="yes">&lt;</xsl:text>
4668
4699
  <xsl:value-of select="."/>
4669
4700
  <xsl:for-each select="@*[local-name() != 'pos']">
@@ -4675,6 +4706,7 @@
4675
4706
  </xsl:for-each>
4676
4707
  <xsl:text disable-output-escaping="yes">&gt;</xsl:text>
4677
4708
  </xsl:for-each>
4709
+
4678
4710
  </xsl:if>
4679
4711
  </xsl:template>
4680
4712
  <!-- ================================================================ -->
@@ -4876,18 +4908,23 @@
4876
4908
 
4877
4909
  <xsl:template name="add-zero-spaces-java">
4878
4910
  <xsl:param name="text" select="."/>
4879
- <!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space, arrow right -->
4880
- <xsl:variable name="text1" select="java:replaceAll(java:java.lang.String.new($text),'(-|\.|:|=|_|—| |→)','$1​')"/>
4911
+
4912
+ <!-- add zero-width space (#x200B) after dot with next non-digit -->
4913
+ <xsl:variable name="text1" select="java:replaceAll(java:java.lang.String.new($text),'(\.)([^\d\s])','$1​$2')"/>
4914
+ <!-- add zero-width space (#x200B) after characters: dash, equal, underscore, em dash, thin space, arrow right -->
4915
+ <xsl:variable name="text2" select="java:replaceAll(java:java.lang.String.new($text1),'(-|=|_|—| |→)','$1​')"/>
4916
+ <!-- add zero-width space (#x200B) after characters: colon, if there aren't digits after -->
4917
+ <xsl:variable name="text3" select="java:replaceAll(java:java.lang.String.new($text2),'(:)(\D)','$1​$2')"/>
4881
4918
  <!-- add zero-width space (#x200B) after characters: 'great than' -->
4882
- <xsl:variable name="text2" select="java:replaceAll(java:java.lang.String.new($text1), '(\u003e)(?!\u003e)', '$1​')"/><!-- negative lookahead: 'great than' not followed by 'great than' -->
4919
+ <xsl:variable name="text4" select="java:replaceAll(java:java.lang.String.new($text3), '(\u003e)(?!\u003e)', '$1​')"/><!-- negative lookahead: 'great than' not followed by 'great than' -->
4883
4920
  <!-- add zero-width space (#x200B) before characters: 'less than' -->
4884
- <xsl:variable name="text3" select="java:replaceAll(java:java.lang.String.new($text2), '(?&lt;!\u003c)(\u003c)', '​$1')"/> <!-- (?<!\u003c)(\u003c) --> <!-- negative lookbehind: 'less than' not preceeded by 'less than' -->
4921
+ <xsl:variable name="text5" select="java:replaceAll(java:java.lang.String.new($text4), '(?&lt;!\u003c)(\u003c)', '​$1')"/> <!-- (?<!\u003c)(\u003c) --> <!-- negative lookbehind: 'less than' not preceeded by 'less than' -->
4885
4922
  <!-- add zero-width space (#x200B) before character: { -->
4886
- <xsl:variable name="text4" select="java:replaceAll(java:java.lang.String.new($text3), '(?&lt;!\W)(\{)', '​$1')"/> <!-- negative lookbehind: '{' not preceeded by 'punctuation char' -->
4923
+ <xsl:variable name="text6" select="java:replaceAll(java:java.lang.String.new($text5), '(?&lt;!\W)(\{)', '​$1')"/> <!-- negative lookbehind: '{' not preceeded by 'punctuation char' -->
4887
4924
  <!-- add zero-width space (#x200B) after character: , -->
4888
- <xsl:variable name="text5" select="java:replaceAll(java:java.lang.String.new($text4), '(\,)(?!\d)', '$1​')"/> <!-- negative lookahead: ',' not followed by digit -->
4925
+ <xsl:variable name="text7" select="java:replaceAll(java:java.lang.String.new($text6), '(\,)(?!\d)', '$1​')"/> <!-- negative lookahead: ',' not followed by digit -->
4889
4926
 
4890
- <xsl:value-of select="$text5"/>
4927
+ <xsl:value-of select="$text7"/>
4891
4928
  </xsl:template>
4892
4929
 
4893
4930
  <xsl:template name="add-zero-spaces-link-java">
@@ -4896,7 +4933,9 @@
4896
4933
  <xsl:value-of select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$1')"/> <!-- http://. https:// or www. -->
4897
4934
  <xsl:variable name="url_continue" select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$2')"/>
4898
4935
  <!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space -->
4899
- <xsl:value-of select="java:replaceAll(java:java.lang.String.new($url_continue),'(-|\.|:|=|_|—| |,|/)','$1​')"/>
4936
+ <xsl:variable name="url" select="java:replaceAll(java:java.lang.String.new($url_continue),'(-|\.|:|=|_|—| |,|/)','$1​')"/>
4937
+ <!-- remove zero-width space at the end -->
4938
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new($url), '​$', '')"/>
4900
4939
  </xsl:template>
4901
4940
 
4902
4941
  <!-- add zero space after dash character (for table's entries) -->
@@ -5033,7 +5072,7 @@
5033
5072
  </xsl:copy>
5034
5073
  </xsl:template>
5035
5074
 
5036
- <xsl:template match="*[local-name()='th' or local-name() = 'td'][not(*[local-name()='br']) and not(*[local-name()='p']) and not(*[local-name()='sourcecode'])]" mode="table-without-br">
5075
+ <xsl:template match="*[local-name()='th' or local-name() = 'td'][not(*[local-name()='br']) and not(*[local-name()='p']) and not(*[local-name()='sourcecode']) and not(*[local-name()='ul']) and not(*[local-name()='ol'])]" mode="table-without-br">
5037
5076
  <xsl:copy>
5038
5077
  <xsl:copy-of select="@*"/>
5039
5078
  <p>
@@ -5109,6 +5148,14 @@
5109
5148
  <xsl:value-of select="java:replaceAll(java:java.lang.String.new($text),' {2,}',' ')"/>
5110
5149
  </xsl:template>
5111
5150
 
5151
+ <xsl:template match="*[local-name()='th' or local-name()='td']//*[local-name() = 'ol' or local-name() = 'ul']" mode="table-without-br">
5152
+ <xsl:apply-templates mode="table-without-br"/>
5153
+ </xsl:template>
5154
+
5155
+ <xsl:template match="*[local-name()='th' or local-name()='td']//*[local-name() = 'li']" mode="table-without-br">
5156
+ <xsl:apply-templates mode="table-without-br"/>
5157
+ </xsl:template>
5158
+
5112
5159
  <!-- mode="table-without-br" -->
5113
5160
  <!-- ================================== -->
5114
5161
  <!-- END: Step 0. replace <br/> to <p>...</p> -->
@@ -5922,7 +5969,7 @@
5922
5969
 
5923
5970
  <fo:block-container id="{@id}" xsl:use-attribute-sets="note-style">
5924
5971
 
5925
- <fo:block-container margin-left="0mm">
5972
+ <fo:block-container margin-left="0mm" margin-right="0mm">
5926
5973
 
5927
5974
  <fo:block>
5928
5975
 
@@ -6098,11 +6145,14 @@
6098
6145
  <xsl:with-param name="isDeleted" select="$isDeleted"/>
6099
6146
  </xsl:call-template>
6100
6147
 
6148
+ <!-- Example: Dimensions in millimeters -->
6149
+ <xsl:apply-templates select="*[local-name() = 'note'][@type = 'units']"/>
6150
+
6101
6151
  <fo:block xsl:use-attribute-sets="figure-style">
6102
- <xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
6152
+ <xsl:apply-templates select="node()[not(local-name() = 'name') and not(local-name() = 'note' and @type = 'units')]"/>
6103
6153
  </fo:block>
6104
6154
  <xsl:call-template name="fn_display_figure"/>
6105
- <xsl:for-each select="*[local-name() = 'note']">
6155
+ <xsl:for-each select="*[local-name() = 'note'][not(@type = 'units')]">
6106
6156
  <xsl:call-template name="note"/>
6107
6157
  </xsl:for-each>
6108
6158
 
@@ -6359,24 +6409,47 @@
6359
6409
 
6360
6410
  </xsl:when>
6361
6411
  <xsl:otherwise>
6362
- <fo:block xsl:use-attribute-sets="image-style">
6363
- <fo:instream-foreign-object fox:alt-text="{$alt-text}">
6364
- <xsl:attribute name="width">100%</xsl:attribute>
6365
- <xsl:attribute name="content-height">100%</xsl:attribute>
6366
- <xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
6367
- <xsl:variable name="svg_width" select="xalan:nodeset($svg_content)/*/@width"/>
6368
- <xsl:variable name="svg_height" select="xalan:nodeset($svg_content)/*/@height"/>
6369
- <!-- effective height 297 - 27.4 - 13 = 256.6 -->
6370
- <!-- effective width 210 - 12.5 - 25 = 172.5 -->
6371
- <!-- effective height / width = 1.48, 1.4 - with title -->
6372
- <xsl:if test="$svg_height &gt; ($svg_width * 1.4)"> <!-- for images with big height -->
6373
- <xsl:variable name="width" select="(($svg_width * 1.4) div $svg_height) * 100"/>
6374
- <xsl:attribute name="width"><xsl:value-of select="$width"/>%</xsl:attribute>
6375
- </xsl:if>
6376
- <xsl:attribute name="scaling">uniform</xsl:attribute>
6377
- <xsl:copy-of select="$svg_content"/>
6378
- </fo:instream-foreign-object>
6379
- </fo:block>
6412
+
6413
+ <xsl:variable name="element">
6414
+ <xsl:choose>
6415
+ <xsl:when test="ancestor::*[local-name() = 'tr'] and $isGenerateTableIF = 'true'">
6416
+ <fo:inline xsl:use-attribute-sets="image-style" text-align="left"/>
6417
+ </xsl:when>
6418
+ <xsl:otherwise>
6419
+ <fo:block xsl:use-attribute-sets="image-style">
6420
+ <xsl:if test="ancestor::*[local-name() = 'dt']">
6421
+ <xsl:attribute name="text-align">left</xsl:attribute>
6422
+ </xsl:if>
6423
+ </fo:block>
6424
+ </xsl:otherwise>
6425
+ </xsl:choose>
6426
+ </xsl:variable>
6427
+
6428
+ <xsl:for-each select="xalan:nodeset($element)/*">
6429
+ <xsl:copy>
6430
+ <xsl:copy-of select="@*"/>
6431
+ <!-- <fo:block xsl:use-attribute-sets="image-style"> -->
6432
+ <fo:instream-foreign-object fox:alt-text="{$alt-text}">
6433
+ <xsl:if test="$isGenerateTableIF = 'false'">
6434
+ <xsl:attribute name="width">100%</xsl:attribute>
6435
+ </xsl:if>
6436
+ <xsl:attribute name="content-height">100%</xsl:attribute>
6437
+ <xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
6438
+ <xsl:variable name="svg_width" select="xalan:nodeset($svg_content)/*/@width"/>
6439
+ <xsl:variable name="svg_height" select="xalan:nodeset($svg_content)/*/@height"/>
6440
+ <!-- effective height 297 - 27.4 - 13 = 256.6 -->
6441
+ <!-- effective width 210 - 12.5 - 25 = 172.5 -->
6442
+ <!-- effective height / width = 1.48, 1.4 - with title -->
6443
+ <xsl:if test="$svg_height &gt; ($svg_width * 1.4)"> <!-- for images with big height -->
6444
+ <xsl:variable name="width" select="(($svg_width * 1.4) div $svg_height) * 100"/>
6445
+ <xsl:attribute name="width"><xsl:value-of select="$width"/>%</xsl:attribute>
6446
+ </xsl:if>
6447
+ <xsl:attribute name="scaling">uniform</xsl:attribute>
6448
+ <xsl:copy-of select="$svg_content"/>
6449
+ </fo:instream-foreign-object>
6450
+ <!-- </fo:block> -->
6451
+ </xsl:copy>
6452
+ </xsl:for-each>
6380
6453
  </xsl:otherwise>
6381
6454
  </xsl:choose>
6382
6455
  </xsl:template>
@@ -6468,6 +6541,13 @@
6468
6541
  </xsl:for-each>
6469
6542
  </xsl:template>
6470
6543
 
6544
+ <!-- For the structures like: <dt><image src="" mimetype="image/svg+xml" height="" width=""><svg xmlns="http://www.w3.org/2000/svg" ... -->
6545
+ <xsl:template match="*[local-name() != 'figure']/*[local-name() = 'image'][*[local-name() = 'svg']]" priority="3">
6546
+ <xsl:for-each select="*[local-name() = 'svg']">
6547
+ <xsl:call-template name="image_svg"/>
6548
+ </xsl:for-each>
6549
+ </xsl:template>
6550
+
6471
6551
  <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'image'][@mimetype = 'image/svg+xml' and @src[not(starts-with(., 'data:image/'))]]" priority="2">
6472
6552
  <xsl:variable name="svg_content" select="document(@src)"/>
6473
6553
  <xsl:variable name="name" select="ancestor::*[local-name() = 'figure']/*[local-name() = 'name']"/>
@@ -6606,6 +6686,8 @@
6606
6686
  <xsl:value-of select="."/>
6607
6687
  </xsl:template>
6608
6688
 
6689
+ <xsl:template match="*[local-name() = 'add'][starts-with(., $ace_tag)]/text()" mode="bookmarks" priority="3"/>
6690
+
6609
6691
  <xsl:template match="node()" mode="contents">
6610
6692
  <xsl:apply-templates mode="contents"/>
6611
6693
  </xsl:template>
@@ -6913,7 +6995,15 @@
6913
6995
  <xsl:value-of select="@section"/>
6914
6996
  <xsl:text> </xsl:text>
6915
6997
  </xsl:if>
6916
- <xsl:value-of select="normalize-space(title)"/>
6998
+ <xsl:variable name="title">
6999
+ <xsl:for-each select="title/node()">
7000
+ <xsl:choose>
7001
+ <xsl:when test="local-name() = 'add' and starts-with(., $ace_tag)"><!-- skip --></xsl:when>
7002
+ <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
7003
+ </xsl:choose>
7004
+ </xsl:for-each>
7005
+ </xsl:variable>
7006
+ <xsl:value-of select="normalize-space($title)"/>
6917
7007
  </fo:bookmark-title>
6918
7008
  <xsl:apply-templates mode="bookmark"/>
6919
7009
  </fo:bookmark>
@@ -6939,6 +7029,12 @@
6939
7029
  <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'fn']" priority="2"/>
6940
7030
  <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'note']"/>
6941
7031
 
7032
+ <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'note'][@type = 'units'] | *[local-name() = 'image']/*[local-name() = 'note'][@type = 'units']" priority="2">
7033
+ <fo:block text-align="right" keep-with-next="always">
7034
+ <xsl:apply-templates/>
7035
+ </fo:block>
7036
+ </xsl:template>
7037
+
6942
7038
  <!-- ====== -->
6943
7039
  <!-- ====== -->
6944
7040
  <xsl:template match="*[local-name() = 'title']" mode="contents_item">
@@ -7088,6 +7184,10 @@
7088
7184
  </xsl:for-each>
7089
7185
  </xsl:template>
7090
7186
 
7187
+ <xsl:template match="*[local-name() = 'add'][starts-with(., $ace_tag)]/text()" mode="contents_item" priority="2">
7188
+ <xsl:value-of select="."/>
7189
+ </xsl:template>
7190
+
7091
7191
  <!-- Note: to enable the addition of character span markup with semantic styling for DIS Word output -->
7092
7192
  <xsl:template match="*[local-name() = 'span']" mode="contents_item">
7093
7193
  <xsl:apply-templates mode="contents_item"/>
@@ -10,11 +10,11 @@ module IsoDoc
10
10
  ::Relaton::Render::IHO::General.new(language: @lang)
11
11
  end
12
12
 
13
- def norm_ref_entry_code(ordinal, _idents, _ids, _standard, _datefn)
13
+ def norm_ref_entry_code(ordinal, _idents, _ids, _standard, _datefn, _bib)
14
14
  "[#{ordinal}]<tab/>"
15
15
  end
16
16
 
17
- def biblio_ref_entry_code(ordinal, _idents, _ids, _standard, _datefn)
17
+ def biblio_ref_entry_code(ordinal, _idents, _ids, _standard, _datefn, _bib)
18
18
  "[#{ordinal}]<tab/>"
19
19
  end
20
20
 
@@ -216,6 +216,9 @@
216
216
  <optional>
217
217
  <ref name="fullname"/>
218
218
  </optional>
219
+ <zeroOrMore>
220
+ <ref name="credential"/>
221
+ </zeroOrMore>
219
222
  <zeroOrMore>
220
223
  <ref name="affiliation"/>
221
224
  </zeroOrMore>
@@ -232,6 +235,11 @@
232
235
  <ref name="FullNameType"/>
233
236
  </element>
234
237
  </define>
238
+ <define name="credential">
239
+ <element name="credential">
240
+ <text/>
241
+ </element>
242
+ </define>
235
243
  <define name="FullNameType">
236
244
  <choice>
237
245
  <group>
@@ -305,7 +313,9 @@
305
313
  <zeroOrMore>
306
314
  <ref name="affiliationdescription"/>
307
315
  </zeroOrMore>
308
- <ref name="organization"/>
316
+ <optional>
317
+ <ref name="organization"/>
318
+ </optional>
309
319
  </element>
310
320
  </define>
311
321
  <define name="affiliationname">
@@ -1578,6 +1578,9 @@
1578
1578
  <zeroOrMore>
1579
1579
  <ref name="indexsect"/>
1580
1580
  </zeroOrMore>
1581
+ <optional>
1582
+ <ref name="colophon"/>
1583
+ </optional>
1581
1584
  </element>
1582
1585
  </define>
1583
1586
  <define name="misccontainer">
@@ -1600,6 +1603,13 @@
1600
1603
  </oneOrMore>
1601
1604
  </element>
1602
1605
  </define>
1606
+ <define name="colophon">
1607
+ <element name="colophon">
1608
+ <oneOrMore>
1609
+ <ref name="content"/>
1610
+ </oneOrMore>
1611
+ </element>
1612
+ </define>
1603
1613
  <define name="foreword">
1604
1614
  <element name="foreword">
1605
1615
  <ref name="Content-Section"/>
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module IHO
3
- VERSION = "0.7.4".freeze
3
+ VERSION = "0.7.5".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-iho
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.4
4
+ version: 0.7.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-07 00:00:00.000000000 Z
11
+ date: 2023-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metanorma-generic