metanorma-iso 2.2.0 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/automerge.yml +31 -0
- data/lib/isodoc/iso/html/style-human.css +1 -1
- data/lib/isodoc/iso/html/style-iso.css +1 -1
- data/lib/isodoc/iso/i18n-en.yaml +9 -2
- data/lib/isodoc/iso/i18n-fr.yaml +9 -2
- data/lib/isodoc/iso/i18n-ru.yaml +9 -2
- data/lib/isodoc/iso/i18n-zh-Hans.yaml +1 -2
- data/lib/isodoc/iso/iso.amendment.xsl +54 -4
- data/lib/isodoc/iso/iso.international-standard.xsl +54 -4
- data/lib/isodoc/iso/presentation_xref.rb +10 -7
- data/lib/isodoc/iso/sections.rb +1 -1
- data/lib/isodoc/iso/xref.rb +37 -88
- data/lib/isodoc/iso/xref_section.rb +79 -0
- data/lib/metanorma/iso/basicdoc.rng +0 -27
- data/lib/metanorma/iso/biblio-standoc.rng +164 -0
- data/lib/metanorma/iso/biblio.rng +45 -18
- data/lib/metanorma/iso/isodoc.rng +31 -194
- data/lib/metanorma/iso/isostandard-amd.rng +3 -54
- data/lib/metanorma/iso/isostandard-compile.rng +7 -0
- data/lib/metanorma/iso/isostandard.rng +1 -192
- data/lib/metanorma/iso/relaton-iso.rng +225 -0
- data/lib/metanorma/iso/validate.rb +7 -7
- data/lib/metanorma/iso/version.rb +1 -1
- data/lib/metanorma/requirements/modspec.rb +26 -39
- data/spec/isodoc/inline_spec.rb +1 -1
- data/spec/metanorma/base_spec.rb +3 -3
- data/spec/metanorma/refs_spec.rb +7 -7
- data/spec/metanorma/validate_spec.rb +55 -55
- data/spec/requirements/requirement_components_spec.rb +53 -65
- data/spec/requirements/requirements_spec.rb +178 -263
- data/spec/requirements/xref_spec.rb +35 -35
- data/spec/vcr_cassettes/docrels.yml +32 -32
- data/spec/vcr_cassettes/withdrawn_iso.yml +30 -30
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bababdaaa40b4311b1ea3b536d4033bbeb418582ef7c4b7bd8cc5dcec43dfc4c
|
4
|
+
data.tar.gz: e3a3754839ac30e66c0d35574d565bced4e951a8bd1042e56cb85c390bcaf8fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa5cd0815b1649389973e2bfff66581386dd68450b53f31e3f5d4ae8e91c59bcebc6d5fe63691542c918dc93a6dd3a6e8392ebf32207e5b22d69785c7005852c
|
7
|
+
data.tar.gz: fdbcfc037894c4121c50eefc9eab7c26296dfeb599152409b2c46fd8f84a231051d7e21d5a6696eddf43002c6ca79cb3977972f92dab5dc2b974ed1c54a45722
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# Auto-generated by Cimas: Do not edit it manually!
|
2
|
+
# See https://github.com/metanorma/cimas
|
3
|
+
# source: https://github.com/marketplace/actions/merge-pull-requests#usage
|
4
|
+
name: automerge
|
5
|
+
on:
|
6
|
+
pull_request:
|
7
|
+
types:
|
8
|
+
- labeled
|
9
|
+
- unlabeled
|
10
|
+
- synchronize
|
11
|
+
- opened
|
12
|
+
- edited
|
13
|
+
- ready_for_review
|
14
|
+
- reopened
|
15
|
+
- unlocked
|
16
|
+
pull_request_review:
|
17
|
+
types:
|
18
|
+
- submitted
|
19
|
+
check_suite:
|
20
|
+
types:
|
21
|
+
- completed
|
22
|
+
status: {}
|
23
|
+
jobs:
|
24
|
+
automerge:
|
25
|
+
runs-on: ubuntu-latest
|
26
|
+
steps:
|
27
|
+
- id: automerge
|
28
|
+
name: automerge
|
29
|
+
uses: "pascalgn/automerge-action@v0.15.3"
|
30
|
+
env:
|
31
|
+
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
data/lib/isodoc/iso/i18n-en.yaml
CHANGED
@@ -76,5 +76,12 @@ locality:
|
|
76
76
|
appendix: Appendix
|
77
77
|
requirements:
|
78
78
|
modspec:
|
79
|
-
|
80
|
-
|
79
|
+
provision: Provision
|
80
|
+
conformancetest: Conformance test
|
81
|
+
inflection:
|
82
|
+
Provision:
|
83
|
+
sg: Provision
|
84
|
+
pl: Provisions
|
85
|
+
Statement:
|
86
|
+
sg: Statement
|
87
|
+
pl: Statements
|
data/lib/isodoc/iso/i18n-fr.yaml
CHANGED
@@ -70,5 +70,12 @@ locality:
|
|
70
70
|
appendix: Appendice
|
71
71
|
requirements:
|
72
72
|
modspec:
|
73
|
-
|
74
|
-
|
73
|
+
provision: Disposition
|
74
|
+
conformancetest: Test de conformité
|
75
|
+
inflection:
|
76
|
+
Disposition:
|
77
|
+
sg: Disposition
|
78
|
+
pl: Dispositions
|
79
|
+
Déclaration:
|
80
|
+
sg: Déclaration
|
81
|
+
pl: Déclarations
|
data/lib/isodoc/iso/i18n-ru.yaml
CHANGED
@@ -74,5 +74,12 @@ locality:
|
|
74
74
|
appendix: Приложение
|
75
75
|
requirements:
|
76
76
|
modspec:
|
77
|
-
|
78
|
-
|
77
|
+
provision: Условие
|
78
|
+
conformancetest: Тест на соответствие
|
79
|
+
inflection:
|
80
|
+
Условие:
|
81
|
+
sg: Условие
|
82
|
+
pl: Условия
|
83
|
+
Утверждение:
|
84
|
+
sg: Утверждение
|
85
|
+
pl: Утверждения
|
@@ -5,6 +5,7 @@
|
|
5
5
|
<xsl:key name="kfn" match="*[local-name() = 'fn'][not(ancestor::*[(local-name() = 'table' or local-name() = 'figure') and not(ancestor::*[local-name() = 'name'])])]" use="@reference"/>
|
6
6
|
|
7
7
|
<xsl:key name="attachments" match="iso:eref[java:endsWith(java:java.lang.String.new(@bibitemid),'.exp')]" use="@bibitemid"/>
|
8
|
+
<xsl:key name="attachments2" match="iso:eref[contains(@bibitemid,'.exp_')]" use="@bibitemid"/>
|
8
9
|
|
9
10
|
<xsl:variable name="namespace_full">https://www.metanorma.org/ns/iso</xsl:variable>
|
10
11
|
|
@@ -435,6 +436,15 @@
|
|
435
436
|
<xsl:variable name="url" select="concat('url(file:',$basepath, @bibitemid, ')')"/>
|
436
437
|
<pdf:embedded-file src="{$url}" filename="{@bibitemid}"/>
|
437
438
|
</xsl:for-each>
|
439
|
+
<xsl:for-each select="//*[local-name() = 'eref'][generate-id(.)=generate-id(key('attachments2',@bibitemid)[1])]">
|
440
|
+
<xsl:variable name="bibitemid" select="@bibitemid"/>
|
441
|
+
<xsl:variable name="uri" select="normalize-space($bibitems/*[local-name() ='bibitem'][@hidden = 'true'][@id = $bibitemid][1]/*[local-name() = 'uri'][@type='citation'])"/>
|
442
|
+
<xsl:if test="$uri != ''">
|
443
|
+
<xsl:variable name="url" select="concat('url(file:',$basepath, $uri, ')')"/>
|
444
|
+
<xsl:variable name="filename" select="concat(substring-before($bibitemid, '.exp_'), '.exp')"/>
|
445
|
+
<pdf:embedded-file src="{$url}" filename="{$filename}"/>
|
446
|
+
</xsl:if>
|
447
|
+
</xsl:for-each>
|
438
448
|
</fo:declarations>
|
439
449
|
|
440
450
|
<xsl:call-template name="addBookmarks">
|
@@ -1890,6 +1900,9 @@
|
|
1890
1900
|
</xsl:choose>
|
1891
1901
|
</xsl:attribute>
|
1892
1902
|
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
|
1903
|
+
<xsl:if test="starts-with(ancestor::*[local-name() = 'table'][1]/@type, 'recommend') and not(following-sibling::*[local-name() = 'p'])">
|
1904
|
+
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
|
1905
|
+
</xsl:if>
|
1893
1906
|
<xsl:if test="@id">
|
1894
1907
|
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
|
1895
1908
|
</xsl:if>
|
@@ -1948,6 +1961,28 @@
|
|
1948
1961
|
</fo:inline>
|
1949
1962
|
</xsl:template>
|
1950
1963
|
|
1964
|
+
<xsl:template match="*[local-name() = 'eref'][contains(@bibitemid,'.exp_')]" priority="2">
|
1965
|
+
<xsl:variable name="bibitemid" select="@bibitemid"/>
|
1966
|
+
<xsl:variable name="uri" select="normalize-space($bibitems/*[local-name() ='bibitem'][@hidden = 'true'][@id = $bibitemid][1]/*[local-name() = 'uri'][@type='citation'])"/>
|
1967
|
+
<xsl:choose>
|
1968
|
+
<xsl:when test="$uri != ''">
|
1969
|
+
<xsl:variable name="filename" select="concat(substring-before($bibitemid, '.exp_'), '.exp')"/>
|
1970
|
+
<fo:inline xsl:use-attribute-sets="eref-style">
|
1971
|
+
<xsl:variable name="url" select="concat('url(embedded-file:', $filename, ')')"/>
|
1972
|
+
<fo:basic-link external-destination="{$url}" fox:alt-text="{@citeas}">
|
1973
|
+
<xsl:if test="normalize-space(@citeas) = ''">
|
1974
|
+
<xsl:attribute name="fox:alt-text"><xsl:value-of select="."/></xsl:attribute>
|
1975
|
+
</xsl:if>
|
1976
|
+
<xsl:apply-templates/>
|
1977
|
+
</fo:basic-link>
|
1978
|
+
</fo:inline>
|
1979
|
+
</xsl:when>
|
1980
|
+
<xsl:otherwise>
|
1981
|
+
<xsl:call-template name="eref"/>
|
1982
|
+
</xsl:otherwise>
|
1983
|
+
</xsl:choose>
|
1984
|
+
</xsl:template>
|
1985
|
+
|
1951
1986
|
<!-- =================== -->
|
1952
1987
|
<!-- Index processing -->
|
1953
1988
|
<!-- =================== -->
|
@@ -4721,6 +4756,9 @@
|
|
4721
4756
|
<xsl:if test="ancestor::*[local-name() = 'tfoot']">
|
4722
4757
|
<xsl:attribute name="border">solid black 0</xsl:attribute>
|
4723
4758
|
</xsl:if>
|
4759
|
+
<xsl:if test="starts-with(ancestor::*[local-name() = 'table'][1]/@type, 'recommend')">
|
4760
|
+
<xsl:attribute name="display-align">before</xsl:attribute>
|
4761
|
+
</xsl:if>
|
4724
4762
|
|
4725
4763
|
<xsl:if test=".//*[local-name() = 'table']"> <!-- if there is nested table -->
|
4726
4764
|
<xsl:attribute name="padding-right">1mm</xsl:attribute>
|
@@ -5711,8 +5749,17 @@
|
|
5711
5749
|
</fo:inline>
|
5712
5750
|
</xsl:template> <!-- tt -->
|
5713
5751
|
|
5752
|
+
<xsl:variable name="regex_url_start">^(http://|https://|www\.)?(.*)</xsl:variable>
|
5714
5753
|
<xsl:template match="*[local-name()='tt']/text()" priority="2">
|
5715
|
-
<xsl:
|
5754
|
+
<xsl:choose>
|
5755
|
+
<xsl:when test="java:replaceAll(java:java.lang.String.new(.), '$2', '') != ''">
|
5756
|
+
<!-- url -->
|
5757
|
+
<xsl:call-template name="add-zero-spaces-link-java"/>
|
5758
|
+
</xsl:when>
|
5759
|
+
<xsl:otherwise>
|
5760
|
+
<xsl:call-template name="add_spaces_to_sourcecode"/>
|
5761
|
+
</xsl:otherwise>
|
5762
|
+
</xsl:choose>
|
5716
5763
|
</xsl:template>
|
5717
5764
|
|
5718
5765
|
<xsl:template match="*[local-name()='underline']">
|
@@ -6068,8 +6115,11 @@
|
|
6068
6115
|
|
6069
6116
|
<xsl:template name="add-zero-spaces-link-java">
|
6070
6117
|
<xsl:param name="text" select="."/>
|
6118
|
+
|
6119
|
+
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$1')"/> <!-- http://. https:// or www. -->
|
6120
|
+
<xsl:variable name="url_continue" select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$2')"/>
|
6071
6121
|
<!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space -->
|
6072
|
-
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($
|
6122
|
+
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($url_continue),'(-|\.|:|=|_|—| |,|/)','$1')"/>
|
6073
6123
|
</xsl:template>
|
6074
6124
|
|
6075
6125
|
<!-- add zero space after dash character (for table's entries) -->
|
@@ -9049,7 +9099,7 @@
|
|
9049
9099
|
<!-- ====== -->
|
9050
9100
|
<!-- eref -->
|
9051
9101
|
<!-- ====== -->
|
9052
|
-
<xsl:template match="*[local-name() = 'eref']">
|
9102
|
+
<xsl:template match="*[local-name() = 'eref']" name="eref">
|
9053
9103
|
<xsl:variable name="current_bibitemid" select="@bibitemid"/>
|
9054
9104
|
<!-- <xsl:variable name="external-destination" select="normalize-space(key('bibitems', $current_bibitemid)/*[local-name() = 'uri'][@type = 'citation'])"/> -->
|
9055
9105
|
<xsl:variable name="external-destination" select="normalize-space($bibitems/*[local-name() ='bibitem'][@id = $current_bibitemid]/*[local-name() = 'uri'][@type = 'citation'])"/>
|
@@ -10609,7 +10659,7 @@
|
|
10609
10659
|
|
10610
10660
|
<xsl:variable name="element_name_keep-together_within-line">keep-together_within-line</xsl:variable>
|
10611
10661
|
|
10612
|
-
<xsl:template match="text()[not(ancestor::*[local-name() = 'bibdata'] or ancestor::*[local-name() = 'sourcecode'] or
|
10662
|
+
<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">
|
10613
10663
|
|
10614
10664
|
<!-- enclose standard's number into tag 'keep-together_within-line' -->
|
10615
10665
|
<xsl:variable name="regex_standard_reference">([A-Z]{2,}(/[A-Z]{2,})* \d+(-\d+)*(:\d{4})?)</xsl:variable>
|
@@ -5,6 +5,7 @@
|
|
5
5
|
<xsl:key name="kfn" match="*[local-name() = 'fn'][not(ancestor::*[(local-name() = 'table' or local-name() = 'figure') and not(ancestor::*[local-name() = 'name'])])]" use="@reference"/>
|
6
6
|
|
7
7
|
<xsl:key name="attachments" match="iso:eref[java:endsWith(java:java.lang.String.new(@bibitemid),'.exp')]" use="@bibitemid"/>
|
8
|
+
<xsl:key name="attachments2" match="iso:eref[contains(@bibitemid,'.exp_')]" use="@bibitemid"/>
|
8
9
|
|
9
10
|
<xsl:variable name="namespace_full">https://www.metanorma.org/ns/iso</xsl:variable>
|
10
11
|
|
@@ -435,6 +436,15 @@
|
|
435
436
|
<xsl:variable name="url" select="concat('url(file:',$basepath, @bibitemid, ')')"/>
|
436
437
|
<pdf:embedded-file src="{$url}" filename="{@bibitemid}"/>
|
437
438
|
</xsl:for-each>
|
439
|
+
<xsl:for-each select="//*[local-name() = 'eref'][generate-id(.)=generate-id(key('attachments2',@bibitemid)[1])]">
|
440
|
+
<xsl:variable name="bibitemid" select="@bibitemid"/>
|
441
|
+
<xsl:variable name="uri" select="normalize-space($bibitems/*[local-name() ='bibitem'][@hidden = 'true'][@id = $bibitemid][1]/*[local-name() = 'uri'][@type='citation'])"/>
|
442
|
+
<xsl:if test="$uri != ''">
|
443
|
+
<xsl:variable name="url" select="concat('url(file:',$basepath, $uri, ')')"/>
|
444
|
+
<xsl:variable name="filename" select="concat(substring-before($bibitemid, '.exp_'), '.exp')"/>
|
445
|
+
<pdf:embedded-file src="{$url}" filename="{$filename}"/>
|
446
|
+
</xsl:if>
|
447
|
+
</xsl:for-each>
|
438
448
|
</fo:declarations>
|
439
449
|
|
440
450
|
<xsl:call-template name="addBookmarks">
|
@@ -1890,6 +1900,9 @@
|
|
1890
1900
|
</xsl:choose>
|
1891
1901
|
</xsl:attribute>
|
1892
1902
|
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
|
1903
|
+
<xsl:if test="starts-with(ancestor::*[local-name() = 'table'][1]/@type, 'recommend') and not(following-sibling::*[local-name() = 'p'])">
|
1904
|
+
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
|
1905
|
+
</xsl:if>
|
1893
1906
|
<xsl:if test="@id">
|
1894
1907
|
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
|
1895
1908
|
</xsl:if>
|
@@ -1948,6 +1961,28 @@
|
|
1948
1961
|
</fo:inline>
|
1949
1962
|
</xsl:template>
|
1950
1963
|
|
1964
|
+
<xsl:template match="*[local-name() = 'eref'][contains(@bibitemid,'.exp_')]" priority="2">
|
1965
|
+
<xsl:variable name="bibitemid" select="@bibitemid"/>
|
1966
|
+
<xsl:variable name="uri" select="normalize-space($bibitems/*[local-name() ='bibitem'][@hidden = 'true'][@id = $bibitemid][1]/*[local-name() = 'uri'][@type='citation'])"/>
|
1967
|
+
<xsl:choose>
|
1968
|
+
<xsl:when test="$uri != ''">
|
1969
|
+
<xsl:variable name="filename" select="concat(substring-before($bibitemid, '.exp_'), '.exp')"/>
|
1970
|
+
<fo:inline xsl:use-attribute-sets="eref-style">
|
1971
|
+
<xsl:variable name="url" select="concat('url(embedded-file:', $filename, ')')"/>
|
1972
|
+
<fo:basic-link external-destination="{$url}" fox:alt-text="{@citeas}">
|
1973
|
+
<xsl:if test="normalize-space(@citeas) = ''">
|
1974
|
+
<xsl:attribute name="fox:alt-text"><xsl:value-of select="."/></xsl:attribute>
|
1975
|
+
</xsl:if>
|
1976
|
+
<xsl:apply-templates/>
|
1977
|
+
</fo:basic-link>
|
1978
|
+
</fo:inline>
|
1979
|
+
</xsl:when>
|
1980
|
+
<xsl:otherwise>
|
1981
|
+
<xsl:call-template name="eref"/>
|
1982
|
+
</xsl:otherwise>
|
1983
|
+
</xsl:choose>
|
1984
|
+
</xsl:template>
|
1985
|
+
|
1951
1986
|
<!-- =================== -->
|
1952
1987
|
<!-- Index processing -->
|
1953
1988
|
<!-- =================== -->
|
@@ -4721,6 +4756,9 @@
|
|
4721
4756
|
<xsl:if test="ancestor::*[local-name() = 'tfoot']">
|
4722
4757
|
<xsl:attribute name="border">solid black 0</xsl:attribute>
|
4723
4758
|
</xsl:if>
|
4759
|
+
<xsl:if test="starts-with(ancestor::*[local-name() = 'table'][1]/@type, 'recommend')">
|
4760
|
+
<xsl:attribute name="display-align">before</xsl:attribute>
|
4761
|
+
</xsl:if>
|
4724
4762
|
|
4725
4763
|
<xsl:if test=".//*[local-name() = 'table']"> <!-- if there is nested table -->
|
4726
4764
|
<xsl:attribute name="padding-right">1mm</xsl:attribute>
|
@@ -5711,8 +5749,17 @@
|
|
5711
5749
|
</fo:inline>
|
5712
5750
|
</xsl:template> <!-- tt -->
|
5713
5751
|
|
5752
|
+
<xsl:variable name="regex_url_start">^(http://|https://|www\.)?(.*)</xsl:variable>
|
5714
5753
|
<xsl:template match="*[local-name()='tt']/text()" priority="2">
|
5715
|
-
<xsl:
|
5754
|
+
<xsl:choose>
|
5755
|
+
<xsl:when test="java:replaceAll(java:java.lang.String.new(.), '$2', '') != ''">
|
5756
|
+
<!-- url -->
|
5757
|
+
<xsl:call-template name="add-zero-spaces-link-java"/>
|
5758
|
+
</xsl:when>
|
5759
|
+
<xsl:otherwise>
|
5760
|
+
<xsl:call-template name="add_spaces_to_sourcecode"/>
|
5761
|
+
</xsl:otherwise>
|
5762
|
+
</xsl:choose>
|
5716
5763
|
</xsl:template>
|
5717
5764
|
|
5718
5765
|
<xsl:template match="*[local-name()='underline']">
|
@@ -6068,8 +6115,11 @@
|
|
6068
6115
|
|
6069
6116
|
<xsl:template name="add-zero-spaces-link-java">
|
6070
6117
|
<xsl:param name="text" select="."/>
|
6118
|
+
|
6119
|
+
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$1')"/> <!-- http://. https:// or www. -->
|
6120
|
+
<xsl:variable name="url_continue" select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$2')"/>
|
6071
6121
|
<!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space -->
|
6072
|
-
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($
|
6122
|
+
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($url_continue),'(-|\.|:|=|_|—| |,|/)','$1')"/>
|
6073
6123
|
</xsl:template>
|
6074
6124
|
|
6075
6125
|
<!-- add zero space after dash character (for table's entries) -->
|
@@ -9049,7 +9099,7 @@
|
|
9049
9099
|
<!-- ====== -->
|
9050
9100
|
<!-- eref -->
|
9051
9101
|
<!-- ====== -->
|
9052
|
-
<xsl:template match="*[local-name() = 'eref']">
|
9102
|
+
<xsl:template match="*[local-name() = 'eref']" name="eref">
|
9053
9103
|
<xsl:variable name="current_bibitemid" select="@bibitemid"/>
|
9054
9104
|
<!-- <xsl:variable name="external-destination" select="normalize-space(key('bibitems', $current_bibitemid)/*[local-name() = 'uri'][@type = 'citation'])"/> -->
|
9055
9105
|
<xsl:variable name="external-destination" select="normalize-space($bibitems/*[local-name() ='bibitem'][@id = $current_bibitemid]/*[local-name() = 'uri'][@type = 'citation'])"/>
|
@@ -10609,7 +10659,7 @@
|
|
10609
10659
|
|
10610
10660
|
<xsl:variable name="element_name_keep-together_within-line">keep-together_within-line</xsl:variable>
|
10611
10661
|
|
10612
|
-
<xsl:template match="text()[not(ancestor::*[local-name() = 'bibdata'] or ancestor::*[local-name() = 'sourcecode'] or
|
10662
|
+
<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">
|
10613
10663
|
|
10614
10664
|
<!-- enclose standard's number into tag 'keep-together_within-line' -->
|
10615
10665
|
<xsl:variable name="regex_standard_reference">([A-Z]{2,}(/[A-Z]{2,})* \d+(-\d+)*(:\d{4})?)</xsl:variable>
|
@@ -104,15 +104,18 @@ module IsoDoc
|
|
104
104
|
locality_span_wrap(ret, type)
|
105
105
|
end
|
106
106
|
|
107
|
-
def prefix_container(container, linkend, target)
|
107
|
+
def prefix_container(container, linkend, node, target)
|
108
108
|
delim = ", "
|
109
|
-
|
110
|
-
if @xrefs.anchor(target, :type) == "listitem" &&
|
109
|
+
ref = if @xrefs.anchor(target, :type) == "listitem" &&
|
111
110
|
!@xrefs.anchor(target, :refer_list)
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
111
|
+
delim = " "
|
112
|
+
@xrefs.anchor(container, :label)
|
113
|
+
# 7 a) : Clause 7 a), but Clause 7 List 1 a)
|
114
|
+
else
|
115
|
+
anchor_xref(node, container)
|
116
|
+
end
|
117
|
+
|
118
|
+
l10n(ref + delim + linkend)
|
116
119
|
end
|
117
120
|
|
118
121
|
def expand_citeas(text)
|
data/lib/isodoc/iso/sections.rb
CHANGED
data/lib/isodoc/iso/xref.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require_relative "xref_section"
|
2
|
+
|
1
3
|
module IsoDoc
|
2
4
|
module Iso
|
3
5
|
class Counter < IsoDoc::XrefGen::Counter
|
@@ -17,11 +19,10 @@ module IsoDoc
|
|
17
19
|
|
18
20
|
def initial_anchor_names_amd(doc)
|
19
21
|
if @parse_settings.empty? || @parse_settings[:clauses]
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
c.element? and preface_names(c)
|
22
|
+
["//preface/*", "//sections/clause"].each do |xpath|
|
23
|
+
doc.xpath(ns(xpath)).each do |c|
|
24
|
+
c.element? and preface_names(c)
|
25
|
+
end
|
25
26
|
end
|
26
27
|
end
|
27
28
|
end
|
@@ -49,76 +50,6 @@ module IsoDoc
|
|
49
50
|
end
|
50
51
|
end
|
51
52
|
|
52
|
-
# we can reference 0-number clauses in introduction
|
53
|
-
def introduction_names(clause)
|
54
|
-
return if clause.nil?
|
55
|
-
|
56
|
-
clause.at(ns("./clause")) and
|
57
|
-
@anchors[clause["id"]] = { label: "0", level: 1, type: "clause",
|
58
|
-
xref: clause.at(ns("./title"))&.text }
|
59
|
-
i = Counter.new
|
60
|
-
clause.xpath(ns("./clause")).each do |c|
|
61
|
-
i.increment(c)
|
62
|
-
section_names1(c, "0.#{i.print}", 2)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
def annex_names(clause, num)
|
67
|
-
appendix_names(clause, num)
|
68
|
-
super
|
69
|
-
end
|
70
|
-
|
71
|
-
def appendix_names(clause, _num)
|
72
|
-
i = Counter.new
|
73
|
-
clause.xpath(ns("./appendix")).each do |c|
|
74
|
-
i.increment(c)
|
75
|
-
@anchors[c["id"]] =
|
76
|
-
anchor_struct(i.print, nil, @labels["appendix"],
|
77
|
-
"clause").merge(level: 2, subtype: "annex",
|
78
|
-
container: clause["id"])
|
79
|
-
j = Counter.new
|
80
|
-
c.xpath(ns("./clause | ./references")).each do |c1|
|
81
|
-
j.increment(c1)
|
82
|
-
lbl = "#{@labels['appendix']} #{i.print}.#{j.print}"
|
83
|
-
appendix_names1(c1, l10n(lbl), 3, clause["id"])
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
# subclauses are not prefixed with "Clause"
|
89
|
-
# retaining subtype for the semantics
|
90
|
-
def section_names1(clause, num, level)
|
91
|
-
@anchors[clause["id"]] =
|
92
|
-
{ label: num, level: level, xref: num, subtype: "clause" }
|
93
|
-
i = Counter.new
|
94
|
-
clause.xpath(ns("./clause | ./terms | ./term | ./definitions | "\
|
95
|
-
"./references"))
|
96
|
-
.each do |c|
|
97
|
-
i.increment(c)
|
98
|
-
section_names1(c, "#{num}.#{i.print}", level + 1)
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
def annex_names1(clause, num, level)
|
103
|
-
@anchors[clause["id"]] = { label: num, xref: num, level: level,
|
104
|
-
subtype: "annex" }
|
105
|
-
i = Counter.new
|
106
|
-
clause.xpath(ns("./clause | ./references")).each do |c|
|
107
|
-
i.increment(c)
|
108
|
-
annex_names1(c, "#{num}.#{i.print}", level + 1)
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
def appendix_names1(clause, num, level, container)
|
113
|
-
@anchors[clause["id"]] = { label: num, xref: num, level: level,
|
114
|
-
container: container }
|
115
|
-
i = Counter.new
|
116
|
-
clause.xpath(ns("./clause | ./references")).each do |c|
|
117
|
-
i.increment(c)
|
118
|
-
appendix_names1(c, "#{num}.#{i.print}", level + 1, container)
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
53
|
def hierarchical_formula_names(clause, num)
|
123
54
|
c = IsoDoc::XrefGen::Counter.new
|
124
55
|
clause.xpath(ns(".//formula")).each do |t|
|
@@ -132,10 +63,10 @@ module IsoDoc
|
|
132
63
|
end
|
133
64
|
end
|
134
65
|
|
135
|
-
def figure_anchor(elem, sublabel, label)
|
66
|
+
def figure_anchor(elem, sublabel, label, klass)
|
136
67
|
@anchors[elem["id"]] = anchor_struct(
|
137
68
|
(sublabel ? "#{label} #{sublabel}" : label),
|
138
|
-
nil, @labels[
|
69
|
+
nil, @labels[klass] || klass.capitalize, klass, elem["unnumbered"]
|
139
70
|
)
|
140
71
|
sublabel && elem["unnumbered"] != "true" and
|
141
72
|
@anchors[elem["id"]][:label] = sublabel
|
@@ -143,27 +74,49 @@ module IsoDoc
|
|
143
74
|
|
144
75
|
def sequential_figure_names(clause)
|
145
76
|
j = 0
|
146
|
-
clause.xpath(ns(
|
77
|
+
clause.xpath(ns(FIGURE_NO_CLASS)).noblank
|
147
78
|
.each_with_object(IsoDoc::XrefGen::Counter.new) do |t, c|
|
148
79
|
j = subfigure_increment(j, c, t)
|
149
80
|
sublabel = j.zero? ? nil : "#{(j + 96).chr})"
|
150
|
-
|
81
|
+
figure_anchor(t, sublabel, c.print, "figure")
|
82
|
+
end
|
83
|
+
sequential_figure_class_names(clause)
|
84
|
+
end
|
151
85
|
|
152
|
-
|
86
|
+
def sequential_figure_class_names(clause)
|
87
|
+
c = {}
|
88
|
+
j = 0
|
89
|
+
clause.xpath(ns(".//figure[@class][not(@class = 'pseudocode')]"))
|
90
|
+
.each do |t|
|
91
|
+
c[t["class"]] ||= IsoDoc::XrefGen::Counter.new
|
92
|
+
j = subfigure_increment(j, c[t["class"]], t)
|
93
|
+
sublabel = j.zero? ? nil : "#{(j + 96).chr})"
|
94
|
+
figure_anchor(t, sublabel, c.print, t["class"])
|
153
95
|
end
|
154
96
|
end
|
155
97
|
|
156
98
|
def hierarchical_figure_names(clause, num)
|
157
99
|
c = IsoDoc::XrefGen::Counter.new
|
158
100
|
j = 0
|
159
|
-
clause.xpath(ns(
|
160
|
-
.each do |t|
|
101
|
+
clause.xpath(ns(FIGURE_NO_CLASS)).noblank.each do |t|
|
161
102
|
j = subfigure_increment(j, c, t)
|
162
103
|
label = "#{num}#{hiersep}#{c.print}"
|
163
104
|
sublabel = j.zero? ? nil : "#{(j + 96).chr})"
|
164
|
-
|
105
|
+
figure_anchor(t, sublabel, label, "figure")
|
106
|
+
end
|
107
|
+
hierarchical_figure_class_names(clause, num)
|
108
|
+
end
|
165
109
|
|
166
|
-
|
110
|
+
def hierarchical_figure_class_names(clause, num)
|
111
|
+
c = {}
|
112
|
+
j = 0
|
113
|
+
clause.xpath(ns(".//figure[@class][not(@class = 'pseudocode')]"))
|
114
|
+
.noblank.each do |t|
|
115
|
+
c[t["class"]] ||= IsoDoc::XrefGen::Counter.new
|
116
|
+
j = subfigure_increment(j, c[t["class"]], t)
|
117
|
+
label = "#{num}#{hiersep}#{c.print}"
|
118
|
+
sublabel = j.zero? ? nil : "#{(j + 96).chr})"
|
119
|
+
figure_anchor(t, sublabel, label, t["class"])
|
167
120
|
end
|
168
121
|
end
|
169
122
|
|
@@ -180,10 +133,6 @@ module IsoDoc
|
|
180
133
|
end
|
181
134
|
end
|
182
135
|
|
183
|
-
def annex_name_lbl(clause, num)
|
184
|
-
super.sub(%r{<br/>(.*)$}, "<br/><span class='obligation'>\\1</span>")
|
185
|
-
end
|
186
|
-
|
187
136
|
def list_anchor_names(sections)
|
188
137
|
sections.each do |s|
|
189
138
|
notes = s.xpath(ns(".//ol")) - s.xpath(ns(".//clause//ol")) -
|
@@ -0,0 +1,79 @@
|
|
1
|
+
module IsoDoc
|
2
|
+
module Iso
|
3
|
+
class Xref < IsoDoc::Xref
|
4
|
+
# we can reference 0-number clauses in introduction
|
5
|
+
def introduction_names(clause)
|
6
|
+
return if clause.nil?
|
7
|
+
|
8
|
+
clause.at(ns("./clause")) and
|
9
|
+
@anchors[clause["id"]] = { label: "0", level: 1, type: "clause",
|
10
|
+
xref: clause.at(ns("./title"))&.text }
|
11
|
+
i = Counter.new
|
12
|
+
clause.xpath(ns("./clause")).each do |c|
|
13
|
+
i.increment(c)
|
14
|
+
section_names1(c, "0.#{i.print}", 2)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def annex_names(clause, num)
|
19
|
+
appendix_names(clause, num)
|
20
|
+
super
|
21
|
+
end
|
22
|
+
|
23
|
+
def appendix_names(clause, _num)
|
24
|
+
i = Counter.new
|
25
|
+
clause.xpath(ns("./appendix")).each do |c|
|
26
|
+
i.increment(c)
|
27
|
+
@anchors[c["id"]] =
|
28
|
+
anchor_struct(i.print, nil, @labels["appendix"],
|
29
|
+
"clause").merge(level: 2, subtype: "annex",
|
30
|
+
container: clause["id"])
|
31
|
+
j = Counter.new
|
32
|
+
c.xpath(ns("./clause | ./references")).each do |c1|
|
33
|
+
j.increment(c1)
|
34
|
+
lbl = "#{@labels['appendix']} #{i.print}.#{j.print}"
|
35
|
+
appendix_names1(c1, l10n(lbl), 3, clause["id"])
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# subclauses are not prefixed with "Clause"
|
41
|
+
# retaining subtype for the semantics
|
42
|
+
def section_names1(clause, num, level)
|
43
|
+
@anchors[clause["id"]] =
|
44
|
+
{ label: num, level: level, xref: num, subtype: "clause" }
|
45
|
+
i = Counter.new
|
46
|
+
clause.xpath(ns("./clause | ./terms | ./term | ./definitions | "\
|
47
|
+
"./references"))
|
48
|
+
.each do |c|
|
49
|
+
i.increment(c)
|
50
|
+
section_names1(c, "#{num}.#{i.print}", level + 1)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def annex_names1(clause, num, level)
|
55
|
+
@anchors[clause["id"]] = { label: num, xref: num, level: level,
|
56
|
+
subtype: "annex" }
|
57
|
+
i = Counter.new
|
58
|
+
clause.xpath(ns("./clause | ./references")).each do |c|
|
59
|
+
i.increment(c)
|
60
|
+
annex_names1(c, "#{num}.#{i.print}", level + 1)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def appendix_names1(clause, num, level, container)
|
65
|
+
@anchors[clause["id"]] = { label: num, xref: num, level: level,
|
66
|
+
container: container }
|
67
|
+
i = Counter.new
|
68
|
+
clause.xpath(ns("./clause | ./references")).each do |c|
|
69
|
+
i.increment(c)
|
70
|
+
appendix_names1(c, "#{num}.#{i.print}", level + 1, container)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def annex_name_lbl(clause, num)
|
75
|
+
super.sub(%r{<br/>(.*)$}, "<br/><span class='obligation'>\\1</span>")
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|