metanorma-itu 1.3.6 → 1.3.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/asciidoctor/itu/cleanup.rb +64 -59
- data/lib/asciidoctor/itu/front.rb +38 -42
- data/lib/asciidoctor/itu/isodoc.rng +67 -16
- data/lib/asciidoctor/itu/reqt.rng +15 -4
- data/lib/isodoc/itu/itu.implementers-guide.xsl +1428 -643
- data/lib/isodoc/itu/itu.in-force.xsl +1428 -643
- data/lib/isodoc/itu/itu.recommendation-annex.xsl +1428 -643
- data/lib/isodoc/itu/itu.recommendation-supplement.xsl +1428 -643
- data/lib/isodoc/itu/itu.recommendation.xsl +1428 -643
- data/lib/isodoc/itu/itu.resolution.xsl +1428 -643
- data/lib/isodoc/itu/itu.service-publication.xsl +7472 -0
- data/lib/isodoc/itu/itu.technical-paper.xsl +1428 -643
- data/lib/isodoc/itu/itu.technical-report.xsl +1428 -643
- data/lib/isodoc/itu/metadata.rb +23 -12
- data/lib/isodoc/itu/presentation_xml_convert.rb +86 -75
- data/lib/isodoc/itu/word_cleanup.rb +30 -21
- data/lib/isodoc/itu/xref.rb +42 -117
- data/lib/isodoc/itu/xref_section.rb +109 -0
- data/lib/metanorma/itu/processor.rb +1 -1
- data/lib/metanorma/itu/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9fedf3f6b88ed3fec5d058a59d289f893646fbcdea430d5f628c2c5f4801b4e
|
4
|
+
data.tar.gz: e569b3339b3437a5ac5db0b72a94fa6b6c8647e64d64e7c6690a3af5c9cc57b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7870e02cd137d2f25bc39b552dee726ec92144e45b60a3aaf733285eb2394a5cb040f0a38eeef43a0f7fca7f5fca54326c780e4c9c2a0a502667ee497d7ae54
|
7
|
+
data.tar.gz: 02d819038572881fb4882a20cc4a5ee18c96853226e8ca6820600391af390230128cbf32842660ede1e756976efbbfbcc73990bbb4caa51551f9943f20f2aa04
|
@@ -1,17 +1,19 @@
|
|
1
1
|
module Asciidoctor
|
2
2
|
module ITU
|
3
3
|
class Converter < Standoc::Converter
|
4
|
-
def sections_cleanup(
|
4
|
+
def sections_cleanup(xml)
|
5
5
|
super
|
6
|
-
insert_missing_sections(
|
7
|
-
insert_empty_clauses(
|
8
|
-
resolution_inline_header(
|
6
|
+
insert_missing_sections(xml) unless @no_insert_missing_sections
|
7
|
+
insert_empty_clauses(xml)
|
8
|
+
resolution_inline_header(xml)
|
9
9
|
end
|
10
10
|
|
11
|
-
def resolution_inline_header(
|
12
|
-
return unless
|
13
|
-
|
14
|
-
|
11
|
+
def resolution_inline_header(xml)
|
12
|
+
return unless xml&.at("//bibdata/ext/doctype")&.text == "resolution"
|
13
|
+
|
14
|
+
xml.xpath("//clause//clause").each do |c|
|
15
|
+
next if (title = c.at("./title")) && !title&.text&.empty?
|
16
|
+
|
15
17
|
c["inline-header"] = true
|
16
18
|
end
|
17
19
|
end
|
@@ -36,67 +38,67 @@ module Asciidoctor
|
|
36
38
|
%(id="_#{UUIDTools::UUID.random_create}")
|
37
39
|
end
|
38
40
|
|
39
|
-
def insert_scope(
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
ins =
|
45
|
-
|
41
|
+
def insert_scope(xml)
|
42
|
+
xml.at("./*/sections") or
|
43
|
+
xml.at("./*/preface | ./*/boilerplate | ./*/bibdata").next =
|
44
|
+
"<sections><sentinel/></sections>"
|
45
|
+
xml.at("./*/sections/*") or xml.at("./*/sections") << "<sentinel/>"
|
46
|
+
ins = xml.at("//sections").elements.first
|
47
|
+
xml.at("//sections/clause[@type = 'scope']") or
|
46
48
|
ins.previous =
|
47
49
|
"<clause type='scope' #{add_id}><title>#{@i18n.scope}</title><p>"\
|
48
50
|
"#{@i18n.clause_empty}</p></clause>"
|
49
|
-
|
51
|
+
xml&.at("//sentinel")&.remove
|
50
52
|
end
|
51
53
|
|
52
|
-
def insert_norm_ref(
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
ins =
|
57
|
-
|
54
|
+
def insert_norm_ref(xml)
|
55
|
+
xml.at("//bibliography") or
|
56
|
+
xml.at("./*/annex[last()] | ./*/sections").next =
|
57
|
+
"<bibliography><sentinel/></bibliography>"
|
58
|
+
ins = xml.at("//bibliography").elements.first
|
59
|
+
xml.at("//bibliography/references[@normative = 'true']") or
|
58
60
|
ins.previous = "<references #{add_id} normative='true'>"\
|
59
|
-
|
60
|
-
|
61
|
+
"<title>#{@i18n.normref}</title></references>"
|
62
|
+
xml&.at("//sentinel")&.remove
|
61
63
|
end
|
62
64
|
|
63
|
-
def insert_terms(
|
64
|
-
ins =
|
65
|
-
|
65
|
+
def insert_terms(xml)
|
66
|
+
ins = xml.at("//sections/clause[@type = 'scope']")
|
67
|
+
xml.at("//sections//terms") or
|
66
68
|
ins.next = "<terms #{add_id}><title>#{@i18n.termsdef}</title></terms>"
|
67
69
|
end
|
68
70
|
|
69
|
-
def insert_symbols(
|
70
|
-
ins =
|
71
|
-
|
72
|
-
unless
|
71
|
+
def insert_symbols(xml)
|
72
|
+
ins = xml.at("//sections/terms") ||
|
73
|
+
xml.at("//sections/clause[descendant::terms]")
|
74
|
+
unless xml.at("//sections//definitions")
|
73
75
|
ins.next = "<definitions #{add_id}>"\
|
74
|
-
|
76
|
+
"<title>#{@i18n.symbolsabbrev}</title></definitions>"
|
75
77
|
end
|
76
78
|
end
|
77
79
|
|
78
|
-
def insert_conventions(
|
79
|
-
ins =
|
80
|
-
|
81
|
-
unless
|
80
|
+
def insert_conventions(xml)
|
81
|
+
ins = xml.at("//sections//definitions") ||
|
82
|
+
xml.at("//sections/clause[descendant::definitions]")
|
83
|
+
unless xml.at("//sections/clause[@type = 'conventions']")
|
82
84
|
ins.next = "<clause #{add_id} type='conventions'>"\
|
83
|
-
|
84
|
-
|
85
|
+
"<title>#{@i18n.conventions}</title><p>"\
|
86
|
+
"#{@i18n.clause_empty}</p></clause>"
|
85
87
|
end
|
86
88
|
end
|
87
89
|
|
88
|
-
def insert_empty_clauses(
|
89
|
-
|
90
|
+
def insert_empty_clauses(xml)
|
91
|
+
xml.xpath("//terms[not(./term)][not(.//terms)]").each do |c|
|
90
92
|
insert_empty_clauses1(c, @i18n.clause_empty)
|
91
93
|
end
|
92
|
-
|
94
|
+
xml.xpath("//definitions[not(./dl)]").each do |c|
|
93
95
|
insert_empty_clauses1(c, @i18n.clause_empty)
|
94
96
|
end
|
95
97
|
end
|
96
98
|
|
97
|
-
def insert_empty_clauses1(
|
98
|
-
|
99
|
-
ins =
|
99
|
+
def insert_empty_clauses1(clause, text)
|
100
|
+
clause.at("./p") and return
|
101
|
+
ins = clause.at("./title") or return
|
100
102
|
ins.next = "<p>#{text}</p>"
|
101
103
|
end
|
102
104
|
|
@@ -114,14 +116,14 @@ module Asciidoctor
|
|
114
116
|
next unless n.text?
|
115
117
|
|
116
118
|
n.replace(HTMLEntities.new.encode(
|
117
|
-
|
118
|
-
|
119
|
+
n.text.gsub(/\u2019|\u2018|\u201a|\u201b/, "'")
|
120
|
+
.gsub(/\u201c|\u201d|\u201e|\u201f/, '"'), :basic
|
121
|
+
))
|
119
122
|
end
|
120
123
|
xmldoc
|
121
124
|
end
|
122
125
|
|
123
|
-
def termdef_boilerplate_cleanup(xmldoc)
|
124
|
-
end
|
126
|
+
def termdef_boilerplate_cleanup(xmldoc); end
|
125
127
|
|
126
128
|
def terms_extract(div)
|
127
129
|
internal = div.at("./terms[@type = 'internal']/title")
|
@@ -129,7 +131,7 @@ module Asciidoctor
|
|
129
131
|
[internal, external]
|
130
132
|
end
|
131
133
|
|
132
|
-
def term_defs_boilerplate(div,
|
134
|
+
def term_defs_boilerplate(div, _source, _term, _preface, _isodoc)
|
133
135
|
internal, external = terms_extract(div.parent)
|
134
136
|
internal&.next_element&.name == "term" and
|
135
137
|
internal.next = "<p>#{@i18n.internal_terms_boilerplate}</p>"
|
@@ -144,16 +146,20 @@ module Asciidoctor
|
|
144
146
|
div.next = "<p>#{@i18n.term_def_boilerplate}</p>"
|
145
147
|
end
|
146
148
|
|
147
|
-
def section_names_terms_cleanup(
|
149
|
+
def section_names_terms_cleanup(xml)
|
148
150
|
super
|
149
151
|
replace_title(
|
150
|
-
|
151
|
-
|
152
|
-
|
152
|
+
xml, "//terms[@type = 'internal'] | "\
|
153
|
+
"//clause[./terms[@type = 'internal']]"\
|
154
|
+
"[not(./terms[@type = 'external'])]",
|
155
|
+
@i18n&.internal_termsdef
|
156
|
+
)
|
153
157
|
replace_title(
|
154
|
-
|
155
|
-
|
156
|
-
|
158
|
+
xml, "//terms[@type = 'external'] | "\
|
159
|
+
"//clause[./terms[@type = 'external']]"\
|
160
|
+
"[not(./terms[@type = 'internal'])]",
|
161
|
+
@i18n&.external_termsdef
|
162
|
+
)
|
157
163
|
end
|
158
164
|
|
159
165
|
def symbols_cleanup(xmldoc)
|
@@ -193,12 +199,11 @@ module Asciidoctor
|
|
193
199
|
# then title
|
194
200
|
def sort_biblio_key(bib)
|
195
201
|
pubclass = pub_class(bib)
|
196
|
-
num = bib&.at("./docnumber")&.text
|
197
202
|
id = bib&.at("./docidentifier[not(@type = 'DOI' or @type = "\
|
198
203
|
"'metanorma' or @type = 'ISSN' or @type = 'ISBN')]")
|
199
204
|
metaid = bib&.at("./docidentifier[@type = 'metanorma']")&.text
|
200
|
-
abbrid = metaid unless /^\[\d+\]$/.match(metaid)
|
201
|
-
type = id[
|
205
|
+
abbrid = metaid unless /^\[\d+\]$/.match?(metaid)
|
206
|
+
type = id["type"] if id
|
202
207
|
title = bib&.at("./title[@type = 'main']")&.text ||
|
203
208
|
bib&.at("./title")&.text || bib&.at("./formattedref")&.text
|
204
209
|
"#{pubclass} :: #{type} :: #{id&.text || metaid} :: #{title}"
|
@@ -17,13 +17,13 @@ module Asciidoctor
|
|
17
17
|
{ language: lang, format: "text/plain", type: type }
|
18
18
|
end
|
19
19
|
|
20
|
-
def
|
21
|
-
a = node.attr("title") || node.attr("title
|
22
|
-
xml.title **attr_code(title_attr("main")) do |t|
|
20
|
+
def title_defaultlang(node, xml)
|
21
|
+
a = node.attr("title") || node.attr("title-#{@lang}")
|
22
|
+
xml.title **attr_code(title_attr("main", @lang)) do |t|
|
23
23
|
t << (Metanorma::Utils::asciidoc_sub(a) || node.title)
|
24
24
|
end
|
25
|
-
if a = node.attr("annextitle") || node.attr("annextitle
|
26
|
-
xml.title **attr_code(title_attr("annex")) do |t|
|
25
|
+
if a = node.attr("annextitle") || node.attr("annextitle-#{@lang}")
|
26
|
+
xml.title **attr_code(title_attr("annex", @lang)) do |t|
|
27
27
|
t << Metanorma::Utils::asciidoc_sub(a)
|
28
28
|
end
|
29
29
|
end
|
@@ -32,7 +32,7 @@ module Asciidoctor
|
|
32
32
|
def title_otherlangs(node, xml)
|
33
33
|
node.attributes.each do |k, v|
|
34
34
|
next unless /^(annex)?title-(?<lang>.+)$/ =~ k
|
35
|
-
next if lang ==
|
35
|
+
next if lang == @lang
|
36
36
|
|
37
37
|
type = /^annex/.match?(k) ? "annex" : "main"
|
38
38
|
xml.title **attr_code(title_attr(type, lang)) do |t|
|
@@ -42,16 +42,17 @@ module Asciidoctor
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def title(node, xml)
|
45
|
-
|
45
|
+
title_defaultlang(node, xml)
|
46
|
+
title_otherlangs(node, xml)
|
46
47
|
%w(subtitle amendment-title corrigendum-title).each do |t|
|
47
|
-
|
48
|
+
other_title_defaultlang(node, xml, t)
|
48
49
|
other_title_otherlangs(node, xml, t)
|
49
50
|
end
|
50
51
|
end
|
51
52
|
|
52
|
-
def
|
53
|
-
a = node.attr(type) || node.attr("#{type}
|
54
|
-
xml.title **attr_code(title_attr(type.sub(/-title/, ""))) do |t|
|
53
|
+
def other_title_defaultlang(node, xml, type)
|
54
|
+
a = node.attr(type) || node.attr("#{type}-#{@lang}")
|
55
|
+
xml.title **attr_code(title_attr(type.sub(/-title/, ""), @lang)) do |t|
|
55
56
|
t << Metanorma::Utils::asciidoc_sub(a)
|
56
57
|
end
|
57
58
|
end
|
@@ -59,7 +60,7 @@ module Asciidoctor
|
|
59
60
|
def other_title_otherlangs(node, xml, type)
|
60
61
|
node.attributes.each do |k, v|
|
61
62
|
next unless m = /^#{type}-(?<lang>.+)$/.match(k)
|
62
|
-
next if m[:lang] ==
|
63
|
+
next if m[:lang] == @lang
|
63
64
|
|
64
65
|
xml.title **attr_code(title_attr(type.sub(/-title/, ""),
|
65
66
|
m[:lang])) do |t|
|
@@ -84,30 +85,23 @@ module Asciidoctor
|
|
84
85
|
def metadata_committee1(node, xml, suffix)
|
85
86
|
xml.editorialgroup do |a|
|
86
87
|
a.bureau ( node.attr("bureau#{suffix}") || "T")
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
a.subgroup **attr_code(type: node.attr("subgrouptype#{suffix}")) do |g|
|
94
|
-
metadata_committee2(node, g, suffix, "sub")
|
95
|
-
end
|
96
|
-
end
|
97
|
-
if node.attr("workgroup#{suffix}")
|
98
|
-
a.workgroup **attr_code(type: node.attr("workgrouptype#{suffix}")) do |g|
|
99
|
-
metadata_committee2(node, g, suffix, "work")
|
88
|
+
["", "sub", "work"].each do |p|
|
89
|
+
next unless node.attr("#{p}group#{suffix}")
|
90
|
+
|
91
|
+
type = node.attr("#{p}grouptype#{suffix}")
|
92
|
+
a.send "#{p}group", **attr_code(type: type) do |g|
|
93
|
+
metadata_committee2(node, g, suffix, p)
|
100
94
|
end
|
101
95
|
end
|
102
96
|
end
|
103
97
|
end
|
104
98
|
|
105
|
-
def metadata_committee2(node,
|
106
|
-
|
99
|
+
def metadata_committee2(node, group, suffix, prefix)
|
100
|
+
group.name node.attr("#{prefix}group#{suffix}")
|
107
101
|
node.attr("#{prefix}groupacronym#{suffix}") and
|
108
|
-
|
102
|
+
group.acronym node.attr("#{prefix}groupacronym#{suffix}")
|
109
103
|
if node.attr("#{prefix}groupyearstart#{suffix}")
|
110
|
-
|
104
|
+
group.period do |p|
|
111
105
|
p.start node.attr("#{prefix}groupyearstart#{suffix}")
|
112
106
|
node.attr("#{prefix}groupacronym#{suffix}") and
|
113
107
|
p.end node.attr("#{prefix}groupyearend#{suffix}")
|
@@ -134,9 +128,11 @@ module Asciidoctor
|
|
134
128
|
|
135
129
|
def itu_id1(node, lang)
|
136
130
|
bureau = node.attr("bureau") || "T"
|
137
|
-
id = doctype(node) == "service-publication"
|
138
|
-
|
139
|
-
|
131
|
+
id = if doctype(node) == "service-publication"
|
132
|
+
@i18n.annex_to_itu_ob_abbrev.sub(/%/, node.attr("docnumber"))
|
133
|
+
else
|
134
|
+
"ITU-#{bureau} #{node.attr('docnumber')}"
|
135
|
+
end
|
140
136
|
id + (lang ? "-#{ITULANG[@lang]}" : "")
|
141
137
|
end
|
142
138
|
|
@@ -165,16 +161,16 @@ module Asciidoctor
|
|
165
161
|
def metadata_series(node, xml)
|
166
162
|
node.attr("series") and
|
167
163
|
xml.series **{ type: "main" } do |s|
|
168
|
-
|
169
|
-
|
164
|
+
s.title node.attr("series")
|
165
|
+
end
|
170
166
|
node.attr("series1") and
|
171
167
|
xml.series **{ type: "secondary" } do |s|
|
172
|
-
|
173
|
-
|
168
|
+
s.title node.attr("series1")
|
169
|
+
end
|
174
170
|
node.attr("series2") and
|
175
171
|
xml.series **{ type: "tertiary" } do |s|
|
176
|
-
|
177
|
-
|
172
|
+
s.title node.attr("series2")
|
173
|
+
end
|
178
174
|
end
|
179
175
|
|
180
176
|
def metadata_recommendationstatus(node, xml)
|
@@ -222,9 +218,9 @@ module Asciidoctor
|
|
222
218
|
end
|
223
219
|
end
|
224
220
|
|
225
|
-
def metadata_meeting_date(
|
221
|
+
def metadata_meeting_date(val, xml)
|
226
222
|
xml.meeting_date do |m|
|
227
|
-
d =
|
223
|
+
d = val.split("/")
|
228
224
|
if d.size > 1
|
229
225
|
m.from d[0]
|
230
226
|
m.to d[1]
|
@@ -234,9 +230,9 @@ module Asciidoctor
|
|
234
230
|
end
|
235
231
|
end
|
236
232
|
|
237
|
-
def personal_role(node,
|
233
|
+
def personal_role(node, contrib, suffix)
|
238
234
|
if node.attr("role#{suffix}")&.downcase == "rapporteur"
|
239
|
-
|
235
|
+
contrib.role "raporteur", **{ type: "editor" }
|
240
236
|
else
|
241
237
|
super
|
242
238
|
end
|
@@ -32,6 +32,18 @@
|
|
32
32
|
<ref name="DocumentType"/>
|
33
33
|
</element>
|
34
34
|
</define>
|
35
|
+
<define name="section-title">
|
36
|
+
<element name="title">
|
37
|
+
<zeroOrMore>
|
38
|
+
<ref name="TextElement"/>
|
39
|
+
</zeroOrMore>
|
40
|
+
</element>
|
41
|
+
<zeroOrMore>
|
42
|
+
<element name="variant-title">
|
43
|
+
<ref name="TypedTitleString"/>
|
44
|
+
</element>
|
45
|
+
</zeroOrMore>
|
46
|
+
</define>
|
35
47
|
<define name="hyperlink">
|
36
48
|
<element name="link">
|
37
49
|
<attribute name="target">
|
@@ -158,15 +170,17 @@
|
|
158
170
|
<data type="boolean"/>
|
159
171
|
</attribute>
|
160
172
|
</optional>
|
161
|
-
<
|
162
|
-
<
|
163
|
-
<
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
173
|
+
<optional>
|
174
|
+
<attribute name="type">
|
175
|
+
<choice>
|
176
|
+
<value>roman</value>
|
177
|
+
<value>alphabet</value>
|
178
|
+
<value>arabic</value>
|
179
|
+
<value>roman_upper</value>
|
180
|
+
<value>alphabet_upper</value>
|
181
|
+
</choice>
|
182
|
+
</attribute>
|
183
|
+
</optional>
|
170
184
|
<oneOrMore>
|
171
185
|
<ref name="li"/>
|
172
186
|
</oneOrMore>
|
@@ -204,6 +218,18 @@
|
|
204
218
|
</zeroOrMore>
|
205
219
|
</element>
|
206
220
|
</define>
|
221
|
+
<define name="dt">
|
222
|
+
<element name="dt">
|
223
|
+
<optional>
|
224
|
+
<attribute name="id">
|
225
|
+
<data type="ID"/>
|
226
|
+
</attribute>
|
227
|
+
</optional>
|
228
|
+
<zeroOrMore>
|
229
|
+
<ref name="TextElement"/>
|
230
|
+
</zeroOrMore>
|
231
|
+
</element>
|
232
|
+
</define>
|
207
233
|
<define name="example">
|
208
234
|
<element name="example">
|
209
235
|
<attribute name="id">
|
@@ -899,7 +925,7 @@
|
|
899
925
|
</include>
|
900
926
|
<!-- end overrides -->
|
901
927
|
<define name="docsubtype">
|
902
|
-
<element name="
|
928
|
+
<element name="subdoctype">
|
903
929
|
<ref name="DocumentSubtype"/>
|
904
930
|
</element>
|
905
931
|
</define>
|
@@ -954,6 +980,16 @@
|
|
954
980
|
</define>
|
955
981
|
<define name="concept">
|
956
982
|
<element name="concept">
|
983
|
+
<optional>
|
984
|
+
<attribute name="ital">
|
985
|
+
<data type="boolean"/>
|
986
|
+
</attribute>
|
987
|
+
</optional>
|
988
|
+
<optional>
|
989
|
+
<attribute name="ref">
|
990
|
+
<data type="boolean"/>
|
991
|
+
</attribute>
|
992
|
+
</optional>
|
957
993
|
<optional>
|
958
994
|
<element name="refterm">
|
959
995
|
<zeroOrMore>
|
@@ -989,8 +1025,14 @@
|
|
989
1025
|
<ref name="imagemap"/>
|
990
1026
|
<ref name="svgmap"/>
|
991
1027
|
<ref name="inputform"/>
|
1028
|
+
<ref name="toc"/>
|
992
1029
|
</choice>
|
993
1030
|
</define>
|
1031
|
+
<define name="toc">
|
1032
|
+
<element name="toc">
|
1033
|
+
<ref name="ul"/>
|
1034
|
+
</element>
|
1035
|
+
</define>
|
994
1036
|
<define name="inputform">
|
995
1037
|
<element name="form">
|
996
1038
|
<attribute name="id">
|
@@ -998,6 +1040,9 @@
|
|
998
1040
|
</attribute>
|
999
1041
|
<attribute name="name"/>
|
1000
1042
|
<attribute name="action"/>
|
1043
|
+
<optional>
|
1044
|
+
<attribute name="class"/>
|
1045
|
+
</optional>
|
1001
1046
|
<zeroOrMore>
|
1002
1047
|
<choice>
|
1003
1048
|
<ref name="TextElement"/>
|
@@ -1229,6 +1274,12 @@
|
|
1229
1274
|
<optional>
|
1230
1275
|
<attribute name="type"/>
|
1231
1276
|
</optional>
|
1277
|
+
<optional>
|
1278
|
+
<attribute name="identifier"/>
|
1279
|
+
</optional>
|
1280
|
+
<optional>
|
1281
|
+
<attribute name="prefix"/>
|
1282
|
+
</optional>
|
1232
1283
|
<text/>
|
1233
1284
|
</define>
|
1234
1285
|
<define name="ics">
|
@@ -1490,26 +1541,26 @@
|
|
1490
1541
|
<optional>
|
1491
1542
|
<ref name="section-title"/>
|
1492
1543
|
</optional>
|
1493
|
-
<
|
1544
|
+
<choice>
|
1494
1545
|
<choice>
|
1495
1546
|
<group>
|
1496
|
-
<
|
1547
|
+
<oneOrMore>
|
1497
1548
|
<ref name="BasicBlock"/>
|
1498
|
-
</
|
1549
|
+
</oneOrMore>
|
1499
1550
|
<zeroOrMore>
|
1500
1551
|
<ref name="note"/>
|
1501
1552
|
</zeroOrMore>
|
1502
1553
|
</group>
|
1503
1554
|
<ref name="amend"/>
|
1504
1555
|
</choice>
|
1505
|
-
<
|
1556
|
+
<oneOrMore>
|
1506
1557
|
<choice>
|
1507
1558
|
<ref name="clause-subsection"/>
|
1508
1559
|
<ref name="terms"/>
|
1509
1560
|
<ref name="definitions"/>
|
1510
1561
|
</choice>
|
1511
|
-
</
|
1512
|
-
</
|
1562
|
+
</oneOrMore>
|
1563
|
+
</choice>
|
1513
1564
|
</define>
|
1514
1565
|
<define name="Annex-Section">
|
1515
1566
|
<optional>
|