metanorma-cc 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/macos.yml +39 -0
  3. data/.github/workflows/ubuntu.yml +53 -0
  4. data/.github/workflows/windows.yml +41 -0
  5. data/.gitignore +1 -0
  6. data/.hound.yml +3 -0
  7. data/.rubocop.yml +10 -0
  8. data/CODE_OF_CONDUCT.md +74 -0
  9. data/Gemfile +11 -0
  10. data/LICENSE +25 -0
  11. data/README.adoc +61 -0
  12. data/Rakefile +6 -0
  13. data/bin/console +14 -0
  14. data/bin/rspec +18 -0
  15. data/bin/setup +8 -0
  16. data/docs/navigation.adoc +8 -0
  17. data/docs/quickstart.adoc +368 -0
  18. data/lib/asciidoctor/cc.rb +5 -0
  19. data/lib/asciidoctor/cc/basicdoc.rng +1059 -0
  20. data/lib/asciidoctor/cc/biblio.rng +1237 -0
  21. data/lib/asciidoctor/cc/boilerplate.xml +46 -0
  22. data/lib/asciidoctor/cc/cc.rng +116 -0
  23. data/lib/asciidoctor/cc/converter.rb +69 -0
  24. data/lib/asciidoctor/cc/front.rb +93 -0
  25. data/lib/asciidoctor/cc/isodoc.rng +1504 -0
  26. data/lib/asciidoctor/cc/reqt.rng +194 -0
  27. data/lib/asciidoctor/cc/validate.rb +29 -0
  28. data/lib/asciidoctor/cc/validate_section.rb +138 -0
  29. data/lib/isodoc/cc/base_convert.rb +42 -0
  30. data/lib/isodoc/cc/csd.standard.xsl +3228 -0
  31. data/lib/isodoc/cc/html/_coverpage.scss +128 -0
  32. data/lib/isodoc/cc/html/cc.scss +763 -0
  33. data/lib/isodoc/cc/html/dots-w@2x.png +0 -0
  34. data/lib/isodoc/cc/html/dots@2x.png +0 -0
  35. data/lib/isodoc/cc/html/header.html +240 -0
  36. data/lib/isodoc/cc/html/html_cc_intro.html +8 -0
  37. data/lib/isodoc/cc/html/html_cc_titlepage.html +93 -0
  38. data/lib/isodoc/cc/html/htmlstyle.scss +409 -0
  39. data/lib/isodoc/cc/html/scripts.html +71 -0
  40. data/lib/isodoc/cc/html/word_cc_intro.html +19 -0
  41. data/lib/isodoc/cc/html/word_cc_titlepage.html +64 -0
  42. data/lib/isodoc/cc/html/wordstyle.scss +1157 -0
  43. data/lib/isodoc/cc/html_convert.rb +51 -0
  44. data/lib/isodoc/cc/metadata.rb +62 -0
  45. data/lib/isodoc/cc/pdf_convert.rb +21 -0
  46. data/lib/isodoc/cc/presentation_xml_convert.rb +10 -0
  47. data/lib/isodoc/cc/word_convert.rb +38 -0
  48. data/lib/metanorma-cc.rb +11 -0
  49. data/lib/metanorma/cc.rb +29 -0
  50. data/lib/metanorma/cc/processor.rb +53 -0
  51. data/lib/metanorma/cc/version.rb +5 -0
  52. data/metanorma-cc.gemspec +43 -0
  53. metadata +253 -0
@@ -0,0 +1,46 @@
1
+ <boilerplate>
2
+ <copyright-statement>
3
+ <clause>
4
+ <p>© {{ docyear }} The Calendaring and Scheduling Consortium, Inc. </p>
5
+ </clause>
6
+ </copyright-statement>
7
+
8
+ {% if unpublished %}
9
+ <license-statement>
10
+ <clause>
11
+ <title>Warning for Drafts</title>
12
+ <p>This document is not a CalConnect Standard. It is distributed for review and
13
+ comment, and is subject to change without notice and may not be referred to as
14
+ a Standard. Recipients of this draft are invited to submit, with their
15
+ comments, notification of any relevant patent rights of which they are aware
16
+ and to provide supporting documentation.
17
+ </p>
18
+ </clause>
19
+ </license-statement>
20
+ {% endif %}
21
+
22
+ <legal-statement>
23
+ <clause>
24
+ <p>All rights reserved. Unless otherwise specified, no part of this
25
+ publication may be reproduced or utilized otherwise in any form or by any
26
+ means, electronic or mechanical, including photocopying, or posting on the
27
+ internet or an intranet, without prior written permission. Permission can
28
+ be requested from the address below. </p>
29
+ </clause>
30
+ </legal-statement>
31
+
32
+ <feedback-statement>
33
+ <clause>
34
+ <p id="boilerplate-name">The Calendaring and Scheduling Consortium, Inc.</p>
35
+ <p id="boilerplate-address">4390 Chaffin Lane<br />
36
+ McKinleyville<br />
37
+ California 95519<br />
38
+ United States of America<br />
39
+ <br />
40
+ <link target="mailto:copyright@calconnect.org">copyright@calconnect.org</link><br />
41
+ <link target="www.calconnect.org">www.calconnect.org</link>
42
+ </p>
43
+ </clause>
44
+ </feedback-statement>
45
+ </boilerplate>
46
+
@@ -0,0 +1,116 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <grammar ns="https://www.metanorma.org/ns/csd" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3
+ <!--
4
+ default namespace = "http://riboseinc.com/csd"
5
+ Currently we inherit from a namespaced grammar, isostandard. Until we inherit from isodoc,
6
+ we cannot have a new default namespace: we will end up with a grammar with two different
7
+ namespaces, one for isostandard and one for csd additions. And we do not want that.
8
+ -->
9
+ <include href="isodoc.rng">
10
+ <start>
11
+ <ref name="csd-standard"/>
12
+ </start>
13
+ <define name="figure">
14
+ <element name="figure">
15
+ <attribute name="id">
16
+ <data type="ID"/>
17
+ </attribute>
18
+ <optional>
19
+ <attribute name="unnumbered">
20
+ <data type="boolean"/>
21
+ </attribute>
22
+ </optional>
23
+ <optional>
24
+ <attribute name="number"/>
25
+ </optional>
26
+ <optional>
27
+ <attribute name="subsequence"/>
28
+ </optional>
29
+ <optional>
30
+ <attribute name="class"/>
31
+ </optional>
32
+ <optional>
33
+ <ref name="source"/>
34
+ </optional>
35
+ <optional>
36
+ <ref name="tname"/>
37
+ </optional>
38
+ <choice>
39
+ <oneOrMore>
40
+ <ref name="figure"/>
41
+ </oneOrMore>
42
+ <group>
43
+ <choice>
44
+ <zeroOrMore>
45
+ <ref name="TextElement"/>
46
+ </zeroOrMore>
47
+ <ref name="pre"/>
48
+ </choice>
49
+ <zeroOrMore>
50
+ <ref name="note"/>
51
+ </zeroOrMore>
52
+ <optional>
53
+ <ref name="dl"/>
54
+ </optional>
55
+ </group>
56
+ </choice>
57
+ </element>
58
+ </define>
59
+ <define name="DocumentType">
60
+ <choice>
61
+ <value>directive</value>
62
+ <value>guide</value>
63
+ <value>specification</value>
64
+ <value>standard</value>
65
+ <value>report</value>
66
+ <value>administrative</value>
67
+ <value>amendment</value>
68
+ <value>technical corrigendum</value>
69
+ <value>advisory</value>
70
+ </choice>
71
+ </define>
72
+ <define name="BibDataExtensionType">
73
+ <optional>
74
+ <ref name="doctype"/>
75
+ </optional>
76
+ <ref name="editorialgroup"/>
77
+ <zeroOrMore>
78
+ <ref name="ics"/>
79
+ </zeroOrMore>
80
+ </define>
81
+ <define name="editorialgroup">
82
+ <element name="editorialgroup">
83
+ <oneOrMore>
84
+ <ref name="technical-committee"/>
85
+ </oneOrMore>
86
+ </element>
87
+ </define>
88
+ <define name="technical-committee">
89
+ <element name="technical-committee">
90
+ <optional>
91
+ <attribute name="type"/>
92
+ </optional>
93
+ <text/>
94
+ </element>
95
+ </define>
96
+ </include>
97
+ <define name="csd-standard">
98
+ <element name="csd-standard">
99
+ <ref name="bibdata"/>
100
+ <zeroOrMore>
101
+ <ref name="termdocsource"/>
102
+ </zeroOrMore>
103
+ <optional>
104
+ <ref name="boilerplate"/>
105
+ </optional>
106
+ <ref name="preface"/>
107
+ <oneOrMore>
108
+ <ref name="sections"/>
109
+ </oneOrMore>
110
+ <zeroOrMore>
111
+ <ref name="annex"/>
112
+ </zeroOrMore>
113
+ <ref name="bibliography"/>
114
+ </element>
115
+ </define>
116
+ </grammar>
@@ -0,0 +1,69 @@
1
+ require "asciidoctor"
2
+ require "isodoc/cc/html_convert"
3
+ require "isodoc/cc/word_convert"
4
+ require "isodoc/cc/presentation_xml_convert"
5
+ require "metanorma/cc"
6
+ require "asciidoctor/standoc/converter"
7
+ require "fileutils"
8
+ require_relative "validate"
9
+ require_relative "validate_section"
10
+ require_relative "front"
11
+
12
+ module Asciidoctor
13
+ module CC
14
+
15
+ # A {Converter} implementation that generates CC output, and a document
16
+ # schema encapsulation of the document for validation
17
+ class Converter < Standoc::Converter
18
+ XML_ROOT_TAG = "csd-standard".freeze
19
+ XML_NAMESPACE = "https://www.metanorma.org/ns/csd".freeze
20
+
21
+ register_for "cc"
22
+
23
+ def initialize(backend, opts)
24
+ super
25
+ end
26
+
27
+ def outputs(node, ret)
28
+ File.open(@filename + ".xml", "w:UTF-8") { |f| f.write(ret) }
29
+ presentation_xml_converter(node).convert(@filename + ".xml")
30
+ html_converter(node).convert(@filename + ".presentation.xml", nil, false, "#{@filename}.html")
31
+ doc_converter(node).convert(@filename + ".presentation.xml", nil, false, "#{@filename}.doc")
32
+ pdf_converter(node)&.convert(@filename + ".presentation.xml", nil, false, "#{@filename}.pdf")
33
+ end
34
+
35
+ def validate(doc)
36
+ content_validate(doc)
37
+ schema_validate(formattedstr_strip(doc.dup),
38
+ File.join(File.dirname(__FILE__), "cc.rng"))
39
+ end
40
+
41
+ def sections_cleanup(x)
42
+ super
43
+ x.xpath("//*[@inline-header]").each do |h|
44
+ h.delete("inline-header")
45
+ end
46
+ end
47
+
48
+ def style(n, t)
49
+ return
50
+ end
51
+
52
+ def html_converter(node)
53
+ IsoDoc::CC::HtmlConvert.new(html_extract_attributes(node))
54
+ end
55
+
56
+ def pdf_converter(node)
57
+ IsoDoc::CC::PdfConvert.new(html_extract_attributes(node))
58
+ end
59
+
60
+ def doc_converter(node)
61
+ IsoDoc::CC::WordConvert.new(doc_extract_attributes(node))
62
+ end
63
+
64
+ def presentation_xml_converter(node)
65
+ IsoDoc::CC::PresentationXMLConvert.new(doc_extract_attributes(node))
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,93 @@
1
+ require "asciidoctor"
2
+ require "asciidoctor/standoc/converter"
3
+ require "fileutils"
4
+
5
+ module Asciidoctor
6
+ module CC
7
+
8
+ class Converter < Standoc::Converter
9
+
10
+ def metadata_author(node, xml)
11
+ xml.contributor do |c|
12
+ c.role **{ type: "author" }
13
+ c.organization do |a|
14
+ a.name "CalConnect"
15
+ end
16
+ end
17
+ personal_author(node, xml)
18
+ end
19
+
20
+ def metadata_publisher(node, xml)
21
+ xml.contributor do |c|
22
+ c.role **{ type: "publisher" }
23
+ c.organization do |a|
24
+ a.name "CalConnect"
25
+ end
26
+ end
27
+ end
28
+
29
+ def metadata_committee(node, xml)
30
+ return unless node.attr("technical-committee")
31
+ xml.editorialgroup do |a|
32
+ a.technical_committee node.attr("technical-committee"),
33
+ **attr_code(type: node.attr("technical-committee-type"))
34
+ i = 2
35
+ while node.attr("technical-committee_#{i}") do
36
+ a.technical_committee node.attr("technical-committee_#{i}"),
37
+ **attr_code(type: node.attr("technical-committee-type_#{i}"))
38
+ i += 1
39
+ end
40
+ end
41
+ end
42
+
43
+ def metadata_status(node, xml)
44
+ status = node.attr("status")
45
+ unless status && ::Metanorma::CC::DOCSTATUS.keys.include?(status)
46
+ @log.add("Document Attributes", nil, "#{status} is not a legal status")
47
+ end
48
+ super
49
+ end
50
+
51
+ def prefix_id(node)
52
+ prefix = "CC"
53
+ typesuffix = ::Metanorma::CC::DOCSUFFIX[node.attr("doctype")] || ""
54
+ prefix += "/#{typesuffix}" unless typesuffix.empty?
55
+ status = ::Metanorma::CC::DOCSTATUS[node.attr("status")] || ""
56
+ prefix += "/#{status}" unless status.empty?
57
+ prefix
58
+ end
59
+
60
+ def metadata_id(node, xml)
61
+ id = node.attr("docnumber") || "???"
62
+ prefix = prefix_id(node)
63
+ id = "#{prefix} #{id}"
64
+ year = node.attr("copyright-year")
65
+ id += ":#{year}" if year
66
+ xml.docidentifier id, **{type: "CalConnect"}
67
+ xml.docnumber node.attr("docnumber")
68
+ end
69
+
70
+ def doctype(node)
71
+ d = node.attr("doctype")
72
+ unless ::Metanorma::CC::DOCSUFFIX.keys.include?(d)
73
+ @log.add("Document Attributes", nil,
74
+ "#{d} is not a legal document type: reverting to 'standard'")
75
+ d = "standard"
76
+ end
77
+ d
78
+ end
79
+
80
+ def metadata_copyright(node, xml)
81
+ from = node.attr("copyright-year") || Date.today.year
82
+ xml.copyright do |c|
83
+ c.from from
84
+ c.owner do |owner|
85
+ owner.organization do |o|
86
+ o.name "CalConnect"
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,1504 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ instantiations of this grammar may replace leaf strings
4
+ with more elaborated types; e.g. title (text) replaced with
5
+ title-main, title-intro, title-part; type replaced with
6
+ enum.
7
+
8
+ some renaming at leaf nodes is permissible
9
+
10
+ obligations can change both from optional to mandatory,
11
+ and from mandatory to optional; optional elements may
12
+ be omitted; freely positioned alternatives may be replaced
13
+ with strict ordering
14
+
15
+ DO NOT introduce a namespace here. We do not want a distinct namespace
16
+ for these elements, and a distinct namespace for any grammar inheriting
17
+ these elements; we just want one namespace for any child grammars
18
+ of this.
19
+ -->
20
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
21
+ <include href="reqt.rng"/>
22
+ <!-- include "biblio.rnc" { } -->
23
+ <include href="basicdoc.rng">
24
+ <start>
25
+ <ref name="standard-document"/>
26
+ </start>
27
+ <define name="hyperlink">
28
+ <element name="link">
29
+ <attribute name="target">
30
+ <data type="anyURI"/>
31
+ </attribute>
32
+ <optional>
33
+ <attribute name="type">
34
+ <ref name="ReferenceFormat"/>
35
+ </attribute>
36
+ </optional>
37
+ <optional>
38
+ <attribute name="alt"/>
39
+ </optional>
40
+ <text/>
41
+ </element>
42
+ </define>
43
+ <define name="xref">
44
+ <element name="xref">
45
+ <attribute name="target">
46
+ <data type="IDREF"/>
47
+ </attribute>
48
+ <optional>
49
+ <attribute name="type">
50
+ <ref name="ReferenceFormat"/>
51
+ </attribute>
52
+ </optional>
53
+ <optional>
54
+ <attribute name="alt"/>
55
+ </optional>
56
+ <optional>
57
+ <attribute name="case">
58
+ <choice>
59
+ <value>capital</value>
60
+ <value>lowercase</value>
61
+ </choice>
62
+ </attribute>
63
+ </optional>
64
+ <text/>
65
+ </element>
66
+ </define>
67
+ <define name="ul">
68
+ <element name="ul">
69
+ <attribute name="id">
70
+ <data type="ID"/>
71
+ </attribute>
72
+ <optional>
73
+ <attribute name="keep-with-next">
74
+ <data type="boolean"/>
75
+ </attribute>
76
+ </optional>
77
+ <optional>
78
+ <attribute name="keep-lines-together">
79
+ <data type="boolean"/>
80
+ </attribute>
81
+ </optional>
82
+ <oneOrMore>
83
+ <ref name="li"/>
84
+ </oneOrMore>
85
+ <zeroOrMore>
86
+ <ref name="note"/>
87
+ </zeroOrMore>
88
+ </element>
89
+ </define>
90
+ <define name="ol">
91
+ <element name="ol">
92
+ <attribute name="id">
93
+ <data type="ID"/>
94
+ </attribute>
95
+ <optional>
96
+ <attribute name="keep-with-next">
97
+ <data type="boolean"/>
98
+ </attribute>
99
+ </optional>
100
+ <optional>
101
+ <attribute name="keep-lines-together">
102
+ <data type="boolean"/>
103
+ </attribute>
104
+ </optional>
105
+ <attribute name="type">
106
+ <choice>
107
+ <value>roman</value>
108
+ <value>alphabet</value>
109
+ <value>arabic</value>
110
+ <value>roman_upper</value>
111
+ <value>alphabet_upper</value>
112
+ </choice>
113
+ </attribute>
114
+ <oneOrMore>
115
+ <ref name="li"/>
116
+ </oneOrMore>
117
+ <zeroOrMore>
118
+ <ref name="note"/>
119
+ </zeroOrMore>
120
+ </element>
121
+ </define>
122
+ <define name="dl">
123
+ <element name="dl">
124
+ <attribute name="id">
125
+ <data type="ID"/>
126
+ </attribute>
127
+ <optional>
128
+ <attribute name="keep-with-next">
129
+ <data type="boolean"/>
130
+ </attribute>
131
+ </optional>
132
+ <optional>
133
+ <attribute name="keep-lines-together">
134
+ <data type="boolean"/>
135
+ </attribute>
136
+ </optional>
137
+ <oneOrMore>
138
+ <ref name="dt"/>
139
+ <ref name="dd"/>
140
+ </oneOrMore>
141
+ <zeroOrMore>
142
+ <ref name="note"/>
143
+ </zeroOrMore>
144
+ </element>
145
+ </define>
146
+ <define name="example">
147
+ <element name="example">
148
+ <attribute name="id">
149
+ <data type="ID"/>
150
+ </attribute>
151
+ <optional>
152
+ <attribute name="unnumbered">
153
+ <data type="boolean"/>
154
+ </attribute>
155
+ </optional>
156
+ <optional>
157
+ <attribute name="subsequence"/>
158
+ </optional>
159
+ <optional>
160
+ <attribute name="number"/>
161
+ </optional>
162
+ <optional>
163
+ <attribute name="keep-with-next">
164
+ <data type="boolean"/>
165
+ </attribute>
166
+ </optional>
167
+ <optional>
168
+ <attribute name="keep-lines-together">
169
+ <data type="boolean"/>
170
+ </attribute>
171
+ </optional>
172
+ <optional>
173
+ <ref name="tname"/>
174
+ </optional>
175
+ <oneOrMore>
176
+ <choice>
177
+ <ref name="formula"/>
178
+ <ref name="ul"/>
179
+ <ref name="ol"/>
180
+ <ref name="dl"/>
181
+ <ref name="quote"/>
182
+ <ref name="sourcecode"/>
183
+ <ref name="paragraph-with-footnote"/>
184
+ <ref name="figure"/>
185
+ </choice>
186
+ </oneOrMore>
187
+ <zeroOrMore>
188
+ <ref name="note"/>
189
+ </zeroOrMore>
190
+ </element>
191
+ </define>
192
+ <define name="table">
193
+ <element name="table">
194
+ <attribute name="id">
195
+ <data type="ID"/>
196
+ </attribute>
197
+ <optional>
198
+ <attribute name="unnumbered">
199
+ <data type="boolean"/>
200
+ </attribute>
201
+ </optional>
202
+ <optional>
203
+ <attribute name="number"/>
204
+ </optional>
205
+ <optional>
206
+ <attribute name="subsequence"/>
207
+ </optional>
208
+ <optional>
209
+ <attribute name="alt"/>
210
+ </optional>
211
+ <optional>
212
+ <attribute name="summary"/>
213
+ </optional>
214
+ <optional>
215
+ <attribute name="uri">
216
+ <data type="anyURI"/>
217
+ </attribute>
218
+ </optional>
219
+ <optional>
220
+ <attribute name="keep-with-next">
221
+ <data type="boolean"/>
222
+ </attribute>
223
+ </optional>
224
+ <optional>
225
+ <attribute name="keep-lines-together">
226
+ <data type="boolean"/>
227
+ </attribute>
228
+ </optional>
229
+ <optional>
230
+ <ref name="tname"/>
231
+ </optional>
232
+ <optional>
233
+ <ref name="thead"/>
234
+ </optional>
235
+ <ref name="tbody"/>
236
+ <optional>
237
+ <ref name="tfoot"/>
238
+ </optional>
239
+ <zeroOrMore>
240
+ <ref name="table-note"/>
241
+ </zeroOrMore>
242
+ <optional>
243
+ <ref name="dl"/>
244
+ </optional>
245
+ </element>
246
+ </define>
247
+ <define name="figure">
248
+ <element name="figure">
249
+ <attribute name="id">
250
+ <data type="ID"/>
251
+ </attribute>
252
+ <optional>
253
+ <attribute name="unnumbered">
254
+ <data type="boolean"/>
255
+ </attribute>
256
+ </optional>
257
+ <optional>
258
+ <attribute name="number"/>
259
+ </optional>
260
+ <optional>
261
+ <attribute name="subsequence"/>
262
+ </optional>
263
+ <optional>
264
+ <attribute name="keep-with-next">
265
+ <data type="boolean"/>
266
+ </attribute>
267
+ </optional>
268
+ <optional>
269
+ <attribute name="keep-lines-together">
270
+ <data type="boolean"/>
271
+ </attribute>
272
+ </optional>
273
+ <optional>
274
+ <attribute name="class"/>
275
+ </optional>
276
+ <optional>
277
+ <ref name="source"/>
278
+ </optional>
279
+ <optional>
280
+ <ref name="tname"/>
281
+ </optional>
282
+ <choice>
283
+ <ref name="image"/>
284
+ <ref name="video"/>
285
+ <ref name="audio"/>
286
+ <ref name="pre"/>
287
+ <oneOrMore>
288
+ <ref name="paragraph-with-footnote"/>
289
+ </oneOrMore>
290
+ <zeroOrMore>
291
+ <ref name="figure"/>
292
+ </zeroOrMore>
293
+ </choice>
294
+ <zeroOrMore>
295
+ <ref name="fn"/>
296
+ </zeroOrMore>
297
+ <optional>
298
+ <ref name="dl"/>
299
+ </optional>
300
+ <zeroOrMore>
301
+ <ref name="note"/>
302
+ </zeroOrMore>
303
+ </element>
304
+ </define>
305
+ <define name="sourcecode">
306
+ <element name="sourcecode">
307
+ <attribute name="id">
308
+ <data type="ID"/>
309
+ </attribute>
310
+ <optional>
311
+ <attribute name="unnumbered">
312
+ <data type="boolean"/>
313
+ </attribute>
314
+ </optional>
315
+ <optional>
316
+ <attribute name="number"/>
317
+ </optional>
318
+ <optional>
319
+ <attribute name="subsequence"/>
320
+ </optional>
321
+ <optional>
322
+ <attribute name="keep-with-next">
323
+ <data type="boolean"/>
324
+ </attribute>
325
+ </optional>
326
+ <optional>
327
+ <attribute name="keep-lines-together">
328
+ <data type="boolean"/>
329
+ </attribute>
330
+ </optional>
331
+ <optional>
332
+ <attribute name="lang"/>
333
+ </optional>
334
+ <optional>
335
+ <ref name="tname"/>
336
+ </optional>
337
+ <oneOrMore>
338
+ <choice>
339
+ <text/>
340
+ <ref name="callout"/>
341
+ </choice>
342
+ </oneOrMore>
343
+ <zeroOrMore>
344
+ <ref name="annotation"/>
345
+ </zeroOrMore>
346
+ <zeroOrMore>
347
+ <ref name="note"/>
348
+ </zeroOrMore>
349
+ </element>
350
+ </define>
351
+ <define name="formula">
352
+ <element name="formula">
353
+ <attribute name="id">
354
+ <data type="ID"/>
355
+ </attribute>
356
+ <optional>
357
+ <attribute name="unnumbered">
358
+ <data type="boolean"/>
359
+ </attribute>
360
+ </optional>
361
+ <optional>
362
+ <attribute name="number"/>
363
+ </optional>
364
+ <optional>
365
+ <attribute name="subsequence"/>
366
+ </optional>
367
+ <optional>
368
+ <attribute name="keep-with-next">
369
+ <data type="boolean"/>
370
+ </attribute>
371
+ </optional>
372
+ <optional>
373
+ <attribute name="keep-lines-together">
374
+ <data type="boolean"/>
375
+ </attribute>
376
+ </optional>
377
+ <optional>
378
+ <attribute name="inequality">
379
+ <data type="boolean"/>
380
+ </attribute>
381
+ </optional>
382
+ <ref name="stem"/>
383
+ <optional>
384
+ <ref name="dl"/>
385
+ </optional>
386
+ <zeroOrMore>
387
+ <ref name="note"/>
388
+ </zeroOrMore>
389
+ </element>
390
+ </define>
391
+ <define name="ParagraphType">
392
+ <attribute name="id">
393
+ <data type="ID"/>
394
+ </attribute>
395
+ <optional>
396
+ <attribute name="align">
397
+ <ref name="Alignments"/>
398
+ </attribute>
399
+ </optional>
400
+ <optional>
401
+ <attribute name="keep-with-next">
402
+ <data type="boolean"/>
403
+ </attribute>
404
+ </optional>
405
+ <optional>
406
+ <attribute name="keep-lines-together">
407
+ <data type="boolean"/>
408
+ </attribute>
409
+ </optional>
410
+ <zeroOrMore>
411
+ <ref name="TextElement"/>
412
+ </zeroOrMore>
413
+ <zeroOrMore>
414
+ <ref name="note"/>
415
+ </zeroOrMore>
416
+ </define>
417
+ <define name="paragraph-with-footnote">
418
+ <element name="p">
419
+ <attribute name="id">
420
+ <data type="ID"/>
421
+ </attribute>
422
+ <optional>
423
+ <attribute name="align">
424
+ <ref name="Alignments"/>
425
+ </attribute>
426
+ </optional>
427
+ <optional>
428
+ <attribute name="keep-with-next">
429
+ <data type="boolean"/>
430
+ </attribute>
431
+ </optional>
432
+ <optional>
433
+ <attribute name="keep-lines-together">
434
+ <data type="boolean"/>
435
+ </attribute>
436
+ </optional>
437
+ <zeroOrMore>
438
+ <choice>
439
+ <ref name="TextElement"/>
440
+ <ref name="fn"/>
441
+ </choice>
442
+ </zeroOrMore>
443
+ <zeroOrMore>
444
+ <ref name="note"/>
445
+ </zeroOrMore>
446
+ </element>
447
+ </define>
448
+ <define name="quote">
449
+ <element name="quote">
450
+ <attribute name="id">
451
+ <data type="ID"/>
452
+ </attribute>
453
+ <optional>
454
+ <attribute name="alignment">
455
+ <ref name="Alignments"/>
456
+ </attribute>
457
+ </optional>
458
+ <optional>
459
+ <attribute name="keep-with-next">
460
+ <data type="boolean"/>
461
+ </attribute>
462
+ </optional>
463
+ <optional>
464
+ <attribute name="keep-lines-together">
465
+ <data type="boolean"/>
466
+ </attribute>
467
+ </optional>
468
+ <optional>
469
+ <ref name="quote-source"/>
470
+ </optional>
471
+ <optional>
472
+ <ref name="quote-author"/>
473
+ </optional>
474
+ <oneOrMore>
475
+ <ref name="paragraph-with-footnote"/>
476
+ </oneOrMore>
477
+ <zeroOrMore>
478
+ <ref name="note"/>
479
+ </zeroOrMore>
480
+ </element>
481
+ </define>
482
+ <define name="BibDataExtensionType">
483
+ <ref name="doctype"/>
484
+ <optional>
485
+ <ref name="editorialgroup"/>
486
+ </optional>
487
+ <zeroOrMore>
488
+ <ref name="ics"/>
489
+ </zeroOrMore>
490
+ <zeroOrMore>
491
+ <ref name="structuredidentifier"/>
492
+ </zeroOrMore>
493
+ </define>
494
+ <!-- TitleType = text -->
495
+ <define name="sections">
496
+ <element name="sections">
497
+ <oneOrMore>
498
+ <choice>
499
+ <ref name="clause"/>
500
+ <ref name="terms"/>
501
+ <ref name="term-clause"/>
502
+ <ref name="definitions"/>
503
+ </choice>
504
+ </oneOrMore>
505
+ </element>
506
+ </define>
507
+ <define name="references">
508
+ <element name="references">
509
+ <optional>
510
+ <attribute name="id">
511
+ <data type="ID"/>
512
+ </attribute>
513
+ </optional>
514
+ <optional>
515
+ <attribute name="obligation">
516
+ <choice>
517
+ <value>normative</value>
518
+ <value>informative</value>
519
+ </choice>
520
+ </attribute>
521
+ </optional>
522
+ <attribute name="normative">
523
+ <data type="boolean"/>
524
+ </attribute>
525
+ <optional>
526
+ <ref name="section-title"/>
527
+ </optional>
528
+ <zeroOrMore>
529
+ <ref name="BasicBlock"/>
530
+ </zeroOrMore>
531
+ <zeroOrMore>
532
+ <ref name="note"/>
533
+ </zeroOrMore>
534
+ <zeroOrMore>
535
+ <ref name="bibitem"/>
536
+ <zeroOrMore>
537
+ <ref name="note"/>
538
+ </zeroOrMore>
539
+ </zeroOrMore>
540
+ <zeroOrMore>
541
+ <ref name="references"/>
542
+ </zeroOrMore>
543
+ </element>
544
+ </define>
545
+ <define name="note">
546
+ <element name="note">
547
+ <attribute name="id">
548
+ <data type="ID"/>
549
+ </attribute>
550
+ <optional>
551
+ <attribute name="unnumbered">
552
+ <data type="boolean"/>
553
+ </attribute>
554
+ </optional>
555
+ <optional>
556
+ <attribute name="number"/>
557
+ </optional>
558
+ <optional>
559
+ <attribute name="subsequence"/>
560
+ </optional>
561
+ <optional>
562
+ <attribute name="keep-with-next">
563
+ <data type="boolean"/>
564
+ </attribute>
565
+ </optional>
566
+ <optional>
567
+ <attribute name="keep-lines-together">
568
+ <data type="boolean"/>
569
+ </attribute>
570
+ </optional>
571
+ <optional>
572
+ <attribute name="type"/>
573
+ </optional>
574
+ <oneOrMore>
575
+ <choice>
576
+ <ref name="paragraph"/>
577
+ <ref name="ul"/>
578
+ <ref name="ol"/>
579
+ <ref name="dl"/>
580
+ <ref name="formula"/>
581
+ </choice>
582
+ </oneOrMore>
583
+ </element>
584
+ </define>
585
+ <define name="Basic-Section">
586
+ <optional>
587
+ <attribute name="id">
588
+ <data type="ID"/>
589
+ </attribute>
590
+ </optional>
591
+ <optional>
592
+ <attribute name="language"/>
593
+ </optional>
594
+ <optional>
595
+ <attribute name="script"/>
596
+ </optional>
597
+ <optional>
598
+ <attribute name="obligation">
599
+ <choice>
600
+ <value>normative</value>
601
+ <value>informative</value>
602
+ </choice>
603
+ </attribute>
604
+ </optional>
605
+ <optional>
606
+ <ref name="section-title"/>
607
+ </optional>
608
+ <group>
609
+ <oneOrMore>
610
+ <ref name="BasicBlock"/>
611
+ </oneOrMore>
612
+ <zeroOrMore>
613
+ <ref name="note"/>
614
+ </zeroOrMore>
615
+ </group>
616
+ </define>
617
+ <define name="li">
618
+ <element name="li">
619
+ <group>
620
+ <optional>
621
+ <attribute name="id">
622
+ <data type="ID"/>
623
+ </attribute>
624
+ </optional>
625
+ <oneOrMore>
626
+ <ref name="BasicBlock"/>
627
+ </oneOrMore>
628
+ </group>
629
+ <!-- exclude figures? -->
630
+ </element>
631
+ </define>
632
+ <define name="dd">
633
+ <element name="dd">
634
+ <zeroOrMore>
635
+ <!-- exclude figures? -->
636
+ <ref name="BasicBlock"/>
637
+ </zeroOrMore>
638
+ </element>
639
+ </define>
640
+ <define name="thead">
641
+ <element name="thead">
642
+ <oneOrMore>
643
+ <ref name="tr"/>
644
+ </oneOrMore>
645
+ </element>
646
+ </define>
647
+ <define name="td">
648
+ <element name="td">
649
+ <optional>
650
+ <attribute name="colspan"/>
651
+ </optional>
652
+ <optional>
653
+ <attribute name="rowspan"/>
654
+ </optional>
655
+ <optional>
656
+ <attribute name="align">
657
+ <choice>
658
+ <value>left</value>
659
+ <value>right</value>
660
+ <value>center</value>
661
+ </choice>
662
+ </attribute>
663
+ </optional>
664
+ <choice>
665
+ <zeroOrMore>
666
+ <choice>
667
+ <ref name="TextElement"/>
668
+ <ref name="fn"/>
669
+ </choice>
670
+ </zeroOrMore>
671
+ <oneOrMore>
672
+ <choice>
673
+ <ref name="paragraph-with-footnote"/>
674
+ <ref name="dl"/>
675
+ <ref name="ul"/>
676
+ <ref name="ol"/>
677
+ <ref name="figure"/>
678
+ </choice>
679
+ </oneOrMore>
680
+ </choice>
681
+ </element>
682
+ </define>
683
+ <define name="th">
684
+ <element name="th">
685
+ <optional>
686
+ <attribute name="colspan"/>
687
+ </optional>
688
+ <optional>
689
+ <attribute name="rowspan"/>
690
+ </optional>
691
+ <optional>
692
+ <attribute name="align">
693
+ <choice>
694
+ <value>left</value>
695
+ <value>right</value>
696
+ <value>center</value>
697
+ </choice>
698
+ </attribute>
699
+ </optional>
700
+ <choice>
701
+ <zeroOrMore>
702
+ <choice>
703
+ <ref name="TextElement"/>
704
+ <ref name="fn"/>
705
+ </choice>
706
+ </zeroOrMore>
707
+ <oneOrMore>
708
+ <ref name="paragraph-with-footnote"/>
709
+ </oneOrMore>
710
+ </choice>
711
+ </element>
712
+ </define>
713
+ <define name="table-note">
714
+ <element name="note">
715
+ <optional>
716
+ <attribute name="id">
717
+ <data type="ID"/>
718
+ </attribute>
719
+ </optional>
720
+ <ref name="paragraph"/>
721
+ </element>
722
+ </define>
723
+ </include>
724
+ <!-- end overrides -->
725
+ <define name="TextElement" combine="choice">
726
+ <ref name="concept"/>
727
+ </define>
728
+ <define name="concept">
729
+ <element name="concept">
730
+ <optional>
731
+ <attribute name="term"/>
732
+ </optional>
733
+ <choice>
734
+ <ref name="eref"/>
735
+ <ref name="xref"/>
736
+ <ref name="termref"/>
737
+ </choice>
738
+ </element>
739
+ </define>
740
+ <define name="BasicBlock" combine="choice">
741
+ <choice>
742
+ <ref name="requirement"/>
743
+ <ref name="recommendation"/>
744
+ <ref name="permission"/>
745
+ </choice>
746
+ </define>
747
+ <define name="bibliography">
748
+ <element name="bibliography">
749
+ <oneOrMore>
750
+ <choice>
751
+ <ref name="references"/>
752
+ <ref name="reference-clause"/>
753
+ </choice>
754
+ </oneOrMore>
755
+ </element>
756
+ </define>
757
+ <define name="reference-clause">
758
+ <element name="clause">
759
+ <optional>
760
+ <attribute name="id">
761
+ <data type="ID"/>
762
+ </attribute>
763
+ </optional>
764
+ <optional>
765
+ <attribute name="language"/>
766
+ </optional>
767
+ <optional>
768
+ <attribute name="script"/>
769
+ </optional>
770
+ <optional>
771
+ <attribute name="inline-header">
772
+ <data type="boolean"/>
773
+ </attribute>
774
+ </optional>
775
+ <optional>
776
+ <attribute name="obligation">
777
+ <choice>
778
+ <value>normative</value>
779
+ <value>informative</value>
780
+ </choice>
781
+ </attribute>
782
+ </optional>
783
+ <optional>
784
+ <ref name="section-title"/>
785
+ </optional>
786
+ <zeroOrMore>
787
+ <ref name="BasicBlock"/>
788
+ </zeroOrMore>
789
+ <zeroOrMore>
790
+ <ref name="note"/>
791
+ </zeroOrMore>
792
+ <choice>
793
+ <oneOrMore>
794
+ <ref name="reference-clause"/>
795
+ </oneOrMore>
796
+ <zeroOrMore>
797
+ <ref name="references"/>
798
+ </zeroOrMore>
799
+ </choice>
800
+ </element>
801
+ </define>
802
+ <define name="editorialgroup">
803
+ <element name="editorialgroup">
804
+ <oneOrMore>
805
+ <ref name="technical-committee"/>
806
+ </oneOrMore>
807
+ </element>
808
+ </define>
809
+ <define name="technical-committee">
810
+ <element name="technical-committee">
811
+ <ref name="IsoWorkgroup"/>
812
+ </element>
813
+ </define>
814
+ <define name="IsoWorkgroup">
815
+ <optional>
816
+ <attribute name="number">
817
+ <data type="int"/>
818
+ </attribute>
819
+ </optional>
820
+ <optional>
821
+ <attribute name="type"/>
822
+ </optional>
823
+ <text/>
824
+ </define>
825
+ <define name="ics">
826
+ <element name="ics">
827
+ <element name="code">
828
+ <text/>
829
+ </element>
830
+ <element name="text">
831
+ <text/>
832
+ </element>
833
+ </element>
834
+ </define>
835
+ <define name="standard-document">
836
+ <element name="standard-document">
837
+ <ref name="bibdata"/>
838
+ <optional>
839
+ <ref name="boilerplate"/>
840
+ </optional>
841
+ <optional>
842
+ <ref name="preface"/>
843
+ </optional>
844
+ <ref name="sections"/>
845
+ <zeroOrMore>
846
+ <ref name="annex"/>
847
+ </zeroOrMore>
848
+ <zeroOrMore>
849
+ <ref name="references"/>
850
+ </zeroOrMore>
851
+ </element>
852
+ </define>
853
+ <define name="preface">
854
+ <element name="preface">
855
+ <oneOrMore>
856
+ <choice>
857
+ <ref name="content"/>
858
+ <ref name="preface_abstract"/>
859
+ <ref name="foreword"/>
860
+ <ref name="introduction"/>
861
+ <ref name="acknowledgements"/>
862
+ </choice>
863
+ </oneOrMore>
864
+ </element>
865
+ </define>
866
+ <define name="foreword">
867
+ <element name="foreword">
868
+ <ref name="Content-Section"/>
869
+ </element>
870
+ </define>
871
+ <define name="introduction">
872
+ <element name="introduction">
873
+ <ref name="Content-Section"/>
874
+ </element>
875
+ </define>
876
+ <define name="boilerplate">
877
+ <element name="boilerplate">
878
+ <optional>
879
+ <ref name="copyright-statement"/>
880
+ </optional>
881
+ <optional>
882
+ <ref name="license-statement"/>
883
+ </optional>
884
+ <optional>
885
+ <ref name="legal-statement"/>
886
+ </optional>
887
+ <optional>
888
+ <ref name="feedback-statement"/>
889
+ </optional>
890
+ </element>
891
+ </define>
892
+ <define name="copyright-statement">
893
+ <element name="copyright-statement">
894
+ <ref name="Content-Section"/>
895
+ </element>
896
+ </define>
897
+ <define name="license-statement">
898
+ <element name="license-statement">
899
+ <ref name="Content-Section"/>
900
+ </element>
901
+ </define>
902
+ <define name="legal-statement">
903
+ <element name="legal-statement">
904
+ <ref name="Content-Section"/>
905
+ </element>
906
+ </define>
907
+ <define name="feedback-statement">
908
+ <element name="feedback-statement">
909
+ <ref name="Content-Section"/>
910
+ </element>
911
+ </define>
912
+ <define name="definitions">
913
+ <element name="definitions">
914
+ <optional>
915
+ <attribute name="id">
916
+ <data type="ID"/>
917
+ </attribute>
918
+ </optional>
919
+ <optional>
920
+ <attribute name="language"/>
921
+ </optional>
922
+ <optional>
923
+ <attribute name="script"/>
924
+ </optional>
925
+ <optional>
926
+ <attribute name="obligation">
927
+ <choice>
928
+ <value>normative</value>
929
+ <value>informative</value>
930
+ </choice>
931
+ </attribute>
932
+ </optional>
933
+ <optional>
934
+ <ref name="section-title"/>
935
+ </optional>
936
+ <oneOrMore>
937
+ <zeroOrMore>
938
+ <ref name="BasicBlock"/>
939
+ </zeroOrMore>
940
+ <zeroOrMore>
941
+ <ref name="note"/>
942
+ </zeroOrMore>
943
+ <ref name="dl"/>
944
+ </oneOrMore>
945
+ </element>
946
+ </define>
947
+ <define name="content">
948
+ <element name="clause">
949
+ <ref name="Content-Section"/>
950
+ </element>
951
+ </define>
952
+ <define name="abstract">
953
+ <element name="abstract">
954
+ <ref name="Content-Section"/>
955
+ </element>
956
+ </define>
957
+ <define name="acknowledgements">
958
+ <element name="acknowledgements">
959
+ <ref name="Content-Section"/>
960
+ </element>
961
+ </define>
962
+ <define name="content-subsection">
963
+ <element name="clause">
964
+ <optional>
965
+ <attribute name="type"/>
966
+ </optional>
967
+ <ref name="Content-Section"/>
968
+ </element>
969
+ </define>
970
+ <define name="Content-Section">
971
+ <optional>
972
+ <attribute name="id">
973
+ <data type="ID"/>
974
+ </attribute>
975
+ </optional>
976
+ <optional>
977
+ <attribute name="language"/>
978
+ </optional>
979
+ <optional>
980
+ <attribute name="script"/>
981
+ </optional>
982
+ <optional>
983
+ <attribute name="inline-header">
984
+ <data type="boolean"/>
985
+ </attribute>
986
+ </optional>
987
+ <optional>
988
+ <attribute name="obligation">
989
+ <choice>
990
+ <value>normative</value>
991
+ <value>informative</value>
992
+ </choice>
993
+ </attribute>
994
+ </optional>
995
+ <optional>
996
+ <ref name="section-title"/>
997
+ </optional>
998
+ <group>
999
+ <group>
1000
+ <zeroOrMore>
1001
+ <ref name="BasicBlock"/>
1002
+ </zeroOrMore>
1003
+ <zeroOrMore>
1004
+ <ref name="note"/>
1005
+ </zeroOrMore>
1006
+ </group>
1007
+ <zeroOrMore>
1008
+ <ref name="content-subsection"/>
1009
+ </zeroOrMore>
1010
+ </group>
1011
+ </define>
1012
+ <define name="clause">
1013
+ <element name="clause">
1014
+ <optional>
1015
+ <attribute name="type"/>
1016
+ </optional>
1017
+ <ref name="Clause-Section"/>
1018
+ </element>
1019
+ </define>
1020
+ <define name="Clause-Section">
1021
+ <optional>
1022
+ <attribute name="id">
1023
+ <data type="ID"/>
1024
+ </attribute>
1025
+ </optional>
1026
+ <optional>
1027
+ <attribute name="language"/>
1028
+ </optional>
1029
+ <optional>
1030
+ <attribute name="script"/>
1031
+ </optional>
1032
+ <optional>
1033
+ <attribute name="inline-header">
1034
+ <data type="boolean"/>
1035
+ </attribute>
1036
+ </optional>
1037
+ <optional>
1038
+ <attribute name="obligation">
1039
+ <choice>
1040
+ <value>normative</value>
1041
+ <value>informative</value>
1042
+ </choice>
1043
+ </attribute>
1044
+ </optional>
1045
+ <optional>
1046
+ <ref name="section-title"/>
1047
+ </optional>
1048
+ <group>
1049
+ <group>
1050
+ <zeroOrMore>
1051
+ <ref name="BasicBlock"/>
1052
+ </zeroOrMore>
1053
+ <zeroOrMore>
1054
+ <ref name="note"/>
1055
+ </zeroOrMore>
1056
+ </group>
1057
+ <zeroOrMore>
1058
+ <choice>
1059
+ <ref name="clause-subsection"/>
1060
+ <ref name="terms"/>
1061
+ <ref name="definitions"/>
1062
+ </choice>
1063
+ </zeroOrMore>
1064
+ </group>
1065
+ </define>
1066
+ <define name="Annex-Section">
1067
+ <optional>
1068
+ <attribute name="id">
1069
+ <data type="ID"/>
1070
+ </attribute>
1071
+ </optional>
1072
+ <optional>
1073
+ <attribute name="language"/>
1074
+ </optional>
1075
+ <optional>
1076
+ <attribute name="script"/>
1077
+ </optional>
1078
+ <optional>
1079
+ <attribute name="inline-header">
1080
+ <data type="boolean"/>
1081
+ </attribute>
1082
+ </optional>
1083
+ <optional>
1084
+ <attribute name="obligation">
1085
+ <choice>
1086
+ <value>normative</value>
1087
+ <value>informative</value>
1088
+ </choice>
1089
+ </attribute>
1090
+ </optional>
1091
+ <optional>
1092
+ <ref name="section-title"/>
1093
+ </optional>
1094
+ <group>
1095
+ <group>
1096
+ <zeroOrMore>
1097
+ <ref name="BasicBlock"/>
1098
+ </zeroOrMore>
1099
+ <zeroOrMore>
1100
+ <ref name="note"/>
1101
+ </zeroOrMore>
1102
+ </group>
1103
+ <zeroOrMore>
1104
+ <choice>
1105
+ <ref name="annex-subsection"/>
1106
+ <ref name="terms"/>
1107
+ <ref name="definitions"/>
1108
+ <ref name="references"/>
1109
+ </choice>
1110
+ </zeroOrMore>
1111
+ </group>
1112
+ </define>
1113
+ <define name="clause-subsection">
1114
+ <element name="clause">
1115
+ <ref name="Clause-Section"/>
1116
+ </element>
1117
+ </define>
1118
+ <define name="annex-subsection">
1119
+ <element name="clause">
1120
+ <ref name="Annex-Section"/>
1121
+ </element>
1122
+ </define>
1123
+ <define name="annex">
1124
+ <element name="annex">
1125
+ <optional>
1126
+ <attribute name="id">
1127
+ <data type="ID"/>
1128
+ </attribute>
1129
+ </optional>
1130
+ <optional>
1131
+ <attribute name="language"/>
1132
+ </optional>
1133
+ <optional>
1134
+ <attribute name="script"/>
1135
+ </optional>
1136
+ <optional>
1137
+ <attribute name="inline-header">
1138
+ <data type="boolean"/>
1139
+ </attribute>
1140
+ </optional>
1141
+ <attribute name="obligation">
1142
+ <choice>
1143
+ <value>normative</value>
1144
+ <value>informative</value>
1145
+ </choice>
1146
+ </attribute>
1147
+ <optional>
1148
+ <ref name="section-title"/>
1149
+ </optional>
1150
+ <group>
1151
+ <group>
1152
+ <zeroOrMore>
1153
+ <ref name="BasicBlock"/>
1154
+ </zeroOrMore>
1155
+ <zeroOrMore>
1156
+ <ref name="note"/>
1157
+ </zeroOrMore>
1158
+ </group>
1159
+ <zeroOrMore>
1160
+ <choice>
1161
+ <ref name="annex-subsection"/>
1162
+ <ref name="terms"/>
1163
+ <ref name="definitions"/>
1164
+ <ref name="references"/>
1165
+ </choice>
1166
+ </zeroOrMore>
1167
+ </group>
1168
+ </element>
1169
+ </define>
1170
+ <define name="terms">
1171
+ <element name="terms">
1172
+ <optional>
1173
+ <attribute name="id">
1174
+ <data type="ID"/>
1175
+ </attribute>
1176
+ </optional>
1177
+ <optional>
1178
+ <attribute name="language"/>
1179
+ </optional>
1180
+ <optional>
1181
+ <attribute name="script"/>
1182
+ </optional>
1183
+ <optional>
1184
+ <attribute name="obligation">
1185
+ <choice>
1186
+ <value>normative</value>
1187
+ <value>informative</value>
1188
+ </choice>
1189
+ </attribute>
1190
+ </optional>
1191
+ <optional>
1192
+ <ref name="section-title"/>
1193
+ </optional>
1194
+ <zeroOrMore>
1195
+ <ref name="BasicBlock"/>
1196
+ </zeroOrMore>
1197
+ <zeroOrMore>
1198
+ <ref name="note"/>
1199
+ </zeroOrMore>
1200
+ <choice>
1201
+ <oneOrMore>
1202
+ <ref name="term"/>
1203
+ </oneOrMore>
1204
+ <group>
1205
+ <zeroOrMore>
1206
+ <ref name="terms"/>
1207
+ </zeroOrMore>
1208
+ <optional>
1209
+ <ref name="definitions"/>
1210
+ </optional>
1211
+ </group>
1212
+ </choice>
1213
+ </element>
1214
+ </define>
1215
+ <define name="term">
1216
+ <element name="term">
1217
+ <optional>
1218
+ <attribute name="id">
1219
+ <data type="ID"/>
1220
+ </attribute>
1221
+ </optional>
1222
+ <oneOrMore>
1223
+ <ref name="preferred"/>
1224
+ </oneOrMore>
1225
+ <zeroOrMore>
1226
+ <ref name="admitted"/>
1227
+ </zeroOrMore>
1228
+ <zeroOrMore>
1229
+ <ref name="related"/>
1230
+ </zeroOrMore>
1231
+ <zeroOrMore>
1232
+ <ref name="deprecates"/>
1233
+ </zeroOrMore>
1234
+ <optional>
1235
+ <ref name="termdomain"/>
1236
+ </optional>
1237
+ <zeroOrMore>
1238
+ <ref name="termgrammar"/>
1239
+ </zeroOrMore>
1240
+ <ref name="definition"/>
1241
+ <zeroOrMore>
1242
+ <ref name="termnote"/>
1243
+ </zeroOrMore>
1244
+ <zeroOrMore>
1245
+ <ref name="termexample"/>
1246
+ </zeroOrMore>
1247
+ <zeroOrMore>
1248
+ <ref name="termsource"/>
1249
+ </zeroOrMore>
1250
+ </element>
1251
+ </define>
1252
+ <define name="preferred">
1253
+ <element name="preferred">
1254
+ <oneOrMore>
1255
+ <ref name="TextElement"/>
1256
+ </oneOrMore>
1257
+ </element>
1258
+ </define>
1259
+ <define name="admitted">
1260
+ <element name="admitted">
1261
+ <oneOrMore>
1262
+ <ref name="TextElement"/>
1263
+ </oneOrMore>
1264
+ </element>
1265
+ </define>
1266
+ <define name="related">
1267
+ <element name="related">
1268
+ <optional>
1269
+ <attribute name="type">
1270
+ <choice>
1271
+ <value>compare</value>
1272
+ <value>contrast</value>
1273
+ <value>see</value>
1274
+ </choice>
1275
+ </attribute>
1276
+ </optional>
1277
+ <oneOrMore>
1278
+ <ref name="TextElement"/>
1279
+ </oneOrMore>
1280
+ </element>
1281
+ </define>
1282
+ <define name="deprecates">
1283
+ <element name="deprecates">
1284
+ <oneOrMore>
1285
+ <ref name="TextElement"/>
1286
+ </oneOrMore>
1287
+ </element>
1288
+ </define>
1289
+ <define name="termdomain">
1290
+ <element name="domain">
1291
+ <oneOrMore>
1292
+ <ref name="TextElement"/>
1293
+ </oneOrMore>
1294
+ </element>
1295
+ </define>
1296
+ <define name="termgrammar">
1297
+ <element name="grammar">
1298
+ <oneOrMore>
1299
+ <ref name="TextElement"/>
1300
+ </oneOrMore>
1301
+ </element>
1302
+ </define>
1303
+ <define name="definition">
1304
+ <element name="definition">
1305
+ <oneOrMore>
1306
+ <choice>
1307
+ <ref name="paragraph"/>
1308
+ <ref name="figure"/>
1309
+ <ref name="formula"/>
1310
+ </choice>
1311
+ </oneOrMore>
1312
+ </element>
1313
+ </define>
1314
+ <define name="termnote">
1315
+ <element name="termnote">
1316
+ <attribute name="id">
1317
+ <data type="ID"/>
1318
+ </attribute>
1319
+ <optional>
1320
+ <attribute name="unnumbered">
1321
+ <data type="boolean"/>
1322
+ </attribute>
1323
+ </optional>
1324
+ <optional>
1325
+ <attribute name="number"/>
1326
+ </optional>
1327
+ <optional>
1328
+ <attribute name="subsequence"/>
1329
+ </optional>
1330
+ <optional>
1331
+ <attribute name="keep-with-next">
1332
+ <data type="boolean"/>
1333
+ </attribute>
1334
+ </optional>
1335
+ <optional>
1336
+ <attribute name="keep-lines-together">
1337
+ <data type="boolean"/>
1338
+ </attribute>
1339
+ </optional>
1340
+ <oneOrMore>
1341
+ <choice>
1342
+ <ref name="paragraph"/>
1343
+ <ref name="ul"/>
1344
+ <ref name="ol"/>
1345
+ <ref name="dl"/>
1346
+ <ref name="formula"/>
1347
+ </choice>
1348
+ </oneOrMore>
1349
+ </element>
1350
+ </define>
1351
+ <define name="termexample">
1352
+ <element name="termexample">
1353
+ <attribute name="id">
1354
+ <data type="ID"/>
1355
+ </attribute>
1356
+ <ref name="paragraph"/>
1357
+ </element>
1358
+ </define>
1359
+ <define name="termsource">
1360
+ <element name="termsource">
1361
+ <attribute name="status">
1362
+ <choice>
1363
+ <value>identical</value>
1364
+ <value>modified</value>
1365
+ </choice>
1366
+ </attribute>
1367
+ <ref name="origin"/>
1368
+ <optional>
1369
+ <ref name="modification"/>
1370
+ </optional>
1371
+ </element>
1372
+ </define>
1373
+ <define name="origin">
1374
+ <element name="origin">
1375
+ <choice>
1376
+ <ref name="erefType"/>
1377
+ <ref name="termref"/>
1378
+ </choice>
1379
+ </element>
1380
+ </define>
1381
+ <define name="modification">
1382
+ <element name="modification">
1383
+ <ref name="paragraph"/>
1384
+ </element>
1385
+ </define>
1386
+ <define name="termref">
1387
+ <element name="termref">
1388
+ <attribute name="base"/>
1389
+ <attribute name="target"/>
1390
+ <optional>
1391
+ <text/>
1392
+ </optional>
1393
+ </element>
1394
+ </define>
1395
+ <define name="structuredidentifier">
1396
+ <element name="structuredidentifier">
1397
+ <optional>
1398
+ <attribute name="type"/>
1399
+ </optional>
1400
+ <oneOrMore>
1401
+ <element name="agency">
1402
+ <text/>
1403
+ </element>
1404
+ </oneOrMore>
1405
+ <optional>
1406
+ <element name="class">
1407
+ <text/>
1408
+ </element>
1409
+ </optional>
1410
+ <element name="docnumber">
1411
+ <text/>
1412
+ </element>
1413
+ <optional>
1414
+ <element name="partnumber">
1415
+ <text/>
1416
+ </element>
1417
+ </optional>
1418
+ <optional>
1419
+ <element name="edition">
1420
+ <text/>
1421
+ </element>
1422
+ </optional>
1423
+ <optional>
1424
+ <element name="version">
1425
+ <text/>
1426
+ </element>
1427
+ </optional>
1428
+ <optional>
1429
+ <element name="supplementtype">
1430
+ <text/>
1431
+ </element>
1432
+ </optional>
1433
+ <optional>
1434
+ <element name="supplementnumber">
1435
+ <text/>
1436
+ </element>
1437
+ </optional>
1438
+ <optional>
1439
+ <element name="language">
1440
+ <text/>
1441
+ </element>
1442
+ </optional>
1443
+ <optional>
1444
+ <element name="year">
1445
+ <text/>
1446
+ </element>
1447
+ </optional>
1448
+ </element>
1449
+ </define>
1450
+ <define name="preface_abstract">
1451
+ <element name="abstract">
1452
+ <ref name="Basic-Section"/>
1453
+ </element>
1454
+ </define>
1455
+ <define name="term-clause">
1456
+ <element name="clause">
1457
+ <optional>
1458
+ <attribute name="id">
1459
+ <data type="ID"/>
1460
+ </attribute>
1461
+ </optional>
1462
+ <optional>
1463
+ <attribute name="language"/>
1464
+ </optional>
1465
+ <optional>
1466
+ <attribute name="script"/>
1467
+ </optional>
1468
+ <optional>
1469
+ <attribute name="inline-header">
1470
+ <data type="boolean"/>
1471
+ </attribute>
1472
+ </optional>
1473
+ <optional>
1474
+ <attribute name="obligation">
1475
+ <choice>
1476
+ <value>normative</value>
1477
+ <value>informative</value>
1478
+ </choice>
1479
+ </attribute>
1480
+ </optional>
1481
+ <optional>
1482
+ <ref name="section-title"/>
1483
+ </optional>
1484
+ <zeroOrMore>
1485
+ <ref name="BasicBlock"/>
1486
+ </zeroOrMore>
1487
+ <zeroOrMore>
1488
+ <ref name="note"/>
1489
+ </zeroOrMore>
1490
+ <zeroOrMore>
1491
+ <choice>
1492
+ <ref name="term-clause"/>
1493
+ <ref name="terms"/>
1494
+ <ref name="definitions"/>
1495
+ </choice>
1496
+ </zeroOrMore>
1497
+ </element>
1498
+ </define>
1499
+ <define name="termdocsource">
1500
+ <element name="termdocsource">
1501
+ <ref name="CitationType"/>
1502
+ </element>
1503
+ </define>
1504
+ </grammar>