metanorma-ietf 1.0.10 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macos.yml +3 -2
  3. data/.github/workflows/ubuntu.yml +3 -2
  4. data/.github/workflows/windows.yml +4 -3
  5. data/README.adoc +9 -0
  6. data/lib/asciidoctor/ietf/basicdoc.rng +1045 -0
  7. data/lib/asciidoctor/ietf/biblio.rng +1142 -0
  8. data/lib/asciidoctor/ietf/blocks.rb +76 -0
  9. data/lib/asciidoctor/ietf/converter.rb +211 -0
  10. data/lib/asciidoctor/ietf/front.rb +143 -0
  11. data/lib/asciidoctor/ietf/ietf.rng +882 -0
  12. data/lib/asciidoctor/ietf/isodoc.rng +514 -0
  13. data/lib/asciidoctor/ietf/isostandard.rng +860 -0
  14. data/lib/asciidoctor/ietf/reqt.rng +171 -0
  15. data/lib/asciidoctor/ietf/validate.rb +84 -0
  16. data/lib/isodoc/ietf/blocks.rb +215 -0
  17. data/lib/isodoc/ietf/cleanup.rb +220 -0
  18. data/lib/isodoc/ietf/footnotes.rb +70 -0
  19. data/lib/isodoc/ietf/front.rb +232 -0
  20. data/lib/isodoc/ietf/inline.rb +136 -0
  21. data/lib/isodoc/ietf/metadata.rb +62 -0
  22. data/lib/isodoc/ietf/references.rb +129 -0
  23. data/lib/isodoc/ietf/reqt.rb +74 -0
  24. data/lib/isodoc/ietf/rfc_convert.rb +60 -0
  25. data/lib/isodoc/ietf/section.rb +162 -0
  26. data/lib/isodoc/ietf/table.rb +43 -0
  27. data/lib/isodoc/ietf/terms.rb +65 -0
  28. data/lib/metanorma-ietf.rb +2 -1
  29. data/lib/metanorma/ietf/processor.rb +16 -37
  30. data/lib/metanorma/ietf/version.rb +1 -1
  31. data/metanorma-ietf.gemspec +3 -3
  32. metadata +36 -36
  33. data/Gemfile.lock +0 -327
  34. data/lib/asciidoctor/rfc.rb +0 -8
  35. data/lib/asciidoctor/rfc/common/base.rb +0 -544
  36. data/lib/asciidoctor/rfc/common/front.rb +0 -120
  37. data/lib/asciidoctor/rfc/common/validate.rb +0 -31
  38. data/lib/asciidoctor/rfc/v2/base.rb +0 -380
  39. data/lib/asciidoctor/rfc/v2/blocks.rb +0 -299
  40. data/lib/asciidoctor/rfc/v2/converter.rb +0 -60
  41. data/lib/asciidoctor/rfc/v2/front.rb +0 -69
  42. data/lib/asciidoctor/rfc/v2/inline_anchor.rb +0 -111
  43. data/lib/asciidoctor/rfc/v2/lists.rb +0 -135
  44. data/lib/asciidoctor/rfc/v2/table.rb +0 -116
  45. data/lib/asciidoctor/rfc/v2/validate.rng +0 -716
  46. data/lib/asciidoctor/rfc/v3/base.rb +0 -330
  47. data/lib/asciidoctor/rfc/v3/blocks.rb +0 -246
  48. data/lib/asciidoctor/rfc/v3/converter.rb +0 -62
  49. data/lib/asciidoctor/rfc/v3/front.rb +0 -122
  50. data/lib/asciidoctor/rfc/v3/inline_anchor.rb +0 -89
  51. data/lib/asciidoctor/rfc/v3/lists.rb +0 -176
  52. data/lib/asciidoctor/rfc/v3/svg.rng +0 -9081
  53. data/lib/asciidoctor/rfc/v3/table.rb +0 -65
  54. data/lib/asciidoctor/rfc/v3/validate.rng +0 -2143
@@ -0,0 +1,860 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3
+ <include href="isodoc.rng">
4
+ <start>
5
+ <ref name="iso-standard"/>
6
+ </start>
7
+ <define name="organization">
8
+ <element name="organization">
9
+ <oneOrMore>
10
+ <ref name="orgname"/>
11
+ </oneOrMore>
12
+ <optional>
13
+ <ref name="abbreviation"/>
14
+ </optional>
15
+ <optional>
16
+ <ref name="uri"/>
17
+ </optional>
18
+ <zeroOrMore>
19
+ <ref name="org-identifier"/>
20
+ </zeroOrMore>
21
+ <zeroOrMore>
22
+ <ref name="contact"/>
23
+ </zeroOrMore>
24
+ <optional>
25
+ <ref name="technical-committee"/>
26
+ </optional>
27
+ <optional>
28
+ <ref name="subcommittee"/>
29
+ </optional>
30
+ <optional>
31
+ <ref name="workgroup"/>
32
+ </optional>
33
+ <optional>
34
+ <ref name="secretariat"/>
35
+ </optional>
36
+ </element>
37
+ </define>
38
+ <define name="BibDataExtensionType">
39
+ <optional>
40
+ <ref name="doctype"/>
41
+ </optional>
42
+ <ref name="editorialgroup"/>
43
+ <zeroOrMore>
44
+ <ref name="ics"/>
45
+ </zeroOrMore>
46
+ <ref name="structuredidentifier"/>
47
+ </define>
48
+ <define name="bdate">
49
+ <element name="date">
50
+ <attribute name="type">
51
+ <choice>
52
+ <ref name="BibliographicDateType"/>
53
+ <text/>
54
+ </choice>
55
+ </attribute>
56
+ <choice>
57
+ <group>
58
+ <element name="from">
59
+ <ref name="ISO8601Date"/>
60
+ </element>
61
+ <optional>
62
+ <element name="to">
63
+ <ref name="ISO8601Date"/>
64
+ </element>
65
+ </optional>
66
+ </group>
67
+ <element name="on">
68
+ <choice>
69
+ <ref name="ISO8601Date"/>
70
+ <value>--</value>
71
+ </choice>
72
+ </element>
73
+ </choice>
74
+ </element>
75
+ </define>
76
+ <define name="sections">
77
+ <element name="sections">
78
+ <ref name="clause"/>
79
+ <optional>
80
+ <choice>
81
+ <ref name="term-clause"/>
82
+ <ref name="terms"/>
83
+ </choice>
84
+ </optional>
85
+ <optional>
86
+ <ref name="definitions"/>
87
+ </optional>
88
+ <oneOrMore>
89
+ <ref name="clause"/>
90
+ </oneOrMore>
91
+ </element>
92
+ </define>
93
+ <define name="Basic-Section">
94
+ <optional>
95
+ <attribute name="id">
96
+ <data type="ID"/>
97
+ </attribute>
98
+ </optional>
99
+ <optional>
100
+ <attribute name="language"/>
101
+ </optional>
102
+ <optional>
103
+ <attribute name="script"/>
104
+ </optional>
105
+ <optional>
106
+ <attribute name="obligation">
107
+ <choice>
108
+ <value>normative</value>
109
+ <value>informative</value>
110
+ </choice>
111
+ </attribute>
112
+ </optional>
113
+ <optional>
114
+ <ref name="section-title"/>
115
+ </optional>
116
+ <group>
117
+ <oneOrMore>
118
+ <ref name="BasicBlock"/>
119
+ </oneOrMore>
120
+ <zeroOrMore>
121
+ <ref name="note"/>
122
+ </zeroOrMore>
123
+ </group>
124
+ </define>
125
+ <define name="Content-Section">
126
+ <optional>
127
+ <attribute name="id">
128
+ <data type="ID"/>
129
+ </attribute>
130
+ </optional>
131
+ <optional>
132
+ <attribute name="language"/>
133
+ </optional>
134
+ <optional>
135
+ <attribute name="script"/>
136
+ </optional>
137
+ <optional>
138
+ <attribute name="obligation">
139
+ <choice>
140
+ <value>normative</value>
141
+ <value>informative</value>
142
+ </choice>
143
+ </attribute>
144
+ </optional>
145
+ <optional>
146
+ <ref name="section-title"/>
147
+ </optional>
148
+ <choice>
149
+ <group>
150
+ <oneOrMore>
151
+ <ref name="BasicBlock"/>
152
+ </oneOrMore>
153
+ <zeroOrMore>
154
+ <ref name="note"/>
155
+ </zeroOrMore>
156
+ </group>
157
+ <oneOrMore>
158
+ <ref name="content-subsection"/>
159
+ </oneOrMore>
160
+ </choice>
161
+ </define>
162
+ <define name="Clause-Section">
163
+ <optional>
164
+ <attribute name="id">
165
+ <data type="ID"/>
166
+ </attribute>
167
+ </optional>
168
+ <optional>
169
+ <attribute name="language"/>
170
+ </optional>
171
+ <optional>
172
+ <attribute name="script"/>
173
+ </optional>
174
+ <optional>
175
+ <attribute name="inline-header">
176
+ <data type="boolean"/>
177
+ </attribute>
178
+ </optional>
179
+ <optional>
180
+ <attribute name="obligation">
181
+ <choice>
182
+ <value>normative</value>
183
+ <value>informative</value>
184
+ </choice>
185
+ </attribute>
186
+ </optional>
187
+ <optional>
188
+ <ref name="section-title"/>
189
+ </optional>
190
+ <choice>
191
+ <group>
192
+ <oneOrMore>
193
+ <ref name="BasicBlock"/>
194
+ </oneOrMore>
195
+ <zeroOrMore>
196
+ <ref name="note"/>
197
+ </zeroOrMore>
198
+ </group>
199
+ <oneOrMore>
200
+ <ref name="clause-subsection"/>
201
+ </oneOrMore>
202
+ </choice>
203
+ </define>
204
+ <define name="references">
205
+ <element name="references">
206
+ <optional>
207
+ <attribute name="id">
208
+ <data type="ID"/>
209
+ </attribute>
210
+ </optional>
211
+ <optional>
212
+ <attribute name="obligation">
213
+ <choice>
214
+ <value>normative</value>
215
+ <value>informative</value>
216
+ </choice>
217
+ </attribute>
218
+ </optional>
219
+ <optional>
220
+ <ref name="section-title"/>
221
+ </optional>
222
+ <zeroOrMore>
223
+ <ref name="BasicBlock"/>
224
+ </zeroOrMore>
225
+ <zeroOrMore>
226
+ <ref name="bibitem"/>
227
+ <zeroOrMore>
228
+ <ref name="note"/>
229
+ </zeroOrMore>
230
+ </zeroOrMore>
231
+ <zeroOrMore>
232
+ <ref name="references"/>
233
+ </zeroOrMore>
234
+ </element>
235
+ </define>
236
+ <define name="definitions">
237
+ <element name="definitions">
238
+ <optional>
239
+ <attribute name="id">
240
+ <data type="ID"/>
241
+ </attribute>
242
+ </optional>
243
+ <optional>
244
+ <attribute name="language"/>
245
+ </optional>
246
+ <optional>
247
+ <attribute name="script"/>
248
+ </optional>
249
+ <optional>
250
+ <attribute name="obligation">
251
+ <choice>
252
+ <value>normative</value>
253
+ <value>informative</value>
254
+ </choice>
255
+ </attribute>
256
+ </optional>
257
+ <zeroOrMore>
258
+ <ref name="BasicBlock"/>
259
+ </zeroOrMore>
260
+ <ref name="dl"/>
261
+ </element>
262
+ </define>
263
+ <define name="terms">
264
+ <element name="terms">
265
+ <optional>
266
+ <attribute name="id">
267
+ <data type="ID"/>
268
+ </attribute>
269
+ </optional>
270
+ <optional>
271
+ <attribute name="language"/>
272
+ </optional>
273
+ <optional>
274
+ <attribute name="script"/>
275
+ </optional>
276
+ <optional>
277
+ <attribute name="obligation">
278
+ <choice>
279
+ <value>normative</value>
280
+ <value>informative</value>
281
+ </choice>
282
+ </attribute>
283
+ </optional>
284
+ <optional>
285
+ <ref name="section-title"/>
286
+ </optional>
287
+ <zeroOrMore>
288
+ <ref name="BasicBlock"/>
289
+ </zeroOrMore>
290
+ <choice>
291
+ <oneOrMore>
292
+ <ref name="term"/>
293
+ </oneOrMore>
294
+ <group>
295
+ <zeroOrMore>
296
+ <ref name="terms"/>
297
+ </zeroOrMore>
298
+ <optional>
299
+ <ref name="definitions"/>
300
+ </optional>
301
+ </group>
302
+ </choice>
303
+ </element>
304
+ </define>
305
+ <define name="term">
306
+ <element name="term">
307
+ <optional>
308
+ <attribute name="id">
309
+ <data type="ID"/>
310
+ </attribute>
311
+ </optional>
312
+ <ref name="preferred"/>
313
+ <zeroOrMore>
314
+ <ref name="admitted"/>
315
+ </zeroOrMore>
316
+ <zeroOrMore>
317
+ <ref name="deprecates"/>
318
+ </zeroOrMore>
319
+ <optional>
320
+ <ref name="termdomain"/>
321
+ </optional>
322
+ <ref name="definition"/>
323
+ <zeroOrMore>
324
+ <ref name="termnote"/>
325
+ </zeroOrMore>
326
+ <zeroOrMore>
327
+ <ref name="termexample"/>
328
+ </zeroOrMore>
329
+ <zeroOrMore>
330
+ <ref name="termsource"/>
331
+ </zeroOrMore>
332
+ </element>
333
+ </define>
334
+ <define name="definition">
335
+ <element name="definition">
336
+ <oneOrMore>
337
+ <choice>
338
+ <ref name="paragraph"/>
339
+ <ref name="figure"/>
340
+ <ref name="formula"/>
341
+ </choice>
342
+ </oneOrMore>
343
+ </element>
344
+ </define>
345
+ <define name="annex">
346
+ <element name="annex">
347
+ <optional>
348
+ <attribute name="id">
349
+ <data type="ID"/>
350
+ </attribute>
351
+ </optional>
352
+ <optional>
353
+ <attribute name="language"/>
354
+ </optional>
355
+ <optional>
356
+ <attribute name="script"/>
357
+ </optional>
358
+ <optional>
359
+ <attribute name="inline-header">
360
+ <data type="boolean"/>
361
+ </attribute>
362
+ </optional>
363
+ <optional>
364
+ <attribute name="obligation">
365
+ <choice>
366
+ <value>normative</value>
367
+ <value>informative</value>
368
+ </choice>
369
+ </attribute>
370
+ </optional>
371
+ <optional>
372
+ <ref name="section-title"/>
373
+ </optional>
374
+ <zeroOrMore>
375
+ <!--
376
+ allow hanging paragraps in annexes: they introduce lists
377
+ ( paragraph-with-footnote | table | note | formula | admonition | ol | ul | dl | figure | quote | sourcecode | review | example )*,
378
+ -->
379
+ <ref name="BasicBlock"/>
380
+ </zeroOrMore>
381
+ <zeroOrMore>
382
+ <ref name="note"/>
383
+ </zeroOrMore>
384
+ <zeroOrMore>
385
+ <ref name="clause-hanging-paragraph-with-footnote"/>
386
+ </zeroOrMore>
387
+ <zeroOrMore>
388
+ <ref name="annex-appendix"/>
389
+ </zeroOrMore>
390
+ </element>
391
+ </define>
392
+ <define name="figure">
393
+ <element name="figure">
394
+ <attribute name="id">
395
+ <data type="ID"/>
396
+ </attribute>
397
+ <optional>
398
+ <ref name="tname"/>
399
+ </optional>
400
+ <choice>
401
+ <ref name="image"/>
402
+ <ref name="pre"/>
403
+ <oneOrMore>
404
+ <ref name="subfigure"/>
405
+ </oneOrMore>
406
+ </choice>
407
+ <zeroOrMore>
408
+ <ref name="fn"/>
409
+ </zeroOrMore>
410
+ <optional>
411
+ <ref name="dl"/>
412
+ </optional>
413
+ <zeroOrMore>
414
+ <ref name="note"/>
415
+ </zeroOrMore>
416
+ </element>
417
+ </define>
418
+ <define name="li">
419
+ <element name="li">
420
+ <group>
421
+ <optional>
422
+ <!-- ( paragraph-with-footnote | table | note | formula | admonition | ol | ul | dl | quote | sourcecode | review | example )+ -->
423
+ <attribute name="id">
424
+ <data type="ID"/>
425
+ </attribute>
426
+ </optional>
427
+ <oneOrMore>
428
+ <ref name="BasicBlock"/>
429
+ </oneOrMore>
430
+ </group>
431
+ <!-- exclude figures? -->
432
+ </element>
433
+ </define>
434
+ <define name="dd">
435
+ <element name="dd">
436
+ <zeroOrMore>
437
+ <!--
438
+ ( paragraph-with-footnote | table | note | formula | admonition | ol | ul | dl | quote | sourcecode | review | example )*
439
+ exclude figures?
440
+ -->
441
+ <ref name="BasicBlock"/>
442
+ </zeroOrMore>
443
+ </element>
444
+ </define>
445
+ <define name="admonition">
446
+ <element name="admonition">
447
+ <attribute name="id">
448
+ <data type="ID"/>
449
+ </attribute>
450
+ <attribute name="type">
451
+ <choice>
452
+ <value>danger</value>
453
+ <value>caution</value>
454
+ <value>warning</value>
455
+ <value>important</value>
456
+ <value>safety precautions</value>
457
+ </choice>
458
+ </attribute>
459
+ <oneOrMore>
460
+ <ref name="paragraph-with-footnote"/>
461
+ </oneOrMore>
462
+ <zeroOrMore>
463
+ <ref name="note"/>
464
+ </zeroOrMore>
465
+ </element>
466
+ </define>
467
+ <define name="xref">
468
+ <element name="xref">
469
+ <attribute name="target">
470
+ <data type="IDREF"/>
471
+ </attribute>
472
+ <text/>
473
+ </element>
474
+ </define>
475
+ <define name="hyperlink">
476
+ <element name="link">
477
+ <attribute name="target">
478
+ <data type="anyURI"/>
479
+ </attribute>
480
+ <text/>
481
+ </element>
482
+ </define>
483
+ <define name="thead">
484
+ <element name="thead">
485
+ <oneOrMore>
486
+ <ref name="tr"/>
487
+ </oneOrMore>
488
+ </element>
489
+ </define>
490
+ <define name="td">
491
+ <element name="td">
492
+ <optional>
493
+ <attribute name="colspan"/>
494
+ </optional>
495
+ <optional>
496
+ <attribute name="rowspan"/>
497
+ </optional>
498
+ <optional>
499
+ <attribute name="align">
500
+ <choice>
501
+ <value>left</value>
502
+ <value>right</value>
503
+ <value>center</value>
504
+ </choice>
505
+ </attribute>
506
+ </optional>
507
+ <choice>
508
+ <zeroOrMore>
509
+ <choice>
510
+ <ref name="TextElement"/>
511
+ <ref name="fn"/>
512
+ </choice>
513
+ </zeroOrMore>
514
+ <oneOrMore>
515
+ <ref name="paragraph-with-footnote"/>
516
+ </oneOrMore>
517
+ </choice>
518
+ </element>
519
+ </define>
520
+ <define name="th">
521
+ <element name="th">
522
+ <optional>
523
+ <attribute name="colspan"/>
524
+ </optional>
525
+ <optional>
526
+ <attribute name="rowspan"/>
527
+ </optional>
528
+ <optional>
529
+ <attribute name="align">
530
+ <choice>
531
+ <value>left</value>
532
+ <value>right</value>
533
+ <value>center</value>
534
+ </choice>
535
+ </attribute>
536
+ </optional>
537
+ <choice>
538
+ <zeroOrMore>
539
+ <choice>
540
+ <ref name="TextElement"/>
541
+ <ref name="fn"/>
542
+ </choice>
543
+ </zeroOrMore>
544
+ <oneOrMore>
545
+ <ref name="paragraph-with-footnote"/>
546
+ </oneOrMore>
547
+ </choice>
548
+ </element>
549
+ </define>
550
+ <define name="table-note">
551
+ <element name="note">
552
+ <optional>
553
+ <attribute name="id">
554
+ <data type="ID"/>
555
+ </attribute>
556
+ </optional>
557
+ <ref name="paragraph"/>
558
+ </element>
559
+ </define>
560
+ <define name="preface">
561
+ <element name="preface">
562
+ <optional>
563
+ <ref name="preface_abstract"/>
564
+ </optional>
565
+ <ref name="foreword"/>
566
+ <optional>
567
+ <ref name="introduction"/>
568
+ </optional>
569
+ </element>
570
+ </define>
571
+ <define name="DocumentType">
572
+ <choice>
573
+ <value>international-standard</value>
574
+ <value>technical-specification</value>
575
+ <value>technical-report</value>
576
+ <value>publicly-available-specification</value>
577
+ <value>international-workshop-agreement</value>
578
+ <value>guide</value>
579
+ </choice>
580
+ </define>
581
+ <define name="structuredidentifier">
582
+ <element name="structuredidentifier">
583
+ <optional>
584
+ <attribute name="type"/>
585
+ </optional>
586
+ <group>
587
+ <ref name="documentnumber"/>
588
+ <optional>
589
+ <ref name="tc-documentnumber"/>
590
+ </optional>
591
+ </group>
592
+ </element>
593
+ </define>
594
+ <define name="foreword">
595
+ <element name="foreword">
596
+ <ref name="Basic-Section"/>
597
+ </element>
598
+ </define>
599
+ <define name="introduction">
600
+ <element name="introduction">
601
+ <ref name="Content-Section"/>
602
+ </element>
603
+ </define>
604
+ </include>
605
+ <!-- end overrides -->
606
+ <!--
607
+ We display the Normative References between scope and terms; but to keep the
608
+ grammar simple, we keep the references together
609
+ -->
610
+ <define name="iso-standard">
611
+ <element name="iso-standard">
612
+ <ref name="bibdata"/>
613
+ <zeroOrMore>
614
+ <ref name="termdocsource"/>
615
+ </zeroOrMore>
616
+ <optional>
617
+ <ref name="boilerplate"/>
618
+ </optional>
619
+ <ref name="preface"/>
620
+ <oneOrMore>
621
+ <ref name="sections"/>
622
+ </oneOrMore>
623
+ <zeroOrMore>
624
+ <ref name="annex"/>
625
+ </zeroOrMore>
626
+ <ref name="bibliography"/>
627
+ </element>
628
+ </define>
629
+ <define name="bibliography">
630
+ <element name="bibliography">
631
+ <oneOrMore>
632
+ <choice>
633
+ <ref name="references"/>
634
+ <ref name="reference-clause"/>
635
+ </choice>
636
+ </oneOrMore>
637
+ </element>
638
+ </define>
639
+ <define name="editorialgroup">
640
+ <element name="editorialgroup">
641
+ <oneOrMore>
642
+ <ref name="technical-committee"/>
643
+ </oneOrMore>
644
+ <zeroOrMore>
645
+ <ref name="subcommittee"/>
646
+ </zeroOrMore>
647
+ <zeroOrMore>
648
+ <ref name="workgroup"/>
649
+ </zeroOrMore>
650
+ <optional>
651
+ <ref name="secretariat"/>
652
+ </optional>
653
+ </element>
654
+ </define>
655
+ <define name="preface_abstract">
656
+ <element name="abstract">
657
+ <ref name="Basic-Section"/>
658
+ </element>
659
+ </define>
660
+ <define name="documentnumber">
661
+ <element name="project-number">
662
+ <optional>
663
+ <attribute name="part">
664
+ <data type="int"/>
665
+ </attribute>
666
+ </optional>
667
+ <optional>
668
+ <attribute name="subpart">
669
+ <data type="int"/>
670
+ </attribute>
671
+ </optional>
672
+ <text/>
673
+ </element>
674
+ </define>
675
+ <define name="tc-documentnumber">
676
+ <element name="tc-document-number">
677
+ <data type="int"/>
678
+ </element>
679
+ </define>
680
+ <define name="technical-committee">
681
+ <element name="technical-committee">
682
+ <ref name="IsoWorkgroup"/>
683
+ </element>
684
+ </define>
685
+ <define name="subcommittee">
686
+ <element name="subcommittee">
687
+ <ref name="IsoWorkgroup"/>
688
+ </element>
689
+ </define>
690
+ <define name="workgroup">
691
+ <element name="workgroup">
692
+ <ref name="IsoWorkgroup"/>
693
+ </element>
694
+ </define>
695
+ <define name="IsoWorkgroup">
696
+ <optional>
697
+ <attribute name="number">
698
+ <data type="int"/>
699
+ </attribute>
700
+ </optional>
701
+ <optional>
702
+ <attribute name="type"/>
703
+ </optional>
704
+ <text/>
705
+ </define>
706
+ <define name="secretariat">
707
+ <element name="secretariat">
708
+ <text/>
709
+ </element>
710
+ </define>
711
+ <define name="clause-hanging-paragraph-with-footnote">
712
+ <element name="clause">
713
+ <optional>
714
+ <attribute name="id">
715
+ <data type="ID"/>
716
+ </attribute>
717
+ </optional>
718
+ <optional>
719
+ <attribute name="language"/>
720
+ </optional>
721
+ <optional>
722
+ <attribute name="script"/>
723
+ </optional>
724
+ <optional>
725
+ <attribute name="inline-header">
726
+ <data type="boolean"/>
727
+ </attribute>
728
+ </optional>
729
+ <optional>
730
+ <attribute name="obligation">
731
+ <choice>
732
+ <value>normative</value>
733
+ <value>informative</value>
734
+ </choice>
735
+ </attribute>
736
+ </optional>
737
+ <optional>
738
+ <ref name="section-title"/>
739
+ </optional>
740
+ <zeroOrMore>
741
+ <!-- allow hanging paragraphs in annexes: they introduce lists -->
742
+ <ref name="BasicBlock"/>
743
+ </zeroOrMore>
744
+ <zeroOrMore>
745
+ <ref name="note"/>
746
+ </zeroOrMore>
747
+ <zeroOrMore>
748
+ <ref name="clause-hanging-paragraph-with-footnote"/>
749
+ </zeroOrMore>
750
+ </element>
751
+ </define>
752
+ <define name="subfigure">
753
+ <element name="figure">
754
+ <attribute name="id">
755
+ <data type="ID"/>
756
+ </attribute>
757
+ <optional>
758
+ <ref name="tname"/>
759
+ </optional>
760
+ <ref name="image"/>
761
+ </element>
762
+ </define>
763
+ <define name="termdocsource">
764
+ <element name="termdocsource">
765
+ <ref name="CitationType"/>
766
+ </element>
767
+ </define>
768
+ <define name="ics">
769
+ <element name="ics">
770
+ <element name="code">
771
+ <text/>
772
+ </element>
773
+ <element name="text">
774
+ <text/>
775
+ </element>
776
+ </element>
777
+ </define>
778
+ <define name="term-clause">
779
+ <element name="clause">
780
+ <optional>
781
+ <attribute name="id">
782
+ <data type="ID"/>
783
+ </attribute>
784
+ </optional>
785
+ <optional>
786
+ <attribute name="language"/>
787
+ </optional>
788
+ <optional>
789
+ <attribute name="script"/>
790
+ </optional>
791
+ <optional>
792
+ <attribute name="inline-header">
793
+ <data type="boolean"/>
794
+ </attribute>
795
+ </optional>
796
+ <optional>
797
+ <attribute name="obligation">
798
+ <choice>
799
+ <value>normative</value>
800
+ <value>informative</value>
801
+ </choice>
802
+ </attribute>
803
+ </optional>
804
+ <optional>
805
+ <ref name="section-title"/>
806
+ </optional>
807
+ <zeroOrMore>
808
+ <choice>
809
+ <ref name="term-clause"/>
810
+ <ref name="terms"/>
811
+ <ref name="definitions"/>
812
+ </choice>
813
+ </zeroOrMore>
814
+ </element>
815
+ </define>
816
+ <define name="reference-clause">
817
+ <element name="clause">
818
+ <optional>
819
+ <attribute name="id">
820
+ <data type="ID"/>
821
+ </attribute>
822
+ </optional>
823
+ <optional>
824
+ <attribute name="language"/>
825
+ </optional>
826
+ <optional>
827
+ <attribute name="script"/>
828
+ </optional>
829
+ <optional>
830
+ <attribute name="inline-header">
831
+ <data type="boolean"/>
832
+ </attribute>
833
+ </optional>
834
+ <optional>
835
+ <attribute name="obligation">
836
+ <choice>
837
+ <value>normative</value>
838
+ <value>informative</value>
839
+ </choice>
840
+ </attribute>
841
+ </optional>
842
+ <optional>
843
+ <ref name="section-title"/>
844
+ </optional>
845
+ <choice>
846
+ <oneOrMore>
847
+ <ref name="reference-clause"/>
848
+ </oneOrMore>
849
+ <zeroOrMore>
850
+ <ref name="references"/>
851
+ </zeroOrMore>
852
+ </choice>
853
+ </element>
854
+ </define>
855
+ <define name="annex-appendix">
856
+ <element name="appendix">
857
+ <ref name="Clause-Section"/>
858
+ </element>
859
+ </define>
860
+ </grammar>