metanorma-standoc 1.7.3 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/asciidoctor/standoc/base.rb +31 -44
- data/lib/asciidoctor/standoc/basicdoc.rng +5 -3
- data/lib/asciidoctor/standoc/blocks.rb +7 -7
- data/lib/asciidoctor/standoc/blocks_notes.rb +2 -2
- data/lib/asciidoctor/standoc/cleanup.rb +5 -6
- data/lib/asciidoctor/standoc/cleanup_block.rb +3 -3
- data/lib/asciidoctor/standoc/cleanup_boilerplate.rb +56 -0
- data/lib/asciidoctor/standoc/cleanup_inline.rb +22 -26
- data/lib/asciidoctor/standoc/cleanup_ref.rb +0 -85
- data/lib/asciidoctor/standoc/cleanup_ref_dl.rb +94 -0
- data/lib/asciidoctor/standoc/converter.rb +0 -1
- data/lib/asciidoctor/standoc/front.rb +2 -2
- data/lib/asciidoctor/standoc/inline.rb +1 -1
- data/lib/asciidoctor/standoc/isodoc.rng +3 -0
- data/lib/asciidoctor/standoc/lists.rb +2 -2
- data/lib/asciidoctor/standoc/macros_plantuml.rb +1 -1
- data/lib/asciidoctor/standoc/ref_sect.rb +2 -2
- data/lib/asciidoctor/standoc/reqt.rb +6 -1
- data/lib/asciidoctor/standoc/section.rb +3 -80
- data/lib/asciidoctor/standoc/table.rb +1 -1
- data/lib/asciidoctor/standoc/terms.rb +125 -0
- data/lib/asciidoctor/standoc/utils.rb +2 -96
- data/lib/metanorma/standoc/version.rb +1 -1
- data/metanorma-standoc.gemspec +2 -2
- data/spec/asciidoctor-standoc/base_spec.rb +30 -1
- data/spec/asciidoctor-standoc/cleanup_spec.rb +111 -2
- data/spec/asciidoctor-standoc/isobib_cache_spec.rb +4 -4
- data/spec/asciidoctor-standoc/refs_dl_spec.rb +13 -1
- data/spec/asciidoctor-standoc/refs_spec.rb +12 -12
- data/spec/asciidoctor-standoc/section_spec.rb +5 -3
- data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +47 -47
- data/spec/vcr_cassettes/isobib_get_123.yml +11 -11
- data/spec/vcr_cassettes/isobib_get_123_1.yml +26 -26
- data/spec/vcr_cassettes/isobib_get_123_1_fr.yml +36 -36
- data/spec/vcr_cassettes/isobib_get_123_2001.yml +14 -14
- data/spec/vcr_cassettes/isobib_get_124.yml +14 -14
- data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +8 -8
- data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +45 -45
- metadata +19 -18
- data/lib/asciidoctor/standoc/log.rb +0 -59
@@ -5,105 +5,11 @@ require "json"
|
|
5
5
|
require "pathname"
|
6
6
|
require "open-uri"
|
7
7
|
require "uuidtools"
|
8
|
-
require "sterile"
|
9
8
|
require "mimemagic"
|
10
9
|
|
11
10
|
module Asciidoctor
|
12
11
|
module Standoc
|
13
12
|
module Utils
|
14
|
-
class << self
|
15
|
-
def anchor_or_uuid(node = nil)
|
16
|
-
uuid = UUIDTools::UUID.random_create
|
17
|
-
node.nil? || node.id.nil? || node.id.empty? ? "_" + uuid : node.id
|
18
|
-
end
|
19
|
-
|
20
|
-
def asciidoc_sub(x)
|
21
|
-
return nil if x.nil?
|
22
|
-
return "" if x.empty?
|
23
|
-
d = Asciidoctor::Document.new(x.lines.entries, { header_footer: false,
|
24
|
-
backend: :standoc })
|
25
|
-
b = d.parse.blocks.first
|
26
|
-
b.apply_subs(b.source)
|
27
|
-
end
|
28
|
-
|
29
|
-
def localdir(node)
|
30
|
-
docfile = node.attr("docfile")
|
31
|
-
docfile.nil? ? './' : Pathname.new(docfile).parent.to_s + '/'
|
32
|
-
end
|
33
|
-
|
34
|
-
# TODO needs internationalisation
|
35
|
-
def smartformat(n)
|
36
|
-
n.gsub(/ --? /, " — ").
|
37
|
-
gsub(/\'(\d\d)(?=[^\u2019\'\s<]+[’\'][\p{P}\p{Z}])([\p{P}\p{Z}])/, "\u2018\\1\\2").
|
38
|
-
gsub(/--/, "—").smart_format.gsub(/</, "<").gsub(/>/, ">")
|
39
|
-
end
|
40
|
-
|
41
|
-
def endash_date(elem)
|
42
|
-
elem.traverse do |n|
|
43
|
-
n.text? and n.replace(n.text.gsub(/\s+--?\s+/, "–").gsub(/--/, "–"))
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
# Set hash value using keys path
|
48
|
-
# mod from https://stackoverflow.com/a/42425884
|
49
|
-
def set_nested_value(hash, keys, new_val)
|
50
|
-
key = keys[0]
|
51
|
-
if keys.length == 1
|
52
|
-
hash[key] = hash[key].is_a?(Array) ? (hash[key] << new_val) :
|
53
|
-
hash[key].nil? ? new_val : [hash[key], new_val]
|
54
|
-
return hash
|
55
|
-
end
|
56
|
-
if hash[key].is_a?(Array)
|
57
|
-
hash[key][-1] = {} if hash[key][-1].nil?
|
58
|
-
set_nested_value(hash[key][-1], keys[1..-1], new_val)
|
59
|
-
elsif hash[key].nil? || hash[key].empty?
|
60
|
-
hash[key] = {}
|
61
|
-
set_nested_value(hash[key], keys[1..-1], new_val)
|
62
|
-
elsif hash[key].is_a?(Hash) && !hash[key][keys[1]]
|
63
|
-
set_nested_value(hash[key], keys[1..-1], new_val)
|
64
|
-
elsif !hash[key][keys[1]]
|
65
|
-
hash[key] = [hash[key], {}]
|
66
|
-
set_nested_value(hash[key][-1], keys[1..-1], new_val)
|
67
|
-
else
|
68
|
-
set_nested_value(hash[key], keys[1..-1], new_val)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def flatten_rawtext_lines(node, result)
|
73
|
-
node.lines.each do |x|
|
74
|
-
if node.respond_to?(:context) && (node.context == :literal ||
|
75
|
-
node.context == :listing)
|
76
|
-
result << x.gsub(/</, "<").gsub(/>/, ">")
|
77
|
-
else
|
78
|
-
# strip not only HTML <tag>, and Asciidoc xrefs <<xref>>
|
79
|
-
result << x.gsub(/<[^>]*>+/, "")
|
80
|
-
end
|
81
|
-
end
|
82
|
-
result
|
83
|
-
end
|
84
|
-
|
85
|
-
# if node contains blocks, flatten them into a single line;
|
86
|
-
# and extract only raw text
|
87
|
-
def flatten_rawtext(node)
|
88
|
-
result = []
|
89
|
-
if node.respond_to?(:blocks) && node.blocks?
|
90
|
-
node.blocks.each { |b| result << flatten_rawtext(b) }
|
91
|
-
elsif node.respond_to?(:lines)
|
92
|
-
result = flatten_rawtext_lines(node, result)
|
93
|
-
elsif node.respond_to?(:text)
|
94
|
-
result << node.text.gsub(/<[^>]*>+/, "")
|
95
|
-
else
|
96
|
-
result << node.content.gsub(/<[^>]*>+/, "")
|
97
|
-
end
|
98
|
-
result.reject(&:empty?)
|
99
|
-
end
|
100
|
-
|
101
|
-
def reqt_subpart(x)
|
102
|
-
%w(specification measurement-target verification import label
|
103
|
-
subject inherit classification title).include? x
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
13
|
def convert(node, transform = nil, opts = {})
|
108
14
|
transform ||= node.node_name
|
109
15
|
opts.empty? ? (send transform, node) : (send transform, node, opts)
|
@@ -177,14 +83,14 @@ module Asciidoctor
|
|
177
83
|
SUBCLAUSE_XPATH = "//clause[not(parent::sections)]"\
|
178
84
|
"[not(ancestor::boilerplate)]".freeze
|
179
85
|
|
180
|
-
|
86
|
+
def isodoc(lang, script, i18nyaml = nil)
|
181
87
|
conv = html_converter(EmptyAttr.new)
|
182
88
|
i18n = conv.i18n_init(lang, script, i18nyaml)
|
183
89
|
conv.metadata_init(lang, script, i18n)
|
184
90
|
conv
|
185
91
|
end
|
186
92
|
|
187
|
-
|
93
|
+
class EmptyAttr
|
188
94
|
def attr(_x)
|
189
95
|
nil
|
190
96
|
end
|
data/metanorma-standoc.gemspec
CHANGED
@@ -28,16 +28,16 @@ Gem::Specification.new do |spec|
|
|
28
28
|
|
29
29
|
spec.add_dependency "asciidoctor", "~> 2.0.0"
|
30
30
|
spec.add_dependency "ruby-jing"
|
31
|
-
spec.add_dependency "isodoc", "~> 1.
|
31
|
+
spec.add_dependency "isodoc", "~> 1.5.0"
|
32
32
|
spec.add_dependency "iev", "~> 0.2.1"
|
33
33
|
spec.add_dependency "metanorma-plugin-datastruct"
|
34
34
|
spec.add_dependency "metanorma-plugin-lutaml", "~> 0.2.1"
|
35
35
|
# relaton-cli not just relaton, to avoid circular reference in metanorma
|
36
36
|
spec.add_dependency "relaton-cli", "~> 1.7.0"
|
37
37
|
spec.add_dependency "relaton-iev", "~> 1.1.0"
|
38
|
-
spec.add_dependency "sterile", "~> 1.0.14"
|
39
38
|
spec.add_dependency "concurrent-ruby"
|
40
39
|
spec.add_dependency "unicode2latex", "~> 0.0.1"
|
40
|
+
spec.add_dependency "metanorma-utils", "~> 1"
|
41
41
|
spec.add_dependency "mimemagic"
|
42
42
|
spec.add_dependency "mathml2asciimath"
|
43
43
|
spec.add_dependency "latexmath"
|
@@ -32,7 +32,36 @@ RSpec.describe Asciidoctor::Standoc do
|
|
32
32
|
expect(File.exist?("htmlstyle.css")).to be false
|
33
33
|
end
|
34
34
|
|
35
|
-
it "
|
35
|
+
it "assigns default scripts to major languages" do
|
36
|
+
FileUtils.rm_f "test.doc"
|
37
|
+
expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
38
|
+
= Document title
|
39
|
+
Author
|
40
|
+
:docfile: test.adoc
|
41
|
+
:novalid:
|
42
|
+
:language: ar
|
43
|
+
INPUT
|
44
|
+
<standard-document xmlns='https://www.metanorma.org/ns/standoc' type='semantic' version='#{Metanorma::Standoc::VERSION}'>
|
45
|
+
<bibdata type='standard'>
|
46
|
+
<title language='en' format='text/plain'>Document title</title>
|
47
|
+
<language>ar</language>
|
48
|
+
<script>Arab</script>
|
49
|
+
<status>
|
50
|
+
<stage>published</stage>
|
51
|
+
</status>
|
52
|
+
<copyright>
|
53
|
+
<from>2021</from>
|
54
|
+
</copyright>
|
55
|
+
<ext>
|
56
|
+
<doctype>article</doctype>
|
57
|
+
</ext>
|
58
|
+
</bibdata>
|
59
|
+
<sections> </sections>
|
60
|
+
</standard-document>
|
61
|
+
OUTPUT
|
62
|
+
end
|
63
|
+
|
64
|
+
it "processes publisher abbreviations" do
|
36
65
|
mock_org_abbrevs
|
37
66
|
expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
38
67
|
= Document title
|
@@ -1867,6 +1867,8 @@ input = <<~INPUT
|
|
1867
1867
|
<<1:>>
|
1868
1868
|
<<1#b>>
|
1869
1869
|
<<:a#b:>>
|
1870
|
+
<</%ab>>
|
1871
|
+
<<1!>>
|
1870
1872
|
|
1871
1873
|
INPUT
|
1872
1874
|
expect(xmlpp(Asciidoctor.convert(input, backend: :standoc, header_footer: true).gsub(/<p id="_[^"]+">/, "").gsub('</p>', ""))).to be_equivalent_to (<<~"OUTPUT")
|
@@ -1888,18 +1890,27 @@ expect(xmlpp(Asciidoctor.convert(input, backend: :standoc, header_footer: true).
|
|
1888
1890
|
<sections>
|
1889
1891
|
<clause id='a_b' inline-header='false' obligation='normative'>
|
1890
1892
|
<title>A</title>
|
1891
|
-
<
|
1893
|
+
<eref bibitemid='__ab' citeas=''/>
|
1892
1894
|
<xref target='_'/>
|
1893
1895
|
<xref target='_1'/>
|
1894
1896
|
<xref target='_1_'/>
|
1895
1897
|
<xref target='1#b'/>
|
1896
1898
|
<xref target='_a#b_'/>
|
1899
|
+
<xref target='_%ab'/>
|
1900
|
+
<xref target='_1_'/>
|
1897
1901
|
</clause>
|
1898
1902
|
</sections>
|
1903
|
+
<bibliography>
|
1904
|
+
<references hidden='true' normative='false'>
|
1905
|
+
<bibitem id='__ab' type='internal'>
|
1906
|
+
<docidentifier type='repository'>//ab</docidentifier>
|
1907
|
+
</bibitem>
|
1908
|
+
</references>
|
1909
|
+
</bibliography>
|
1899
1910
|
</standard-document>
|
1900
1911
|
OUTPUT
|
1901
1912
|
expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <clause id="a_b" inline-header="false" obligation="normative"/> from a:b}).to_stderr
|
1902
|
-
expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <
|
1913
|
+
expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <eref bibitemid="__ab" citeas=""/> from /_ab}).to_stderr
|
1903
1914
|
expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <xref target="_"/> from :}).to_stderr
|
1904
1915
|
expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <xref target="_1"/> from 1}).to_stderr
|
1905
1916
|
expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <xref target="_1_"/> from 1:}).to_stderr
|
@@ -2109,6 +2120,104 @@ mock_mathml_italicise({ uppergreek: true, upperroman: true, lowergreek: true, lo
|
|
2109
2120
|
|
2110
2121
|
end
|
2111
2122
|
|
2123
|
+
it "process express_ref macro with existing bibliography" do
|
2124
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true, agree_to_terms: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
2125
|
+
#{ASCIIDOC_BLANK_HDR}
|
2126
|
+
== Clause
|
2127
|
+
|
2128
|
+
<<uml:A:A.B.C,C>>
|
2129
|
+
<<uml:A>>
|
2130
|
+
<<express-schema:action:action.AA,AA>>
|
2131
|
+
<<express-schema:action:action.AB>>
|
2132
|
+
|
2133
|
+
[[action]]
|
2134
|
+
[type="express-schema"]
|
2135
|
+
== Action
|
2136
|
+
|
2137
|
+
[[action.AA]]
|
2138
|
+
=== AA
|
2139
|
+
|
2140
|
+
[bibliography]
|
2141
|
+
== Bibliography
|
2142
|
+
* [[[D,E]]] F
|
2143
|
+
INPUT
|
2144
|
+
#{BLANK_HDR}
|
2145
|
+
<sections>
|
2146
|
+
<clause id='_' inline-header='false' obligation='normative'>
|
2147
|
+
<title>Clause</title>
|
2148
|
+
<p id='_'>
|
2149
|
+
<eref bibitemid='uml_A' citeas="">
|
2150
|
+
<localityStack>
|
2151
|
+
<locality type='anchor'><referenceFrom>A.B.C</referenceFrom></locality>
|
2152
|
+
</localityStack>
|
2153
|
+
C
|
2154
|
+
</eref>
|
2155
|
+
<eref bibitemid='uml_A' citeas=""/>
|
2156
|
+
<xref target='action.AA'>AA</xref>
|
2157
|
+
<xref target='action'>** Missing target action.AB</xref>
|
2158
|
+
</p>
|
2159
|
+
</clause>
|
2160
|
+
<clause id='action' type='express-schema' inline-header='false' obligation='normative'>
|
2161
|
+
<title>Action</title>
|
2162
|
+
<clause id='action.AA' inline-header='false' obligation='normative'>
|
2163
|
+
<title>AA</title>
|
2164
|
+
</clause>
|
2165
|
+
</clause>
|
2166
|
+
</sections>
|
2167
|
+
<bibliography>
|
2168
|
+
<references id='_' normative='false' obligation='informative'>
|
2169
|
+
<title>Bibliography</title>
|
2170
|
+
<bibitem id='D'>
|
2171
|
+
<formattedref format='application/x-isodoc+xml'>F</formattedref>
|
2172
|
+
<docidentifier>E</docidentifier>
|
2173
|
+
</bibitem>
|
2174
|
+
</references>
|
2175
|
+
<references hidden='true' normative='false'>
|
2176
|
+
<bibitem id='uml_A' type='internal'>
|
2177
|
+
<docidentifier type='repository'>uml/A</docidentifier>
|
2178
|
+
</bibitem>
|
2179
|
+
</references>
|
2180
|
+
</bibliography>
|
2181
|
+
</standard-document>
|
2182
|
+
OUTPUT
|
2183
|
+
end
|
2184
|
+
|
2185
|
+
|
2186
|
+
it "process express_ref macro with no existing bibliography" do
|
2187
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true, agree_to_terms: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
2188
|
+
#{ASCIIDOC_BLANK_HDR}
|
2189
|
+
== Clause
|
2190
|
+
|
2191
|
+
<<express-schema:A:A.B.C,C>>
|
2192
|
+
<<express-schema:A>>
|
2193
|
+
INPUT
|
2194
|
+
#{BLANK_HDR}
|
2195
|
+
<sections>
|
2196
|
+
<clause id='_' inline-header='false' obligation='normative'>
|
2197
|
+
<title>Clause</title>
|
2198
|
+
<p id='_'>
|
2199
|
+
<eref bibitemid='express-schema_A' citeas="">
|
2200
|
+
<localityStack>
|
2201
|
+
<locality type='anchor'><referenceFrom>A.B.C</referenceFrom></locality>
|
2202
|
+
</localityStack>
|
2203
|
+
C
|
2204
|
+
</eref>
|
2205
|
+
<eref bibitemid='express-schema_A' citeas=""/>
|
2206
|
+
</p>
|
2207
|
+
</clause>
|
2208
|
+
</sections>
|
2209
|
+
<bibliography>
|
2210
|
+
<references hidden='true' normative='false'>
|
2211
|
+
<bibitem id='express-schema_A' type='internal'>
|
2212
|
+
<docidentifier type='repository'>express-schema/A</docidentifier>
|
2213
|
+
</bibitem>
|
2214
|
+
</references>
|
2215
|
+
</bibliography>
|
2216
|
+
</standard-document>
|
2217
|
+
OUTPUT
|
2218
|
+
end
|
2219
|
+
|
2220
|
+
|
2112
2221
|
private
|
2113
2222
|
|
2114
2223
|
def mock_mathml_italicise(x)
|
@@ -127,7 +127,7 @@ EOS
|
|
127
127
|
<script>Latn</script>
|
128
128
|
<status>
|
129
129
|
<stage>90</stage>
|
130
|
-
<substage>
|
130
|
+
<substage>20</substage>
|
131
131
|
</status>
|
132
132
|
<copyright>
|
133
133
|
<from>2001</from>
|
@@ -168,7 +168,7 @@ EOS
|
|
168
168
|
<script>Latn</script>
|
169
169
|
<status>
|
170
170
|
<stage>90</stage>
|
171
|
-
<substage>
|
171
|
+
<substage>20</substage>
|
172
172
|
</status>
|
173
173
|
<copyright>
|
174
174
|
<from>2001</from>
|
@@ -211,7 +211,7 @@ EOS
|
|
211
211
|
<uri type="obp">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
|
212
212
|
<uri type="rss">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
|
213
213
|
<docidentifier type="ISO">ISO 123:2001</docidentifier>
|
214
|
-
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.
|
214
|
+
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.20:ed-3:en</docidentifier>
|
215
215
|
<docnumber>123</docnumber>
|
216
216
|
<date type="published">
|
217
217
|
<on>2001-05</on>
|
@@ -236,7 +236,7 @@ EOS
|
|
236
236
|
</abstract>
|
237
237
|
<status>
|
238
238
|
<stage>90</stage>
|
239
|
-
<substage>
|
239
|
+
<substage>20</substage>
|
240
240
|
</status>
|
241
241
|
<copyright>
|
242
242
|
<from>2001</from>
|
@@ -74,6 +74,11 @@ RSpec.describe Asciidoctor::Standoc do
|
|
74
74
|
it "processes complex dl reference" do
|
75
75
|
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
76
76
|
#{ASCIIDOC_BLANK_HDR}
|
77
|
+
|
78
|
+
== Clause
|
79
|
+
|
80
|
+
<<ISOTC211>>
|
81
|
+
|
77
82
|
[bibliography]
|
78
83
|
== Normative References
|
79
84
|
|
@@ -288,7 +293,14 @@ formattedref::
|
|
288
293
|
INPUT
|
289
294
|
#{BLANK_HDR}
|
290
295
|
<sections>
|
291
|
-
|
296
|
+
<clause id='_' inline-header='false' obligation='normative'>
|
297
|
+
<title>Clause</title>
|
298
|
+
<p id='_'>
|
299
|
+
<eref type='inline' bibitemid='ISOTC211' citeas='TC211'/>
|
300
|
+
</p>
|
301
|
+
</clause>
|
302
|
+
</sections>
|
303
|
+
<bibliography><references id="_" obligation="informative" normative="true">
|
292
304
|
<title>Normative references</title>
|
293
305
|
#{NORM_REF_BOILERPLATE}
|
294
306
|
<bibitem id="ISOTC211" type="standard">
|
@@ -264,7 +264,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
264
264
|
<script>Latn</script>
|
265
265
|
<status>
|
266
266
|
<stage>90</stage>
|
267
|
-
<substage>
|
267
|
+
<substage>20</substage>
|
268
268
|
</status>
|
269
269
|
<copyright>
|
270
270
|
<from>2001</from>
|
@@ -289,7 +289,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
289
289
|
<uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
|
290
290
|
<uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
|
291
291
|
<docidentifier type='ISO'>ISO 123:2001</docidentifier>
|
292
|
-
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.
|
292
|
+
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.20:ed-3:en</docidentifier>
|
293
293
|
<docnumber>123</docnumber>
|
294
294
|
<date type='published'>
|
295
295
|
<on>2001-05</on>
|
@@ -314,7 +314,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
314
314
|
</abstract>
|
315
315
|
<status>
|
316
316
|
<stage>90</stage>
|
317
|
-
<substage>
|
317
|
+
<substage>20</substage>
|
318
318
|
</status>
|
319
319
|
<copyright>
|
320
320
|
<from>2001</from>
|
@@ -372,7 +372,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
372
372
|
<script>Latn</script>
|
373
373
|
<status>
|
374
374
|
<stage>90</stage>
|
375
|
-
<substage>
|
375
|
+
<substage>20</substage>
|
376
376
|
</status>
|
377
377
|
<copyright>
|
378
378
|
<from>2001</from>
|
@@ -397,7 +397,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
397
397
|
<uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
|
398
398
|
<uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
|
399
399
|
<docidentifier type='ISO'>ISO 123:2001</docidentifier>
|
400
|
-
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.
|
400
|
+
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.20:ed-3:en</docidentifier>
|
401
401
|
<docnumber>123</docnumber>
|
402
402
|
<date type='published'>
|
403
403
|
<on>2001-05</on>
|
@@ -422,7 +422,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
422
422
|
</abstract>
|
423
423
|
<status>
|
424
424
|
<stage>90</stage>
|
425
|
-
<substage>
|
425
|
+
<substage>20</substage>
|
426
426
|
</status>
|
427
427
|
<copyright>
|
428
428
|
<from>2001</from>
|
@@ -517,7 +517,7 @@ compris les éventuels amendements).
|
|
517
517
|
<script>Latn</script>
|
518
518
|
<status>
|
519
519
|
<stage>90</stage>
|
520
|
-
<substage>
|
520
|
+
<substage>20</substage>
|
521
521
|
</status>
|
522
522
|
<copyright>
|
523
523
|
<from>2001</from>
|
@@ -542,7 +542,7 @@ compris les éventuels amendements).
|
|
542
542
|
<uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
|
543
543
|
<uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
|
544
544
|
<docidentifier type='ISO'>ISO 123:2001</docidentifier>
|
545
|
-
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.
|
545
|
+
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.20:ed-3:fr</docidentifier>
|
546
546
|
<docnumber>123</docnumber>
|
547
547
|
<date type='published'>
|
548
548
|
<on>2001-05</on>
|
@@ -570,7 +570,7 @@ compris les éventuels amendements).
|
|
570
570
|
</abstract>
|
571
571
|
<status>
|
572
572
|
<stage>90</stage>
|
573
|
-
<substage>
|
573
|
+
<substage>20</substage>
|
574
574
|
</status>
|
575
575
|
<copyright>
|
576
576
|
<from>2001</from>
|
@@ -629,7 +629,7 @@ compris les éventuels amendements).
|
|
629
629
|
<script>Latn</script>
|
630
630
|
<status>
|
631
631
|
<stage>90</stage>
|
632
|
-
<substage>
|
632
|
+
<substage>20</substage>
|
633
633
|
</status>
|
634
634
|
<copyright>
|
635
635
|
<from>2001</from>
|
@@ -654,7 +654,7 @@ compris les éventuels amendements).
|
|
654
654
|
<uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
|
655
655
|
<uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
|
656
656
|
<docidentifier type='ISO'>ISO 123:2001</docidentifier>
|
657
|
-
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.
|
657
|
+
<docidentifier type='URN'>urn:iso:std:iso:123:stage-90.20:ed-3:fr</docidentifier>
|
658
658
|
<docnumber>123</docnumber>
|
659
659
|
<date type='published'>
|
660
660
|
<on>2001-05</on>
|
@@ -682,7 +682,7 @@ compris les éventuels amendements).
|
|
682
682
|
</abstract>
|
683
683
|
<status>
|
684
684
|
<stage>90</stage>
|
685
|
-
<substage>
|
685
|
+
<substage>20</substage>
|
686
686
|
</status>
|
687
687
|
<copyright>
|
688
688
|
<from>2001</from>
|