metanorma-ribose 1.6.0

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