metanorma-bsi 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/.hound.yml +3 -0
  4. data/.rubocop.yml +14 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +7 -0
  7. data/LICENSE +25 -0
  8. data/README.adoc +199 -0
  9. data/Rakefile +8 -0
  10. data/bin/rspec +18 -0
  11. data/lib/asciidoctor/bsi/basicdoc.rng +1131 -0
  12. data/lib/asciidoctor/bsi/biblio.rng +1235 -0
  13. data/lib/asciidoctor/bsi/bsi.rng +120 -0
  14. data/lib/asciidoctor/bsi/bsi_intro_en.xml +105 -0
  15. data/lib/asciidoctor/bsi/cleanup.rb +78 -0
  16. data/lib/asciidoctor/bsi/cleanup_ref.rb +183 -0
  17. data/lib/asciidoctor/bsi/converter.rb +83 -0
  18. data/lib/asciidoctor/bsi/front.rb +67 -0
  19. data/lib/asciidoctor/bsi/isodoc.rng +1870 -0
  20. data/lib/asciidoctor/bsi/isostandard.rng +477 -0
  21. data/lib/asciidoctor/bsi/reqt.rng +194 -0
  22. data/lib/asciidoctor/bsi/validate.rb +224 -0
  23. data/lib/asciidoctor/bsi/validate_list.rb +72 -0
  24. data/lib/asciidoctor/bsi/validate_requirement.rb +163 -0
  25. data/lib/isodoc/bsi/base_convert.rb +91 -0
  26. data/lib/isodoc/bsi/bsi.international-standard.xsl +6540 -0
  27. data/lib/isodoc/bsi/html/html_bsi_intro.html +8 -0
  28. data/lib/isodoc/bsi/html/html_bsi_titlepage.html +50 -0
  29. data/lib/isodoc/bsi/html/htmlstyle.css +968 -0
  30. data/lib/isodoc/bsi/html/htmlstyle.scss +699 -0
  31. data/lib/isodoc/bsi/html_convert.rb +56 -0
  32. data/lib/isodoc/bsi/i18n-en.yaml +56 -0
  33. data/lib/isodoc/bsi/i18n.rb +15 -0
  34. data/lib/isodoc/bsi/init.rb +24 -0
  35. data/lib/isodoc/bsi/metadata.rb +33 -0
  36. data/lib/isodoc/bsi/pdf_convert.rb +17 -0
  37. data/lib/isodoc/bsi/presentation_xml_convert.rb +72 -0
  38. data/lib/isodoc/bsi/sts_convert.rb +30 -0
  39. data/lib/isodoc/bsi/xref.rb +134 -0
  40. data/lib/metanorma-bsi.rb +15 -0
  41. data/lib/metanorma/bsi.rb +6 -0
  42. data/lib/metanorma/bsi/processor.rb +51 -0
  43. data/lib/metanorma/bsi/version.rb +6 -0
  44. data/metanorma-bsi.gemspec +47 -0
  45. data/spec/asciidoctor/base_spec.rb +778 -0
  46. data/spec/asciidoctor/blocks_spec.rb +553 -0
  47. data/spec/asciidoctor/cleanup_spec.rb +547 -0
  48. data/spec/asciidoctor/inline_spec.rb +176 -0
  49. data/spec/asciidoctor/lists_spec.rb +194 -0
  50. data/spec/asciidoctor/refs_spec.rb +318 -0
  51. data/spec/asciidoctor/section_spec.rb +382 -0
  52. data/spec/asciidoctor/validate_spec.rb +858 -0
  53. data/spec/assets/header.html +7 -0
  54. data/spec/assets/html.css +2 -0
  55. data/spec/assets/iso.xml +71 -0
  56. data/spec/assets/rice_image1.png +0 -0
  57. data/spec/assets/word.css +2 -0
  58. data/spec/assets/wordintro.html +4 -0
  59. data/spec/assets/xref_error.adoc +7 -0
  60. data/spec/isodoc/blocks_spec.rb +259 -0
  61. data/spec/isodoc/i18n_spec.rb +442 -0
  62. data/spec/isodoc/inline_spec.rb +287 -0
  63. data/spec/isodoc/iso_spec.rb +116 -0
  64. data/spec/isodoc/metadata_spec.rb +262 -0
  65. data/spec/isodoc/postproc_spec.rb +137 -0
  66. data/spec/isodoc/ref_spec.rb +376 -0
  67. data/spec/isodoc/section_spec.rb +467 -0
  68. data/spec/isodoc/terms_spec.rb +246 -0
  69. data/spec/isodoc/xref_spec.rb +1730 -0
  70. data/spec/metanorma/processor_spec.rb +76 -0
  71. data/spec/spec_helper.rb +291 -0
  72. data/spec/vcr_cassettes/iso-639.yml +182 -0
  73. data/spec/vcr_cassettes/isobib_get_639_1967.yml +136 -0
  74. data/spec/vcr_cassettes/multistandard.yml +352 -0
  75. metadata +343 -0
@@ -0,0 +1,83 @@
1
+ require "asciidoctor"
2
+ require "metanorma-iso"
3
+ require_relative "./front"
4
+ require_relative "./cleanup"
5
+ require_relative "./validate"
6
+
7
+ module Asciidoctor
8
+ module BSI
9
+ class Converter < ISO::Converter
10
+ XML_ROOT_TAG = "bsi-standard".freeze
11
+ XML_NAMESPACE = "https://www.metanorma.org/ns/bsi".freeze
12
+
13
+ register_for "bsi"
14
+
15
+ def boilerplate_file(_x_orig)
16
+ File.join(@libdir, "bsi_intro_en.xml")
17
+ end
18
+
19
+ # TODO: we will not implement sections for now (Rules for Structure 6.4)
20
+ #
21
+ # TODO: we will not implement access date for now (Rules for Structure 10.3)
22
+
23
+ def note(node)
24
+ return commentary(node) if node.attr("type") == "commentary"
25
+ super
26
+ end
27
+
28
+ def commentary_attrs(node)
29
+ attr_code(keep_attrs(node).merge(
30
+ id: Metanorma::Utils::anchor_or_uuid(node),
31
+ type: "commentary",
32
+ target: node.attr("target"),
33
+ beforeclauses: node.attr("beforeclauses") == "true" ? "true" : nil
34
+ ))
35
+ end
36
+
37
+ def commentary(node)
38
+ noko do |xml|
39
+ xml.admonition **commentary_attrs(node) do |a|
40
+ node.title.nil? or a.name { |name| name << node.title }
41
+ wrap_in_para(node, a)
42
+ end
43
+ end.join("\n")
44
+ end
45
+
46
+ def html_converter(node)
47
+ if node.nil?
48
+ IsoDoc::BSI::HtmlConvert.new({})
49
+ else
50
+ IsoDoc::BSI::HtmlConvert.new(html_extract_attributes(node))
51
+ end
52
+ end
53
+
54
+ def pdf_converter(node)
55
+ return if node.attr("no-pdf")
56
+
57
+ if node.nil?
58
+ IsoDoc::BSI::PdfConvert.new({})
59
+ else
60
+ IsoDoc::BSI::PdfConvert.new(doc_extract_attributes(node))
61
+ end
62
+ end
63
+
64
+ def presentation_xml_converter(node)
65
+ if node.nil?
66
+ IsoDoc::BSI::PresentationXMLConvert.new({})
67
+ else
68
+ IsoDoc::BSI::PresentationXMLConvert.new(doc_extract_attributes(node))
69
+ end
70
+ end
71
+
72
+ def sts_converter(node)
73
+ return if node.attr("no-pdf")
74
+
75
+ if node.nil?
76
+ IsoDoc::BSI::StsConvert.new({})
77
+ else
78
+ IsoDoc::BSI::StsConvert.new(html_extract_attributes(node))
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,67 @@
1
+ module Asciidoctor
2
+ module BSI
3
+ class Converter < ISO::Converter
4
+ def org_abbrev
5
+ super.merge("British Standards Institute" => "BSI")
6
+ end
7
+
8
+ def metadata_author(node, xml)
9
+ publishers = node.attr("publisher") || "BSI"
10
+ csv_split(publishers)&.each do |p|
11
+ xml.contributor do |c|
12
+ c.role **{ type: "author" }
13
+ c.organization do |a|
14
+ organization(a, p, node, !node.attr("publisher"))
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ def metadata_publisher(node, xml)
21
+ publishers = node.attr("publisher") || "BSI"
22
+ csv_split(publishers)&.each do |p|
23
+ xml.contributor do |c|
24
+ c.role **{ type: "publisher" }
25
+ c.organization do |a|
26
+ organization(a, p, node, !node.attr("publisher"))
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ def metadata_copyright(node, xml)
33
+ pub = node.attr("copyright-holder") || node.attr("publisher") || "BSI"
34
+ csv_split(pub)&.each do |p|
35
+ xml.copyright do |c|
36
+ c.from (node.attr("copyright-year") || Date.today.year)
37
+ c.owner do |owner|
38
+ owner.organization do |o|
39
+ organization(o, p, node, !node.attr("copyright-holder") ||
40
+ node.attr("publisher"))
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ def iso_id(node, xml)
48
+ return unless node.attr("docnumber")
49
+
50
+ part = node&.attr("partnumber")
51
+ dn = add_id_parts(node.attr("docnumber"), part, nil)
52
+ dn = id_stage_prefix(dn, node, false)
53
+ xml.docidentifier dn, **attr_code(type: "BS")
54
+ end
55
+
56
+ def metadata_doctype(node, xml)
57
+ xml.doctype doctype(node)
58
+ end
59
+
60
+ def relaton_relations
61
+ super + %w(obsoletes adopted-from)
62
+ end
63
+
64
+ # TODO: not yet implemented prefixes for subsectors explicitly, Rules for Structure Annex F
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,1870 @@
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="doctype">
28
+ <element name="doctype">
29
+ <optional>
30
+ <attribute name="abbreviation"/>
31
+ </optional>
32
+ <ref name="DocumentType"/>
33
+ </element>
34
+ </define>
35
+ <define name="hyperlink">
36
+ <element name="link">
37
+ <attribute name="target">
38
+ <data type="anyURI"/>
39
+ </attribute>
40
+ <optional>
41
+ <attribute name="type">
42
+ <ref name="ReferenceFormat"/>
43
+ </attribute>
44
+ </optional>
45
+ <optional>
46
+ <attribute name="alt"/>
47
+ </optional>
48
+ <text/>
49
+ </element>
50
+ </define>
51
+ <define name="xref">
52
+ <element name="xref">
53
+ <attribute name="target">
54
+ <data type="string">
55
+ <param name="pattern">\i\c*|\c+#\c+</param>
56
+ </data>
57
+ </attribute>
58
+ <optional>
59
+ <attribute name="to">
60
+ <data type="string">
61
+ <param name="pattern">\i\c*|\c+#\c+</param>
62
+ </data>
63
+ </attribute>
64
+ </optional>
65
+ <optional>
66
+ <attribute name="type">
67
+ <ref name="ReferenceFormat"/>
68
+ </attribute>
69
+ </optional>
70
+ <optional>
71
+ <attribute name="alt"/>
72
+ </optional>
73
+ <optional>
74
+ <attribute name="case">
75
+ <choice>
76
+ <value>capital</value>
77
+ <value>lowercase</value>
78
+ </choice>
79
+ </attribute>
80
+ </optional>
81
+ <optional>
82
+ <attribute name="droploc">
83
+ <data type="boolean"/>
84
+ </attribute>
85
+ </optional>
86
+ <text/>
87
+ </element>
88
+ </define>
89
+ <define name="erefType">
90
+ <optional>
91
+ <attribute name="normative">
92
+ <data type="boolean"/>
93
+ </attribute>
94
+ </optional>
95
+ <attribute name="citeas"/>
96
+ <attribute name="type">
97
+ <ref name="ReferenceFormat"/>
98
+ </attribute>
99
+ <optional>
100
+ <attribute name="alt"/>
101
+ </optional>
102
+ <optional>
103
+ <attribute name="case">
104
+ <choice>
105
+ <value>capital</value>
106
+ <value>lowercase</value>
107
+ </choice>
108
+ </attribute>
109
+ </optional>
110
+ <optional>
111
+ <attribute name="droploc">
112
+ <data type="boolean"/>
113
+ </attribute>
114
+ </optional>
115
+ <ref name="CitationType"/>
116
+ <text/>
117
+ </define>
118
+ <define name="ul">
119
+ <element name="ul">
120
+ <attribute name="id">
121
+ <data type="ID"/>
122
+ </attribute>
123
+ <optional>
124
+ <attribute name="keep-with-next">
125
+ <data type="boolean"/>
126
+ </attribute>
127
+ </optional>
128
+ <optional>
129
+ <attribute name="keep-lines-together">
130
+ <data type="boolean"/>
131
+ </attribute>
132
+ </optional>
133
+ <oneOrMore>
134
+ <ref name="ul_li"/>
135
+ </oneOrMore>
136
+ <zeroOrMore>
137
+ <ref name="note"/>
138
+ </zeroOrMore>
139
+ </element>
140
+ </define>
141
+ <define name="ol">
142
+ <element name="ol">
143
+ <attribute name="id">
144
+ <data type="ID"/>
145
+ </attribute>
146
+ <optional>
147
+ <attribute name="keep-with-next">
148
+ <data type="boolean"/>
149
+ </attribute>
150
+ </optional>
151
+ <optional>
152
+ <attribute name="keep-lines-together">
153
+ <data type="boolean"/>
154
+ </attribute>
155
+ </optional>
156
+ <attribute name="type">
157
+ <choice>
158
+ <value>roman</value>
159
+ <value>alphabet</value>
160
+ <value>arabic</value>
161
+ <value>roman_upper</value>
162
+ <value>alphabet_upper</value>
163
+ </choice>
164
+ </attribute>
165
+ <oneOrMore>
166
+ <ref name="li"/>
167
+ </oneOrMore>
168
+ <zeroOrMore>
169
+ <ref name="note"/>
170
+ </zeroOrMore>
171
+ </element>
172
+ </define>
173
+ <define name="dl">
174
+ <element name="dl">
175
+ <attribute name="id">
176
+ <data type="ID"/>
177
+ </attribute>
178
+ <optional>
179
+ <attribute name="keep-with-next">
180
+ <data type="boolean"/>
181
+ </attribute>
182
+ </optional>
183
+ <optional>
184
+ <attribute name="keep-lines-together">
185
+ <data type="boolean"/>
186
+ </attribute>
187
+ </optional>
188
+ <optional>
189
+ <attribute name="key">
190
+ <data type="boolean"/>
191
+ </attribute>
192
+ </optional>
193
+ <oneOrMore>
194
+ <ref name="dt"/>
195
+ <ref name="dd"/>
196
+ </oneOrMore>
197
+ <zeroOrMore>
198
+ <ref name="note"/>
199
+ </zeroOrMore>
200
+ </element>
201
+ </define>
202
+ <define name="example">
203
+ <element name="example">
204
+ <attribute name="id">
205
+ <data type="ID"/>
206
+ </attribute>
207
+ <optional>
208
+ <attribute name="unnumbered">
209
+ <data type="boolean"/>
210
+ </attribute>
211
+ </optional>
212
+ <optional>
213
+ <attribute name="subsequence"/>
214
+ </optional>
215
+ <optional>
216
+ <attribute name="number"/>
217
+ </optional>
218
+ <optional>
219
+ <attribute name="keep-with-next">
220
+ <data type="boolean"/>
221
+ </attribute>
222
+ </optional>
223
+ <optional>
224
+ <attribute name="keep-lines-together">
225
+ <data type="boolean"/>
226
+ </attribute>
227
+ </optional>
228
+ <optional>
229
+ <ref name="tname"/>
230
+ </optional>
231
+ <oneOrMore>
232
+ <choice>
233
+ <ref name="formula"/>
234
+ <ref name="ul"/>
235
+ <ref name="ol"/>
236
+ <ref name="dl"/>
237
+ <ref name="quote"/>
238
+ <ref name="sourcecode"/>
239
+ <ref name="paragraph-with-footnote"/>
240
+ <ref name="figure"/>
241
+ </choice>
242
+ </oneOrMore>
243
+ <zeroOrMore>
244
+ <ref name="note"/>
245
+ </zeroOrMore>
246
+ </element>
247
+ </define>
248
+ <define name="table">
249
+ <element name="table">
250
+ <attribute name="id">
251
+ <data type="ID"/>
252
+ </attribute>
253
+ <optional>
254
+ <attribute name="unnumbered">
255
+ <data type="boolean"/>
256
+ </attribute>
257
+ </optional>
258
+ <optional>
259
+ <attribute name="number"/>
260
+ </optional>
261
+ <optional>
262
+ <attribute name="subsequence"/>
263
+ </optional>
264
+ <optional>
265
+ <attribute name="alt"/>
266
+ </optional>
267
+ <optional>
268
+ <attribute name="summary"/>
269
+ </optional>
270
+ <optional>
271
+ <attribute name="uri">
272
+ <data type="anyURI"/>
273
+ </attribute>
274
+ </optional>
275
+ <optional>
276
+ <attribute name="keep-with-next">
277
+ <data type="boolean"/>
278
+ </attribute>
279
+ </optional>
280
+ <optional>
281
+ <attribute name="keep-lines-together">
282
+ <data type="boolean"/>
283
+ </attribute>
284
+ </optional>
285
+ <optional>
286
+ <attribute name="width"/>
287
+ </optional>
288
+ <optional>
289
+ <ref name="colgroup"/>
290
+ </optional>
291
+ <optional>
292
+ <ref name="tname"/>
293
+ </optional>
294
+ <optional>
295
+ <ref name="thead"/>
296
+ </optional>
297
+ <ref name="tbody"/>
298
+ <optional>
299
+ <ref name="tfoot"/>
300
+ </optional>
301
+ <zeroOrMore>
302
+ <ref name="table-note"/>
303
+ </zeroOrMore>
304
+ <optional>
305
+ <ref name="dl"/>
306
+ </optional>
307
+ </element>
308
+ </define>
309
+ <define name="figure">
310
+ <element name="figure">
311
+ <attribute name="id">
312
+ <data type="ID"/>
313
+ </attribute>
314
+ <optional>
315
+ <attribute name="unnumbered">
316
+ <data type="boolean"/>
317
+ </attribute>
318
+ </optional>
319
+ <optional>
320
+ <attribute name="number"/>
321
+ </optional>
322
+ <optional>
323
+ <attribute name="subsequence"/>
324
+ </optional>
325
+ <optional>
326
+ <attribute name="keep-with-next">
327
+ <data type="boolean"/>
328
+ </attribute>
329
+ </optional>
330
+ <optional>
331
+ <attribute name="keep-lines-together">
332
+ <data type="boolean"/>
333
+ </attribute>
334
+ </optional>
335
+ <optional>
336
+ <attribute name="class"/>
337
+ </optional>
338
+ <optional>
339
+ <ref name="source"/>
340
+ </optional>
341
+ <optional>
342
+ <ref name="tname"/>
343
+ </optional>
344
+ <choice>
345
+ <ref name="image"/>
346
+ <ref name="video"/>
347
+ <ref name="audio"/>
348
+ <ref name="pre"/>
349
+ <oneOrMore>
350
+ <ref name="paragraph-with-footnote"/>
351
+ </oneOrMore>
352
+ <zeroOrMore>
353
+ <ref name="figure"/>
354
+ </zeroOrMore>
355
+ </choice>
356
+ <zeroOrMore>
357
+ <ref name="fn"/>
358
+ </zeroOrMore>
359
+ <optional>
360
+ <ref name="dl"/>
361
+ </optional>
362
+ <zeroOrMore>
363
+ <ref name="note"/>
364
+ </zeroOrMore>
365
+ </element>
366
+ </define>
367
+ <define name="sourcecode">
368
+ <element name="sourcecode">
369
+ <attribute name="id">
370
+ <data type="ID"/>
371
+ </attribute>
372
+ <optional>
373
+ <attribute name="unnumbered">
374
+ <data type="boolean"/>
375
+ </attribute>
376
+ </optional>
377
+ <optional>
378
+ <attribute name="number"/>
379
+ </optional>
380
+ <optional>
381
+ <attribute name="subsequence"/>
382
+ </optional>
383
+ <optional>
384
+ <attribute name="keep-with-next">
385
+ <data type="boolean"/>
386
+ </attribute>
387
+ </optional>
388
+ <optional>
389
+ <attribute name="keep-lines-together">
390
+ <data type="boolean"/>
391
+ </attribute>
392
+ </optional>
393
+ <optional>
394
+ <attribute name="lang"/>
395
+ </optional>
396
+ <optional>
397
+ <ref name="tname"/>
398
+ </optional>
399
+ <oneOrMore>
400
+ <choice>
401
+ <text/>
402
+ <ref name="callout"/>
403
+ </choice>
404
+ </oneOrMore>
405
+ <zeroOrMore>
406
+ <ref name="annotation"/>
407
+ </zeroOrMore>
408
+ <zeroOrMore>
409
+ <ref name="note"/>
410
+ </zeroOrMore>
411
+ </element>
412
+ </define>
413
+ <define name="formula">
414
+ <element name="formula">
415
+ <attribute name="id">
416
+ <data type="ID"/>
417
+ </attribute>
418
+ <optional>
419
+ <attribute name="unnumbered">
420
+ <data type="boolean"/>
421
+ </attribute>
422
+ </optional>
423
+ <optional>
424
+ <attribute name="number"/>
425
+ </optional>
426
+ <optional>
427
+ <attribute name="subsequence"/>
428
+ </optional>
429
+ <optional>
430
+ <attribute name="keep-with-next">
431
+ <data type="boolean"/>
432
+ </attribute>
433
+ </optional>
434
+ <optional>
435
+ <attribute name="keep-lines-together">
436
+ <data type="boolean"/>
437
+ </attribute>
438
+ </optional>
439
+ <optional>
440
+ <attribute name="inequality">
441
+ <data type="boolean"/>
442
+ </attribute>
443
+ </optional>
444
+ <ref name="stem"/>
445
+ <optional>
446
+ <ref name="dl"/>
447
+ </optional>
448
+ <zeroOrMore>
449
+ <ref name="note"/>
450
+ </zeroOrMore>
451
+ </element>
452
+ </define>
453
+ <define name="ParagraphType">
454
+ <attribute name="id">
455
+ <data type="ID"/>
456
+ </attribute>
457
+ <optional>
458
+ <attribute name="align">
459
+ <ref name="Alignments"/>
460
+ </attribute>
461
+ </optional>
462
+ <optional>
463
+ <attribute name="keep-with-next">
464
+ <data type="boolean"/>
465
+ </attribute>
466
+ </optional>
467
+ <optional>
468
+ <attribute name="keep-lines-together">
469
+ <data type="boolean"/>
470
+ </attribute>
471
+ </optional>
472
+ <zeroOrMore>
473
+ <ref name="TextElement"/>
474
+ </zeroOrMore>
475
+ <zeroOrMore>
476
+ <ref name="note"/>
477
+ </zeroOrMore>
478
+ </define>
479
+ <define name="paragraph-with-footnote">
480
+ <element name="p">
481
+ <attribute name="id">
482
+ <data type="ID"/>
483
+ </attribute>
484
+ <optional>
485
+ <attribute name="align">
486
+ <ref name="Alignments"/>
487
+ </attribute>
488
+ </optional>
489
+ <optional>
490
+ <attribute name="keep-with-next">
491
+ <data type="boolean"/>
492
+ </attribute>
493
+ </optional>
494
+ <optional>
495
+ <attribute name="keep-lines-together">
496
+ <data type="boolean"/>
497
+ </attribute>
498
+ </optional>
499
+ <zeroOrMore>
500
+ <choice>
501
+ <ref name="TextElement"/>
502
+ <ref name="fn"/>
503
+ </choice>
504
+ </zeroOrMore>
505
+ <zeroOrMore>
506
+ <ref name="note"/>
507
+ </zeroOrMore>
508
+ </element>
509
+ </define>
510
+ <define name="quote">
511
+ <element name="quote">
512
+ <attribute name="id">
513
+ <data type="ID"/>
514
+ </attribute>
515
+ <optional>
516
+ <attribute name="alignment">
517
+ <ref name="Alignments"/>
518
+ </attribute>
519
+ </optional>
520
+ <optional>
521
+ <attribute name="keep-with-next">
522
+ <data type="boolean"/>
523
+ </attribute>
524
+ </optional>
525
+ <optional>
526
+ <attribute name="keep-lines-together">
527
+ <data type="boolean"/>
528
+ </attribute>
529
+ </optional>
530
+ <optional>
531
+ <ref name="quote-source"/>
532
+ </optional>
533
+ <optional>
534
+ <ref name="quote-author"/>
535
+ </optional>
536
+ <oneOrMore>
537
+ <ref name="paragraph-with-footnote"/>
538
+ </oneOrMore>
539
+ <zeroOrMore>
540
+ <ref name="note"/>
541
+ </zeroOrMore>
542
+ </element>
543
+ </define>
544
+ <define name="BibDataExtensionType">
545
+ <ref name="doctype"/>
546
+ <optional>
547
+ <ref name="editorialgroup"/>
548
+ </optional>
549
+ <zeroOrMore>
550
+ <ref name="ics"/>
551
+ </zeroOrMore>
552
+ <zeroOrMore>
553
+ <ref name="structuredidentifier"/>
554
+ </zeroOrMore>
555
+ </define>
556
+ <!-- TitleType = text -->
557
+ <define name="sections">
558
+ <element name="sections">
559
+ <oneOrMore>
560
+ <choice>
561
+ <ref name="clause"/>
562
+ <ref name="terms"/>
563
+ <ref name="term-clause"/>
564
+ <ref name="definitions"/>
565
+ </choice>
566
+ </oneOrMore>
567
+ </element>
568
+ </define>
569
+ <define name="references">
570
+ <element name="references">
571
+ <optional>
572
+ <attribute name="id">
573
+ <data type="ID"/>
574
+ </attribute>
575
+ </optional>
576
+ <optional>
577
+ <attribute name="obligation">
578
+ <choice>
579
+ <value>normative</value>
580
+ <value>informative</value>
581
+ </choice>
582
+ </attribute>
583
+ </optional>
584
+ <attribute name="normative">
585
+ <data type="boolean"/>
586
+ </attribute>
587
+ <optional>
588
+ <ref name="section-title"/>
589
+ </optional>
590
+ <zeroOrMore>
591
+ <ref name="BasicBlock"/>
592
+ </zeroOrMore>
593
+ <zeroOrMore>
594
+ <ref name="note"/>
595
+ </zeroOrMore>
596
+ <zeroOrMore>
597
+ <ref name="bibitem"/>
598
+ <zeroOrMore>
599
+ <ref name="note"/>
600
+ </zeroOrMore>
601
+ </zeroOrMore>
602
+ <zeroOrMore>
603
+ <ref name="references"/>
604
+ </zeroOrMore>
605
+ </element>
606
+ </define>
607
+ <define name="note">
608
+ <element name="note">
609
+ <attribute name="id">
610
+ <data type="ID"/>
611
+ </attribute>
612
+ <optional>
613
+ <attribute name="unnumbered">
614
+ <data type="boolean"/>
615
+ </attribute>
616
+ </optional>
617
+ <optional>
618
+ <attribute name="number"/>
619
+ </optional>
620
+ <optional>
621
+ <attribute name="subsequence"/>
622
+ </optional>
623
+ <optional>
624
+ <attribute name="keep-with-next">
625
+ <data type="boolean"/>
626
+ </attribute>
627
+ </optional>
628
+ <optional>
629
+ <attribute name="keep-lines-together">
630
+ <data type="boolean"/>
631
+ </attribute>
632
+ </optional>
633
+ <optional>
634
+ <attribute name="type"/>
635
+ </optional>
636
+ <oneOrMore>
637
+ <choice>
638
+ <ref name="paragraph"/>
639
+ <ref name="ul"/>
640
+ <ref name="ol"/>
641
+ <ref name="dl"/>
642
+ <ref name="formula"/>
643
+ <ref name="quote"/>
644
+ <ref name="sourcecode"/>
645
+ </choice>
646
+ </oneOrMore>
647
+ </element>
648
+ </define>
649
+ <define name="Basic-Section">
650
+ <optional>
651
+ <attribute name="id">
652
+ <data type="ID"/>
653
+ </attribute>
654
+ </optional>
655
+ <optional>
656
+ <attribute name="language"/>
657
+ </optional>
658
+ <optional>
659
+ <attribute name="script"/>
660
+ </optional>
661
+ <optional>
662
+ <attribute name="obligation">
663
+ <choice>
664
+ <value>normative</value>
665
+ <value>informative</value>
666
+ </choice>
667
+ </attribute>
668
+ </optional>
669
+ <optional>
670
+ <ref name="section-title"/>
671
+ </optional>
672
+ <group>
673
+ <oneOrMore>
674
+ <ref name="BasicBlock"/>
675
+ </oneOrMore>
676
+ <zeroOrMore>
677
+ <ref name="note"/>
678
+ </zeroOrMore>
679
+ </group>
680
+ </define>
681
+ <define name="li">
682
+ <element name="li">
683
+ <group>
684
+ <optional>
685
+ <attribute name="id">
686
+ <data type="ID"/>
687
+ </attribute>
688
+ </optional>
689
+ <oneOrMore>
690
+ <ref name="BasicBlock"/>
691
+ </oneOrMore>
692
+ </group>
693
+ <!-- exclude figures? -->
694
+ </element>
695
+ </define>
696
+ <define name="dd">
697
+ <element name="dd">
698
+ <zeroOrMore>
699
+ <!-- exclude figures? -->
700
+ <ref name="BasicBlock"/>
701
+ </zeroOrMore>
702
+ </element>
703
+ </define>
704
+ <define name="thead">
705
+ <element name="thead">
706
+ <oneOrMore>
707
+ <ref name="tr"/>
708
+ </oneOrMore>
709
+ </element>
710
+ </define>
711
+ <define name="td">
712
+ <element name="td">
713
+ <optional>
714
+ <attribute name="colspan"/>
715
+ </optional>
716
+ <optional>
717
+ <attribute name="rowspan"/>
718
+ </optional>
719
+ <optional>
720
+ <attribute name="align">
721
+ <choice>
722
+ <value>left</value>
723
+ <value>right</value>
724
+ <value>center</value>
725
+ </choice>
726
+ </attribute>
727
+ </optional>
728
+ <optional>
729
+ <attribute name="valign">
730
+ <choice>
731
+ <value>top</value>
732
+ <value>middle</value>
733
+ <value>bottom</value>
734
+ <value>baseline</value>
735
+ </choice>
736
+ </attribute>
737
+ </optional>
738
+ <choice>
739
+ <zeroOrMore>
740
+ <choice>
741
+ <ref name="TextElement"/>
742
+ <ref name="fn"/>
743
+ </choice>
744
+ </zeroOrMore>
745
+ <oneOrMore>
746
+ <choice>
747
+ <ref name="paragraph-with-footnote"/>
748
+ <ref name="dl"/>
749
+ <ref name="ul"/>
750
+ <ref name="ol"/>
751
+ <ref name="figure"/>
752
+ </choice>
753
+ </oneOrMore>
754
+ </choice>
755
+ </element>
756
+ </define>
757
+ <define name="th">
758
+ <element name="th">
759
+ <optional>
760
+ <attribute name="colspan"/>
761
+ </optional>
762
+ <optional>
763
+ <attribute name="rowspan"/>
764
+ </optional>
765
+ <optional>
766
+ <attribute name="align">
767
+ <choice>
768
+ <value>left</value>
769
+ <value>right</value>
770
+ <value>center</value>
771
+ </choice>
772
+ </attribute>
773
+ </optional>
774
+ <optional>
775
+ <attribute name="valign">
776
+ <choice>
777
+ <value>top</value>
778
+ <value>middle</value>
779
+ <value>bottom</value>
780
+ <value>baseline</value>
781
+ </choice>
782
+ </attribute>
783
+ </optional>
784
+ <choice>
785
+ <zeroOrMore>
786
+ <choice>
787
+ <ref name="TextElement"/>
788
+ <ref name="fn"/>
789
+ </choice>
790
+ </zeroOrMore>
791
+ <oneOrMore>
792
+ <ref name="paragraph-with-footnote"/>
793
+ </oneOrMore>
794
+ </choice>
795
+ </element>
796
+ </define>
797
+ <define name="table-note">
798
+ <element name="note">
799
+ <optional>
800
+ <attribute name="id">
801
+ <data type="ID"/>
802
+ </attribute>
803
+ </optional>
804
+ <ref name="paragraph"/>
805
+ </element>
806
+ </define>
807
+ <define name="em">
808
+ <element name="em">
809
+ <zeroOrMore>
810
+ <choice>
811
+ <ref name="PureTextElement"/>
812
+ <ref name="stem"/>
813
+ <ref name="index"/>
814
+ </choice>
815
+ </zeroOrMore>
816
+ </element>
817
+ </define>
818
+ <define name="strong">
819
+ <element name="strong">
820
+ <zeroOrMore>
821
+ <choice>
822
+ <ref name="PureTextElement"/>
823
+ <ref name="stem"/>
824
+ <ref name="index"/>
825
+ </choice>
826
+ </zeroOrMore>
827
+ </element>
828
+ </define>
829
+ <define name="tt">
830
+ <element name="tt">
831
+ <zeroOrMore>
832
+ <choice>
833
+ <ref name="PureTextElement"/>
834
+ <ref name="index"/>
835
+ </choice>
836
+ </zeroOrMore>
837
+ </element>
838
+ </define>
839
+ <define name="keyword">
840
+ <element name="keyword">
841
+ <zeroOrMore>
842
+ <choice>
843
+ <ref name="PureTextElement"/>
844
+ <ref name="index"/>
845
+ </choice>
846
+ </zeroOrMore>
847
+ </element>
848
+ </define>
849
+ <define name="strike">
850
+ <element name="strike">
851
+ <zeroOrMore>
852
+ <choice>
853
+ <ref name="PureTextElement"/>
854
+ <ref name="index"/>
855
+ </choice>
856
+ </zeroOrMore>
857
+ </element>
858
+ </define>
859
+ <define name="underline">
860
+ <element name="underline">
861
+ <zeroOrMore>
862
+ <choice>
863
+ <ref name="PureTextElement"/>
864
+ <ref name="index"/>
865
+ </choice>
866
+ </zeroOrMore>
867
+ </element>
868
+ </define>
869
+ <define name="smallcap">
870
+ <element name="smallcap">
871
+ <zeroOrMore>
872
+ <choice>
873
+ <ref name="PureTextElement"/>
874
+ <ref name="index"/>
875
+ </choice>
876
+ </zeroOrMore>
877
+ </element>
878
+ </define>
879
+ </include>
880
+ <!-- end overrides -->
881
+ <define name="colgroup">
882
+ <element name="colgroup">
883
+ <oneOrMore>
884
+ <ref name="col"/>
885
+ </oneOrMore>
886
+ </element>
887
+ </define>
888
+ <define name="col">
889
+ <element name="col">
890
+ <attribute name="width"/>
891
+ </element>
892
+ </define>
893
+ <define name="BibItemType" combine="choice">
894
+ <value>internal</value>
895
+ </define>
896
+ <define name="TextElement" combine="choice">
897
+ <choice>
898
+ <ref name="concept"/>
899
+ <ref name="add"/>
900
+ <ref name="del"/>
901
+ </choice>
902
+ </define>
903
+ <define name="add">
904
+ <element name="add">
905
+ <choice>
906
+ <ref name="PureTextElement"/>
907
+ <ref name="eref"/>
908
+ <ref name="stem"/>
909
+ <ref name="keyword"/>
910
+ <ref name="xref"/>
911
+ <ref name="hyperlink"/>
912
+ </choice>
913
+ </element>
914
+ </define>
915
+ <define name="del">
916
+ <element name="del">
917
+ <choice>
918
+ <ref name="PureTextElement"/>
919
+ <ref name="eref"/>
920
+ <ref name="stem"/>
921
+ <ref name="keyword"/>
922
+ <ref name="xref"/>
923
+ <ref name="hyperlink"/>
924
+ </choice>
925
+ </element>
926
+ </define>
927
+ <define name="concept">
928
+ <element name="concept">
929
+ <optional>
930
+ <attribute name="term"/>
931
+ </optional>
932
+ <choice>
933
+ <ref name="eref"/>
934
+ <ref name="xref"/>
935
+ <ref name="termref"/>
936
+ </choice>
937
+ </element>
938
+ </define>
939
+ <define name="BasicBlock" combine="choice">
940
+ <choice>
941
+ <ref name="requirement"/>
942
+ <ref name="recommendation"/>
943
+ <ref name="permission"/>
944
+ <ref name="imagemap"/>
945
+ <ref name="svgmap"/>
946
+ </choice>
947
+ </define>
948
+ <define name="bibliography">
949
+ <element name="bibliography">
950
+ <oneOrMore>
951
+ <choice>
952
+ <ref name="references"/>
953
+ <ref name="reference-clause"/>
954
+ </choice>
955
+ </oneOrMore>
956
+ </element>
957
+ </define>
958
+ <define name="reference-clause">
959
+ <element name="clause">
960
+ <optional>
961
+ <attribute name="id">
962
+ <data type="ID"/>
963
+ </attribute>
964
+ </optional>
965
+ <optional>
966
+ <attribute name="language"/>
967
+ </optional>
968
+ <optional>
969
+ <attribute name="script"/>
970
+ </optional>
971
+ <optional>
972
+ <attribute name="inline-header">
973
+ <data type="boolean"/>
974
+ </attribute>
975
+ </optional>
976
+ <optional>
977
+ <attribute name="number"/>
978
+ </optional>
979
+ <optional>
980
+ <attribute name="obligation">
981
+ <choice>
982
+ <value>normative</value>
983
+ <value>informative</value>
984
+ </choice>
985
+ </attribute>
986
+ </optional>
987
+ <optional>
988
+ <ref name="section-title"/>
989
+ </optional>
990
+ <zeroOrMore>
991
+ <ref name="BasicBlock"/>
992
+ </zeroOrMore>
993
+ <zeroOrMore>
994
+ <ref name="note"/>
995
+ </zeroOrMore>
996
+ <choice>
997
+ <oneOrMore>
998
+ <ref name="reference-clause"/>
999
+ </oneOrMore>
1000
+ <zeroOrMore>
1001
+ <ref name="references"/>
1002
+ </zeroOrMore>
1003
+ </choice>
1004
+ </element>
1005
+ </define>
1006
+ <define name="editorialgroup">
1007
+ <element name="editorialgroup">
1008
+ <oneOrMore>
1009
+ <ref name="technical-committee"/>
1010
+ </oneOrMore>
1011
+ </element>
1012
+ </define>
1013
+ <define name="technical-committee">
1014
+ <element name="technical-committee">
1015
+ <ref name="IsoWorkgroup"/>
1016
+ </element>
1017
+ </define>
1018
+ <define name="IsoWorkgroup">
1019
+ <optional>
1020
+ <attribute name="number">
1021
+ <data type="int"/>
1022
+ </attribute>
1023
+ </optional>
1024
+ <optional>
1025
+ <attribute name="type"/>
1026
+ </optional>
1027
+ <text/>
1028
+ </define>
1029
+ <define name="ics">
1030
+ <element name="ics">
1031
+ <element name="code">
1032
+ <text/>
1033
+ </element>
1034
+ <optional>
1035
+ <element name="text">
1036
+ <text/>
1037
+ </element>
1038
+ </optional>
1039
+ </element>
1040
+ </define>
1041
+ <define name="standard-document">
1042
+ <element name="standard-document">
1043
+ <attribute name="version"/>
1044
+ <attribute name="type">
1045
+ <choice>
1046
+ <value>semantic</value>
1047
+ <value>presentation</value>
1048
+ </choice>
1049
+ </attribute>
1050
+ <ref name="bibdata"/>
1051
+ <optional>
1052
+ <ref name="misccontainer"/>
1053
+ </optional>
1054
+ <optional>
1055
+ <ref name="boilerplate"/>
1056
+ </optional>
1057
+ <optional>
1058
+ <ref name="preface"/>
1059
+ </optional>
1060
+ <ref name="sections"/>
1061
+ <zeroOrMore>
1062
+ <ref name="annex"/>
1063
+ </zeroOrMore>
1064
+ <optional>
1065
+ <ref name="bibliography"/>
1066
+ </optional>
1067
+ <zeroOrMore>
1068
+ <ref name="indexsect"/>
1069
+ </zeroOrMore>
1070
+ </element>
1071
+ </define>
1072
+ <define name="misccontainer">
1073
+ <element name="misc-container">
1074
+ <oneOrMore>
1075
+ <ref name="AnyElement"/>
1076
+ </oneOrMore>
1077
+ </element>
1078
+ </define>
1079
+ <define name="preface">
1080
+ <element name="preface">
1081
+ <oneOrMore>
1082
+ <choice>
1083
+ <ref name="content"/>
1084
+ <ref name="abstract"/>
1085
+ <ref name="foreword"/>
1086
+ <ref name="introduction"/>
1087
+ <ref name="acknowledgements"/>
1088
+ </choice>
1089
+ </oneOrMore>
1090
+ </element>
1091
+ </define>
1092
+ <define name="foreword">
1093
+ <element name="foreword">
1094
+ <ref name="Content-Section"/>
1095
+ </element>
1096
+ </define>
1097
+ <define name="introduction">
1098
+ <element name="introduction">
1099
+ <ref name="Content-Section"/>
1100
+ </element>
1101
+ </define>
1102
+ <define name="indexsect">
1103
+ <element name="indexsect">
1104
+ <ref name="Content-Section"/>
1105
+ </element>
1106
+ </define>
1107
+ <define name="boilerplate">
1108
+ <element name="boilerplate">
1109
+ <optional>
1110
+ <ref name="copyright-statement"/>
1111
+ </optional>
1112
+ <optional>
1113
+ <ref name="license-statement"/>
1114
+ </optional>
1115
+ <optional>
1116
+ <ref name="legal-statement"/>
1117
+ </optional>
1118
+ <optional>
1119
+ <ref name="feedback-statement"/>
1120
+ </optional>
1121
+ </element>
1122
+ </define>
1123
+ <define name="copyright-statement">
1124
+ <element name="copyright-statement">
1125
+ <ref name="Content-Section"/>
1126
+ </element>
1127
+ </define>
1128
+ <define name="license-statement">
1129
+ <element name="license-statement">
1130
+ <ref name="Content-Section"/>
1131
+ </element>
1132
+ </define>
1133
+ <define name="legal-statement">
1134
+ <element name="legal-statement">
1135
+ <ref name="Content-Section"/>
1136
+ </element>
1137
+ </define>
1138
+ <define name="feedback-statement">
1139
+ <element name="feedback-statement">
1140
+ <ref name="Content-Section"/>
1141
+ </element>
1142
+ </define>
1143
+ <define name="definitions">
1144
+ <element name="definitions">
1145
+ <optional>
1146
+ <attribute name="id">
1147
+ <data type="ID"/>
1148
+ </attribute>
1149
+ </optional>
1150
+ <optional>
1151
+ <attribute name="language"/>
1152
+ </optional>
1153
+ <optional>
1154
+ <attribute name="script"/>
1155
+ </optional>
1156
+ <optional>
1157
+ <attribute name="type"/>
1158
+ </optional>
1159
+ <optional>
1160
+ <attribute name="obligation">
1161
+ <choice>
1162
+ <value>normative</value>
1163
+ <value>informative</value>
1164
+ </choice>
1165
+ </attribute>
1166
+ </optional>
1167
+ <optional>
1168
+ <ref name="section-title"/>
1169
+ </optional>
1170
+ <oneOrMore>
1171
+ <zeroOrMore>
1172
+ <ref name="BasicBlock"/>
1173
+ </zeroOrMore>
1174
+ <zeroOrMore>
1175
+ <ref name="note"/>
1176
+ </zeroOrMore>
1177
+ <ref name="dl"/>
1178
+ </oneOrMore>
1179
+ </element>
1180
+ </define>
1181
+ <define name="content">
1182
+ <element name="clause">
1183
+ <ref name="Content-Section"/>
1184
+ </element>
1185
+ </define>
1186
+ <define name="abstract">
1187
+ <element name="abstract">
1188
+ <ref name="Content-Section"/>
1189
+ </element>
1190
+ </define>
1191
+ <define name="acknowledgements">
1192
+ <element name="acknowledgements">
1193
+ <ref name="Content-Section"/>
1194
+ </element>
1195
+ </define>
1196
+ <define name="content-subsection">
1197
+ <element name="clause">
1198
+ <ref name="Content-Section"/>
1199
+ </element>
1200
+ </define>
1201
+ <define name="Content-Section">
1202
+ <optional>
1203
+ <attribute name="id">
1204
+ <data type="ID"/>
1205
+ </attribute>
1206
+ </optional>
1207
+ <optional>
1208
+ <attribute name="language"/>
1209
+ </optional>
1210
+ <optional>
1211
+ <attribute name="script"/>
1212
+ </optional>
1213
+ <optional>
1214
+ <attribute name="inline-header">
1215
+ <data type="boolean"/>
1216
+ </attribute>
1217
+ </optional>
1218
+ <optional>
1219
+ <attribute name="obligation">
1220
+ <choice>
1221
+ <value>normative</value>
1222
+ <value>informative</value>
1223
+ </choice>
1224
+ </attribute>
1225
+ </optional>
1226
+ <optional>
1227
+ <attribute name="number"/>
1228
+ </optional>
1229
+ <optional>
1230
+ <attribute name="type"/>
1231
+ </optional>
1232
+ <optional>
1233
+ <ref name="section-title"/>
1234
+ </optional>
1235
+ <group>
1236
+ <group>
1237
+ <zeroOrMore>
1238
+ <ref name="BasicBlock"/>
1239
+ </zeroOrMore>
1240
+ <zeroOrMore>
1241
+ <ref name="note"/>
1242
+ </zeroOrMore>
1243
+ </group>
1244
+ <zeroOrMore>
1245
+ <ref name="content-subsection"/>
1246
+ </zeroOrMore>
1247
+ </group>
1248
+ </define>
1249
+ <define name="clause">
1250
+ <element name="clause">
1251
+ <ref name="Clause-Section"/>
1252
+ </element>
1253
+ </define>
1254
+ <define name="Clause-Section">
1255
+ <optional>
1256
+ <attribute name="id">
1257
+ <data type="ID"/>
1258
+ </attribute>
1259
+ </optional>
1260
+ <optional>
1261
+ <attribute name="language"/>
1262
+ </optional>
1263
+ <optional>
1264
+ <attribute name="script"/>
1265
+ </optional>
1266
+ <optional>
1267
+ <attribute name="inline-header">
1268
+ <data type="boolean"/>
1269
+ </attribute>
1270
+ </optional>
1271
+ <optional>
1272
+ <attribute name="obligation">
1273
+ <choice>
1274
+ <value>normative</value>
1275
+ <value>informative</value>
1276
+ </choice>
1277
+ </attribute>
1278
+ </optional>
1279
+ <optional>
1280
+ <attribute name="type"/>
1281
+ </optional>
1282
+ <optional>
1283
+ <attribute name="number"/>
1284
+ </optional>
1285
+ <optional>
1286
+ <ref name="section-title"/>
1287
+ </optional>
1288
+ <group>
1289
+ <choice>
1290
+ <group>
1291
+ <zeroOrMore>
1292
+ <ref name="BasicBlock"/>
1293
+ </zeroOrMore>
1294
+ <zeroOrMore>
1295
+ <ref name="note"/>
1296
+ </zeroOrMore>
1297
+ </group>
1298
+ <ref name="amend"/>
1299
+ </choice>
1300
+ <zeroOrMore>
1301
+ <choice>
1302
+ <ref name="clause-subsection"/>
1303
+ <ref name="terms"/>
1304
+ <ref name="definitions"/>
1305
+ </choice>
1306
+ </zeroOrMore>
1307
+ </group>
1308
+ </define>
1309
+ <define name="Annex-Section">
1310
+ <optional>
1311
+ <attribute name="id">
1312
+ <data type="ID"/>
1313
+ </attribute>
1314
+ </optional>
1315
+ <optional>
1316
+ <attribute name="language"/>
1317
+ </optional>
1318
+ <optional>
1319
+ <attribute name="script"/>
1320
+ </optional>
1321
+ <optional>
1322
+ <attribute name="inline-header">
1323
+ <data type="boolean"/>
1324
+ </attribute>
1325
+ </optional>
1326
+ <optional>
1327
+ <attribute name="obligation">
1328
+ <choice>
1329
+ <value>normative</value>
1330
+ <value>informative</value>
1331
+ </choice>
1332
+ </attribute>
1333
+ </optional>
1334
+ <optional>
1335
+ <ref name="section-title"/>
1336
+ </optional>
1337
+ <group>
1338
+ <group>
1339
+ <zeroOrMore>
1340
+ <ref name="BasicBlock"/>
1341
+ </zeroOrMore>
1342
+ <zeroOrMore>
1343
+ <ref name="note"/>
1344
+ </zeroOrMore>
1345
+ </group>
1346
+ <zeroOrMore>
1347
+ <choice>
1348
+ <ref name="annex-subsection"/>
1349
+ <ref name="terms"/>
1350
+ <ref name="definitions"/>
1351
+ <ref name="references"/>
1352
+ </choice>
1353
+ </zeroOrMore>
1354
+ </group>
1355
+ </define>
1356
+ <define name="clause-subsection">
1357
+ <element name="clause">
1358
+ <ref name="Clause-Section"/>
1359
+ </element>
1360
+ </define>
1361
+ <define name="annex-subsection">
1362
+ <element name="clause">
1363
+ <ref name="Annex-Section"/>
1364
+ </element>
1365
+ </define>
1366
+ <define name="annex">
1367
+ <element name="annex">
1368
+ <ref name="Annex-Section"/>
1369
+ </element>
1370
+ </define>
1371
+ <define name="terms">
1372
+ <element name="terms">
1373
+ <optional>
1374
+ <attribute name="id">
1375
+ <data type="ID"/>
1376
+ </attribute>
1377
+ </optional>
1378
+ <optional>
1379
+ <attribute name="language"/>
1380
+ </optional>
1381
+ <optional>
1382
+ <attribute name="script"/>
1383
+ </optional>
1384
+ <optional>
1385
+ <attribute name="type"/>
1386
+ </optional>
1387
+ <optional>
1388
+ <attribute name="number"/>
1389
+ </optional>
1390
+ <optional>
1391
+ <attribute name="obligation">
1392
+ <choice>
1393
+ <value>normative</value>
1394
+ <value>informative</value>
1395
+ </choice>
1396
+ </attribute>
1397
+ </optional>
1398
+ <optional>
1399
+ <ref name="section-title"/>
1400
+ </optional>
1401
+ <zeroOrMore>
1402
+ <ref name="BasicBlock"/>
1403
+ </zeroOrMore>
1404
+ <zeroOrMore>
1405
+ <ref name="note"/>
1406
+ </zeroOrMore>
1407
+ <choice>
1408
+ <oneOrMore>
1409
+ <ref name="term"/>
1410
+ </oneOrMore>
1411
+ <group>
1412
+ <zeroOrMore>
1413
+ <ref name="terms"/>
1414
+ </zeroOrMore>
1415
+ <optional>
1416
+ <ref name="definitions"/>
1417
+ </optional>
1418
+ </group>
1419
+ </choice>
1420
+ </element>
1421
+ </define>
1422
+ <define name="term">
1423
+ <element name="term">
1424
+ <optional>
1425
+ <attribute name="id">
1426
+ <data type="ID"/>
1427
+ </attribute>
1428
+ </optional>
1429
+ <oneOrMore>
1430
+ <ref name="preferred"/>
1431
+ </oneOrMore>
1432
+ <zeroOrMore>
1433
+ <ref name="admitted"/>
1434
+ </zeroOrMore>
1435
+ <zeroOrMore>
1436
+ <ref name="related"/>
1437
+ </zeroOrMore>
1438
+ <zeroOrMore>
1439
+ <ref name="deprecates"/>
1440
+ </zeroOrMore>
1441
+ <optional>
1442
+ <ref name="termdomain"/>
1443
+ </optional>
1444
+ <zeroOrMore>
1445
+ <ref name="termgrammar"/>
1446
+ </zeroOrMore>
1447
+ <ref name="definition"/>
1448
+ <zeroOrMore>
1449
+ <ref name="termnote"/>
1450
+ </zeroOrMore>
1451
+ <zeroOrMore>
1452
+ <ref name="termexample"/>
1453
+ </zeroOrMore>
1454
+ <zeroOrMore>
1455
+ <ref name="termsource"/>
1456
+ </zeroOrMore>
1457
+ </element>
1458
+ </define>
1459
+ <define name="preferred">
1460
+ <element name="preferred">
1461
+ <oneOrMore>
1462
+ <ref name="TextElement"/>
1463
+ </oneOrMore>
1464
+ </element>
1465
+ </define>
1466
+ <define name="admitted">
1467
+ <element name="admitted">
1468
+ <oneOrMore>
1469
+ <ref name="TextElement"/>
1470
+ </oneOrMore>
1471
+ </element>
1472
+ </define>
1473
+ <define name="related">
1474
+ <element name="related">
1475
+ <optional>
1476
+ <attribute name="type">
1477
+ <choice>
1478
+ <value>compare</value>
1479
+ <value>contrast</value>
1480
+ <value>see</value>
1481
+ </choice>
1482
+ </attribute>
1483
+ </optional>
1484
+ <oneOrMore>
1485
+ <ref name="TextElement"/>
1486
+ </oneOrMore>
1487
+ </element>
1488
+ </define>
1489
+ <define name="deprecates">
1490
+ <element name="deprecates">
1491
+ <oneOrMore>
1492
+ <ref name="TextElement"/>
1493
+ </oneOrMore>
1494
+ </element>
1495
+ </define>
1496
+ <define name="termdomain">
1497
+ <element name="domain">
1498
+ <oneOrMore>
1499
+ <ref name="TextElement"/>
1500
+ </oneOrMore>
1501
+ </element>
1502
+ </define>
1503
+ <define name="termgrammar">
1504
+ <element name="grammar">
1505
+ <oneOrMore>
1506
+ <ref name="TextElement"/>
1507
+ </oneOrMore>
1508
+ </element>
1509
+ </define>
1510
+ <define name="definition">
1511
+ <element name="definition">
1512
+ <oneOrMore>
1513
+ <choice>
1514
+ <ref name="paragraph"/>
1515
+ <ref name="figure"/>
1516
+ <ref name="formula"/>
1517
+ </choice>
1518
+ </oneOrMore>
1519
+ </element>
1520
+ </define>
1521
+ <define name="termnote">
1522
+ <element name="termnote">
1523
+ <attribute name="id">
1524
+ <data type="ID"/>
1525
+ </attribute>
1526
+ <optional>
1527
+ <attribute name="unnumbered">
1528
+ <data type="boolean"/>
1529
+ </attribute>
1530
+ </optional>
1531
+ <optional>
1532
+ <attribute name="number"/>
1533
+ </optional>
1534
+ <optional>
1535
+ <attribute name="subsequence"/>
1536
+ </optional>
1537
+ <optional>
1538
+ <attribute name="keep-with-next">
1539
+ <data type="boolean"/>
1540
+ </attribute>
1541
+ </optional>
1542
+ <optional>
1543
+ <attribute name="keep-lines-together">
1544
+ <data type="boolean"/>
1545
+ </attribute>
1546
+ </optional>
1547
+ <oneOrMore>
1548
+ <choice>
1549
+ <ref name="paragraph"/>
1550
+ <ref name="ul"/>
1551
+ <ref name="ol"/>
1552
+ <ref name="dl"/>
1553
+ <ref name="formula"/>
1554
+ </choice>
1555
+ </oneOrMore>
1556
+ </element>
1557
+ </define>
1558
+ <define name="termexample">
1559
+ <element name="termexample">
1560
+ <attribute name="id">
1561
+ <data type="ID"/>
1562
+ </attribute>
1563
+ <ref name="paragraph"/>
1564
+ </element>
1565
+ </define>
1566
+ <define name="termsource">
1567
+ <element name="termsource">
1568
+ <attribute name="status">
1569
+ <choice>
1570
+ <value>identical</value>
1571
+ <value>modified</value>
1572
+ </choice>
1573
+ </attribute>
1574
+ <ref name="origin"/>
1575
+ <optional>
1576
+ <ref name="modification"/>
1577
+ </optional>
1578
+ </element>
1579
+ </define>
1580
+ <define name="origin">
1581
+ <element name="origin">
1582
+ <choice>
1583
+ <ref name="erefType"/>
1584
+ <ref name="termref"/>
1585
+ </choice>
1586
+ </element>
1587
+ </define>
1588
+ <define name="modification">
1589
+ <element name="modification">
1590
+ <ref name="paragraph"/>
1591
+ </element>
1592
+ </define>
1593
+ <define name="termref">
1594
+ <element name="termref">
1595
+ <attribute name="base"/>
1596
+ <attribute name="target"/>
1597
+ <optional>
1598
+ <text/>
1599
+ </optional>
1600
+ </element>
1601
+ </define>
1602
+ <define name="structuredidentifier">
1603
+ <element name="structuredidentifier">
1604
+ <optional>
1605
+ <attribute name="type"/>
1606
+ </optional>
1607
+ <oneOrMore>
1608
+ <element name="agency">
1609
+ <text/>
1610
+ </element>
1611
+ </oneOrMore>
1612
+ <optional>
1613
+ <element name="class">
1614
+ <text/>
1615
+ </element>
1616
+ </optional>
1617
+ <element name="docnumber">
1618
+ <text/>
1619
+ </element>
1620
+ <optional>
1621
+ <element name="partnumber">
1622
+ <text/>
1623
+ </element>
1624
+ </optional>
1625
+ <optional>
1626
+ <element name="edition">
1627
+ <text/>
1628
+ </element>
1629
+ </optional>
1630
+ <optional>
1631
+ <element name="version">
1632
+ <text/>
1633
+ </element>
1634
+ </optional>
1635
+ <optional>
1636
+ <element name="supplementtype">
1637
+ <text/>
1638
+ </element>
1639
+ </optional>
1640
+ <optional>
1641
+ <element name="supplementnumber">
1642
+ <text/>
1643
+ </element>
1644
+ </optional>
1645
+ <optional>
1646
+ <element name="language">
1647
+ <text/>
1648
+ </element>
1649
+ </optional>
1650
+ <optional>
1651
+ <element name="year">
1652
+ <text/>
1653
+ </element>
1654
+ </optional>
1655
+ </element>
1656
+ </define>
1657
+ <define name="term-clause">
1658
+ <element name="clause">
1659
+ <optional>
1660
+ <attribute name="id">
1661
+ <data type="ID"/>
1662
+ </attribute>
1663
+ </optional>
1664
+ <optional>
1665
+ <attribute name="language"/>
1666
+ </optional>
1667
+ <optional>
1668
+ <attribute name="script"/>
1669
+ </optional>
1670
+ <optional>
1671
+ <attribute name="inline-header">
1672
+ <data type="boolean"/>
1673
+ </attribute>
1674
+ </optional>
1675
+ <optional>
1676
+ <attribute name="obligation">
1677
+ <choice>
1678
+ <value>normative</value>
1679
+ <value>informative</value>
1680
+ </choice>
1681
+ </attribute>
1682
+ </optional>
1683
+ <optional>
1684
+ <ref name="section-title"/>
1685
+ </optional>
1686
+ <zeroOrMore>
1687
+ <ref name="BasicBlock"/>
1688
+ </zeroOrMore>
1689
+ <zeroOrMore>
1690
+ <ref name="note"/>
1691
+ </zeroOrMore>
1692
+ <zeroOrMore>
1693
+ <choice>
1694
+ <ref name="term-clause"/>
1695
+ <ref name="terms"/>
1696
+ <ref name="definitions"/>
1697
+ </choice>
1698
+ </zeroOrMore>
1699
+ </element>
1700
+ </define>
1701
+ <define name="termdocsource">
1702
+ <element name="termdocsource">
1703
+ <ref name="CitationType"/>
1704
+ </element>
1705
+ </define>
1706
+ <define name="amend">
1707
+ <element name="amend">
1708
+ <optional>
1709
+ <attribute name="id">
1710
+ <data type="ID"/>
1711
+ </attribute>
1712
+ </optional>
1713
+ <attribute name="change">
1714
+ <choice>
1715
+ <value>add</value>
1716
+ <value>modify</value>
1717
+ <value>delete</value>
1718
+ <value>replace</value>
1719
+ </choice>
1720
+ </attribute>
1721
+ <optional>
1722
+ <attribute name="path"/>
1723
+ </optional>
1724
+ <optional>
1725
+ <attribute name="path_end"/>
1726
+ </optional>
1727
+ <optional>
1728
+ <attribute name="title"/>
1729
+ </optional>
1730
+ <optional>
1731
+ <element name="location">
1732
+ <zeroOrMore>
1733
+ <ref name="locality"/>
1734
+ </zeroOrMore>
1735
+ </element>
1736
+ </optional>
1737
+ <zeroOrMore>
1738
+ <ref name="autonumber"/>
1739
+ </zeroOrMore>
1740
+ <optional>
1741
+ <element name="description">
1742
+ <zeroOrMore>
1743
+ <ref name="BasicBlock"/>
1744
+ </zeroOrMore>
1745
+ </element>
1746
+ </optional>
1747
+ <optional>
1748
+ <element name="newcontent">
1749
+ <optional>
1750
+ <attribute name="id">
1751
+ <data type="ID"/>
1752
+ </attribute>
1753
+ </optional>
1754
+ <zeroOrMore>
1755
+ <ref name="BasicBlock"/>
1756
+ </zeroOrMore>
1757
+ </element>
1758
+ </optional>
1759
+ <optional>
1760
+ <element name="description">
1761
+ <zeroOrMore>
1762
+ <ref name="BasicBlock"/>
1763
+ </zeroOrMore>
1764
+ </element>
1765
+ </optional>
1766
+ </element>
1767
+ </define>
1768
+ <define name="autonumber">
1769
+ <element name="autonumber">
1770
+ <attribute name="type">
1771
+ <choice>
1772
+ <value>requirement</value>
1773
+ <value>recommendation</value>
1774
+ <value>permission</value>
1775
+ <value>table</value>
1776
+ <value>figure</value>
1777
+ <value>admonition</value>
1778
+ <value>formula</value>
1779
+ <value>sourcecode</value>
1780
+ <value>example</value>
1781
+ <value>note</value>
1782
+ </choice>
1783
+ </attribute>
1784
+ <text/>
1785
+ </element>
1786
+ </define>
1787
+ <define name="imagemap">
1788
+ <element name="imagemap">
1789
+ <ref name="figure"/>
1790
+ <zeroOrMore>
1791
+ <element name="area">
1792
+ <attribute name="type">
1793
+ <choice>
1794
+ <value>rect</value>
1795
+ <value>circle</value>
1796
+ <value>ellipse</value>
1797
+ <value>poly</value>
1798
+ </choice>
1799
+ </attribute>
1800
+ <choice>
1801
+ <ref name="xref"/>
1802
+ <ref name="hyperlink"/>
1803
+ <ref name="eref"/>
1804
+ </choice>
1805
+ <oneOrMore>
1806
+ <element name="coords">
1807
+ <attribute name="x">
1808
+ <data type="float"/>
1809
+ </attribute>
1810
+ <attribute name="y">
1811
+ <data type="float"/>
1812
+ </attribute>
1813
+ </element>
1814
+ </oneOrMore>
1815
+ <optional>
1816
+ <element name="radius">
1817
+ <attribute name="x">
1818
+ <data type="float"/>
1819
+ </attribute>
1820
+ <optional>
1821
+ <attribute name="y">
1822
+ <data type="float"/>
1823
+ </attribute>
1824
+ </optional>
1825
+ </element>
1826
+ </optional>
1827
+ </element>
1828
+ </zeroOrMore>
1829
+ </element>
1830
+ </define>
1831
+ <define name="svgmap">
1832
+ <element name="svgmap">
1833
+ <ref name="figure"/>
1834
+ <zeroOrMore>
1835
+ <element name="target">
1836
+ <attribute name="href">
1837
+ <data type="anyURI"/>
1838
+ </attribute>
1839
+ <choice>
1840
+ <ref name="xref"/>
1841
+ <ref name="hyperlink"/>
1842
+ <ref name="eref"/>
1843
+ </choice>
1844
+ </element>
1845
+ </zeroOrMore>
1846
+ </element>
1847
+ </define>
1848
+ <define name="ul_li">
1849
+ <element name="li">
1850
+ <optional>
1851
+ <attribute name="id">
1852
+ <data type="ID"/>
1853
+ </attribute>
1854
+ </optional>
1855
+ <optional>
1856
+ <attribute name="uncheckedcheckbox">
1857
+ <data type="boolean"/>
1858
+ </attribute>
1859
+ </optional>
1860
+ <optional>
1861
+ <attribute name="checkedcheckbox">
1862
+ <data type="boolean"/>
1863
+ </attribute>
1864
+ </optional>
1865
+ <oneOrMore>
1866
+ <ref name="BasicBlock"/>
1867
+ </oneOrMore>
1868
+ </element>
1869
+ </define>
1870
+ </grammar>