metanorma-bsi 0.0.1

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