metanorma-iso 2.4.0 → 2.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/isodoc/iso/i18n-ja.yaml +39 -0
- data/lib/isodoc/iso/i18n.rb +6 -1
- data/lib/isodoc/iso/iso.amendment.xsl +277 -6
- data/lib/isodoc/iso/iso.international-standard.xsl +277 -6
- data/lib/isodoc/iso/metadata.rb +3 -3
- data/lib/isodoc/iso/word_cleanup.rb +1 -1
- data/lib/metanorma/iso/validate.rb +5 -4
- data/lib/metanorma/iso/validate_list.rb +3 -1
- data/lib/metanorma/iso/validate_requirements.rb +1 -0
- data/lib/metanorma/iso/validate_section.rb +12 -12
- data/lib/metanorma/iso/validate_style.rb +8 -8
- data/lib/metanorma/iso/validate_title.rb +5 -4
- data/lib/metanorma/iso/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 63f76b4a2d9cc268099b20ca2fa32965d1baa2573dbd696170412ba717ae726b
|
4
|
+
data.tar.gz: 4d7c46a0cedf41d5466030d6e4e5ea8956cdce2081d4d24be581eafae3a71c4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1651fd7ed1c7216292a542dd4a1e5be937807afe1728675633287e507100b0c9979fd58afb682e6ba271d0021313ef1e92f04dc8a14f6d9ad2778fc6cd7eed2a
|
7
|
+
data.tar.gz: 5c195c5207ca60ea89789d9ba82723788f01e85ac9e576d03d27c2449a2fe6ee1bf2fd479809a7813865821e1107b257cc64cdf0f7bb6e59603696602bc30b28
|
@@ -0,0 +1,39 @@
|
|
1
|
+
stage_dict:
|
2
|
+
"00": Preliminary work item
|
3
|
+
"10": New work item proposal
|
4
|
+
"20": Working draft
|
5
|
+
"30": Committee draft
|
6
|
+
"40":
|
7
|
+
international-standard: Draft International Standard
|
8
|
+
technical-specification: Draft Technical Specification
|
9
|
+
technical-report: Draft Technical Report
|
10
|
+
publicly-available-specification: Draft Publicly Available Specification
|
11
|
+
international-workshop-agreement: Draft International Workshop Agreement
|
12
|
+
guide: Draft Guide
|
13
|
+
amendment: Draft Amendment
|
14
|
+
technical-corrigendum: Draft Technical Corrigendum
|
15
|
+
directive: Draft Directive
|
16
|
+
"50":
|
17
|
+
international-standard: Final Draft International Standard
|
18
|
+
technical-specification: Final Draft Technical Specification
|
19
|
+
technical-report: Final Draft Technical Report
|
20
|
+
publicly-available-specification: Final Draft Publicly Available Specification
|
21
|
+
international-workshop-agreement: Final Draft International Workshop Agreement
|
22
|
+
guide: Final Draft Guide
|
23
|
+
amendment: Final Draft Amendment
|
24
|
+
technical-corrigendum: Final Draft Technical Corrigendum
|
25
|
+
directive: Final Draft Directive
|
26
|
+
"60":
|
27
|
+
international-standard: International Standard
|
28
|
+
technical-specification: Technical Specification
|
29
|
+
technical-report: Technical Report
|
30
|
+
publicly-available-specification: Publicly Available Specification
|
31
|
+
international-workshop-agreement: International Workshop Agreement
|
32
|
+
guide: Guide
|
33
|
+
amendment: Amendment
|
34
|
+
technical-corrigendum: Technical Corrigendum
|
35
|
+
directive: Directive
|
36
|
+
"90": Review
|
37
|
+
"95": Withdrawal
|
38
|
+
|
39
|
+
|
data/lib/isodoc/iso/i18n.rb
CHANGED
@@ -2,13 +2,18 @@ module IsoDoc
|
|
2
2
|
module Iso
|
3
3
|
class I18n < IsoDoc::I18n
|
4
4
|
def load_file(fname)
|
5
|
-
YAML.load_file(File.join(File.dirname(__FILE__), fname))
|
5
|
+
YAML.load_file(File.join(File.dirname(__FILE__), fname)) ||
|
6
|
+
{}
|
6
7
|
end
|
7
8
|
|
9
|
+
# all gems inheriting from ISO need to be represented here,
|
10
|
+
# even if the file is empty
|
11
|
+
# e.g. JA for metanorma-jis
|
8
12
|
def load_yaml1(lang, script)
|
9
13
|
y = if lang == "en" then load_file("i18n-en.yaml")
|
10
14
|
elsif lang == "fr" then load_file("i18n-fr.yaml")
|
11
15
|
elsif lang == "ru" then load_file("i18n-ru.yaml")
|
16
|
+
elsif lang == "ja" then load_file("i18n-ja.yaml")
|
12
17
|
elsif lang == "zh" && script == "Hans"
|
13
18
|
load_file("i18n-zh-Hans.yaml")
|
14
19
|
else load_file("i18n-en.yaml")
|
@@ -2824,6 +2824,7 @@
|
|
2824
2824
|
<xsl:variable name="table-border_">
|
2825
2825
|
|
2826
2826
|
1pt solid black
|
2827
|
+
|
2827
2828
|
</xsl:variable>
|
2828
2829
|
<xsl:variable name="table-border" select="normalize-space($table-border_)"/>
|
2829
2830
|
|
@@ -3112,6 +3113,7 @@
|
|
3112
3113
|
<xsl:attribute-set name="term-name-style">
|
3113
3114
|
<xsl:attribute name="keep-with-next">always</xsl:attribute>
|
3114
3115
|
<xsl:attribute name="font-weight">bold</xsl:attribute>
|
3116
|
+
|
3115
3117
|
</xsl:attribute-set>
|
3116
3118
|
|
3117
3119
|
<xsl:attribute-set name="figure-block-style">
|
@@ -4069,7 +4071,7 @@
|
|
4069
4071
|
<xsl:apply-templates select="*[local-name()='thead']" mode="process_tbody"/>
|
4070
4072
|
</xsl:when>
|
4071
4073
|
<xsl:otherwise>
|
4072
|
-
<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
|
4074
|
+
<xsl:apply-templates select="node()[not(local-name() = 'name') and not(local-name() = 'note') and not(local-name() = 'dl') and not(local-name() = 'thead') and not(local-name() = 'tfoot')]"/> <!-- process all table' elements, except name, header, footer, note and dl which render separaterely -->
|
4073
4075
|
</xsl:otherwise>
|
4074
4076
|
</xsl:choose>
|
4075
4077
|
|
@@ -4605,7 +4607,7 @@
|
|
4605
4607
|
<xsl:param name="colwidths"/>
|
4606
4608
|
<xsl:param name="colgroup"/>
|
4607
4609
|
|
4608
|
-
<xsl:variable name="isNoteOrFnExist" select="../*[local-name()='note'] or ..//*[local-name()='fn'][local-name(..) != 'name']"/>
|
4610
|
+
<xsl:variable name="isNoteOrFnExist" select="../*[local-name()='note'] or ../*[local-name()='dl'] or ..//*[local-name()='fn'][local-name(..) != 'name']"/>
|
4609
4611
|
|
4610
4612
|
<xsl:variable name="isNoteOrFnExistShowAfterTable">
|
4611
4613
|
|
@@ -4673,6 +4675,7 @@
|
|
4673
4675
|
|
4674
4676
|
<!-- except gb and bsi -->
|
4675
4677
|
|
4678
|
+
<xsl:apply-templates select="../*[local-name()='dl']"/>
|
4676
4679
|
<xsl:apply-templates select="../*[local-name()='note']"/>
|
4677
4680
|
|
4678
4681
|
<xsl:variable name="isDisplayRowSeparator">
|
@@ -4842,7 +4845,7 @@
|
|
4842
4845
|
<!-- ===================== -->
|
4843
4846
|
<!-- Table's row processing -->
|
4844
4847
|
<!-- ===================== -->
|
4845
|
-
<!-- row in table header (thead) -->
|
4848
|
+
<!-- row in table header (thead) thead/tr -->
|
4846
4849
|
<xsl:template match="*[local-name()='thead']/*[local-name()='tr']" priority="2">
|
4847
4850
|
<fo:table-row xsl:use-attribute-sets="table-header-row-style">
|
4848
4851
|
|
@@ -4887,7 +4890,7 @@
|
|
4887
4890
|
</xsl:choose>
|
4888
4891
|
</xsl:template>
|
4889
4892
|
|
4890
|
-
<!-- row in table footer (tfoot) -->
|
4893
|
+
<!-- row in table footer (tfoot), tfoot/tr -->
|
4891
4894
|
<xsl:template match="*[local-name()='tfoot']/*[local-name()='tr']" priority="2">
|
4892
4895
|
<fo:table-row xsl:use-attribute-sets="table-footer-row-style">
|
4893
4896
|
|
@@ -5390,6 +5393,8 @@
|
|
5390
5393
|
<!-- <dl><xsl:copy-of select="."/></dl> -->
|
5391
5394
|
<fo:block-container>
|
5392
5395
|
|
5396
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
5397
|
+
|
5393
5398
|
<xsl:if test="not(ancestor::*[local-name() = 'quote'])">
|
5394
5399
|
<xsl:attribute name="margin-left">0mm</xsl:attribute>
|
5395
5400
|
</xsl:if>
|
@@ -7548,13 +7553,17 @@
|
|
7548
7553
|
</xsl:template>
|
7549
7554
|
|
7550
7555
|
<xsl:template match="*[local-name() = 'callout']">
|
7551
|
-
<
|
7556
|
+
<xsl:choose>
|
7557
|
+
<xsl:when test="normalize-space(@target) = ''"><<xsl:apply-templates/>></xsl:when>
|
7558
|
+
<xsl:otherwise><fo:basic-link internal-destination="{@target}" fox:alt-text="{@target}"><<xsl:apply-templates/>></fo:basic-link></xsl:otherwise>
|
7559
|
+
</xsl:choose>
|
7552
7560
|
</xsl:template>
|
7553
7561
|
|
7554
7562
|
<xsl:template match="*[local-name() = 'annotation']">
|
7555
7563
|
<xsl:variable name="annotation-id" select="@id"/>
|
7556
7564
|
<xsl:variable name="callout" select="//*[@target = $annotation-id]/text()"/>
|
7557
7565
|
<fo:block id="{$annotation-id}" white-space="nowrap">
|
7566
|
+
|
7558
7567
|
<fo:inline>
|
7559
7568
|
<xsl:apply-templates>
|
7560
7569
|
<xsl:with-param name="callout" select="concat('<', $callout, '> ')"/>
|
@@ -7659,6 +7668,10 @@
|
|
7659
7668
|
<!-- ====== -->
|
7660
7669
|
<!-- ====== -->
|
7661
7670
|
|
7671
|
+
<xsl:template name="setBlockSpanAll">
|
7672
|
+
<xsl:if test="@columns = 1 or (local-name() = 'p' and *[@columns = 1])"><xsl:attribute name="span">all</xsl:attribute></xsl:if>
|
7673
|
+
</xsl:template>
|
7674
|
+
|
7662
7675
|
<!-- ====== -->
|
7663
7676
|
<!-- note -->
|
7664
7677
|
<!-- termnote -->
|
@@ -7668,6 +7681,8 @@
|
|
7668
7681
|
|
7669
7682
|
<fo:block-container id="{@id}" xsl:use-attribute-sets="note-style">
|
7670
7683
|
|
7684
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
7685
|
+
|
7671
7686
|
<xsl:if test="$doctype = 'amendment' and parent::*[local-name() = 'quote']">
|
7672
7687
|
<xsl:attribute name="font-size">inherit</xsl:attribute>
|
7673
7688
|
</xsl:if>
|
@@ -7722,6 +7737,8 @@
|
|
7722
7737
|
<xsl:template match="*[local-name() = 'termnote']">
|
7723
7738
|
<fo:block id="{@id}" xsl:use-attribute-sets="termnote-style">
|
7724
7739
|
|
7740
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
7741
|
+
|
7725
7742
|
<xsl:if test="$doctype = 'amendment' and parent::*[local-name() = 'quote']">
|
7726
7743
|
<xsl:attribute name="font-size">inherit</xsl:attribute>
|
7727
7744
|
</xsl:if>
|
@@ -9639,6 +9656,9 @@
|
|
9639
9656
|
<!-- ====== -->
|
9640
9657
|
<xsl:template match="*[local-name() = 'termexample']">
|
9641
9658
|
<fo:block id="{@id}" xsl:use-attribute-sets="termexample-style">
|
9659
|
+
|
9660
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
9661
|
+
|
9642
9662
|
<xsl:apply-templates select="*[local-name()='name']"/>
|
9643
9663
|
<xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
|
9644
9664
|
</fo:block>
|
@@ -9690,6 +9710,8 @@
|
|
9690
9710
|
|
9691
9711
|
<fo:block-container id="{@id}" xsl:use-attribute-sets="example-style">
|
9692
9712
|
|
9713
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
9714
|
+
|
9693
9715
|
<xsl:variable name="fo_element">
|
9694
9716
|
<xsl:if test=".//*[local-name() = 'table'] or .//*[local-name() = 'dl'] or *[not(local-name() = 'name')][1][local-name() = 'sourcecode']">block</xsl:if>
|
9695
9717
|
inline
|
@@ -9717,6 +9739,35 @@
|
|
9717
9739
|
</fo:block-container>
|
9718
9740
|
</xsl:when> <!-- end block -->
|
9719
9741
|
|
9742
|
+
<xsl:when test="contains(normalize-space($fo_element), 'list')">
|
9743
|
+
|
9744
|
+
<xsl:variable name="provisional_distance_between_starts">
|
9745
|
+
7
|
9746
|
+
</xsl:variable>
|
9747
|
+
<xsl:variable name="indent">
|
9748
|
+
0
|
9749
|
+
</xsl:variable>
|
9750
|
+
|
9751
|
+
<fo:list-block provisional-distance-between-starts="{$provisional_distance_between_starts}mm">
|
9752
|
+
<fo:list-item>
|
9753
|
+
<fo:list-item-label start-indent="{$indent}mm" end-indent="label-end()">
|
9754
|
+
<fo:block>
|
9755
|
+
<xsl:apply-templates select="*[local-name()='name']">
|
9756
|
+
<xsl:with-param name="fo_element">block</xsl:with-param>
|
9757
|
+
</xsl:apply-templates>
|
9758
|
+
</fo:block>
|
9759
|
+
</fo:list-item-label>
|
9760
|
+
<fo:list-item-body start-indent="body-start()">
|
9761
|
+
<fo:block>
|
9762
|
+
<xsl:apply-templates select="node()[not(local-name() = 'name')]">
|
9763
|
+
<xsl:with-param name="fo_element" select="$fo_element"/>
|
9764
|
+
</xsl:apply-templates>
|
9765
|
+
</fo:block>
|
9766
|
+
</fo:list-item-body>
|
9767
|
+
</fo:list-item>
|
9768
|
+
</fo:list-block>
|
9769
|
+
</xsl:when> <!-- end list -->
|
9770
|
+
|
9720
9771
|
<xsl:otherwise> <!-- inline -->
|
9721
9772
|
|
9722
9773
|
<!-- display 'EXAMPLE' and first element in the same line -->
|
@@ -9797,6 +9848,11 @@
|
|
9797
9848
|
</fo:block>
|
9798
9849
|
</fo:block-container>
|
9799
9850
|
</xsl:when>
|
9851
|
+
<xsl:when test="starts-with(normalize-space($element), 'list')">
|
9852
|
+
<fo:block xsl:use-attribute-sets="example-p-style">
|
9853
|
+
<xsl:apply-templates/>
|
9854
|
+
</fo:block>
|
9855
|
+
</xsl:when>
|
9800
9856
|
<xsl:otherwise>
|
9801
9857
|
<fo:inline xsl:use-attribute-sets="example-p-style">
|
9802
9858
|
<xsl:apply-templates/>
|
@@ -9914,6 +9970,9 @@
|
|
9914
9970
|
<!-- ====== -->
|
9915
9971
|
<xsl:template match="*[local-name() = 'quote']">
|
9916
9972
|
<fo:block-container margin-left="0mm">
|
9973
|
+
|
9974
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
9975
|
+
|
9917
9976
|
<xsl:if test="parent::*[local-name() = 'note']">
|
9918
9977
|
<xsl:if test="not(ancestor::*[local-name() = 'table'])">
|
9919
9978
|
<xsl:attribute name="margin-left">5mm</xsl:attribute>
|
@@ -10206,6 +10265,8 @@
|
|
10206
10265
|
<fo:block>
|
10207
10266
|
<xsl:call-template name="setId"/>
|
10208
10267
|
|
10268
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
10269
|
+
|
10209
10270
|
<xsl:apply-templates/>
|
10210
10271
|
</fo:block>
|
10211
10272
|
</xsl:template>
|
@@ -10220,6 +10281,8 @@
|
|
10220
10281
|
<fo:block break-after="page"/>
|
10221
10282
|
<fo:block id="{@id}">
|
10222
10283
|
|
10284
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
10285
|
+
|
10223
10286
|
</fo:block>
|
10224
10287
|
<xsl:apply-templates/>
|
10225
10288
|
</xsl:template>
|
@@ -11173,6 +11236,8 @@
|
|
11173
11236
|
|
11174
11237
|
<fo:block xsl:use-attribute-sets="admonition-style">
|
11175
11238
|
|
11239
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
11240
|
+
|
11176
11241
|
<xsl:if test="@type = 'editorial'">
|
11177
11242
|
<xsl:attribute name="color">green</xsl:attribute>
|
11178
11243
|
<xsl:attribute name="font-weight">normal</xsl:attribute>
|
@@ -11355,6 +11420,16 @@
|
|
11355
11420
|
<xsl:apply-templates mode="update_xml_step1"/>
|
11356
11421
|
</xsl:copy>
|
11357
11422
|
</xsl:template>
|
11423
|
+
|
11424
|
+
<!-- remove semantic xml -->
|
11425
|
+
<xsl:template match="*[local-name() = 'metanorma-extension']/*[local-name() = 'metanorma']/*[local-name() = 'source']" mode="update_xml_step1"/>
|
11426
|
+
|
11427
|
+
<!-- remove image/emf -->
|
11428
|
+
<xsl:template match="*[local-name() = 'image']/*[local-name() = 'emf']" mode="update_xml_step1"/>
|
11429
|
+
|
11430
|
+
<xsl:template match="*[local-name() = 'stem'] | *[local-name() = 'image']" mode="update_xml_step1">
|
11431
|
+
<xsl:copy-of select="."/>
|
11432
|
+
</xsl:template>
|
11358
11433
|
<!-- =========================================================================== -->
|
11359
11434
|
<!-- END STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
|
11360
11435
|
<!-- =========================================================================== -->
|
@@ -11455,6 +11530,10 @@
|
|
11455
11530
|
</xsl:call-template>
|
11456
11531
|
</xsl:template>
|
11457
11532
|
|
11533
|
+
<xsl:template match="*[local-name() = 'stem'] | *[local-name() = 'image']" mode="update_xml_step2">
|
11534
|
+
<xsl:copy-of select="."/>
|
11535
|
+
</xsl:template>
|
11536
|
+
|
11458
11537
|
<!-- =========================================================================== -->
|
11459
11538
|
<!-- END STEP2: add 'fn' after 'eref' and 'origin', if referenced to bibitem with 'note' = Withdrawn.' or 'Cancelled and replaced...' -->
|
11460
11539
|
<!-- =========================================================================== -->
|
@@ -11476,7 +11555,7 @@
|
|
11476
11555
|
|
11477
11556
|
<xsl:variable name="element_name_keep-together_within-line">keep-together_within-line</xsl:variable>
|
11478
11557
|
|
11479
|
-
<xsl:template match="text()[not(ancestor::*[local-name() = 'bibdata'] or ancestor::*[local-name() = 'link'][not(contains(.,' '))] or ancestor::*[local-name() = 'sourcecode'] or ancestor::*[local-name() = 'math'] or starts-with(., 'http://') or starts-with(., 'https://') or starts-with(., 'www.') )]" name="keep_together_standard_number" mode="update_xml_enclose_keep-together_within-line">
|
11558
|
+
<xsl:template match="text()[not(ancestor::*[local-name() = 'bibdata'] or ancestor::*[local-name() = 'link'][not(contains(.,' '))] or ancestor::*[local-name() = 'sourcecode'] or ancestor::*[local-name() = 'math'] or ancestor::*[local-name() = 'svg'] or starts-with(., 'http://') or starts-with(., 'https://') or starts-with(., 'www.') )]" name="keep_together_standard_number" mode="update_xml_enclose_keep-together_within-line">
|
11480
11559
|
|
11481
11560
|
<!-- enclose standard's number into tag 'keep-together_within-line' -->
|
11482
11561
|
<xsl:variable name="tag_keep-together_within-line_open">###<xsl:value-of select="$element_name_keep-together_within-line"/>###</xsl:variable>
|
@@ -11558,6 +11637,10 @@
|
|
11558
11637
|
|
11559
11638
|
</xsl:template>
|
11560
11639
|
|
11640
|
+
<xsl:template match="*[local-name() = 'stem'] | *[local-name() = 'image']" mode="update_xml_enclose_keep-together_within-line">
|
11641
|
+
<xsl:copy-of select="."/>
|
11642
|
+
</xsl:template>
|
11643
|
+
|
11561
11644
|
<xsl:template name="replace_text_tags">
|
11562
11645
|
<xsl:param name="tag_open"/>
|
11563
11646
|
<xsl:param name="tag_close"/>
|
@@ -11584,6 +11667,194 @@
|
|
11584
11667
|
<!-- END XML UPDATE STEP: enclose standard's name into tag 'keep-together_within-line' -->
|
11585
11668
|
<!-- ===================================== -->
|
11586
11669
|
|
11670
|
+
<!-- ===================================== -->
|
11671
|
+
<!-- ===================================== -->
|
11672
|
+
<!-- Make linear XML (need for landscape orientation) -->
|
11673
|
+
<!-- ===================================== -->
|
11674
|
+
<!-- ===================================== -->
|
11675
|
+
<xsl:template match="@*|node()" mode="linear_xml">
|
11676
|
+
<xsl:copy>
|
11677
|
+
<xsl:apply-templates select="@*|node()" mode="linear_xml"/>
|
11678
|
+
</xsl:copy>
|
11679
|
+
</xsl:template>
|
11680
|
+
|
11681
|
+
<xsl:template match="processing-instruction()" mode="linear_xml">
|
11682
|
+
<xsl:copy-of select="."/>
|
11683
|
+
</xsl:template>
|
11684
|
+
|
11685
|
+
<!-- From:
|
11686
|
+
<clause>
|
11687
|
+
<title>...</title>
|
11688
|
+
<p>...</p>
|
11689
|
+
</clause>
|
11690
|
+
To:
|
11691
|
+
<clause/>
|
11692
|
+
<title>...</title>
|
11693
|
+
<p>...</p>
|
11694
|
+
-->
|
11695
|
+
<xsl:template match="*[local-name() = 'foreword'] | *[local-name() = 'foreword']//*[local-name() = 'clause'] | *[local-name() = 'preface']//*[local-name() = 'clause'][not(@type = 'corrigenda') and not(@type = 'policy') and not(@type = 'related-refs')] | *[local-name() = 'introduction'] | *[local-name() = 'introduction']//*[local-name() = 'clause'] | *[local-name() = 'sections']//*[local-name() = 'clause'] | *[local-name() = 'annex'] | *[local-name() = 'annex']//*[local-name() = 'clause'] | *[local-name() = 'references'][not(@hidden = 'true')] | *[local-name() = 'bibliography']/*[local-name() = 'clause'] | *[local-name() = 'colophon'] | *[local-name() = 'colophon']//*[local-name() = 'clause'] | *[local-name()='sections']//*[local-name()='terms'] | *[local-name()='sections']//*[local-name()='definitions'] | *[local-name()='annex']//*[local-name()='definitions']" mode="linear_xml" name="clause_linear">
|
11696
|
+
|
11697
|
+
<xsl:copy>
|
11698
|
+
<xsl:apply-templates select="@*" mode="linear_xml"/>
|
11699
|
+
|
11700
|
+
<xsl:attribute name="keep-with-next">always</xsl:attribute>
|
11701
|
+
|
11702
|
+
<xsl:if test="local-name() = 'foreword' or local-name() = 'introduction' or local-name(..) = 'preface' or local-name(..) = 'sections' or (local-name() = 'references' and parent::*[local-name() = 'bibliography']) or (local-name() = 'clause' and parent::*[local-name() = 'bibliography']) or local-name() = 'annex' or local-name(..) = 'annex' or local-name(..) = 'colophon'">
|
11703
|
+
<xsl:attribute name="mainsection">true</xsl:attribute>
|
11704
|
+
</xsl:if>
|
11705
|
+
</xsl:copy>
|
11706
|
+
|
11707
|
+
<xsl:apply-templates mode="linear_xml"/>
|
11708
|
+
</xsl:template>
|
11709
|
+
|
11710
|
+
<xsl:template match="*[local-name() = 'term']" mode="linear_xml" priority="2">
|
11711
|
+
<xsl:copy>
|
11712
|
+
<xsl:apply-templates select="@*" mode="linear_xml"/>
|
11713
|
+
<xsl:attribute name="keep-with-next">always</xsl:attribute>
|
11714
|
+
<xsl:variable name="level">
|
11715
|
+
<xsl:call-template name="getLevel"/>
|
11716
|
+
</xsl:variable>
|
11717
|
+
<xsl:attribute name="depth"><xsl:value-of select="$level"/></xsl:attribute>
|
11718
|
+
<xsl:attribute name="ancestor">sections</xsl:attribute>
|
11719
|
+
<xsl:apply-templates select="node()[not(local-name() = 'term')]" mode="linear_xml"/>
|
11720
|
+
</xsl:copy>
|
11721
|
+
<xsl:apply-templates select="*[local-name() = 'term']" mode="linear_xml"/>
|
11722
|
+
</xsl:template>
|
11723
|
+
|
11724
|
+
<xsl:template match="*[local-name() = 'introduction']//*[local-name() = 'title'] | *[local-name() = 'foreword']//*[local-name() = 'title'] | *[local-name() = 'sections']//*[local-name() = 'title'] | *[local-name() = 'annex']//*[local-name() = 'title'] | *[local-name() = 'bibliography']/*[local-name() = 'clause']/*[local-name() = 'title'] | *[local-name() = 'references']/*[local-name() = 'title'] | *[local-name() = 'colophon']//*[local-name() = 'title']" mode="linear_xml" priority="2">
|
11725
|
+
<xsl:copy>
|
11726
|
+
<xsl:apply-templates select="@*" mode="linear_xml"/>
|
11727
|
+
|
11728
|
+
<xsl:attribute name="keep-with-next">always</xsl:attribute>
|
11729
|
+
|
11730
|
+
<xsl:variable name="level">
|
11731
|
+
<xsl:call-template name="getLevel"/>
|
11732
|
+
</xsl:variable>
|
11733
|
+
<xsl:attribute name="depth"><xsl:value-of select="$level"/></xsl:attribute>
|
11734
|
+
|
11735
|
+
<xsl:if test="parent::*[local-name() = 'annex']">
|
11736
|
+
<xsl:attribute name="depth">1</xsl:attribute>
|
11737
|
+
</xsl:if>
|
11738
|
+
|
11739
|
+
<xsl:if test="../@inline-header = 'true' and following-sibling::*[1][local-name() = 'p']">
|
11740
|
+
<xsl:copy-of select="../@inline-header"/>
|
11741
|
+
</xsl:if>
|
11742
|
+
|
11743
|
+
<xsl:attribute name="ancestor">
|
11744
|
+
<xsl:choose>
|
11745
|
+
<xsl:when test="ancestor::*[local-name() = 'foreword']">foreword</xsl:when>
|
11746
|
+
<xsl:when test="ancestor::*[local-name() = 'introduction']">introduction</xsl:when>
|
11747
|
+
<xsl:when test="ancestor::*[local-name() = 'sections']">sections</xsl:when>
|
11748
|
+
<xsl:when test="ancestor::*[local-name() = 'annex']">annex</xsl:when>
|
11749
|
+
<xsl:when test="ancestor::*[local-name() = 'bibliography']">bibliography</xsl:when>
|
11750
|
+
</xsl:choose>
|
11751
|
+
</xsl:attribute>
|
11752
|
+
|
11753
|
+
<xsl:apply-templates mode="linear_xml"/>
|
11754
|
+
</xsl:copy>
|
11755
|
+
</xsl:template>
|
11756
|
+
|
11757
|
+
<!-- add @to = figure, table, clause -->
|
11758
|
+
<!-- add @depth = from -->
|
11759
|
+
<xsl:template match="*[local-name() = 'xref']" mode="linear_xml">
|
11760
|
+
<xsl:copy>
|
11761
|
+
<xsl:apply-templates select="@*" mode="linear_xml"/>
|
11762
|
+
<xsl:variable name="target" select="@target"/>
|
11763
|
+
<xsl:attribute name="to">
|
11764
|
+
<xsl:value-of select="local-name(//*[@id = current()/@target][1])"/>
|
11765
|
+
</xsl:attribute>
|
11766
|
+
<xsl:attribute name="depth">
|
11767
|
+
<xsl:value-of select="//*[@id = current()/@target][1]/*[local-name() = 'title']/@depth"/>
|
11768
|
+
</xsl:attribute>
|
11769
|
+
<xsl:apply-templates select="node()" mode="linear_xml"/>
|
11770
|
+
</xsl:copy>
|
11771
|
+
</xsl:template>
|
11772
|
+
|
11773
|
+
<xsl:template match="*[not(ancestor::*[local-name() = 'sourcecode'])]/*[local-name() = 'p' or local-name() = 'strong' or local-name() = 'em']/text()" mode="linear_xml">
|
11774
|
+
<xsl:choose>
|
11775
|
+
<xsl:when test="contains(., $non_breaking_hyphen)">
|
11776
|
+
<xsl:call-template name="replaceChar">
|
11777
|
+
<xsl:with-param name="text" select="."/>
|
11778
|
+
<xsl:with-param name="replace" select="$non_breaking_hyphen"/>
|
11779
|
+
<xsl:with-param name="by" select="'-'"/>
|
11780
|
+
</xsl:call-template>
|
11781
|
+
</xsl:when>
|
11782
|
+
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
|
11783
|
+
</xsl:choose>
|
11784
|
+
</xsl:template>
|
11785
|
+
|
11786
|
+
<xsl:template name="replaceChar">
|
11787
|
+
<xsl:param name="text"/>
|
11788
|
+
<xsl:param name="replace"/>
|
11789
|
+
<xsl:param name="by"/>
|
11790
|
+
<xsl:choose>
|
11791
|
+
<xsl:when test="$text = '' or $replace = '' or not($replace)">
|
11792
|
+
<xsl:value-of select="$text"/>
|
11793
|
+
</xsl:when>
|
11794
|
+
<xsl:when test="contains($text, $replace)">
|
11795
|
+
<xsl:value-of select="substring-before($text,$replace)"/>
|
11796
|
+
<xsl:element name="inlineChar" namespace="https://www.metanorma.org/ns/jis"><xsl:value-of select="$by"/></xsl:element>
|
11797
|
+
<xsl:call-template name="replaceChar">
|
11798
|
+
<xsl:with-param name="text" select="substring-after($text,$replace)"/>
|
11799
|
+
<xsl:with-param name="replace" select="$replace"/>
|
11800
|
+
<xsl:with-param name="by" select="$by"/>
|
11801
|
+
</xsl:call-template>
|
11802
|
+
</xsl:when>
|
11803
|
+
<xsl:otherwise>
|
11804
|
+
<xsl:value-of select="$text"/>
|
11805
|
+
</xsl:otherwise>
|
11806
|
+
</xsl:choose>
|
11807
|
+
</xsl:template>
|
11808
|
+
|
11809
|
+
<xsl:template match="*[local-name() = 'inlineChar']">
|
11810
|
+
<fo:inline><xsl:value-of select="."/></fo:inline>
|
11811
|
+
</xsl:template>
|
11812
|
+
|
11813
|
+
<!-- change @reference to actual value, and add skip_footnote_body="true" for repeatable (2nd, 3rd, ...) -->
|
11814
|
+
<!--
|
11815
|
+
<fn reference="1">
|
11816
|
+
<p id="_8e5cf917-f75a-4a49-b0aa-1714cb6cf954">Formerly denoted as 15 % (m/m).</p>
|
11817
|
+
</fn>
|
11818
|
+
-->
|
11819
|
+
<xsl:template match="*[local-name() = 'fn'][not(ancestor::*[(local-name() = 'table' or local-name() = 'figure')] and not(ancestor::*[local-name() = 'name']))]" mode="linear_xml" name="linear_xml_fn">
|
11820
|
+
<xsl:variable name="p_fn_">
|
11821
|
+
<xsl:call-template name="get_fn_list"/>
|
11822
|
+
</xsl:variable>
|
11823
|
+
<xsl:variable name="p_fn" select="xalan:nodeset($p_fn_)"/>
|
11824
|
+
<xsl:variable name="gen_id" select="generate-id(.)"/>
|
11825
|
+
<xsl:variable name="lang" select="ancestor::*[contains(local-name(), '-standard')]/*[local-name()='bibdata']//*[local-name()='language'][@current = 'true']"/>
|
11826
|
+
<xsl:variable name="reference" select="@reference"/>
|
11827
|
+
<!-- fn sequence number in document -->
|
11828
|
+
<xsl:variable name="current_fn_number" select="count($p_fn//fn[@reference = $reference]/preceding-sibling::fn) + 1"/>
|
11829
|
+
|
11830
|
+
<xsl:copy>
|
11831
|
+
<xsl:apply-templates select="@*" mode="linear_xml"/>
|
11832
|
+
<!-- put actual reference number -->
|
11833
|
+
<xsl:attribute name="current_fn_number">
|
11834
|
+
<xsl:value-of select="$current_fn_number"/>
|
11835
|
+
</xsl:attribute>
|
11836
|
+
<xsl:attribute name="skip_footnote_body"> <!-- false for repeatable footnote -->
|
11837
|
+
<xsl:value-of select="not($p_fn//fn[@gen_id = $gen_id] and (1 = 1))"/>
|
11838
|
+
</xsl:attribute>
|
11839
|
+
<xsl:apply-templates select="node()" mode="linear_xml"/>
|
11840
|
+
</xsl:copy>
|
11841
|
+
</xsl:template>
|
11842
|
+
|
11843
|
+
<xsl:template match="*[local-name() = 'p'][@type = 'section-title']" priority="3" mode="linear_xml">
|
11844
|
+
<xsl:copy>
|
11845
|
+
<xsl:apply-templates select="@*" mode="linear_xml"/>
|
11846
|
+
<xsl:if test="@depth = '1'">
|
11847
|
+
<xsl:attribute name="mainsection">true</xsl:attribute>
|
11848
|
+
</xsl:if>
|
11849
|
+
<xsl:apply-templates select="node()" mode="linear_xml"/>
|
11850
|
+
</xsl:copy>
|
11851
|
+
</xsl:template>
|
11852
|
+
<!-- ===================================== -->
|
11853
|
+
<!-- ===================================== -->
|
11854
|
+
<!-- END: Make linear XML (need for landscape orientation) -->
|
11855
|
+
<!-- ===================================== -->
|
11856
|
+
<!-- ===================================== -->
|
11857
|
+
|
11587
11858
|
<!-- for correct rendering combining chars -->
|
11588
11859
|
<xsl:template match="*[local-name() = 'lang_none']">
|
11589
11860
|
<fo:inline xml:lang="none"><xsl:value-of select="."/></fo:inline>
|
@@ -2824,6 +2824,7 @@
|
|
2824
2824
|
<xsl:variable name="table-border_">
|
2825
2825
|
|
2826
2826
|
1pt solid black
|
2827
|
+
|
2827
2828
|
</xsl:variable>
|
2828
2829
|
<xsl:variable name="table-border" select="normalize-space($table-border_)"/>
|
2829
2830
|
|
@@ -3112,6 +3113,7 @@
|
|
3112
3113
|
<xsl:attribute-set name="term-name-style">
|
3113
3114
|
<xsl:attribute name="keep-with-next">always</xsl:attribute>
|
3114
3115
|
<xsl:attribute name="font-weight">bold</xsl:attribute>
|
3116
|
+
|
3115
3117
|
</xsl:attribute-set>
|
3116
3118
|
|
3117
3119
|
<xsl:attribute-set name="figure-block-style">
|
@@ -4069,7 +4071,7 @@
|
|
4069
4071
|
<xsl:apply-templates select="*[local-name()='thead']" mode="process_tbody"/>
|
4070
4072
|
</xsl:when>
|
4071
4073
|
<xsl:otherwise>
|
4072
|
-
<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
|
4074
|
+
<xsl:apply-templates select="node()[not(local-name() = 'name') and not(local-name() = 'note') and not(local-name() = 'dl') and not(local-name() = 'thead') and not(local-name() = 'tfoot')]"/> <!-- process all table' elements, except name, header, footer, note and dl which render separaterely -->
|
4073
4075
|
</xsl:otherwise>
|
4074
4076
|
</xsl:choose>
|
4075
4077
|
|
@@ -4605,7 +4607,7 @@
|
|
4605
4607
|
<xsl:param name="colwidths"/>
|
4606
4608
|
<xsl:param name="colgroup"/>
|
4607
4609
|
|
4608
|
-
<xsl:variable name="isNoteOrFnExist" select="../*[local-name()='note'] or ..//*[local-name()='fn'][local-name(..) != 'name']"/>
|
4610
|
+
<xsl:variable name="isNoteOrFnExist" select="../*[local-name()='note'] or ../*[local-name()='dl'] or ..//*[local-name()='fn'][local-name(..) != 'name']"/>
|
4609
4611
|
|
4610
4612
|
<xsl:variable name="isNoteOrFnExistShowAfterTable">
|
4611
4613
|
|
@@ -4673,6 +4675,7 @@
|
|
4673
4675
|
|
4674
4676
|
<!-- except gb and bsi -->
|
4675
4677
|
|
4678
|
+
<xsl:apply-templates select="../*[local-name()='dl']"/>
|
4676
4679
|
<xsl:apply-templates select="../*[local-name()='note']"/>
|
4677
4680
|
|
4678
4681
|
<xsl:variable name="isDisplayRowSeparator">
|
@@ -4842,7 +4845,7 @@
|
|
4842
4845
|
<!-- ===================== -->
|
4843
4846
|
<!-- Table's row processing -->
|
4844
4847
|
<!-- ===================== -->
|
4845
|
-
<!-- row in table header (thead) -->
|
4848
|
+
<!-- row in table header (thead) thead/tr -->
|
4846
4849
|
<xsl:template match="*[local-name()='thead']/*[local-name()='tr']" priority="2">
|
4847
4850
|
<fo:table-row xsl:use-attribute-sets="table-header-row-style">
|
4848
4851
|
|
@@ -4887,7 +4890,7 @@
|
|
4887
4890
|
</xsl:choose>
|
4888
4891
|
</xsl:template>
|
4889
4892
|
|
4890
|
-
<!-- row in table footer (tfoot) -->
|
4893
|
+
<!-- row in table footer (tfoot), tfoot/tr -->
|
4891
4894
|
<xsl:template match="*[local-name()='tfoot']/*[local-name()='tr']" priority="2">
|
4892
4895
|
<fo:table-row xsl:use-attribute-sets="table-footer-row-style">
|
4893
4896
|
|
@@ -5390,6 +5393,8 @@
|
|
5390
5393
|
<!-- <dl><xsl:copy-of select="."/></dl> -->
|
5391
5394
|
<fo:block-container>
|
5392
5395
|
|
5396
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
5397
|
+
|
5393
5398
|
<xsl:if test="not(ancestor::*[local-name() = 'quote'])">
|
5394
5399
|
<xsl:attribute name="margin-left">0mm</xsl:attribute>
|
5395
5400
|
</xsl:if>
|
@@ -7548,13 +7553,17 @@
|
|
7548
7553
|
</xsl:template>
|
7549
7554
|
|
7550
7555
|
<xsl:template match="*[local-name() = 'callout']">
|
7551
|
-
<
|
7556
|
+
<xsl:choose>
|
7557
|
+
<xsl:when test="normalize-space(@target) = ''"><<xsl:apply-templates/>></xsl:when>
|
7558
|
+
<xsl:otherwise><fo:basic-link internal-destination="{@target}" fox:alt-text="{@target}"><<xsl:apply-templates/>></fo:basic-link></xsl:otherwise>
|
7559
|
+
</xsl:choose>
|
7552
7560
|
</xsl:template>
|
7553
7561
|
|
7554
7562
|
<xsl:template match="*[local-name() = 'annotation']">
|
7555
7563
|
<xsl:variable name="annotation-id" select="@id"/>
|
7556
7564
|
<xsl:variable name="callout" select="//*[@target = $annotation-id]/text()"/>
|
7557
7565
|
<fo:block id="{$annotation-id}" white-space="nowrap">
|
7566
|
+
|
7558
7567
|
<fo:inline>
|
7559
7568
|
<xsl:apply-templates>
|
7560
7569
|
<xsl:with-param name="callout" select="concat('<', $callout, '> ')"/>
|
@@ -7659,6 +7668,10 @@
|
|
7659
7668
|
<!-- ====== -->
|
7660
7669
|
<!-- ====== -->
|
7661
7670
|
|
7671
|
+
<xsl:template name="setBlockSpanAll">
|
7672
|
+
<xsl:if test="@columns = 1 or (local-name() = 'p' and *[@columns = 1])"><xsl:attribute name="span">all</xsl:attribute></xsl:if>
|
7673
|
+
</xsl:template>
|
7674
|
+
|
7662
7675
|
<!-- ====== -->
|
7663
7676
|
<!-- note -->
|
7664
7677
|
<!-- termnote -->
|
@@ -7668,6 +7681,8 @@
|
|
7668
7681
|
|
7669
7682
|
<fo:block-container id="{@id}" xsl:use-attribute-sets="note-style">
|
7670
7683
|
|
7684
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
7685
|
+
|
7671
7686
|
<xsl:if test="$doctype = 'amendment' and parent::*[local-name() = 'quote']">
|
7672
7687
|
<xsl:attribute name="font-size">inherit</xsl:attribute>
|
7673
7688
|
</xsl:if>
|
@@ -7722,6 +7737,8 @@
|
|
7722
7737
|
<xsl:template match="*[local-name() = 'termnote']">
|
7723
7738
|
<fo:block id="{@id}" xsl:use-attribute-sets="termnote-style">
|
7724
7739
|
|
7740
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
7741
|
+
|
7725
7742
|
<xsl:if test="$doctype = 'amendment' and parent::*[local-name() = 'quote']">
|
7726
7743
|
<xsl:attribute name="font-size">inherit</xsl:attribute>
|
7727
7744
|
</xsl:if>
|
@@ -9639,6 +9656,9 @@
|
|
9639
9656
|
<!-- ====== -->
|
9640
9657
|
<xsl:template match="*[local-name() = 'termexample']">
|
9641
9658
|
<fo:block id="{@id}" xsl:use-attribute-sets="termexample-style">
|
9659
|
+
|
9660
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
9661
|
+
|
9642
9662
|
<xsl:apply-templates select="*[local-name()='name']"/>
|
9643
9663
|
<xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
|
9644
9664
|
</fo:block>
|
@@ -9690,6 +9710,8 @@
|
|
9690
9710
|
|
9691
9711
|
<fo:block-container id="{@id}" xsl:use-attribute-sets="example-style">
|
9692
9712
|
|
9713
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
9714
|
+
|
9693
9715
|
<xsl:variable name="fo_element">
|
9694
9716
|
<xsl:if test=".//*[local-name() = 'table'] or .//*[local-name() = 'dl'] or *[not(local-name() = 'name')][1][local-name() = 'sourcecode']">block</xsl:if>
|
9695
9717
|
inline
|
@@ -9717,6 +9739,35 @@
|
|
9717
9739
|
</fo:block-container>
|
9718
9740
|
</xsl:when> <!-- end block -->
|
9719
9741
|
|
9742
|
+
<xsl:when test="contains(normalize-space($fo_element), 'list')">
|
9743
|
+
|
9744
|
+
<xsl:variable name="provisional_distance_between_starts">
|
9745
|
+
7
|
9746
|
+
</xsl:variable>
|
9747
|
+
<xsl:variable name="indent">
|
9748
|
+
0
|
9749
|
+
</xsl:variable>
|
9750
|
+
|
9751
|
+
<fo:list-block provisional-distance-between-starts="{$provisional_distance_between_starts}mm">
|
9752
|
+
<fo:list-item>
|
9753
|
+
<fo:list-item-label start-indent="{$indent}mm" end-indent="label-end()">
|
9754
|
+
<fo:block>
|
9755
|
+
<xsl:apply-templates select="*[local-name()='name']">
|
9756
|
+
<xsl:with-param name="fo_element">block</xsl:with-param>
|
9757
|
+
</xsl:apply-templates>
|
9758
|
+
</fo:block>
|
9759
|
+
</fo:list-item-label>
|
9760
|
+
<fo:list-item-body start-indent="body-start()">
|
9761
|
+
<fo:block>
|
9762
|
+
<xsl:apply-templates select="node()[not(local-name() = 'name')]">
|
9763
|
+
<xsl:with-param name="fo_element" select="$fo_element"/>
|
9764
|
+
</xsl:apply-templates>
|
9765
|
+
</fo:block>
|
9766
|
+
</fo:list-item-body>
|
9767
|
+
</fo:list-item>
|
9768
|
+
</fo:list-block>
|
9769
|
+
</xsl:when> <!-- end list -->
|
9770
|
+
|
9720
9771
|
<xsl:otherwise> <!-- inline -->
|
9721
9772
|
|
9722
9773
|
<!-- display 'EXAMPLE' and first element in the same line -->
|
@@ -9797,6 +9848,11 @@
|
|
9797
9848
|
</fo:block>
|
9798
9849
|
</fo:block-container>
|
9799
9850
|
</xsl:when>
|
9851
|
+
<xsl:when test="starts-with(normalize-space($element), 'list')">
|
9852
|
+
<fo:block xsl:use-attribute-sets="example-p-style">
|
9853
|
+
<xsl:apply-templates/>
|
9854
|
+
</fo:block>
|
9855
|
+
</xsl:when>
|
9800
9856
|
<xsl:otherwise>
|
9801
9857
|
<fo:inline xsl:use-attribute-sets="example-p-style">
|
9802
9858
|
<xsl:apply-templates/>
|
@@ -9914,6 +9970,9 @@
|
|
9914
9970
|
<!-- ====== -->
|
9915
9971
|
<xsl:template match="*[local-name() = 'quote']">
|
9916
9972
|
<fo:block-container margin-left="0mm">
|
9973
|
+
|
9974
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
9975
|
+
|
9917
9976
|
<xsl:if test="parent::*[local-name() = 'note']">
|
9918
9977
|
<xsl:if test="not(ancestor::*[local-name() = 'table'])">
|
9919
9978
|
<xsl:attribute name="margin-left">5mm</xsl:attribute>
|
@@ -10206,6 +10265,8 @@
|
|
10206
10265
|
<fo:block>
|
10207
10266
|
<xsl:call-template name="setId"/>
|
10208
10267
|
|
10268
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
10269
|
+
|
10209
10270
|
<xsl:apply-templates/>
|
10210
10271
|
</fo:block>
|
10211
10272
|
</xsl:template>
|
@@ -10220,6 +10281,8 @@
|
|
10220
10281
|
<fo:block break-after="page"/>
|
10221
10282
|
<fo:block id="{@id}">
|
10222
10283
|
|
10284
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
10285
|
+
|
10223
10286
|
</fo:block>
|
10224
10287
|
<xsl:apply-templates/>
|
10225
10288
|
</xsl:template>
|
@@ -11173,6 +11236,8 @@
|
|
11173
11236
|
|
11174
11237
|
<fo:block xsl:use-attribute-sets="admonition-style">
|
11175
11238
|
|
11239
|
+
<xsl:call-template name="setBlockSpanAll"/>
|
11240
|
+
|
11176
11241
|
<xsl:if test="@type = 'editorial'">
|
11177
11242
|
<xsl:attribute name="color">green</xsl:attribute>
|
11178
11243
|
<xsl:attribute name="font-weight">normal</xsl:attribute>
|
@@ -11355,6 +11420,16 @@
|
|
11355
11420
|
<xsl:apply-templates mode="update_xml_step1"/>
|
11356
11421
|
</xsl:copy>
|
11357
11422
|
</xsl:template>
|
11423
|
+
|
11424
|
+
<!-- remove semantic xml -->
|
11425
|
+
<xsl:template match="*[local-name() = 'metanorma-extension']/*[local-name() = 'metanorma']/*[local-name() = 'source']" mode="update_xml_step1"/>
|
11426
|
+
|
11427
|
+
<!-- remove image/emf -->
|
11428
|
+
<xsl:template match="*[local-name() = 'image']/*[local-name() = 'emf']" mode="update_xml_step1"/>
|
11429
|
+
|
11430
|
+
<xsl:template match="*[local-name() = 'stem'] | *[local-name() = 'image']" mode="update_xml_step1">
|
11431
|
+
<xsl:copy-of select="."/>
|
11432
|
+
</xsl:template>
|
11358
11433
|
<!-- =========================================================================== -->
|
11359
11434
|
<!-- END STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
|
11360
11435
|
<!-- =========================================================================== -->
|
@@ -11455,6 +11530,10 @@
|
|
11455
11530
|
</xsl:call-template>
|
11456
11531
|
</xsl:template>
|
11457
11532
|
|
11533
|
+
<xsl:template match="*[local-name() = 'stem'] | *[local-name() = 'image']" mode="update_xml_step2">
|
11534
|
+
<xsl:copy-of select="."/>
|
11535
|
+
</xsl:template>
|
11536
|
+
|
11458
11537
|
<!-- =========================================================================== -->
|
11459
11538
|
<!-- END STEP2: add 'fn' after 'eref' and 'origin', if referenced to bibitem with 'note' = Withdrawn.' or 'Cancelled and replaced...' -->
|
11460
11539
|
<!-- =========================================================================== -->
|
@@ -11476,7 +11555,7 @@
|
|
11476
11555
|
|
11477
11556
|
<xsl:variable name="element_name_keep-together_within-line">keep-together_within-line</xsl:variable>
|
11478
11557
|
|
11479
|
-
<xsl:template match="text()[not(ancestor::*[local-name() = 'bibdata'] or ancestor::*[local-name() = 'link'][not(contains(.,' '))] or ancestor::*[local-name() = 'sourcecode'] or ancestor::*[local-name() = 'math'] or starts-with(., 'http://') or starts-with(., 'https://') or starts-with(., 'www.') )]" name="keep_together_standard_number" mode="update_xml_enclose_keep-together_within-line">
|
11558
|
+
<xsl:template match="text()[not(ancestor::*[local-name() = 'bibdata'] or ancestor::*[local-name() = 'link'][not(contains(.,' '))] or ancestor::*[local-name() = 'sourcecode'] or ancestor::*[local-name() = 'math'] or ancestor::*[local-name() = 'svg'] or starts-with(., 'http://') or starts-with(., 'https://') or starts-with(., 'www.') )]" name="keep_together_standard_number" mode="update_xml_enclose_keep-together_within-line">
|
11480
11559
|
|
11481
11560
|
<!-- enclose standard's number into tag 'keep-together_within-line' -->
|
11482
11561
|
<xsl:variable name="tag_keep-together_within-line_open">###<xsl:value-of select="$element_name_keep-together_within-line"/>###</xsl:variable>
|
@@ -11558,6 +11637,10 @@
|
|
11558
11637
|
|
11559
11638
|
</xsl:template>
|
11560
11639
|
|
11640
|
+
<xsl:template match="*[local-name() = 'stem'] | *[local-name() = 'image']" mode="update_xml_enclose_keep-together_within-line">
|
11641
|
+
<xsl:copy-of select="."/>
|
11642
|
+
</xsl:template>
|
11643
|
+
|
11561
11644
|
<xsl:template name="replace_text_tags">
|
11562
11645
|
<xsl:param name="tag_open"/>
|
11563
11646
|
<xsl:param name="tag_close"/>
|
@@ -11584,6 +11667,194 @@
|
|
11584
11667
|
<!-- END XML UPDATE STEP: enclose standard's name into tag 'keep-together_within-line' -->
|
11585
11668
|
<!-- ===================================== -->
|
11586
11669
|
|
11670
|
+
<!-- ===================================== -->
|
11671
|
+
<!-- ===================================== -->
|
11672
|
+
<!-- Make linear XML (need for landscape orientation) -->
|
11673
|
+
<!-- ===================================== -->
|
11674
|
+
<!-- ===================================== -->
|
11675
|
+
<xsl:template match="@*|node()" mode="linear_xml">
|
11676
|
+
<xsl:copy>
|
11677
|
+
<xsl:apply-templates select="@*|node()" mode="linear_xml"/>
|
11678
|
+
</xsl:copy>
|
11679
|
+
</xsl:template>
|
11680
|
+
|
11681
|
+
<xsl:template match="processing-instruction()" mode="linear_xml">
|
11682
|
+
<xsl:copy-of select="."/>
|
11683
|
+
</xsl:template>
|
11684
|
+
|
11685
|
+
<!-- From:
|
11686
|
+
<clause>
|
11687
|
+
<title>...</title>
|
11688
|
+
<p>...</p>
|
11689
|
+
</clause>
|
11690
|
+
To:
|
11691
|
+
<clause/>
|
11692
|
+
<title>...</title>
|
11693
|
+
<p>...</p>
|
11694
|
+
-->
|
11695
|
+
<xsl:template match="*[local-name() = 'foreword'] | *[local-name() = 'foreword']//*[local-name() = 'clause'] | *[local-name() = 'preface']//*[local-name() = 'clause'][not(@type = 'corrigenda') and not(@type = 'policy') and not(@type = 'related-refs')] | *[local-name() = 'introduction'] | *[local-name() = 'introduction']//*[local-name() = 'clause'] | *[local-name() = 'sections']//*[local-name() = 'clause'] | *[local-name() = 'annex'] | *[local-name() = 'annex']//*[local-name() = 'clause'] | *[local-name() = 'references'][not(@hidden = 'true')] | *[local-name() = 'bibliography']/*[local-name() = 'clause'] | *[local-name() = 'colophon'] | *[local-name() = 'colophon']//*[local-name() = 'clause'] | *[local-name()='sections']//*[local-name()='terms'] | *[local-name()='sections']//*[local-name()='definitions'] | *[local-name()='annex']//*[local-name()='definitions']" mode="linear_xml" name="clause_linear">
|
11696
|
+
|
11697
|
+
<xsl:copy>
|
11698
|
+
<xsl:apply-templates select="@*" mode="linear_xml"/>
|
11699
|
+
|
11700
|
+
<xsl:attribute name="keep-with-next">always</xsl:attribute>
|
11701
|
+
|
11702
|
+
<xsl:if test="local-name() = 'foreword' or local-name() = 'introduction' or local-name(..) = 'preface' or local-name(..) = 'sections' or (local-name() = 'references' and parent::*[local-name() = 'bibliography']) or (local-name() = 'clause' and parent::*[local-name() = 'bibliography']) or local-name() = 'annex' or local-name(..) = 'annex' or local-name(..) = 'colophon'">
|
11703
|
+
<xsl:attribute name="mainsection">true</xsl:attribute>
|
11704
|
+
</xsl:if>
|
11705
|
+
</xsl:copy>
|
11706
|
+
|
11707
|
+
<xsl:apply-templates mode="linear_xml"/>
|
11708
|
+
</xsl:template>
|
11709
|
+
|
11710
|
+
<xsl:template match="*[local-name() = 'term']" mode="linear_xml" priority="2">
|
11711
|
+
<xsl:copy>
|
11712
|
+
<xsl:apply-templates select="@*" mode="linear_xml"/>
|
11713
|
+
<xsl:attribute name="keep-with-next">always</xsl:attribute>
|
11714
|
+
<xsl:variable name="level">
|
11715
|
+
<xsl:call-template name="getLevel"/>
|
11716
|
+
</xsl:variable>
|
11717
|
+
<xsl:attribute name="depth"><xsl:value-of select="$level"/></xsl:attribute>
|
11718
|
+
<xsl:attribute name="ancestor">sections</xsl:attribute>
|
11719
|
+
<xsl:apply-templates select="node()[not(local-name() = 'term')]" mode="linear_xml"/>
|
11720
|
+
</xsl:copy>
|
11721
|
+
<xsl:apply-templates select="*[local-name() = 'term']" mode="linear_xml"/>
|
11722
|
+
</xsl:template>
|
11723
|
+
|
11724
|
+
<xsl:template match="*[local-name() = 'introduction']//*[local-name() = 'title'] | *[local-name() = 'foreword']//*[local-name() = 'title'] | *[local-name() = 'sections']//*[local-name() = 'title'] | *[local-name() = 'annex']//*[local-name() = 'title'] | *[local-name() = 'bibliography']/*[local-name() = 'clause']/*[local-name() = 'title'] | *[local-name() = 'references']/*[local-name() = 'title'] | *[local-name() = 'colophon']//*[local-name() = 'title']" mode="linear_xml" priority="2">
|
11725
|
+
<xsl:copy>
|
11726
|
+
<xsl:apply-templates select="@*" mode="linear_xml"/>
|
11727
|
+
|
11728
|
+
<xsl:attribute name="keep-with-next">always</xsl:attribute>
|
11729
|
+
|
11730
|
+
<xsl:variable name="level">
|
11731
|
+
<xsl:call-template name="getLevel"/>
|
11732
|
+
</xsl:variable>
|
11733
|
+
<xsl:attribute name="depth"><xsl:value-of select="$level"/></xsl:attribute>
|
11734
|
+
|
11735
|
+
<xsl:if test="parent::*[local-name() = 'annex']">
|
11736
|
+
<xsl:attribute name="depth">1</xsl:attribute>
|
11737
|
+
</xsl:if>
|
11738
|
+
|
11739
|
+
<xsl:if test="../@inline-header = 'true' and following-sibling::*[1][local-name() = 'p']">
|
11740
|
+
<xsl:copy-of select="../@inline-header"/>
|
11741
|
+
</xsl:if>
|
11742
|
+
|
11743
|
+
<xsl:attribute name="ancestor">
|
11744
|
+
<xsl:choose>
|
11745
|
+
<xsl:when test="ancestor::*[local-name() = 'foreword']">foreword</xsl:when>
|
11746
|
+
<xsl:when test="ancestor::*[local-name() = 'introduction']">introduction</xsl:when>
|
11747
|
+
<xsl:when test="ancestor::*[local-name() = 'sections']">sections</xsl:when>
|
11748
|
+
<xsl:when test="ancestor::*[local-name() = 'annex']">annex</xsl:when>
|
11749
|
+
<xsl:when test="ancestor::*[local-name() = 'bibliography']">bibliography</xsl:when>
|
11750
|
+
</xsl:choose>
|
11751
|
+
</xsl:attribute>
|
11752
|
+
|
11753
|
+
<xsl:apply-templates mode="linear_xml"/>
|
11754
|
+
</xsl:copy>
|
11755
|
+
</xsl:template>
|
11756
|
+
|
11757
|
+
<!-- add @to = figure, table, clause -->
|
11758
|
+
<!-- add @depth = from -->
|
11759
|
+
<xsl:template match="*[local-name() = 'xref']" mode="linear_xml">
|
11760
|
+
<xsl:copy>
|
11761
|
+
<xsl:apply-templates select="@*" mode="linear_xml"/>
|
11762
|
+
<xsl:variable name="target" select="@target"/>
|
11763
|
+
<xsl:attribute name="to">
|
11764
|
+
<xsl:value-of select="local-name(//*[@id = current()/@target][1])"/>
|
11765
|
+
</xsl:attribute>
|
11766
|
+
<xsl:attribute name="depth">
|
11767
|
+
<xsl:value-of select="//*[@id = current()/@target][1]/*[local-name() = 'title']/@depth"/>
|
11768
|
+
</xsl:attribute>
|
11769
|
+
<xsl:apply-templates select="node()" mode="linear_xml"/>
|
11770
|
+
</xsl:copy>
|
11771
|
+
</xsl:template>
|
11772
|
+
|
11773
|
+
<xsl:template match="*[not(ancestor::*[local-name() = 'sourcecode'])]/*[local-name() = 'p' or local-name() = 'strong' or local-name() = 'em']/text()" mode="linear_xml">
|
11774
|
+
<xsl:choose>
|
11775
|
+
<xsl:when test="contains(., $non_breaking_hyphen)">
|
11776
|
+
<xsl:call-template name="replaceChar">
|
11777
|
+
<xsl:with-param name="text" select="."/>
|
11778
|
+
<xsl:with-param name="replace" select="$non_breaking_hyphen"/>
|
11779
|
+
<xsl:with-param name="by" select="'-'"/>
|
11780
|
+
</xsl:call-template>
|
11781
|
+
</xsl:when>
|
11782
|
+
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
|
11783
|
+
</xsl:choose>
|
11784
|
+
</xsl:template>
|
11785
|
+
|
11786
|
+
<xsl:template name="replaceChar">
|
11787
|
+
<xsl:param name="text"/>
|
11788
|
+
<xsl:param name="replace"/>
|
11789
|
+
<xsl:param name="by"/>
|
11790
|
+
<xsl:choose>
|
11791
|
+
<xsl:when test="$text = '' or $replace = '' or not($replace)">
|
11792
|
+
<xsl:value-of select="$text"/>
|
11793
|
+
</xsl:when>
|
11794
|
+
<xsl:when test="contains($text, $replace)">
|
11795
|
+
<xsl:value-of select="substring-before($text,$replace)"/>
|
11796
|
+
<xsl:element name="inlineChar" namespace="https://www.metanorma.org/ns/jis"><xsl:value-of select="$by"/></xsl:element>
|
11797
|
+
<xsl:call-template name="replaceChar">
|
11798
|
+
<xsl:with-param name="text" select="substring-after($text,$replace)"/>
|
11799
|
+
<xsl:with-param name="replace" select="$replace"/>
|
11800
|
+
<xsl:with-param name="by" select="$by"/>
|
11801
|
+
</xsl:call-template>
|
11802
|
+
</xsl:when>
|
11803
|
+
<xsl:otherwise>
|
11804
|
+
<xsl:value-of select="$text"/>
|
11805
|
+
</xsl:otherwise>
|
11806
|
+
</xsl:choose>
|
11807
|
+
</xsl:template>
|
11808
|
+
|
11809
|
+
<xsl:template match="*[local-name() = 'inlineChar']">
|
11810
|
+
<fo:inline><xsl:value-of select="."/></fo:inline>
|
11811
|
+
</xsl:template>
|
11812
|
+
|
11813
|
+
<!-- change @reference to actual value, and add skip_footnote_body="true" for repeatable (2nd, 3rd, ...) -->
|
11814
|
+
<!--
|
11815
|
+
<fn reference="1">
|
11816
|
+
<p id="_8e5cf917-f75a-4a49-b0aa-1714cb6cf954">Formerly denoted as 15 % (m/m).</p>
|
11817
|
+
</fn>
|
11818
|
+
-->
|
11819
|
+
<xsl:template match="*[local-name() = 'fn'][not(ancestor::*[(local-name() = 'table' or local-name() = 'figure')] and not(ancestor::*[local-name() = 'name']))]" mode="linear_xml" name="linear_xml_fn">
|
11820
|
+
<xsl:variable name="p_fn_">
|
11821
|
+
<xsl:call-template name="get_fn_list"/>
|
11822
|
+
</xsl:variable>
|
11823
|
+
<xsl:variable name="p_fn" select="xalan:nodeset($p_fn_)"/>
|
11824
|
+
<xsl:variable name="gen_id" select="generate-id(.)"/>
|
11825
|
+
<xsl:variable name="lang" select="ancestor::*[contains(local-name(), '-standard')]/*[local-name()='bibdata']//*[local-name()='language'][@current = 'true']"/>
|
11826
|
+
<xsl:variable name="reference" select="@reference"/>
|
11827
|
+
<!-- fn sequence number in document -->
|
11828
|
+
<xsl:variable name="current_fn_number" select="count($p_fn//fn[@reference = $reference]/preceding-sibling::fn) + 1"/>
|
11829
|
+
|
11830
|
+
<xsl:copy>
|
11831
|
+
<xsl:apply-templates select="@*" mode="linear_xml"/>
|
11832
|
+
<!-- put actual reference number -->
|
11833
|
+
<xsl:attribute name="current_fn_number">
|
11834
|
+
<xsl:value-of select="$current_fn_number"/>
|
11835
|
+
</xsl:attribute>
|
11836
|
+
<xsl:attribute name="skip_footnote_body"> <!-- false for repeatable footnote -->
|
11837
|
+
<xsl:value-of select="not($p_fn//fn[@gen_id = $gen_id] and (1 = 1))"/>
|
11838
|
+
</xsl:attribute>
|
11839
|
+
<xsl:apply-templates select="node()" mode="linear_xml"/>
|
11840
|
+
</xsl:copy>
|
11841
|
+
</xsl:template>
|
11842
|
+
|
11843
|
+
<xsl:template match="*[local-name() = 'p'][@type = 'section-title']" priority="3" mode="linear_xml">
|
11844
|
+
<xsl:copy>
|
11845
|
+
<xsl:apply-templates select="@*" mode="linear_xml"/>
|
11846
|
+
<xsl:if test="@depth = '1'">
|
11847
|
+
<xsl:attribute name="mainsection">true</xsl:attribute>
|
11848
|
+
</xsl:if>
|
11849
|
+
<xsl:apply-templates select="node()" mode="linear_xml"/>
|
11850
|
+
</xsl:copy>
|
11851
|
+
</xsl:template>
|
11852
|
+
<!-- ===================================== -->
|
11853
|
+
<!-- ===================================== -->
|
11854
|
+
<!-- END: Make linear XML (need for landscape orientation) -->
|
11855
|
+
<!-- ===================================== -->
|
11856
|
+
<!-- ===================================== -->
|
11857
|
+
|
11587
11858
|
<!-- for correct rendering combining chars -->
|
11588
11859
|
<xsl:template match="*[local-name() = 'lang_none']">
|
11589
11860
|
<fo:inline xml:lang="none"><xsl:value-of select="."/></fo:inline>
|
data/lib/isodoc/iso/metadata.rb
CHANGED
@@ -84,15 +84,15 @@ module IsoDoc
|
|
84
84
|
p = titlenums[:part]
|
85
85
|
titlenums[:part] && titlenums[:subpart] and
|
86
86
|
p = "#{titlenums[:part]}–#{titlenums[:subpart]}"
|
87
|
-
"#{PART_LABEL[lang.to_sym]} #{p}"
|
87
|
+
"#{self.class::PART_LABEL[lang.to_sym]} #{p}"
|
88
88
|
end
|
89
89
|
|
90
90
|
def amd_prefix(titlenums, lang)
|
91
|
-
"#{AMD_LABEL[lang.to_sym]} #{titlenums[:amd]}"
|
91
|
+
"#{self.class::AMD_LABEL[lang.to_sym]} #{titlenums[:amd]}"
|
92
92
|
end
|
93
93
|
|
94
94
|
def corr_prefix(titlenums, lang)
|
95
|
-
"#{CORR_LABEL[lang.to_sym]} #{titlenums[:corr]}"
|
95
|
+
"#{self.class::CORR_LABEL[lang.to_sym]} #{titlenums[:corr]}"
|
96
96
|
end
|
97
97
|
|
98
98
|
def compose_title(tparts, tnums, lang)
|
@@ -86,7 +86,7 @@ module IsoDoc
|
|
86
86
|
}.freeze
|
87
87
|
|
88
88
|
def new_styles(docxml)
|
89
|
-
STYLESMAP.each do |k, v|
|
89
|
+
self.class::STYLESMAP.each do |k, v|
|
90
90
|
docxml.xpath("//*[@class = '#{k}']").each { |s| s["class"] = v }
|
91
91
|
end
|
92
92
|
docxml.xpath("//div[@class = 'Section3']//p[@class = 'Tabletitle']")
|
@@ -106,10 +106,11 @@ module Metanorma
|
|
106
106
|
xmldoc.xpath("//term").each do |t|
|
107
107
|
para = t.at("./definition/verbal-definition") || return
|
108
108
|
term = t.at("./preferred//name").text
|
109
|
-
termdef_warn(para.text, /\A(the|a)\b/i, t, term,
|
110
|
-
|
111
|
-
|
112
|
-
|
109
|
+
@lang == "en" and termdef_warn(para.text, /\A(the|a)\b/i, t, term,
|
110
|
+
"term definition starts with article")
|
111
|
+
%(Cyrl Latn).include?(@script) and
|
112
|
+
termdef_warn(para.text, /\.\Z/i, t, term,
|
113
|
+
"term definition ends with period")
|
113
114
|
end
|
114
115
|
end
|
115
116
|
|
@@ -56,7 +56,8 @@ module Metanorma
|
|
56
56
|
def list_punctuation1(list, prectext)
|
57
57
|
prectext ||= ""
|
58
58
|
entries = list.xpath(".//li")
|
59
|
-
|
59
|
+
%w(Cyrl Latn Grek).include?(@script) or return
|
60
|
+
case prectext.strip[-1]
|
60
61
|
when ":", "" then list_after_colon_punctuation(list, entries)
|
61
62
|
when "." then entries.each { |li| list_full_sentence(li) }
|
62
63
|
else style_warning(list, "All lists must be preceded by "\
|
@@ -98,6 +99,7 @@ module Metanorma
|
|
98
99
|
end
|
99
100
|
|
100
101
|
def list_full_sentence(elem)
|
102
|
+
%w(Cyrl Latn Grek).include?(@script) or return
|
101
103
|
text = elem.text.strip
|
102
104
|
starts_uppercase?(text) or
|
103
105
|
style_warning(elem, "List entry of separate sentences must start "\
|
@@ -32,9 +32,9 @@ module Metanorma
|
|
32
32
|
@log.add("Style", f, "normative references contains subclauses")
|
33
33
|
end
|
34
34
|
|
35
|
-
ONE_SYMBOLS_WARNING = "Only one Symbols and Abbreviated "\
|
35
|
+
ONE_SYMBOLS_WARNING = "Only one Symbols and Abbreviated " \
|
36
36
|
"Terms section in the standard".freeze
|
37
|
-
NON_DL_SYMBOLS_WARNING = "Symbols and Abbreviated Terms can "\
|
37
|
+
NON_DL_SYMBOLS_WARNING = "Symbols and Abbreviated Terms can " \
|
38
38
|
"only contain a definition list".freeze
|
39
39
|
|
40
40
|
def symbols_validate(root)
|
@@ -46,7 +46,7 @@ module Metanorma
|
|
46
46
|
@log.add("Style", f.first, NON_DL_SYMBOLS_WARNING)
|
47
47
|
@vocab and f.each do |f1|
|
48
48
|
f1.at("./ancestor::annex") or
|
49
|
-
@log.add("Style", f1, "In vocabulary documents, Symbols and "\
|
49
|
+
@log.add("Style", f1, "In vocabulary documents, Symbols and " \
|
50
50
|
"Abbreviated Terms are only permitted in annexes")
|
51
51
|
end
|
52
52
|
end
|
@@ -80,15 +80,15 @@ module Metanorma
|
|
80
80
|
val: ["./self::introduction", "./self::clause[@type = 'scope']"] },
|
81
81
|
{ msg: "Prefatory material must be followed by (clause) Scope",
|
82
82
|
val: ["./self::clause[@type = 'scope']"] },
|
83
|
-
{ msg: "Normative References must be followed by "\
|
83
|
+
{ msg: "Normative References must be followed by " \
|
84
84
|
"Terms and Definitions",
|
85
85
|
val: ["./self::terms | .//terms"] },
|
86
86
|
].freeze
|
87
87
|
|
88
88
|
SECTIONS_XPATH =
|
89
|
-
"//foreword | //introduction | //sections/terms | .//annex | "\
|
90
|
-
"//sections/definitions | //sections/clause | "\
|
91
|
-
"//references[not(parent::clause)] | "\
|
89
|
+
"//foreword | //introduction | //sections/terms | .//annex | " \
|
90
|
+
"//sections/definitions | //sections/clause | " \
|
91
|
+
"//references[not(parent::clause)] | " \
|
92
92
|
"//clause[descendant::references][not(parent::clause)]".freeze
|
93
93
|
|
94
94
|
def sections_sequence_validate(root)
|
@@ -119,7 +119,7 @@ module Metanorma
|
|
119
119
|
@log.add("Style", elem, "Document must contain at least one clause")
|
120
120
|
end
|
121
121
|
elem&.at("./self::clause") ||
|
122
|
-
@log.add("Style", elem, "Document must contain clause after "\
|
122
|
+
@log.add("Style", elem, "Document must contain clause after " \
|
123
123
|
"Terms and Definitions")
|
124
124
|
elem&.at("./self::clause[@type = 'scope']") &&
|
125
125
|
@log.add("Style", elem,
|
@@ -151,12 +151,12 @@ module Metanorma
|
|
151
151
|
while elem&.name == "annex"
|
152
152
|
elem = names.shift
|
153
153
|
if elem.nil?
|
154
|
-
@log.add("Style", nil, "Document must include (references) "\
|
154
|
+
@log.add("Style", nil, "Document must include (references) " \
|
155
155
|
"Normative References")
|
156
156
|
end
|
157
157
|
end
|
158
158
|
elem&.at("./self::references[@normative = 'true']") ||
|
159
|
-
@log.add("Style", nil, "Document must include (references) "\
|
159
|
+
@log.add("Style", nil, "Document must include (references) " \
|
160
160
|
"Normative References")
|
161
161
|
elem = names&.shift
|
162
162
|
elem&.at("./self::references[@normative = 'false']") ||
|
@@ -227,13 +227,13 @@ module Metanorma
|
|
227
227
|
if terms.size == 1
|
228
228
|
((t = terms.first.at("./title")) && (t&.text == @i18n.termsdef)) or
|
229
229
|
@log.add("Style", terms.first,
|
230
|
-
"Single terms clause in vocabulary document "\
|
230
|
+
"Single terms clause in vocabulary document " \
|
231
231
|
"should have normal Terms and definitions heading")
|
232
232
|
elsif terms.size > 1
|
233
233
|
terms.each do |x|
|
234
234
|
((t = x.at("./title")) && /^#{@i18n.termsrelated}/.match?(t&.text)) or
|
235
235
|
@log.add("Style", x,
|
236
|
-
"Multiple terms clauses in vocabulary document "\
|
236
|
+
"Multiple terms clauses in vocabulary document " \
|
237
237
|
"should have 'Terms related to' heading")
|
238
238
|
end
|
239
239
|
end
|
@@ -110,8 +110,8 @@ module Metanorma
|
|
110
110
|
)
|
111
111
|
style_regex(/\b(?<num>[0-9]+\.[0-9]+)/i,
|
112
112
|
"possible decimal point", node, text)
|
113
|
-
style_regex(/\b(?<num>billions?)\b/i,
|
114
|
-
|
113
|
+
@lang == "en" and style_regex(/\b(?<num>billions?)\b/i,
|
114
|
+
"ambiguous number", node, text)
|
115
115
|
style_regex(/(^|\s)(?<num>-[0-9][0-9,.]*)/i,
|
116
116
|
"hyphen instead of minus sign U+2212", node, text)
|
117
117
|
end
|
@@ -135,8 +135,8 @@ module Metanorma
|
|
135
135
|
end
|
136
136
|
|
137
137
|
# leaving out as problematic: N J K C S T H h d B o E
|
138
|
-
SI_UNIT = "(m|cm|mm|km|μm|nm|g|kg|mgmol|cd|rad|sr|Hz|Hz|MHz|Pa|hPa|kJ|"\
|
139
|
-
"V|kV|W|MW|kW|F|μF|Ω|Wb|°C|lm|lx|Bq|Gy|Sv|kat|l|t|eV|u|Np|Bd|"\
|
138
|
+
SI_UNIT = "(m|cm|mm|km|μm|nm|g|kg|mgmol|cd|rad|sr|Hz|Hz|MHz|Pa|hPa|kJ|" \
|
139
|
+
"V|kV|W|MW|kW|F|μF|Ω|Wb|°C|lm|lx|Bq|Gy|Sv|kat|l|t|eV|u|Np|Bd|" \
|
140
140
|
"bit|kB|MB|Hart|nat|Sh|var)".freeze
|
141
141
|
|
142
142
|
# ISO/IEC DIR 2, 9.3
|
@@ -165,8 +165,8 @@ module Metanorma
|
|
165
165
|
# https://www.iso.org/ISO-house-style.html#iso-hs-s-text-r-p-and
|
166
166
|
# https://www.iso.org/ISO-house-style.html#iso-hs-s-text-r-p-andor
|
167
167
|
def style_punct(node, text)
|
168
|
-
style_regex(/\b(?<num>and\/?or)\b/i,
|
169
|
-
|
168
|
+
@lang == "en" and style_regex(/\b(?<num>and\/?or)\b/i,
|
169
|
+
"Use 'either x or y, or both'", node, text)
|
170
170
|
style_regex(/\s(?<num>&)\s/i,
|
171
171
|
"Avoid ampersand in ordinary text'", node, text)
|
172
172
|
end
|
@@ -180,8 +180,8 @@ module Metanorma
|
|
180
180
|
end
|
181
181
|
|
182
182
|
ASSETS_TO_STYLE =
|
183
|
-
"//termsource | //formula | //termnote | "\
|
184
|
-
"//p[not(ancestor::boilerplate)] | //li[not(p)] | //dt | "\
|
183
|
+
"//termsource | //formula | //termnote | " \
|
184
|
+
"//p[not(ancestor::boilerplate)] | //li[not(p)] | //dt | " \
|
185
185
|
"//dd[not(p)] | //td[not(p)] | //th[not(p)]".freeze
|
186
186
|
|
187
187
|
def asset_style(root)
|
@@ -42,8 +42,8 @@ module Metanorma
|
|
42
42
|
def title_subpart_validate(root)
|
43
43
|
docid = root.at("//bibdata/docidentifier[@type = 'ISO']")
|
44
44
|
subpart = /-\d+-\d+/.match docid
|
45
|
-
iec = root.at("//bibdata/contributor[role/@type = 'publisher']/"\
|
46
|
-
"organization[abbreviation = 'IEC' or "\
|
45
|
+
iec = root.at("//bibdata/contributor[role/@type = 'publisher']/" \
|
46
|
+
"organization[abbreviation = 'IEC' or " \
|
47
47
|
"name = 'International Electrotechnical Commission']")
|
48
48
|
subpart && !iec and
|
49
49
|
@log.add("Style", docid, "Subpart defined on non-IEC document!")
|
@@ -51,6 +51,7 @@ module Metanorma
|
|
51
51
|
|
52
52
|
# ISO/IEC DIR 2, 11.5.2
|
53
53
|
def title_names_type_validate(root)
|
54
|
+
@lang == "en" or return
|
54
55
|
doctypes = /International\sStandard | Technical\sSpecification |
|
55
56
|
Publicly\sAvailable\sSpecification | Technical\sReport | Guide /xi
|
56
57
|
title_main_en = title_lang_part(root, "main", "en")
|
@@ -93,8 +94,8 @@ module Metanorma
|
|
93
94
|
|
94
95
|
# https://www.iso.org/ISO-house-style.html#iso-hs-s-text-r-p-full
|
95
96
|
def title_no_full_stop_validate(root)
|
96
|
-
root.xpath("//preface//title | //sections//title | //annex//title | "\
|
97
|
-
"//references/title | //preface//name | //sections//name | "\
|
97
|
+
root.xpath("//preface//title | //sections//title | //annex//title | " \
|
98
|
+
"//references/title | //preface//name | //sections//name | " \
|
98
99
|
"//annex//name").each do |t|
|
99
100
|
style_regex(/\A(?<num>.+\.\Z)/i,
|
100
101
|
"No full stop at end of title or caption",
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-iso
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.
|
4
|
+
version: 2.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-03-
|
11
|
+
date: 2023-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: metanorma-standoc
|
@@ -340,6 +340,7 @@ files:
|
|
340
340
|
- lib/isodoc/iso/html_convert.rb
|
341
341
|
- lib/isodoc/iso/i18n-en.yaml
|
342
342
|
- lib/isodoc/iso/i18n-fr.yaml
|
343
|
+
- lib/isodoc/iso/i18n-ja.yaml
|
343
344
|
- lib/isodoc/iso/i18n-ru.yaml
|
344
345
|
- lib/isodoc/iso/i18n-zh-Hans.yaml
|
345
346
|
- lib/isodoc/iso/i18n.rb
|