metanorma-cc 1.4.0

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.
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>