metanorma-iso 1.3.20 → 1.3.25
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/macos.yml +10 -10
- data/.github/workflows/ubuntu.yml +11 -11
- data/.github/workflows/windows.yml +11 -12
- data/Gemfile +2 -0
- data/README.adoc +3 -2
- data/lib/asciidoctor/iso/base.rb +17 -1
- data/lib/asciidoctor/iso/biblio.rng +131 -46
- data/lib/asciidoctor/iso/cleanup.rb +19 -2
- data/lib/asciidoctor/iso/front.rb +116 -17
- data/lib/asciidoctor/iso/isodoc.rng +32 -4
- data/lib/asciidoctor/iso/isostandard-amd.rng +98 -0
- data/lib/asciidoctor/iso/isostandard.rng +10 -0
- data/lib/asciidoctor/iso/macros.rb +21 -0
- data/lib/asciidoctor/iso/section.rb +18 -32
- data/lib/asciidoctor/iso/term_lookup_cleanup.rb +90 -0
- data/lib/asciidoctor/iso/validate.rb +41 -21
- data/lib/asciidoctor/iso/validate_section.rb +2 -2
- data/lib/asciidoctor/iso/validate_style.rb +1 -1
- data/lib/isodoc/iso/base_convert.rb +57 -41
- data/lib/isodoc/iso/html/header.html +5 -5
- data/lib/isodoc/iso/html/html_iso_titlepage.html +18 -18
- data/lib/isodoc/iso/html/isodoc.scss +28 -28
- data/lib/isodoc/iso/html/scripts.html +23 -21
- data/lib/isodoc/iso/html/style-human.scss +259 -423
- data/lib/isodoc/iso/html/style-iso.scss +151 -382
- data/lib/isodoc/iso/html/word_iso_titlepage.html +23 -2
- data/lib/isodoc/iso/html/wordstyle.scss +66 -39
- data/lib/isodoc/iso/html_convert.rb +7 -9
- data/lib/isodoc/iso/iso.international-standard.xsl +4386 -0
- data/lib/isodoc/iso/metadata.rb +48 -22
- data/lib/isodoc/iso/pdf_convert.rb +32 -0
- data/lib/metanorma-iso.rb +1 -0
- data/lib/metanorma/iso/processor.rb +13 -1
- data/lib/metanorma/iso/version.rb +1 -1
- data/spec/asciidoctor-iso/amd_spec.rb +318 -0
- data/spec/asciidoctor-iso/base_spec.rb +37 -17
- data/spec/asciidoctor-iso/blocks_spec.rb +21 -9
- data/spec/asciidoctor-iso/cleanup_spec.rb +203 -175
- data/spec/asciidoctor-iso/inline_spec.rb +2 -1
- data/spec/asciidoctor-iso/macros_spec.rb +273 -0
- data/spec/asciidoctor-iso/refs_spec.rb +7 -4
- data/spec/asciidoctor-iso/section_spec.rb +8 -8
- data/spec/asciidoctor-iso/validate_spec.rb +1 -1
- data/spec/assets/iso.xml +64 -1
- data/spec/isodoc/blocks_spec.rb +115 -0
- data/spec/isodoc/i18n_spec.rb +12 -20
- data/spec/isodoc/inline_spec.rb +2 -2
- data/spec/isodoc/iso_spec.rb +1 -1
- data/spec/isodoc/metadata_spec.rb +13 -4
- data/spec/isodoc/postproc_spec.rb +13 -112
- data/spec/isodoc/ref_spec.rb +4 -4
- data/spec/isodoc/section_spec.rb +8 -12
- data/spec/isodoc/table_spec.rb +24 -24
- data/spec/isodoc/terms_spec.rb +2 -2
- data/spec/isodoc/xref_spec.rb +19 -19
- data/spec/metanorma/processor_spec.rb +2 -2
- data/spec/spec_helper.rb +13 -1
- metadata +9 -3
- data/asciidoctor-iso.gemspec.old +0 -50
@@ -5,6 +5,7 @@ require "json"
|
|
5
5
|
require "pathname"
|
6
6
|
require "open-uri"
|
7
7
|
require "pp"
|
8
|
+
require "asciidoctor/iso/term_lookup_cleanup"
|
8
9
|
|
9
10
|
module Asciidoctor
|
10
11
|
module ISO
|
@@ -13,12 +14,12 @@ module Asciidoctor
|
|
13
14
|
"//clause[title = 'Scope']//fn".freeze
|
14
15
|
|
15
16
|
NORMREF_FOOTNOTES =
|
16
|
-
"//references[
|
17
|
+
"//references[@normative = 'true']//fn".freeze
|
17
18
|
|
18
19
|
POST_NORMREF_FOOTNOTES =
|
19
20
|
"//sections//clause[not(title = 'Scope')]//fn | "\
|
20
21
|
"//annex//fn | "\
|
21
|
-
"//references[
|
22
|
+
"//references[@normative = 'false']//fn".freeze
|
22
23
|
|
23
24
|
def other_footnote_renumber(xmldoc)
|
24
25
|
seen = {}
|
@@ -35,6 +36,7 @@ module Asciidoctor
|
|
35
36
|
end
|
36
37
|
|
37
38
|
def id_prefix(prefix, id)
|
39
|
+
return id.text if @amd # we're just inheriting the prefixes from parent doc
|
38
40
|
prefix.join("/") + ( id.text.match(%{^/}) ? "" : " " ) + id.text
|
39
41
|
end
|
40
42
|
|
@@ -57,6 +59,8 @@ module Asciidoctor
|
|
57
59
|
id.content = id_prefix(prefix, id)
|
58
60
|
id = xmldoc.at("//bibdata/docidentifier[@type = 'iso-with-lang']") and
|
59
61
|
id.content = id_prefix(prefix, id)
|
62
|
+
id = xmldoc.at("//bibdata/docidentifier[@type = 'iso-reference']") and
|
63
|
+
id.content = id_prefix(prefix, id)
|
60
64
|
end
|
61
65
|
|
62
66
|
def format_ref(ref, type, isopub)
|
@@ -86,6 +90,11 @@ module Asciidoctor
|
|
86
90
|
end
|
87
91
|
end
|
88
92
|
|
93
|
+
def termdef_cleanup(xmldoc)
|
94
|
+
Asciidoctor::ISO::TermLookupCleanup.new(xmldoc, @log).call
|
95
|
+
super
|
96
|
+
end
|
97
|
+
|
89
98
|
# TODO sort by authors
|
90
99
|
# sort by: doc class (ISO, IEC, other standard (not DOI &c), other
|
91
100
|
# then standard class (docid class other than DOI &c)
|
@@ -108,6 +117,14 @@ module Asciidoctor
|
|
108
117
|
"#{num.nil? ? abbrid : sprintf("%09d", num.to_i)} :: "\
|
109
118
|
"#{partid} :: #{id&.text} :: #{title}"
|
110
119
|
end
|
120
|
+
|
121
|
+
def sections_cleanup(x)
|
122
|
+
super
|
123
|
+
return unless @amd
|
124
|
+
x.xpath("//*[@inline-header]").each do |h|
|
125
|
+
h.delete('inline-header')
|
126
|
+
end
|
127
|
+
end
|
111
128
|
end
|
112
129
|
end
|
113
130
|
end
|
@@ -9,6 +9,49 @@ require "pp"
|
|
9
9
|
module Asciidoctor
|
10
10
|
module ISO
|
11
11
|
class Converter < Standoc::Converter
|
12
|
+
STAGE_ABBRS = {
|
13
|
+
"00": "PWI",
|
14
|
+
"10": "NWIP",
|
15
|
+
"20": "WD",
|
16
|
+
"30": "CD",
|
17
|
+
"40": "DIS",
|
18
|
+
"50": "FDIS",
|
19
|
+
"60": "IS",
|
20
|
+
"90": "(Review)",
|
21
|
+
"95": "(Withdrawal)",
|
22
|
+
}.freeze
|
23
|
+
|
24
|
+
STAGE_NAMES = {
|
25
|
+
"00": "Preliminary work item",
|
26
|
+
"10": "New work item proposal",
|
27
|
+
"20": "Working draft",
|
28
|
+
"30": "Committee draft",
|
29
|
+
"40": "Draft international standard",
|
30
|
+
"50": "Final draft international standard",
|
31
|
+
"60": "International standard",
|
32
|
+
"90": "Review",
|
33
|
+
"95": "Withdrawal",
|
34
|
+
}.freeze
|
35
|
+
|
36
|
+
def stage_abbr(stage, substage, doctype)
|
37
|
+
return nil if stage.to_i > 60
|
38
|
+
return "PRF" if stage == "60" && substage == "00"
|
39
|
+
ret = STAGE_ABBRS[stage.to_sym]
|
40
|
+
ret = "DTS" if ret == "DIS" && %w(technical-report technical-specification).include?(doctype)
|
41
|
+
ret = "FDTS" if ret == "FDIS" && %w(technical-report technical-specification).include?(doctype)
|
42
|
+
ret
|
43
|
+
end
|
44
|
+
|
45
|
+
def stage_name(stage, substage, doctype)
|
46
|
+
return "Proof" if stage == "60" && substage == "00"
|
47
|
+
ret = STAGE_NAMES[stage.to_sym]
|
48
|
+
if %w(technical-report technical-specification).include? doctype
|
49
|
+
ret = "Draft technical standard" if ret == "Draft international standard"
|
50
|
+
ret = "Final draft technical standard" if ret == "Final draft international standard"
|
51
|
+
end
|
52
|
+
ret
|
53
|
+
end
|
54
|
+
|
12
55
|
def metadata_id(node, xml)
|
13
56
|
iso_id(node, xml)
|
14
57
|
node&.attr("tc-docnumber")&.split(/,\s*/)&.each do |n|
|
@@ -18,12 +61,34 @@ module Asciidoctor
|
|
18
61
|
end
|
19
62
|
|
20
63
|
def iso_id(node, xml)
|
21
|
-
return unless node.attr("docnumber")
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
xml.docidentifier
|
26
|
-
xml.docidentifier id_langsuffix(
|
64
|
+
return unless !@amd && node.attr("docnumber") || @amd && node.attr("updates")
|
65
|
+
dn = iso_id1(node)
|
66
|
+
dn1 = id_stage_prefix(dn, node, false)
|
67
|
+
dn2 = id_stage_prefix(dn, node, true)
|
68
|
+
xml.docidentifier dn1, **attr_code(type: "iso")
|
69
|
+
xml.docidentifier id_langsuffix(dn1, node), **attr_code(type: "iso-with-lang")
|
70
|
+
xml.docidentifier id_langsuffix(dn2, node), **attr_code(type: "iso-reference")
|
71
|
+
end
|
72
|
+
|
73
|
+
def iso_id1(node)
|
74
|
+
if @amd
|
75
|
+
dn = node.attr("updates")
|
76
|
+
return add_amd_parts(dn, node)
|
77
|
+
else
|
78
|
+
part, subpart = node&.attr("partnumber")&.split(/-/)
|
79
|
+
dn = add_id_parts(node.attr("docnumber"), part, subpart)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def add_amd_parts(dn, node)
|
84
|
+
a = node.attr("amendment-number")
|
85
|
+
c = node.attr("corrigendum-number")
|
86
|
+
case node.attr("doctype")
|
87
|
+
when "amendment"
|
88
|
+
"#{dn}/Amd.#{node.attr('amendment-number')}"
|
89
|
+
when "technical corrigendum"
|
90
|
+
"#{dn}/Cor.#{node.attr('corrigendum-number')}"
|
91
|
+
end
|
27
92
|
end
|
28
93
|
|
29
94
|
def id_langsuffix(dn, node)
|
@@ -34,12 +99,15 @@ module Asciidoctor
|
|
34
99
|
else
|
35
100
|
"(X)"
|
36
101
|
end
|
37
|
-
"#{dn}
|
102
|
+
"#{dn}#{suffix}"
|
38
103
|
end
|
39
104
|
|
40
105
|
def metadata_ext(node, xml)
|
41
106
|
super
|
42
107
|
structured_id(node, xml)
|
108
|
+
xml.stagename stage_name(get_stage(node), get_substage(node), node.attr("doctype"))
|
109
|
+
@amd && a = node.attr("updates-document-type") and
|
110
|
+
xml.updates_document_type a
|
43
111
|
end
|
44
112
|
|
45
113
|
def structured_id(node, xml)
|
@@ -47,7 +115,8 @@ module Asciidoctor
|
|
47
115
|
part, subpart = node&.attr("partnumber")&.split(/-/)
|
48
116
|
xml.structuredidentifier do |i|
|
49
117
|
i.project_number node.attr("docnumber"),
|
50
|
-
**attr_code(part: part, subpart: subpart)
|
118
|
+
**attr_code(part: part, subpart: subpart, amendment: node.attr("amendment-number"),
|
119
|
+
corrigendum: node.attr("corrigendum-number"), origyr: node.attr("created-date"))
|
51
120
|
end
|
52
121
|
end
|
53
122
|
|
@@ -59,18 +128,27 @@ module Asciidoctor
|
|
59
128
|
|
60
129
|
def id_stage_abbr(stage, substage, node)
|
61
130
|
IsoDoc::Iso::Metadata.new("en", "Latn", {}).
|
62
|
-
status_abbrev(stage, substage, node.attr("
|
63
|
-
|
131
|
+
status_abbrev(stage_abbr(stage, substage, node.attr("doctype")),
|
132
|
+
substage, node.attr("iteration"),
|
133
|
+
node.attr("draft"), node.attr("doctype"))
|
64
134
|
end
|
65
135
|
|
66
|
-
def id_stage_prefix(dn, node)
|
136
|
+
def id_stage_prefix(dn, node, force_year)
|
67
137
|
stage = get_stage(node)
|
68
138
|
substage = get_substage(node)
|
69
|
-
|
139
|
+
typeabbr = get_typeabbr(node)
|
140
|
+
if stage && (stage.to_i < 60)
|
70
141
|
abbr = id_stage_abbr(stage, substage, node)
|
71
|
-
|
72
|
-
|
73
|
-
|
142
|
+
unless abbr.nil? || abbr.empty? # prefixes added in cleanup
|
143
|
+
dn = @amd ? dn.sub(/ /, "/#{abbr} ") : "/#{abbr} #{typeabbr}#{dn}"
|
144
|
+
end
|
145
|
+
elsif typeabbr && !@amd
|
146
|
+
dn = "/#{typeabbr}#{dn}"
|
147
|
+
end
|
148
|
+
if force_year || !(stage && (stage.to_i < 60))
|
149
|
+
year = @amd ? (node.attr("copyright-year") || node.attr("updated-date").sub(/-.*$/, "")) :
|
150
|
+
node.attr("copyright-year")
|
151
|
+
dn += ":#{year}" if year
|
74
152
|
end
|
75
153
|
dn
|
76
154
|
end
|
@@ -130,10 +208,21 @@ module Asciidoctor
|
|
130
208
|
node.attr("docsubstage") || ( stage == "60" ? "60" : "00" )
|
131
209
|
end
|
132
210
|
|
211
|
+
def get_typeabbr(node)
|
212
|
+
case node.attr("doctype")
|
213
|
+
when "technical-report" then "TR "
|
214
|
+
when "technical-specification" then "TS "
|
215
|
+
else
|
216
|
+
nil
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
133
220
|
def metadata_status(node, xml)
|
221
|
+
stage = get_stage(node)
|
222
|
+
substage = get_substage(node)
|
134
223
|
xml.status do |s|
|
135
|
-
s.stage
|
136
|
-
s.substage
|
224
|
+
s.stage stage, **attr_code(abbreviation: stage_abbr(stage, substage, node.attr("doctype")))
|
225
|
+
s.substage substage
|
137
226
|
node.attr("iteration") && (s.iteration node.attr("iteration"))
|
138
227
|
end
|
139
228
|
end
|
@@ -167,12 +256,21 @@ module Asciidoctor
|
|
167
256
|
end
|
168
257
|
end
|
169
258
|
|
259
|
+
def title_amd(node, t, lang, at)
|
260
|
+
return unless node.attr("title-amendment-#{lang}")
|
261
|
+
t.title(**attr_code(at.merge(type: "title-amd"))) do |t1|
|
262
|
+
t1 << Asciidoctor::Standoc::Utils::asciidoc_sub(node.attr("title-amendment-#{lang}"))
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
170
266
|
def title_full(node, t, lang, at)
|
171
267
|
title = node.attr("title-main-#{lang}")
|
172
268
|
intro = node.attr("title-intro-#{lang}")
|
173
269
|
part = node.attr("title-part-#{lang}")
|
270
|
+
amd = node.attr("title-amendment-#{lang}")
|
174
271
|
title = "#{intro} -- #{title}" if intro
|
175
272
|
title = "#{title} -- #{part}" if part
|
273
|
+
title = "#{title} -- #{amd}" if amd && @amd
|
176
274
|
t.title **attr_code(at.merge(type: "main")) do |t1|
|
177
275
|
t1 << Asciidoctor::Standoc::Utils::asciidoc_sub(title)
|
178
276
|
end
|
@@ -185,6 +283,7 @@ module Asciidoctor
|
|
185
283
|
title_intro(node, xml, lang, at)
|
186
284
|
title_main(node, xml, lang, at)
|
187
285
|
title_part(node, xml, lang, at)
|
286
|
+
title_amd(node, xml, lang, at) if @amd
|
188
287
|
end
|
189
288
|
end
|
190
289
|
end
|
@@ -101,9 +101,7 @@
|
|
101
101
|
<ref name="structuredidentifier"/>
|
102
102
|
</zeroOrMore>
|
103
103
|
</define>
|
104
|
-
|
105
|
-
<text/>
|
106
|
-
</define>
|
104
|
+
<!-- TitleType = text -->
|
107
105
|
<define name="sections">
|
108
106
|
<element name="sections">
|
109
107
|
<oneOrMore>
|
@@ -131,6 +129,9 @@
|
|
131
129
|
</choice>
|
132
130
|
</attribute>
|
133
131
|
</optional>
|
132
|
+
<attribute name="normative">
|
133
|
+
<data type="boolean"/>
|
134
|
+
</attribute>
|
134
135
|
<optional>
|
135
136
|
<ref name="section-title"/>
|
136
137
|
</optional>
|
@@ -307,6 +308,21 @@
|
|
307
308
|
</define>
|
308
309
|
</include>
|
309
310
|
<!-- end overrides -->
|
311
|
+
<define name="TextElement" combine="choice">
|
312
|
+
<ref name="concept"/>
|
313
|
+
</define>
|
314
|
+
<define name="concept">
|
315
|
+
<element name="concept">
|
316
|
+
<optional>
|
317
|
+
<attribute name="term"/>
|
318
|
+
</optional>
|
319
|
+
<choice>
|
320
|
+
<ref name="eref"/>
|
321
|
+
<ref name="xref"/>
|
322
|
+
<ref name="termref"/>
|
323
|
+
</choice>
|
324
|
+
</element>
|
325
|
+
</define>
|
310
326
|
<define name="BasicBlock" combine="choice">
|
311
327
|
<choice>
|
312
328
|
<ref name="requirement"/>
|
@@ -913,7 +929,10 @@
|
|
913
929
|
</define>
|
914
930
|
<define name="origin">
|
915
931
|
<element name="origin">
|
916
|
-
<
|
932
|
+
<choice>
|
933
|
+
<ref name="erefType"/>
|
934
|
+
<ref name="termref"/>
|
935
|
+
</choice>
|
917
936
|
</element>
|
918
937
|
</define>
|
919
938
|
<define name="modification">
|
@@ -921,6 +940,15 @@
|
|
921
940
|
<ref name="paragraph"/>
|
922
941
|
</element>
|
923
942
|
</define>
|
943
|
+
<define name="termref">
|
944
|
+
<element name="termref">
|
945
|
+
<attribute name="base"/>
|
946
|
+
<attribute name="target"/>
|
947
|
+
<optional>
|
948
|
+
<text/>
|
949
|
+
</optional>
|
950
|
+
</element>
|
951
|
+
</define>
|
924
952
|
<define name="structuredidentifier">
|
925
953
|
<element name="structuredidentifier">
|
926
954
|
<optional>
|
@@ -0,0 +1,98 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<grammar ns="https://www.metanorma.org/ns/iso" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
3
|
+
<!-- default namespace isostandard = "https://www.metanorma.com/ns/iso" -->
|
4
|
+
<include href="isostandard.rng">
|
5
|
+
<start>
|
6
|
+
<ref name="iso-standard"/>
|
7
|
+
</start>
|
8
|
+
<define name="sections">
|
9
|
+
<element name="sections">
|
10
|
+
<oneOrMore>
|
11
|
+
<ref name="clause"/>
|
12
|
+
</oneOrMore>
|
13
|
+
</element>
|
14
|
+
</define>
|
15
|
+
<define name="clause">
|
16
|
+
<element name="clause">
|
17
|
+
<optional>
|
18
|
+
<attribute name="type"/>
|
19
|
+
</optional>
|
20
|
+
<optional>
|
21
|
+
<attribute name="change">
|
22
|
+
<choice>
|
23
|
+
<value>add</value>
|
24
|
+
<value>delete</value>
|
25
|
+
<value>modify</value>
|
26
|
+
</choice>
|
27
|
+
</attribute>
|
28
|
+
</optional>
|
29
|
+
<optional>
|
30
|
+
<attribute name="locality"/>
|
31
|
+
</optional>
|
32
|
+
<ref name="Clause-Section"/>
|
33
|
+
</element>
|
34
|
+
</define>
|
35
|
+
<define name="iso-standard">
|
36
|
+
<element name="iso-standard">
|
37
|
+
<ref name="bibdata"/>
|
38
|
+
<optional>
|
39
|
+
<ref name="boilerplate"/>
|
40
|
+
</optional>
|
41
|
+
<ref name="preface"/>
|
42
|
+
<oneOrMore>
|
43
|
+
<ref name="sections"/>
|
44
|
+
</oneOrMore>
|
45
|
+
</element>
|
46
|
+
</define>
|
47
|
+
<define name="documentnumber">
|
48
|
+
<element name="project-number">
|
49
|
+
<optional>
|
50
|
+
<attribute name="part">
|
51
|
+
<data type="int"/>
|
52
|
+
</attribute>
|
53
|
+
</optional>
|
54
|
+
<optional>
|
55
|
+
<attribute name="subpart">
|
56
|
+
<data type="int"/>
|
57
|
+
</attribute>
|
58
|
+
</optional>
|
59
|
+
<optional>
|
60
|
+
<attribute name="amendment">
|
61
|
+
<data type="int"/>
|
62
|
+
</attribute>
|
63
|
+
</optional>
|
64
|
+
<optional>
|
65
|
+
<attribute name="corrigendum">
|
66
|
+
<data type="int"/>
|
67
|
+
</attribute>
|
68
|
+
</optional>
|
69
|
+
<optional>
|
70
|
+
<attribute name="origyr">
|
71
|
+
<data type="int"/>
|
72
|
+
</attribute>
|
73
|
+
</optional>
|
74
|
+
<text/>
|
75
|
+
</element>
|
76
|
+
</define>
|
77
|
+
<define name="BibDataExtensionType">
|
78
|
+
<ref name="doctype"/>
|
79
|
+
<ref name="editorialgroup"/>
|
80
|
+
<zeroOrMore>
|
81
|
+
<ref name="ics"/>
|
82
|
+
</zeroOrMore>
|
83
|
+
<ref name="structuredidentifier"/>
|
84
|
+
<optional>
|
85
|
+
<ref name="stagename"/>
|
86
|
+
</optional>
|
87
|
+
<optional>
|
88
|
+
<ref name="updates_document_type"/>
|
89
|
+
</optional>
|
90
|
+
</define>
|
91
|
+
</include>
|
92
|
+
<!-- end overrides -->
|
93
|
+
<define name="updates_document_type">
|
94
|
+
<element name="updates-document-type">
|
95
|
+
<ref name="DocumentType"/>
|
96
|
+
</element>
|
97
|
+
</define>
|
98
|
+
</grammar>
|
@@ -43,6 +43,9 @@
|
|
43
43
|
<ref name="ics"/>
|
44
44
|
</zeroOrMore>
|
45
45
|
<ref name="structuredidentifier"/>
|
46
|
+
<optional>
|
47
|
+
<ref name="stagename"/>
|
48
|
+
</optional>
|
46
49
|
</define>
|
47
50
|
<define name="bdate">
|
48
51
|
<element name="date">
|
@@ -260,6 +263,8 @@
|
|
260
263
|
<value>publicly-available-specification</value>
|
261
264
|
<value>international-workshop-agreement</value>
|
262
265
|
<value>guide</value>
|
266
|
+
<value>amendment</value>
|
267
|
+
<value>technical-corrigendum</value>
|
263
268
|
</choice>
|
264
269
|
</define>
|
265
270
|
<define name="structuredidentifier">
|
@@ -511,4 +516,9 @@
|
|
511
516
|
</oneOrMore>
|
512
517
|
</element>
|
513
518
|
</define>
|
519
|
+
<define name="stagename">
|
520
|
+
<element name="stagename">
|
521
|
+
<text/>
|
522
|
+
</element>
|
523
|
+
</define>
|
514
524
|
</grammar>
|