metanorma-ietf 1.0.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 (54) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.hound.yml +3 -0
  4. data/.oss-guides.rubocop.yml +1077 -0
  5. data/.rspec +2 -0
  6. data/.rubocop.ribose.yml +65 -0
  7. data/.rubocop.tb.yml +650 -0
  8. data/.rubocop.yml +15 -0
  9. data/.travis.yml +23 -0
  10. data/CODE_OF_CONDUCT.md +74 -0
  11. data/Gemfile +4 -0
  12. data/Guardfile +22 -0
  13. data/LICENSE +25 -0
  14. data/README.adoc +1660 -0
  15. data/Rakefile +6 -0
  16. data/bin/asciidoctor-rfc2 +14 -0
  17. data/bin/asciidoctor-rfc3 +14 -0
  18. data/bin/console +14 -0
  19. data/bin/rspec +17 -0
  20. data/bin/setup +8 -0
  21. data/docs/installation.md +21 -0
  22. data/docs/navigation.md +10 -0
  23. data/docs/overview.md +5 -0
  24. data/lib/asciidoctor/rfc.rb +8 -0
  25. data/lib/asciidoctor/rfc/common/base.rb +531 -0
  26. data/lib/asciidoctor/rfc/common/front.rb +120 -0
  27. data/lib/asciidoctor/rfc/v2/base.rb +379 -0
  28. data/lib/asciidoctor/rfc/v2/blocks.rb +261 -0
  29. data/lib/asciidoctor/rfc/v2/converter.rb +60 -0
  30. data/lib/asciidoctor/rfc/v2/front.rb +69 -0
  31. data/lib/asciidoctor/rfc/v2/inline_anchor.rb +111 -0
  32. data/lib/asciidoctor/rfc/v2/lists.rb +135 -0
  33. data/lib/asciidoctor/rfc/v2/table.rb +114 -0
  34. data/lib/asciidoctor/rfc/v2/validate.rb +32 -0
  35. data/lib/asciidoctor/rfc/v2/validate2.rng +716 -0
  36. data/lib/asciidoctor/rfc/v3/base.rb +329 -0
  37. data/lib/asciidoctor/rfc/v3/blocks.rb +246 -0
  38. data/lib/asciidoctor/rfc/v3/converter.rb +62 -0
  39. data/lib/asciidoctor/rfc/v3/front.rb +122 -0
  40. data/lib/asciidoctor/rfc/v3/inline_anchor.rb +89 -0
  41. data/lib/asciidoctor/rfc/v3/lists.rb +176 -0
  42. data/lib/asciidoctor/rfc/v3/svg.rng +9081 -0
  43. data/lib/asciidoctor/rfc/v3/table.rb +65 -0
  44. data/lib/asciidoctor/rfc/v3/validate.rb +34 -0
  45. data/lib/asciidoctor/rfc/v3/validate.rng +2143 -0
  46. data/lib/metanorma-ietf.rb +7 -0
  47. data/lib/metanorma/ietf.rb +8 -0
  48. data/lib/metanorma/ietf/processor.rb +89 -0
  49. data/lib/metanorma/ietf/version.rb +5 -0
  50. data/metanorma-ietf.gemspec +51 -0
  51. data/rfc2629-other.ent +61 -0
  52. data/rfc2629-xhtml.ent +165 -0
  53. data/rfc2629.dtd +312 -0
  54. metadata +289 -0
@@ -0,0 +1,65 @@
1
+ module Asciidoctor
2
+ module Rfc::V3
3
+ module Table
4
+ # Syntax:
5
+ # [[id]]
6
+ # .Title
7
+ # |===
8
+ # |col | col
9
+ # |===
10
+ def table(node)
11
+ noko do |xml|
12
+ has_body = false
13
+ # TODO iref belongs here
14
+
15
+ table_attributes = {
16
+ anchor: node.id,
17
+ }
18
+
19
+ xml.table **attr_code(table_attributes) do |xml_table|
20
+ [:head, :body, :foot].reject { |tblsec| node.rows[tblsec].empty? }.each do |tblsec|
21
+ has_body = true if tblsec == :body
22
+ end
23
+ warn "asciidoctor: WARNING (#{current_location(node)}): tables must have at least one body row" unless has_body
24
+
25
+ xml_table.name node.title if node.title?
26
+ table_head_body_and_foot node, xml_table
27
+ end
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ def table_head_body_and_foot(node, xml)
34
+ [:head, :body, :foot].reject { |tblsec| node.rows[tblsec].empty? }.each do |tblsec|
35
+ tblsec_tag = "t#{tblsec}"
36
+ # "anchor" attribute from tblsec.id not supported
37
+ xml.send tblsec_tag do |xml_tblsec|
38
+ node.rows[tblsec].each_with_index do |row, i|
39
+ # id not supported on row
40
+ xml_tblsec.tr do |xml_tr|
41
+ rowlength = 0
42
+ row.each do |cell|
43
+ cell_attributes = {
44
+ anchor: cell.id,
45
+ colspan: cell.colspan,
46
+ rowspan: cell.rowspan,
47
+ align: cell.attr("halign"),
48
+ }
49
+
50
+ cell_tag = (tblsec == :head || cell.style == :header ? "th" : "td")
51
+
52
+ rowlength += cell.text.size
53
+ xml_tr.send cell_tag, **attr_code(cell_attributes) do |thd|
54
+ thd << (cell.style == :asciidoc ? cell.content : cell.text)
55
+ end
56
+ end
57
+ warn "asciidoctor: WARNING (#{current_location(node)}): row #{i} of table (count including header rows) is longer than 72 ascii characters" if rowlength > 72
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,34 @@
1
+ require "nokogiri"
2
+ require "jing"
3
+
4
+ module Asciidoctor
5
+ module Rfc::V3
6
+ module Validate
7
+ class << self
8
+ def validate(doc)
9
+ # svg_location = File.join(File.dirname(__FILE__), "svg.rng")
10
+ # schema = Nokogiri::XML::RelaxNG(File.read(File.join(File.dirname(__FILE__), "validate.rng")).
11
+ # gsub(%r{<ref name="svg"/>}, "<externalRef href='#{svg_location}'/>"))
12
+
13
+ filename = File.join(File.dirname(__FILE__), "validate.rng")
14
+ schema = Jing.new(filename)
15
+ File.open(".tmp.xml", "w") { |f| f.write(doc.to_xml) }
16
+ begin
17
+ errors = schema.validate(".tmp.xml")
18
+ rescue Jing::Error => e
19
+ abort "[metanorma-ietf] Validation error: #{e}"
20
+ end
21
+
22
+ if errors.none?
23
+ warn "[metanorma-ietf] Validation passed."
24
+ else
25
+ errors.each do |error|
26
+ warn "[metanorma-ietf] #{error[:message]} @ #{error[:line]}:#{error[:column]}"
27
+ end
28
+ end
29
+
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,2143 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3
+ <!-- xml2rfc Version 3 grammar -->
4
+ <define name="rfc">
5
+ <element name="rfc">
6
+ <optional>
7
+ <attribute name="xml:base"/>
8
+ </optional>
9
+ <optional>
10
+ <attribute name="xml:lang"/>
11
+ </optional>
12
+ <optional>
13
+ <attribute name="number"/>
14
+ </optional>
15
+ <optional>
16
+ <attribute name="obsoletes" a:defaultValue=""/>
17
+ </optional>
18
+ <optional>
19
+ <attribute name="updates" a:defaultValue=""/>
20
+ </optional>
21
+ <optional>
22
+ <attribute name="category"/>
23
+ </optional>
24
+ <optional>
25
+ <attribute name="mode"/>
26
+ </optional>
27
+ <optional>
28
+ <attribute name="consensus" a:defaultValue="false">
29
+ <choice>
30
+ <value>no</value>
31
+ <value>yes</value>
32
+ <value>false</value>
33
+ <value>true</value>
34
+ </choice>
35
+ </attribute>
36
+ </optional>
37
+ <optional>
38
+ <attribute name="seriesNo"/>
39
+ </optional>
40
+ <optional>
41
+ <attribute name="ipr"/>
42
+ </optional>
43
+ <optional>
44
+ <attribute name="iprExtract">
45
+ <data type="IDREF"/>
46
+ </attribute>
47
+ </optional>
48
+ <optional>
49
+ <attribute name="submissionType" a:defaultValue="IETF">
50
+ <choice>
51
+ <value>IETF</value>
52
+ <value>IAB</value>
53
+ <value>IRTF</value>
54
+ <value>independent</value>
55
+ </choice>
56
+ </attribute>
57
+ </optional>
58
+ <optional>
59
+ <attribute name="docName"/>
60
+ </optional>
61
+ <optional>
62
+ <attribute name="sortRefs" a:defaultValue="false">
63
+ <choice>
64
+ <value>true</value>
65
+ <value>false</value>
66
+ </choice>
67
+ </attribute>
68
+ </optional>
69
+ <optional>
70
+ <attribute name="symRefs" a:defaultValue="true">
71
+ <choice>
72
+ <value>true</value>
73
+ <value>false</value>
74
+ </choice>
75
+ </attribute>
76
+ </optional>
77
+ <optional>
78
+ <attribute name="tocInclude" a:defaultValue="true">
79
+ <choice>
80
+ <value>true</value>
81
+ <value>false</value>
82
+ </choice>
83
+ </attribute>
84
+ </optional>
85
+ <optional>
86
+ <attribute name="tocDepth" a:defaultValue="3"/>
87
+ </optional>
88
+ <optional>
89
+ <attribute name="prepTime"/>
90
+ </optional>
91
+ <optional>
92
+ <attribute name="indexInclude" a:defaultValue="true">
93
+ <choice>
94
+ <value>true</value>
95
+ <value>false</value>
96
+ </choice>
97
+ </attribute>
98
+ </optional>
99
+ <optional>
100
+ <attribute name="version"/>
101
+ </optional>
102
+ <optional>
103
+ <attribute name="scripts" a:defaultValue="Common,Latin"/>
104
+ </optional>
105
+ <optional>
106
+ <attribute name="expiresDate"/>
107
+ </optional>
108
+ <zeroOrMore>
109
+ <ref name="link"/>
110
+ </zeroOrMore>
111
+ <ref name="front"/>
112
+ <ref name="middle"/>
113
+ <optional>
114
+ <ref name="back"/>
115
+ </optional>
116
+ </element>
117
+ </define>
118
+ <define name="link">
119
+ <element name="link">
120
+ <optional>
121
+ <attribute name="xml:base"/>
122
+ </optional>
123
+ <optional>
124
+ <attribute name="xml:lang"/>
125
+ </optional>
126
+ <attribute name="href"/>
127
+ <optional>
128
+ <attribute name="rel"/>
129
+ </optional>
130
+ </element>
131
+ </define>
132
+ <define name="front">
133
+ <element name="front">
134
+ <optional>
135
+ <attribute name="xml:base"/>
136
+ </optional>
137
+ <optional>
138
+ <attribute name="xml:lang"/>
139
+ </optional>
140
+ <ref name="title"/>
141
+ <zeroOrMore>
142
+ <ref name="seriesInfo"/>
143
+ </zeroOrMore>
144
+ <oneOrMore>
145
+ <ref name="author"/>
146
+ </oneOrMore>
147
+ <optional>
148
+ <ref name="date"/>
149
+ </optional>
150
+ <zeroOrMore>
151
+ <ref name="area"/>
152
+ </zeroOrMore>
153
+ <zeroOrMore>
154
+ <ref name="workgroup"/>
155
+ </zeroOrMore>
156
+ <zeroOrMore>
157
+ <ref name="keyword"/>
158
+ </zeroOrMore>
159
+ <optional>
160
+ <ref name="abstract"/>
161
+ </optional>
162
+ <zeroOrMore>
163
+ <ref name="note"/>
164
+ </zeroOrMore>
165
+ <optional>
166
+ <ref name="boilerplate"/>
167
+ </optional>
168
+ </element>
169
+ </define>
170
+ <define name="title">
171
+ <element name="title">
172
+ <optional>
173
+ <attribute name="xml:base"/>
174
+ </optional>
175
+ <optional>
176
+ <attribute name="xml:lang"/>
177
+ </optional>
178
+ <optional>
179
+ <attribute name="abbrev"/>
180
+ </optional>
181
+ <optional>
182
+ <attribute name="ascii"/>
183
+ </optional>
184
+ <text/>
185
+ </element>
186
+ </define>
187
+ <define name="author">
188
+ <element name="author">
189
+ <optional>
190
+ <attribute name="xml:base"/>
191
+ </optional>
192
+ <optional>
193
+ <attribute name="xml:lang"/>
194
+ </optional>
195
+ <optional>
196
+ <attribute name="initials"/>
197
+ </optional>
198
+ <optional>
199
+ <attribute name="asciiInitials"/>
200
+ </optional>
201
+ <optional>
202
+ <attribute name="surname"/>
203
+ </optional>
204
+ <optional>
205
+ <attribute name="asciiSurname"/>
206
+ </optional>
207
+ <optional>
208
+ <attribute name="fullname"/>
209
+ </optional>
210
+ <optional>
211
+ <attribute name="role">
212
+ <value>editor</value>
213
+ </attribute>
214
+ </optional>
215
+ <optional>
216
+ <attribute name="asciiFullname"/>
217
+ </optional>
218
+ <optional>
219
+ <ref name="organization"/>
220
+ </optional>
221
+ <optional>
222
+ <ref name="address"/>
223
+ </optional>
224
+ </element>
225
+ </define>
226
+ <define name="organization">
227
+ <element name="organization">
228
+ <optional>
229
+ <attribute name="xml:base"/>
230
+ </optional>
231
+ <optional>
232
+ <attribute name="xml:lang"/>
233
+ </optional>
234
+ <optional>
235
+ <attribute name="abbrev"/>
236
+ </optional>
237
+ <optional>
238
+ <attribute name="ascii"/>
239
+ </optional>
240
+ <text/>
241
+ </element>
242
+ </define>
243
+ <define name="address">
244
+ <element name="address">
245
+ <optional>
246
+ <attribute name="xml:base"/>
247
+ </optional>
248
+ <optional>
249
+ <attribute name="xml:lang"/>
250
+ </optional>
251
+ <optional>
252
+ <ref name="postal"/>
253
+ </optional>
254
+ <optional>
255
+ <ref name="phone"/>
256
+ </optional>
257
+ <optional>
258
+ <ref name="facsimile"/>
259
+ </optional>
260
+ <optional>
261
+ <ref name="email"/>
262
+ </optional>
263
+ <optional>
264
+ <ref name="uri"/>
265
+ </optional>
266
+ </element>
267
+ </define>
268
+ <define name="postal">
269
+ <element name="postal">
270
+ <optional>
271
+ <attribute name="xml:base"/>
272
+ </optional>
273
+ <optional>
274
+ <attribute name="xml:lang"/>
275
+ </optional>
276
+ <choice>
277
+ <zeroOrMore>
278
+ <choice>
279
+ <ref name="city"/>
280
+ <ref name="code"/>
281
+ <ref name="country"/>
282
+ <ref name="region"/>
283
+ <ref name="street"/>
284
+ </choice>
285
+ </zeroOrMore>
286
+ <oneOrMore>
287
+ <ref name="postalLine"/>
288
+ </oneOrMore>
289
+ </choice>
290
+ </element>
291
+ </define>
292
+ <define name="street">
293
+ <element name="street">
294
+ <optional>
295
+ <attribute name="xml:base"/>
296
+ </optional>
297
+ <optional>
298
+ <attribute name="xml:lang"/>
299
+ </optional>
300
+ <optional>
301
+ <attribute name="ascii"/>
302
+ </optional>
303
+ <text/>
304
+ </element>
305
+ </define>
306
+ <define name="city">
307
+ <element name="city">
308
+ <optional>
309
+ <attribute name="xml:base"/>
310
+ </optional>
311
+ <optional>
312
+ <attribute name="xml:lang"/>
313
+ </optional>
314
+ <optional>
315
+ <attribute name="ascii"/>
316
+ </optional>
317
+ <text/>
318
+ </element>
319
+ </define>
320
+ <define name="region">
321
+ <element name="region">
322
+ <optional>
323
+ <attribute name="xml:base"/>
324
+ </optional>
325
+ <optional>
326
+ <attribute name="xml:lang"/>
327
+ </optional>
328
+ <optional>
329
+ <attribute name="ascii"/>
330
+ </optional>
331
+ <text/>
332
+ </element>
333
+ </define>
334
+ <define name="code">
335
+ <element name="code">
336
+ <optional>
337
+ <attribute name="xml:base"/>
338
+ </optional>
339
+ <optional>
340
+ <attribute name="xml:lang"/>
341
+ </optional>
342
+ <optional>
343
+ <attribute name="ascii"/>
344
+ </optional>
345
+ <text/>
346
+ </element>
347
+ </define>
348
+ <define name="country">
349
+ <element name="country">
350
+ <optional>
351
+ <attribute name="xml:base"/>
352
+ </optional>
353
+ <optional>
354
+ <attribute name="xml:lang"/>
355
+ </optional>
356
+ <optional>
357
+ <attribute name="ascii"/>
358
+ </optional>
359
+ <text/>
360
+ </element>
361
+ </define>
362
+ <define name="postalLine">
363
+ <element name="postalLine">
364
+ <optional>
365
+ <attribute name="xml:base"/>
366
+ </optional>
367
+ <optional>
368
+ <attribute name="xml:lang"/>
369
+ </optional>
370
+ <optional>
371
+ <attribute name="ascii"/>
372
+ </optional>
373
+ <text/>
374
+ </element>
375
+ </define>
376
+ <define name="phone">
377
+ <element name="phone">
378
+ <optional>
379
+ <attribute name="xml:base"/>
380
+ </optional>
381
+ <optional>
382
+ <attribute name="xml:lang"/>
383
+ </optional>
384
+ <text/>
385
+ </element>
386
+ </define>
387
+ <define name="facsimile">
388
+ <element name="facsimile">
389
+ <optional>
390
+ <attribute name="xml:base"/>
391
+ </optional>
392
+ <optional>
393
+ <attribute name="xml:lang"/>
394
+ </optional>
395
+ <text/>
396
+ </element>
397
+ </define>
398
+ <define name="email">
399
+ <element name="email">
400
+ <optional>
401
+ <attribute name="xml:base"/>
402
+ </optional>
403
+ <optional>
404
+ <attribute name="xml:lang"/>
405
+ </optional>
406
+ <optional>
407
+ <attribute name="ascii"/>
408
+ </optional>
409
+ <text/>
410
+ </element>
411
+ </define>
412
+ <define name="uri">
413
+ <element name="uri">
414
+ <optional>
415
+ <attribute name="xml:base"/>
416
+ </optional>
417
+ <optional>
418
+ <attribute name="xml:lang"/>
419
+ </optional>
420
+ <text/>
421
+ </element>
422
+ </define>
423
+ <define name="date">
424
+ <element name="date">
425
+ <optional>
426
+ <attribute name="xml:base"/>
427
+ </optional>
428
+ <optional>
429
+ <attribute name="xml:lang"/>
430
+ </optional>
431
+ <optional>
432
+ <attribute name="day"/>
433
+ </optional>
434
+ <optional>
435
+ <attribute name="month"/>
436
+ </optional>
437
+ <optional>
438
+ <attribute name="year"/>
439
+ </optional>
440
+ <empty/>
441
+ </element>
442
+ </define>
443
+ <define name="area">
444
+ <element name="area">
445
+ <optional>
446
+ <attribute name="xml:base"/>
447
+ </optional>
448
+ <optional>
449
+ <attribute name="xml:lang"/>
450
+ </optional>
451
+ <text/>
452
+ </element>
453
+ </define>
454
+ <define name="workgroup">
455
+ <element name="workgroup">
456
+ <optional>
457
+ <attribute name="xml:base"/>
458
+ </optional>
459
+ <optional>
460
+ <attribute name="xml:lang"/>
461
+ </optional>
462
+ <text/>
463
+ </element>
464
+ </define>
465
+ <define name="keyword">
466
+ <element name="keyword">
467
+ <optional>
468
+ <attribute name="xml:base"/>
469
+ </optional>
470
+ <optional>
471
+ <attribute name="xml:lang"/>
472
+ </optional>
473
+ <text/>
474
+ </element>
475
+ </define>
476
+ <define name="abstract">
477
+ <element name="abstract">
478
+ <optional>
479
+ <attribute name="xml:base"/>
480
+ </optional>
481
+ <optional>
482
+ <attribute name="xml:lang"/>
483
+ </optional>
484
+ <optional>
485
+ <attribute name="anchor">
486
+ <data type="ID"/>
487
+ </attribute>
488
+ </optional>
489
+ <optional>
490
+ <attribute name="pn"/>
491
+ </optional>
492
+ <oneOrMore>
493
+ <choice>
494
+ <ref name="dl"/>
495
+ <ref name="ol"/>
496
+ <ref name="t"/>
497
+ <ref name="ul"/>
498
+ </choice>
499
+ </oneOrMore>
500
+ </element>
501
+ </define>
502
+ <define name="note">
503
+ <element name="note">
504
+ <optional>
505
+ <attribute name="xml:base"/>
506
+ </optional>
507
+ <optional>
508
+ <attribute name="xml:lang"/>
509
+ </optional>
510
+ <optional>
511
+ <attribute name="title"/>
512
+ </optional>
513
+ <optional>
514
+ <attribute name="pn"/>
515
+ </optional>
516
+ <optional>
517
+ <attribute name="removeInRFC" a:defaultValue="false">
518
+ <choice>
519
+ <value>true</value>
520
+ <value>false</value>
521
+ </choice>
522
+ </attribute>
523
+ </optional>
524
+ <optional>
525
+ <ref name="name"/>
526
+ </optional>
527
+ <oneOrMore>
528
+ <choice>
529
+ <ref name="dl"/>
530
+ <ref name="ol"/>
531
+ <ref name="t"/>
532
+ <ref name="ul"/>
533
+ </choice>
534
+ </oneOrMore>
535
+ </element>
536
+ </define>
537
+ <define name="boilerplate">
538
+ <element name="boilerplate">
539
+ <optional>
540
+ <attribute name="xml:base"/>
541
+ </optional>
542
+ <optional>
543
+ <attribute name="xml:lang"/>
544
+ </optional>
545
+ <oneOrMore>
546
+ <ref name="section"/>
547
+ </oneOrMore>
548
+ </element>
549
+ </define>
550
+ <define name="middle">
551
+ <element name="middle">
552
+ <optional>
553
+ <attribute name="xml:base"/>
554
+ </optional>
555
+ <optional>
556
+ <attribute name="xml:lang"/>
557
+ </optional>
558
+ <oneOrMore>
559
+ <ref name="section"/>
560
+ </oneOrMore>
561
+ </element>
562
+ </define>
563
+ <define name="section">
564
+ <element name="section">
565
+ <optional>
566
+ <attribute name="xml:base"/>
567
+ </optional>
568
+ <optional>
569
+ <attribute name="xml:lang"/>
570
+ </optional>
571
+ <optional>
572
+ <attribute name="anchor">
573
+ <data type="ID"/>
574
+ </attribute>
575
+ </optional>
576
+ <optional>
577
+ <attribute name="pn"/>
578
+ </optional>
579
+ <optional>
580
+ <attribute name="title"/>
581
+ </optional>
582
+ <optional>
583
+ <attribute name="numbered" a:defaultValue="true">
584
+ <choice>
585
+ <value>true</value>
586
+ <value>false</value>
587
+ </choice>
588
+ </attribute>
589
+ </optional>
590
+ <optional>
591
+ <attribute name="toc" a:defaultValue="default">
592
+ <choice>
593
+ <value>include</value>
594
+ <value>exclude</value>
595
+ <value>default</value>
596
+ </choice>
597
+ </attribute>
598
+ </optional>
599
+ <optional>
600
+ <attribute name="removeInRFC" a:defaultValue="false">
601
+ <choice>
602
+ <value>true</value>
603
+ <value>false</value>
604
+ </choice>
605
+ </attribute>
606
+ </optional>
607
+ <optional>
608
+ <ref name="name"/>
609
+ </optional>
610
+ <zeroOrMore>
611
+ <choice>
612
+ <ref name="artwork"/>
613
+ <ref name="aside"/>
614
+ <ref name="blockquote"/>
615
+ <ref name="dl"/>
616
+ <ref name="figure"/>
617
+ <ref name="iref"/>
618
+ <ref name="ol"/>
619
+ <ref name="sourcecode"/>
620
+ <ref name="t"/>
621
+ <ref name="table"/>
622
+ <ref name="texttable"/>
623
+ <ref name="ul"/>
624
+ </choice>
625
+ </zeroOrMore>
626
+ <zeroOrMore>
627
+ <ref name="section"/>
628
+ </zeroOrMore>
629
+ </element>
630
+ </define>
631
+ <define name="name">
632
+ <element name="name">
633
+ <optional>
634
+ <attribute name="xml:base"/>
635
+ </optional>
636
+ <optional>
637
+ <attribute name="xml:lang"/>
638
+ </optional>
639
+ <optional>
640
+ <attribute name="slugifiedName"/>
641
+ </optional>
642
+ <zeroOrMore>
643
+ <choice>
644
+ <text/>
645
+ <ref name="cref"/>
646
+ <ref name="eref"/>
647
+ <ref name="relref"/>
648
+ <ref name="tt"/>
649
+ <ref name="xref"/>
650
+ </choice>
651
+ </zeroOrMore>
652
+ </element>
653
+ </define>
654
+ <define name="t">
655
+ <element name="t">
656
+ <optional>
657
+ <attribute name="xml:base"/>
658
+ </optional>
659
+ <optional>
660
+ <attribute name="xml:lang"/>
661
+ </optional>
662
+ <optional>
663
+ <attribute name="anchor">
664
+ <data type="ID"/>
665
+ </attribute>
666
+ </optional>
667
+ <optional>
668
+ <attribute name="pn"/>
669
+ </optional>
670
+ <optional>
671
+ <attribute name="hangText"/>
672
+ </optional>
673
+ <optional>
674
+ <attribute name="keepWithNext" a:defaultValue="false">
675
+ <choice>
676
+ <value>false</value>
677
+ <value>true</value>
678
+ </choice>
679
+ </attribute>
680
+ </optional>
681
+ <optional>
682
+ <attribute name="keepWithPrevious" a:defaultValue="false">
683
+ <choice>
684
+ <value>false</value>
685
+ <value>true</value>
686
+ </choice>
687
+ </attribute>
688
+ </optional>
689
+ <zeroOrMore>
690
+ <choice>
691
+ <text/>
692
+ <ref name="bcp14"/>
693
+ <ref name="cref"/>
694
+ <ref name="em"/>
695
+ <ref name="eref"/>
696
+ <ref name="iref"/>
697
+ <ref name="list"/>
698
+ <ref name="relref"/>
699
+ <ref name="spanx"/>
700
+ <ref name="strong"/>
701
+ <ref name="sub"/>
702
+ <ref name="sup"/>
703
+ <ref name="tt"/>
704
+ <ref name="vspace"/>
705
+ <ref name="xref"/>
706
+ </choice>
707
+ </zeroOrMore>
708
+ </element>
709
+ </define>
710
+ <define name="aside">
711
+ <element name="aside">
712
+ <optional>
713
+ <attribute name="xml:base"/>
714
+ </optional>
715
+ <optional>
716
+ <attribute name="xml:lang"/>
717
+ </optional>
718
+ <optional>
719
+ <attribute name="anchor">
720
+ <data type="ID"/>
721
+ </attribute>
722
+ </optional>
723
+ <optional>
724
+ <attribute name="pn"/>
725
+ </optional>
726
+ <zeroOrMore>
727
+ <choice>
728
+ <ref name="artwork"/>
729
+ <ref name="dl"/>
730
+ <ref name="figure"/>
731
+ <ref name="iref"/>
732
+ <ref name="list"/>
733
+ <ref name="ol"/>
734
+ <ref name="t"/>
735
+ <ref name="table"/>
736
+ <ref name="ul"/>
737
+ </choice>
738
+ </zeroOrMore>
739
+ </element>
740
+ </define>
741
+ <define name="blockquote">
742
+ <element name="blockquote">
743
+ <optional>
744
+ <attribute name="xml:base"/>
745
+ </optional>
746
+ <optional>
747
+ <attribute name="xml:lang"/>
748
+ </optional>
749
+ <optional>
750
+ <attribute name="anchor">
751
+ <data type="ID"/>
752
+ </attribute>
753
+ </optional>
754
+ <optional>
755
+ <attribute name="pn"/>
756
+ </optional>
757
+ <optional>
758
+ <attribute name="cite"/>
759
+ </optional>
760
+ <optional>
761
+ <attribute name="quotedFrom"/>
762
+ </optional>
763
+ <choice>
764
+ <oneOrMore>
765
+ <choice>
766
+ <ref name="artwork"/>
767
+ <ref name="dl"/>
768
+ <ref name="figure"/>
769
+ <ref name="ol"/>
770
+ <ref name="sourcecode"/>
771
+ <ref name="t"/>
772
+ <ref name="ul"/>
773
+ </choice>
774
+ </oneOrMore>
775
+ <oneOrMore>
776
+ <choice>
777
+ <text/>
778
+ <ref name="bcp14"/>
779
+ <ref name="cref"/>
780
+ <ref name="em"/>
781
+ <ref name="eref"/>
782
+ <ref name="iref"/>
783
+ <ref name="relref"/>
784
+ <ref name="strong"/>
785
+ <ref name="sub"/>
786
+ <ref name="sup"/>
787
+ <ref name="tt"/>
788
+ <ref name="xref"/>
789
+ </choice>
790
+ </oneOrMore>
791
+ </choice>
792
+ </element>
793
+ </define>
794
+ <define name="list">
795
+ <element name="list">
796
+ <optional>
797
+ <attribute name="xml:base"/>
798
+ </optional>
799
+ <optional>
800
+ <attribute name="xml:lang"/>
801
+ </optional>
802
+ <optional>
803
+ <attribute name="style" a:defaultValue="empty"/>
804
+ </optional>
805
+ <optional>
806
+ <attribute name="hangIndent"/>
807
+ </optional>
808
+ <optional>
809
+ <attribute name="counter"/>
810
+ </optional>
811
+ <optional>
812
+ <attribute name="pn"/>
813
+ </optional>
814
+ <oneOrMore>
815
+ <ref name="t"/>
816
+ </oneOrMore>
817
+ </element>
818
+ </define>
819
+ <define name="ol">
820
+ <element name="ol">
821
+ <optional>
822
+ <attribute name="xml:base"/>
823
+ </optional>
824
+ <optional>
825
+ <attribute name="xml:lang"/>
826
+ </optional>
827
+ <optional>
828
+ <attribute name="anchor">
829
+ <data type="ID"/>
830
+ </attribute>
831
+ </optional>
832
+ <optional>
833
+ <attribute name="type" a:defaultValue="1"/>
834
+ </optional>
835
+ <optional>
836
+ <attribute name="start" a:defaultValue="1"/>
837
+ </optional>
838
+ <optional>
839
+ <attribute name="group"/>
840
+ </optional>
841
+ <optional>
842
+ <attribute name="spacing" a:defaultValue="normal">
843
+ <choice>
844
+ <value>normal</value>
845
+ <value>compact</value>
846
+ </choice>
847
+ </attribute>
848
+ </optional>
849
+ <optional>
850
+ <attribute name="pn"/>
851
+ </optional>
852
+ <oneOrMore>
853
+ <ref name="li"/>
854
+ </oneOrMore>
855
+ </element>
856
+ </define>
857
+ <define name="ul">
858
+ <element name="ul">
859
+ <optional>
860
+ <attribute name="xml:base"/>
861
+ </optional>
862
+ <optional>
863
+ <attribute name="xml:lang"/>
864
+ </optional>
865
+ <optional>
866
+ <attribute name="anchor">
867
+ <data type="ID"/>
868
+ </attribute>
869
+ </optional>
870
+ <optional>
871
+ <attribute name="spacing" a:defaultValue="normal">
872
+ <choice>
873
+ <value>normal</value>
874
+ <value>compact</value>
875
+ </choice>
876
+ </attribute>
877
+ </optional>
878
+ <optional>
879
+ <attribute name="empty" a:defaultValue="false">
880
+ <choice>
881
+ <value>false</value>
882
+ <value>true</value>
883
+ </choice>
884
+ </attribute>
885
+ <optional>
886
+ <attribute name="pn"/>
887
+ </optional>
888
+ </optional>
889
+ <oneOrMore>
890
+ <ref name="li"/>
891
+ </oneOrMore>
892
+ </element>
893
+ </define>
894
+ <define name="li">
895
+ <element name="li">
896
+ <optional>
897
+ <attribute name="xml:base"/>
898
+ </optional>
899
+ <optional>
900
+ <attribute name="xml:lang"/>
901
+ </optional>
902
+ <optional>
903
+ <attribute name="anchor">
904
+ <data type="ID"/>
905
+ </attribute>
906
+ </optional>
907
+ <optional>
908
+ <attribute name="pn"/>
909
+ </optional>
910
+ <choice>
911
+ <oneOrMore>
912
+ <choice>
913
+ <ref name="artwork"/>
914
+ <ref name="dl"/>
915
+ <ref name="figure"/>
916
+ <ref name="ol"/>
917
+ <ref name="sourcecode"/>
918
+ <ref name="t"/>
919
+ <ref name="ul"/>
920
+ </choice>
921
+ </oneOrMore>
922
+ <oneOrMore>
923
+ <choice>
924
+ <text/>
925
+ <ref name="bcp14"/>
926
+ <ref name="cref"/>
927
+ <ref name="em"/>
928
+ <ref name="eref"/>
929
+ <ref name="iref"/>
930
+ <ref name="relref"/>
931
+ <ref name="strong"/>
932
+ <ref name="sub"/>
933
+ <ref name="sup"/>
934
+ <ref name="tt"/>
935
+ <ref name="xref"/>
936
+ </choice>
937
+ </oneOrMore>
938
+ </choice>
939
+ </element>
940
+ </define>
941
+ <define name="dl">
942
+ <element name="dl">
943
+ <optional>
944
+ <attribute name="xml:base"/>
945
+ </optional>
946
+ <optional>
947
+ <attribute name="xml:lang"/>
948
+ </optional>
949
+ <optional>
950
+ <attribute name="anchor">
951
+ <data type="ID"/>
952
+ </attribute>
953
+ </optional>
954
+ <optional>
955
+ <attribute name="spacing" a:defaultValue="normal">
956
+ <choice>
957
+ <value>normal</value>
958
+ <value>compact</value>
959
+ </choice>
960
+ </attribute>
961
+ </optional>
962
+ <optional>
963
+ <attribute name="hanging" a:defaultValue="true">
964
+ <choice>
965
+ <value>false</value>
966
+ <value>true</value>
967
+ </choice>
968
+ </attribute>
969
+ </optional>
970
+ <optional>
971
+ <attribute name="pn"/>
972
+ </optional>
973
+ <oneOrMore>
974
+ <ref name="dt"/>
975
+ <ref name="dd"/>
976
+ </oneOrMore>
977
+ </element>
978
+ </define>
979
+ <define name="dt">
980
+ <element name="dt">
981
+ <optional>
982
+ <attribute name="xml:base"/>
983
+ </optional>
984
+ <optional>
985
+ <attribute name="xml:lang"/>
986
+ </optional>
987
+ <optional>
988
+ <attribute name="anchor">
989
+ <data type="ID"/>
990
+ </attribute>
991
+ </optional>
992
+ <optional>
993
+ <attribute name="pn"/>
994
+ </optional>
995
+ <zeroOrMore>
996
+ <choice>
997
+ <text/>
998
+ <ref name="bcp14"/>
999
+ <ref name="cref"/>
1000
+ <ref name="em"/>
1001
+ <ref name="eref"/>
1002
+ <ref name="iref"/>
1003
+ <ref name="relref"/>
1004
+ <ref name="strong"/>
1005
+ <ref name="sub"/>
1006
+ <ref name="sup"/>
1007
+ <ref name="tt"/>
1008
+ <ref name="xref"/>
1009
+ </choice>
1010
+ </zeroOrMore>
1011
+ </element>
1012
+ </define>
1013
+ <define name="dd">
1014
+ <element name="dd">
1015
+ <optional>
1016
+ <attribute name="xml:base"/>
1017
+ </optional>
1018
+ <optional>
1019
+ <attribute name="xml:lang"/>
1020
+ </optional>
1021
+ <optional>
1022
+ <attribute name="anchor">
1023
+ <data type="ID"/>
1024
+ </attribute>
1025
+ </optional>
1026
+ <optional>
1027
+ <attribute name="pn"/>
1028
+ </optional>
1029
+ <choice>
1030
+ <oneOrMore>
1031
+ <choice>
1032
+ <ref name="artwork"/>
1033
+ <ref name="dl"/>
1034
+ <ref name="figure"/>
1035
+ <ref name="ol"/>
1036
+ <ref name="sourcecode"/>
1037
+ <ref name="t"/>
1038
+ <ref name="ul"/>
1039
+ </choice>
1040
+ </oneOrMore>
1041
+ <oneOrMore>
1042
+ <choice>
1043
+ <text/>
1044
+ <ref name="bcp14"/>
1045
+ <ref name="cref"/>
1046
+ <ref name="em"/>
1047
+ <ref name="eref"/>
1048
+ <ref name="iref"/>
1049
+ <ref name="relref"/>
1050
+ <ref name="strong"/>
1051
+ <ref name="sub"/>
1052
+ <ref name="sup"/>
1053
+ <ref name="tt"/>
1054
+ <ref name="xref"/>
1055
+ </choice>
1056
+ </oneOrMore>
1057
+ </choice>
1058
+ </element>
1059
+ </define>
1060
+ <define name="xref">
1061
+ <element name="xref">
1062
+ <optional>
1063
+ <attribute name="xml:base"/>
1064
+ </optional>
1065
+ <optional>
1066
+ <attribute name="xml:lang"/>
1067
+ </optional>
1068
+ <attribute name="target">
1069
+ <data type="IDREF"/>
1070
+ </attribute>
1071
+ <optional>
1072
+ <attribute name="pageno" a:defaultValue="false">
1073
+ <choice>
1074
+ <value>true</value>
1075
+ <value>false</value>
1076
+ </choice>
1077
+ </attribute>
1078
+ </optional>
1079
+ <optional>
1080
+ <attribute name="format" a:defaultValue="default">
1081
+ <choice>
1082
+ <value>default</value>
1083
+ <value>title</value>
1084
+ <value>counter</value>
1085
+ <value>none</value>
1086
+ </choice>
1087
+ </attribute>
1088
+ </optional>
1089
+ <optional>
1090
+ <attribute name="derivedContent"/>
1091
+ </optional>
1092
+ <text/>
1093
+ </element>
1094
+ </define>
1095
+ <define name="relref">
1096
+ <element name="relref">
1097
+ <optional>
1098
+ <attribute name="xml:base"/>
1099
+ </optional>
1100
+ <optional>
1101
+ <attribute name="xml:lang"/>
1102
+ </optional>
1103
+ <attribute name="target">
1104
+ <data type="IDREF"/>
1105
+ </attribute>
1106
+ <optional>
1107
+ <attribute name="displayFormat" a:defaultValue="of">
1108
+ <choice>
1109
+ <value>of</value>
1110
+ <value>comma</value>
1111
+ <value>parens</value>
1112
+ <value>bare</value>
1113
+ </choice>
1114
+ </attribute>
1115
+ </optional>
1116
+ <attribute name="section"/>
1117
+ <optional>
1118
+ <attribute name="relative"/>
1119
+ </optional>
1120
+ <optional>
1121
+ <attribute name="derivedLink"/>
1122
+ </optional>
1123
+ <text/>
1124
+ </element>
1125
+ </define>
1126
+ <define name="eref">
1127
+ <element name="eref">
1128
+ <optional>
1129
+ <attribute name="xml:base"/>
1130
+ </optional>
1131
+ <optional>
1132
+ <attribute name="xml:lang"/>
1133
+ </optional>
1134
+ <attribute name="target"/>
1135
+ <text/>
1136
+ </element>
1137
+ </define>
1138
+ <define name="iref">
1139
+ <element name="iref">
1140
+ <optional>
1141
+ <attribute name="xml:base"/>
1142
+ </optional>
1143
+ <optional>
1144
+ <attribute name="xml:lang"/>
1145
+ </optional>
1146
+ <attribute name="item"/>
1147
+ <optional>
1148
+ <attribute name="subitem" a:defaultValue=""/>
1149
+ </optional>
1150
+ <optional>
1151
+ <attribute name="primary" a:defaultValue="false">
1152
+ <choice>
1153
+ <value>true</value>
1154
+ <value>false</value>
1155
+ </choice>
1156
+ </attribute>
1157
+ </optional>
1158
+ <optional>
1159
+ <attribute name="pn"/>
1160
+ </optional>
1161
+ <empty/>
1162
+ </element>
1163
+ </define>
1164
+ <define name="cref">
1165
+ <element name="cref">
1166
+ <optional>
1167
+ <attribute name="xml:base"/>
1168
+ </optional>
1169
+ <optional>
1170
+ <attribute name="xml:lang"/>
1171
+ </optional>
1172
+ <optional>
1173
+ <attribute name="anchor">
1174
+ <data type="ID"/>
1175
+ </attribute>
1176
+ </optional>
1177
+ <optional>
1178
+ <attribute name="source"/>
1179
+ </optional>
1180
+ <optional>
1181
+ <attribute name="display" a:defaultValue="true">
1182
+ <choice>
1183
+ <value>true</value>
1184
+ <value>false</value>
1185
+ </choice>
1186
+ </attribute>
1187
+ </optional>
1188
+ <zeroOrMore>
1189
+ <choice>
1190
+ <text/>
1191
+ <ref name="em"/>
1192
+ <ref name="eref"/>
1193
+ <ref name="relref"/>
1194
+ <ref name="strong"/>
1195
+ <ref name="sub"/>
1196
+ <ref name="sup"/>
1197
+ <ref name="tt"/>
1198
+ <ref name="xref"/>
1199
+ </choice>
1200
+ </zeroOrMore>
1201
+ </element>
1202
+ </define>
1203
+ <define name="tt">
1204
+ <element name="tt">
1205
+ <optional>
1206
+ <attribute name="xml:base"/>
1207
+ </optional>
1208
+ <optional>
1209
+ <attribute name="xml:lang"/>
1210
+ </optional>
1211
+ <zeroOrMore>
1212
+ <choice>
1213
+ <text/>
1214
+ <ref name="bcp14"/>
1215
+ <ref name="cref"/>
1216
+ <ref name="em"/>
1217
+ <ref name="eref"/>
1218
+ <ref name="iref"/>
1219
+ <ref name="relref"/>
1220
+ <ref name="strong"/>
1221
+ <ref name="sub"/>
1222
+ <ref name="sup"/>
1223
+ <ref name="xref"/>
1224
+ </choice>
1225
+ </zeroOrMore>
1226
+ </element>
1227
+ </define>
1228
+ <define name="strong">
1229
+ <element name="strong">
1230
+ <optional>
1231
+ <attribute name="xml:base"/>
1232
+ </optional>
1233
+ <optional>
1234
+ <attribute name="xml:lang"/>
1235
+ </optional>
1236
+ <zeroOrMore>
1237
+ <choice>
1238
+ <text/>
1239
+ <ref name="bcp14"/>
1240
+ <ref name="cref"/>
1241
+ <ref name="em"/>
1242
+ <ref name="eref"/>
1243
+ <ref name="iref"/>
1244
+ <ref name="relref"/>
1245
+ <ref name="sub"/>
1246
+ <ref name="sup"/>
1247
+ <ref name="tt"/>
1248
+ <ref name="xref"/>
1249
+ </choice>
1250
+ </zeroOrMore>
1251
+ </element>
1252
+ </define>
1253
+ <define name="em">
1254
+ <element name="em">
1255
+ <optional>
1256
+ <attribute name="xml:base"/>
1257
+ </optional>
1258
+ <optional>
1259
+ <attribute name="xml:lang"/>
1260
+ </optional>
1261
+ <zeroOrMore>
1262
+ <choice>
1263
+ <text/>
1264
+ <ref name="bcp14"/>
1265
+ <ref name="cref"/>
1266
+ <ref name="eref"/>
1267
+ <ref name="iref"/>
1268
+ <ref name="relref"/>
1269
+ <ref name="strong"/>
1270
+ <ref name="sub"/>
1271
+ <ref name="sup"/>
1272
+ <ref name="tt"/>
1273
+ <ref name="xref"/>
1274
+ </choice>
1275
+ </zeroOrMore>
1276
+ </element>
1277
+ </define>
1278
+ <define name="sub">
1279
+ <element name="sub">
1280
+ <optional>
1281
+ <attribute name="xml:base"/>
1282
+ </optional>
1283
+ <optional>
1284
+ <attribute name="xml:lang"/>
1285
+ </optional>
1286
+ <zeroOrMore>
1287
+ <choice>
1288
+ <text/>
1289
+ <ref name="bcp14"/>
1290
+ <ref name="cref"/>
1291
+ <ref name="em"/>
1292
+ <ref name="eref"/>
1293
+ <ref name="iref"/>
1294
+ <ref name="relref"/>
1295
+ <ref name="strong"/>
1296
+ <ref name="tt"/>
1297
+ <ref name="xref"/>
1298
+ </choice>
1299
+ </zeroOrMore>
1300
+ </element>
1301
+ </define>
1302
+ <define name="sup">
1303
+ <element name="sup">
1304
+ <optional>
1305
+ <attribute name="xml:base"/>
1306
+ </optional>
1307
+ <optional>
1308
+ <attribute name="xml:lang"/>
1309
+ </optional>
1310
+ <zeroOrMore>
1311
+ <choice>
1312
+ <text/>
1313
+ <ref name="bcp14"/>
1314
+ <ref name="cref"/>
1315
+ <ref name="em"/>
1316
+ <ref name="eref"/>
1317
+ <ref name="iref"/>
1318
+ <ref name="relref"/>
1319
+ <ref name="strong"/>
1320
+ <ref name="tt"/>
1321
+ <ref name="xref"/>
1322
+ </choice>
1323
+ </zeroOrMore>
1324
+ </element>
1325
+ </define>
1326
+ <define name="spanx">
1327
+ <element name="spanx">
1328
+ <optional>
1329
+ <attribute name="xml:base"/>
1330
+ </optional>
1331
+ <optional>
1332
+ <attribute name="xml:lang"/>
1333
+ </optional>
1334
+ <optional>
1335
+ <attribute name="xml:space" a:defaultValue="preserve">
1336
+ <choice>
1337
+ <value>default</value>
1338
+ <value>preserve</value>
1339
+ </choice>
1340
+ </attribute>
1341
+ </optional>
1342
+ <optional>
1343
+ <attribute name="style" a:defaultValue="emph"/>
1344
+ </optional>
1345
+ <text/>
1346
+ </element>
1347
+ </define>
1348
+ <define name="vspace">
1349
+ <element name="vspace">
1350
+ <optional>
1351
+ <attribute name="xml:base"/>
1352
+ </optional>
1353
+ <optional>
1354
+ <attribute name="xml:lang"/>
1355
+ </optional>
1356
+ <optional>
1357
+ <attribute name="blankLines" a:defaultValue="0"/>
1358
+ </optional>
1359
+ <empty/>
1360
+ </element>
1361
+ </define>
1362
+ <define name="figure">
1363
+ <element name="figure">
1364
+ <optional>
1365
+ <attribute name="xml:base"/>
1366
+ </optional>
1367
+ <optional>
1368
+ <attribute name="xml:lang"/>
1369
+ </optional>
1370
+ <optional>
1371
+ <attribute name="anchor">
1372
+ <data type="ID"/>
1373
+ </attribute>
1374
+ </optional>
1375
+ <optional>
1376
+ <attribute name="pn"/>
1377
+ </optional>
1378
+ <optional>
1379
+ <attribute name="title" a:defaultValue=""/>
1380
+ </optional>
1381
+ <optional>
1382
+ <attribute name="suppress-title" a:defaultValue="false">
1383
+ <choice>
1384
+ <value>true</value>
1385
+ <value>false</value>
1386
+ </choice>
1387
+ </attribute>
1388
+ </optional>
1389
+ <optional>
1390
+ <attribute name="src"/>
1391
+ </optional>
1392
+ <optional>
1393
+ <attribute name="originalSrc"/>
1394
+ </optional>
1395
+ <optional>
1396
+ <attribute name="align" a:defaultValue="left">
1397
+ <choice>
1398
+ <value>left</value>
1399
+ <value>center</value>
1400
+ <value>right</value>
1401
+ </choice>
1402
+ </attribute>
1403
+ </optional>
1404
+ <optional>
1405
+ <attribute name="alt" a:defaultValue=""/>
1406
+ </optional>
1407
+ <optional>
1408
+ <attribute name="width" a:defaultValue=""/>
1409
+ </optional>
1410
+ <optional>
1411
+ <attribute name="height" a:defaultValue=""/>
1412
+ </optional>
1413
+ <optional>
1414
+ <ref name="name"/>
1415
+ </optional>
1416
+ <zeroOrMore>
1417
+ <ref name="iref"/>
1418
+ </zeroOrMore>
1419
+ <optional>
1420
+ <ref name="preamble"/>
1421
+ </optional>
1422
+ <oneOrMore>
1423
+ <choice>
1424
+ <ref name="artwork"/>
1425
+ <ref name="sourcecode"/>
1426
+ </choice>
1427
+ </oneOrMore>
1428
+ <optional>
1429
+ <ref name="postamble"/>
1430
+ </optional>
1431
+ </element>
1432
+ </define>
1433
+ <define name="table">
1434
+ <element name="table">
1435
+ <optional>
1436
+ <attribute name="xml:base"/>
1437
+ </optional>
1438
+ <optional>
1439
+ <attribute name="xml:lang"/>
1440
+ </optional>
1441
+ <optional>
1442
+ <attribute name="anchor">
1443
+ <data type="ID"/>
1444
+ </attribute>
1445
+ </optional>
1446
+ <optional>
1447
+ <attribute name="pn"/>
1448
+ </optional>
1449
+ <optional>
1450
+ <ref name="name"/>
1451
+ </optional>
1452
+ <zeroOrMore>
1453
+ <ref name="iref"/>
1454
+ </zeroOrMore>
1455
+ <optional>
1456
+ <ref name="thead"/>
1457
+ </optional>
1458
+ <oneOrMore>
1459
+ <ref name="tbody"/>
1460
+ </oneOrMore>
1461
+ <optional>
1462
+ <ref name="tfoot"/>
1463
+ </optional>
1464
+ </element>
1465
+ </define>
1466
+ <define name="preamble">
1467
+ <element name="preamble">
1468
+ <optional>
1469
+ <attribute name="xml:base"/>
1470
+ </optional>
1471
+ <optional>
1472
+ <attribute name="xml:lang"/>
1473
+ </optional>
1474
+ <zeroOrMore>
1475
+ <choice>
1476
+ <text/>
1477
+ <ref name="bcp14"/>
1478
+ <ref name="cref"/>
1479
+ <ref name="em"/>
1480
+ <ref name="eref"/>
1481
+ <ref name="iref"/>
1482
+ <ref name="relref"/>
1483
+ <ref name="spanx"/>
1484
+ <ref name="strong"/>
1485
+ <ref name="sub"/>
1486
+ <ref name="sup"/>
1487
+ <ref name="tt"/>
1488
+ <ref name="xref"/>
1489
+ </choice>
1490
+ </zeroOrMore>
1491
+ </element>
1492
+ </define>
1493
+ <define name="artwork">
1494
+ <element name="artwork">
1495
+ <optional>
1496
+ <attribute name="xml:base"/>
1497
+ </optional>
1498
+ <optional>
1499
+ <attribute name="xml:lang"/>
1500
+ </optional>
1501
+ <optional>
1502
+ <attribute name="anchor">
1503
+ <data type="ID"/>
1504
+ </attribute>
1505
+ </optional>
1506
+ <optional>
1507
+ <attribute name="pn"/>
1508
+ </optional>
1509
+ <optional>
1510
+ <attribute name="xml:space"/>
1511
+ </optional>
1512
+ <optional>
1513
+ <attribute name="name" a:defaultValue=""/>
1514
+ </optional>
1515
+ <optional>
1516
+ <attribute name="type" a:defaultValue=""/>
1517
+ </optional>
1518
+ <optional>
1519
+ <attribute name="src"/>
1520
+ </optional>
1521
+ <optional>
1522
+ <attribute name="align" a:defaultValue="left">
1523
+ <choice>
1524
+ <value>left</value>
1525
+ <value>center</value>
1526
+ <value>right</value>
1527
+ </choice>
1528
+ </attribute>
1529
+ </optional>
1530
+ <optional>
1531
+ <attribute name="alt" a:defaultValue=""/>
1532
+ </optional>
1533
+ <optional>
1534
+ <attribute name="width" a:defaultValue=""/>
1535
+ </optional>
1536
+ <optional>
1537
+ <attribute name="height" a:defaultValue=""/>
1538
+ </optional>
1539
+ <optional>
1540
+ <attribute name="originalSrc"/>
1541
+ </optional>
1542
+ <choice>
1543
+ <zeroOrMore>
1544
+ <text/>
1545
+ </zeroOrMore>
1546
+ <externalRef href='./svg.rng'/>
1547
+ </choice>
1548
+ </element>
1549
+ </define>
1550
+ <!-- https://www.rfc-editor.org/materials/format/SVG-1.2-RFC.rnc -->
1551
+ <define name="sourcecode">
1552
+ <element name="sourcecode">
1553
+ <optional>
1554
+ <attribute name="xml:base"/>
1555
+ </optional>
1556
+ <optional>
1557
+ <attribute name="xml:lang"/>
1558
+ </optional>
1559
+ <optional>
1560
+ <attribute name="anchor">
1561
+ <data type="ID"/>
1562
+ </attribute>
1563
+ </optional>
1564
+ <optional>
1565
+ <attribute name="pn"/>
1566
+ </optional>
1567
+ <optional>
1568
+ <attribute name="name" a:defaultValue=""/>
1569
+ </optional>
1570
+ <optional>
1571
+ <attribute name="type" a:defaultValue=""/>
1572
+ </optional>
1573
+ <optional>
1574
+ <attribute name="src"/>
1575
+ </optional>
1576
+ <optional>
1577
+ <attribute name="originalSrc"/>
1578
+ </optional>
1579
+ <text/>
1580
+ </element>
1581
+ </define>
1582
+ <define name="thead">
1583
+ <element name="thead">
1584
+ <optional>
1585
+ <attribute name="xml:base"/>
1586
+ </optional>
1587
+ <optional>
1588
+ <attribute name="xml:lang"/>
1589
+ </optional>
1590
+ <optional>
1591
+ <attribute name="anchor">
1592
+ <data type="ID"/>
1593
+ </attribute>
1594
+ </optional>
1595
+ <oneOrMore>
1596
+ <ref name="tr"/>
1597
+ </oneOrMore>
1598
+ </element>
1599
+ </define>
1600
+ <define name="tbody">
1601
+ <element name="tbody">
1602
+ <optional>
1603
+ <attribute name="xml:base"/>
1604
+ </optional>
1605
+ <optional>
1606
+ <attribute name="xml:lang"/>
1607
+ </optional>
1608
+ <optional>
1609
+ <attribute name="anchor">
1610
+ <data type="ID"/>
1611
+ </attribute>
1612
+ </optional>
1613
+ <oneOrMore>
1614
+ <ref name="tr"/>
1615
+ </oneOrMore>
1616
+ </element>
1617
+ </define>
1618
+ <define name="tfoot">
1619
+ <element name="tfoot">
1620
+ <optional>
1621
+ <attribute name="xml:base"/>
1622
+ </optional>
1623
+ <optional>
1624
+ <attribute name="xml:lang"/>
1625
+ </optional>
1626
+ <optional>
1627
+ <attribute name="anchor">
1628
+ <data type="ID"/>
1629
+ </attribute>
1630
+ </optional>
1631
+ <oneOrMore>
1632
+ <ref name="tr"/>
1633
+ </oneOrMore>
1634
+ </element>
1635
+ </define>
1636
+ <define name="tr">
1637
+ <element name="tr">
1638
+ <optional>
1639
+ <attribute name="xml:base"/>
1640
+ </optional>
1641
+ <optional>
1642
+ <attribute name="xml:lang"/>
1643
+ </optional>
1644
+ <optional>
1645
+ <attribute name="anchor">
1646
+ <data type="ID"/>
1647
+ </attribute>
1648
+ </optional>
1649
+ <oneOrMore>
1650
+ <choice>
1651
+ <ref name="td"/>
1652
+ <ref name="th"/>
1653
+ </choice>
1654
+ </oneOrMore>
1655
+ </element>
1656
+ </define>
1657
+ <define name="td">
1658
+ <element name="td">
1659
+ <optional>
1660
+ <attribute name="xml:base"/>
1661
+ </optional>
1662
+ <optional>
1663
+ <attribute name="xml:lang"/>
1664
+ </optional>
1665
+ <optional>
1666
+ <attribute name="anchor">
1667
+ <data type="ID"/>
1668
+ </attribute>
1669
+ </optional>
1670
+ <optional>
1671
+ <attribute name="colspan" a:defaultValue="0"/>
1672
+ </optional>
1673
+ <optional>
1674
+ <attribute name="rowspan" a:defaultValue="0"/>
1675
+ </optional>
1676
+ <optional>
1677
+ <attribute name="align" a:defaultValue="left">
1678
+ <choice>
1679
+ <value>left</value>
1680
+ <value>center</value>
1681
+ <value>right</value>
1682
+ </choice>
1683
+ </attribute>
1684
+ </optional>
1685
+ <choice>
1686
+ <oneOrMore>
1687
+ <choice>
1688
+ <ref name="artwork"/>
1689
+ <ref name="dl"/>
1690
+ <ref name="figure"/>
1691
+ <ref name="ol"/>
1692
+ <ref name="sourcecode"/>
1693
+ <ref name="t"/>
1694
+ <ref name="ul"/>
1695
+ </choice>
1696
+ </oneOrMore>
1697
+ <zeroOrMore>
1698
+ <choice>
1699
+ <text/>
1700
+ <ref name="bcp14"/>
1701
+ <ref name="br"/>
1702
+ <ref name="cref"/>
1703
+ <ref name="em"/>
1704
+ <ref name="eref"/>
1705
+ <ref name="iref"/>
1706
+ <ref name="relref"/>
1707
+ <ref name="strong"/>
1708
+ <ref name="sub"/>
1709
+ <ref name="sup"/>
1710
+ <ref name="tt"/>
1711
+ <ref name="xref"/>
1712
+ </choice>
1713
+ </zeroOrMore>
1714
+ </choice>
1715
+ </element>
1716
+ </define>
1717
+ <define name="th">
1718
+ <element name="th">
1719
+ <optional>
1720
+ <attribute name="xml:base"/>
1721
+ </optional>
1722
+ <optional>
1723
+ <attribute name="xml:lang"/>
1724
+ </optional>
1725
+ <optional>
1726
+ <attribute name="anchor">
1727
+ <data type="ID"/>
1728
+ </attribute>
1729
+ </optional>
1730
+ <optional>
1731
+ <attribute name="colspan" a:defaultValue="0"/>
1732
+ </optional>
1733
+ <optional>
1734
+ <attribute name="rowspan" a:defaultValue="0"/>
1735
+ </optional>
1736
+ <optional>
1737
+ <attribute name="align" a:defaultValue="left">
1738
+ <choice>
1739
+ <value>left</value>
1740
+ <value>center</value>
1741
+ <value>right</value>
1742
+ </choice>
1743
+ </attribute>
1744
+ </optional>
1745
+ <choice>
1746
+ <oneOrMore>
1747
+ <choice>
1748
+ <ref name="artwork"/>
1749
+ <ref name="dl"/>
1750
+ <ref name="figure"/>
1751
+ <ref name="ol"/>
1752
+ <ref name="sourcecode"/>
1753
+ <ref name="t"/>
1754
+ <ref name="ul"/>
1755
+ </choice>
1756
+ </oneOrMore>
1757
+ <zeroOrMore>
1758
+ <choice>
1759
+ <text/>
1760
+ <ref name="bcp14"/>
1761
+ <ref name="br"/>
1762
+ <ref name="cref"/>
1763
+ <ref name="em"/>
1764
+ <ref name="eref"/>
1765
+ <ref name="iref"/>
1766
+ <ref name="relref"/>
1767
+ <ref name="strong"/>
1768
+ <ref name="sub"/>
1769
+ <ref name="sup"/>
1770
+ <ref name="tt"/>
1771
+ <ref name="xref"/>
1772
+ </choice>
1773
+ </zeroOrMore>
1774
+ </choice>
1775
+ </element>
1776
+ </define>
1777
+ <define name="postamble">
1778
+ <element name="postamble">
1779
+ <optional>
1780
+ <attribute name="xml:base"/>
1781
+ </optional>
1782
+ <optional>
1783
+ <attribute name="xml:lang"/>
1784
+ </optional>
1785
+ <zeroOrMore>
1786
+ <choice>
1787
+ <text/>
1788
+ <ref name="cref"/>
1789
+ <ref name="eref"/>
1790
+ <ref name="iref"/>
1791
+ <ref name="spanx"/>
1792
+ <ref name="xref"/>
1793
+ </choice>
1794
+ </zeroOrMore>
1795
+ </element>
1796
+ </define>
1797
+ <define name="texttable">
1798
+ <element name="texttable">
1799
+ <optional>
1800
+ <attribute name="xml:base"/>
1801
+ </optional>
1802
+ <optional>
1803
+ <attribute name="xml:lang"/>
1804
+ </optional>
1805
+ <optional>
1806
+ <attribute name="anchor">
1807
+ <data type="ID"/>
1808
+ </attribute>
1809
+ </optional>
1810
+ <optional>
1811
+ <attribute name="title" a:defaultValue=""/>
1812
+ </optional>
1813
+ <optional>
1814
+ <attribute name="suppress-title" a:defaultValue="false">
1815
+ <choice>
1816
+ <value>true</value>
1817
+ <value>false</value>
1818
+ </choice>
1819
+ </attribute>
1820
+ </optional>
1821
+ <optional>
1822
+ <attribute name="align" a:defaultValue="center">
1823
+ <choice>
1824
+ <value>left</value>
1825
+ <value>center</value>
1826
+ <value>right</value>
1827
+ </choice>
1828
+ </attribute>
1829
+ </optional>
1830
+ <optional>
1831
+ <attribute name="style" a:defaultValue="full">
1832
+ <choice>
1833
+ <value>all</value>
1834
+ <value>none</value>
1835
+ <value>headers</value>
1836
+ <value>full</value>
1837
+ </choice>
1838
+ </attribute>
1839
+ </optional>
1840
+ <optional>
1841
+ <ref name="name"/>
1842
+ </optional>
1843
+ <optional>
1844
+ <ref name="preamble"/>
1845
+ </optional>
1846
+ <oneOrMore>
1847
+ <ref name="ttcol"/>
1848
+ </oneOrMore>
1849
+ <zeroOrMore>
1850
+ <ref name="c"/>
1851
+ </zeroOrMore>
1852
+ <optional>
1853
+ <ref name="postamble"/>
1854
+ </optional>
1855
+ </element>
1856
+ </define>
1857
+ <define name="ttcol">
1858
+ <element name="ttcol">
1859
+ <optional>
1860
+ <attribute name="xml:base"/>
1861
+ </optional>
1862
+ <optional>
1863
+ <attribute name="xml:lang"/>
1864
+ </optional>
1865
+ <optional>
1866
+ <attribute name="width"/>
1867
+ </optional>
1868
+ <optional>
1869
+ <attribute name="align" a:defaultValue="left">
1870
+ <choice>
1871
+ <value>left</value>
1872
+ <value>center</value>
1873
+ <value>right</value>
1874
+ </choice>
1875
+ </attribute>
1876
+ </optional>
1877
+ <zeroOrMore>
1878
+ <choice>
1879
+ <ref name="cref"/>
1880
+ <ref name="eref"/>
1881
+ <ref name="iref"/>
1882
+ <ref name="xref"/>
1883
+ <text/>
1884
+ </choice>
1885
+ </zeroOrMore>
1886
+ </element>
1887
+ </define>
1888
+ <define name="c">
1889
+ <element name="c">
1890
+ <optional>
1891
+ <attribute name="xml:base"/>
1892
+ </optional>
1893
+ <optional>
1894
+ <attribute name="xml:lang"/>
1895
+ </optional>
1896
+ <zeroOrMore>
1897
+ <choice>
1898
+ <text/>
1899
+ <ref name="cref"/>
1900
+ <ref name="eref"/>
1901
+ <ref name="iref"/>
1902
+ <ref name="spanx"/>
1903
+ <ref name="xref"/>
1904
+ </choice>
1905
+ </zeroOrMore>
1906
+ </element>
1907
+ </define>
1908
+ <define name="bcp14">
1909
+ <element name="bcp14">
1910
+ <optional>
1911
+ <attribute name="xml:base"/>
1912
+ </optional>
1913
+ <optional>
1914
+ <attribute name="xml:lang"/>
1915
+ </optional>
1916
+ <text/>
1917
+ </element>
1918
+ </define>
1919
+ <define name="br">
1920
+ <element name="br">
1921
+ <optional>
1922
+ <attribute name="xml:base"/>
1923
+ </optional>
1924
+ <optional>
1925
+ <attribute name="xml:lang"/>
1926
+ </optional>
1927
+ <empty/>
1928
+ </element>
1929
+ </define>
1930
+ <define name="back">
1931
+ <element name="back">
1932
+ <optional>
1933
+ <attribute name="xml:base"/>
1934
+ </optional>
1935
+ <optional>
1936
+ <attribute name="xml:lang"/>
1937
+ </optional>
1938
+ <zeroOrMore>
1939
+ <ref name="displayreference"/>
1940
+ </zeroOrMore>
1941
+ <zeroOrMore>
1942
+ <ref name="references"/>
1943
+ </zeroOrMore>
1944
+ <zeroOrMore>
1945
+ <ref name="section"/>
1946
+ </zeroOrMore>
1947
+ </element>
1948
+ </define>
1949
+ <define name="displayreference">
1950
+ <element name="displayreference">
1951
+ <optional>
1952
+ <attribute name="xml:base"/>
1953
+ </optional>
1954
+ <optional>
1955
+ <attribute name="xml:lang"/>
1956
+ </optional>
1957
+ <attribute name="target">
1958
+ <data type="IDREF"/>
1959
+ </attribute>
1960
+ <attribute name="to"/>
1961
+ </element>
1962
+ </define>
1963
+ <define name="references">
1964
+ <element name="references">
1965
+ <optional>
1966
+ <attribute name="xml:base"/>
1967
+ </optional>
1968
+ <optional>
1969
+ <attribute name="xml:lang"/>
1970
+ </optional>
1971
+ <optional>
1972
+ <attribute name="pn"/>
1973
+ </optional>
1974
+ <optional>
1975
+ <attribute name="anchor">
1976
+ <data type="ID"/>
1977
+ </attribute>
1978
+ </optional>
1979
+ <optional>
1980
+ <attribute name="title"/>
1981
+ </optional>
1982
+ <optional>
1983
+ <ref name="name"/>
1984
+ </optional>
1985
+ <zeroOrMore>
1986
+ <choice>
1987
+ <ref name="reference"/>
1988
+ <ref name="referencegroup"/>
1989
+ </choice>
1990
+ </zeroOrMore>
1991
+ </element>
1992
+ </define>
1993
+ <define name="reference">
1994
+ <element name="reference">
1995
+ <optional>
1996
+ <attribute name="xml:base"/>
1997
+ </optional>
1998
+ <optional>
1999
+ <attribute name="xml:lang"/>
2000
+ </optional>
2001
+ <attribute name="anchor">
2002
+ <data type="ID"/>
2003
+ </attribute>
2004
+ <optional>
2005
+ <attribute name="target"/>
2006
+ </optional>
2007
+ <optional>
2008
+ <attribute name="quoteTitle" a:defaultValue="true">
2009
+ <choice>
2010
+ <value>true</value>
2011
+ <value>false</value>
2012
+ </choice>
2013
+ </attribute>
2014
+ </optional>
2015
+ <ref name="front"/>
2016
+ <zeroOrMore>
2017
+ <choice>
2018
+ <ref name="annotation"/>
2019
+ <ref name="format"/>
2020
+ <ref name="refcontent"/>
2021
+ <ref name="seriesInfo"/>
2022
+ </choice>
2023
+ </zeroOrMore>
2024
+ </element>
2025
+ </define>
2026
+ <define name="referencegroup">
2027
+ <element name="referencegroup">
2028
+ <optional>
2029
+ <attribute name="xml:base"/>
2030
+ </optional>
2031
+ <optional>
2032
+ <attribute name="xml:lang"/>
2033
+ </optional>
2034
+ <attribute name="anchor">
2035
+ <data type="ID"/>
2036
+ </attribute>
2037
+ <oneOrMore>
2038
+ <ref name="reference"/>
2039
+ </oneOrMore>
2040
+ </element>
2041
+ </define>
2042
+ <define name="seriesInfo">
2043
+ <element name="seriesInfo">
2044
+ <optional>
2045
+ <attribute name="xml:base"/>
2046
+ </optional>
2047
+ <optional>
2048
+ <attribute name="xml:lang"/>
2049
+ </optional>
2050
+ <attribute name="name"/>
2051
+ <attribute name="value"/>
2052
+ <optional>
2053
+ <attribute name="asciiName"/>
2054
+ </optional>
2055
+ <optional>
2056
+ <attribute name="asciiValue"/>
2057
+ </optional>
2058
+ <optional>
2059
+ <attribute name="status"/>
2060
+ </optional>
2061
+ <optional>
2062
+ <attribute name="stream" a:defaultValue="IETF">
2063
+ <choice>
2064
+ <value>IETF</value>
2065
+ <value>IAB</value>
2066
+ <value>IRTF</value>
2067
+ <value>independent</value>
2068
+ </choice>
2069
+ </attribute>
2070
+ </optional>
2071
+ <empty/>
2072
+ </element>
2073
+ </define>
2074
+ <define name="format">
2075
+ <element name="format">
2076
+ <optional>
2077
+ <attribute name="xml:base"/>
2078
+ </optional>
2079
+ <optional>
2080
+ <attribute name="xml:lang"/>
2081
+ </optional>
2082
+ <optional>
2083
+ <attribute name="target"/>
2084
+ </optional>
2085
+ <attribute name="type"/>
2086
+ <optional>
2087
+ <attribute name="octets"/>
2088
+ </optional>
2089
+ <empty/>
2090
+ </element>
2091
+ </define>
2092
+ <define name="annotation">
2093
+ <element name="annotation">
2094
+ <optional>
2095
+ <attribute name="xml:base"/>
2096
+ </optional>
2097
+ <optional>
2098
+ <attribute name="xml:lang"/>
2099
+ </optional>
2100
+ <zeroOrMore>
2101
+ <choice>
2102
+ <text/>
2103
+ <ref name="bcp14"/>
2104
+ <ref name="cref"/>
2105
+ <ref name="em"/>
2106
+ <ref name="eref"/>
2107
+ <ref name="iref"/>
2108
+ <ref name="relref"/>
2109
+ <ref name="spanx"/>
2110
+ <ref name="strong"/>
2111
+ <ref name="sub"/>
2112
+ <ref name="sup"/>
2113
+ <ref name="tt"/>
2114
+ <ref name="xref"/>
2115
+ </choice>
2116
+ </zeroOrMore>
2117
+ </element>
2118
+ </define>
2119
+ <define name="refcontent">
2120
+ <element name="refcontent">
2121
+ <optional>
2122
+ <attribute name="xml:base"/>
2123
+ </optional>
2124
+ <optional>
2125
+ <attribute name="xml:lang"/>
2126
+ </optional>
2127
+ <zeroOrMore>
2128
+ <choice>
2129
+ <text/>
2130
+ <ref name="bcp14"/>
2131
+ <ref name="em"/>
2132
+ <ref name="strong"/>
2133
+ <ref name="sub"/>
2134
+ <ref name="sup"/>
2135
+ <ref name="tt"/>
2136
+ </choice>
2137
+ </zeroOrMore>
2138
+ </element>
2139
+ </define>
2140
+ <start combine="choice">
2141
+ <ref name="rfc"/>
2142
+ </start>
2143
+ </grammar>