metanorma-ietf 1.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 +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>