asciidoctor-rfc 0.8.0 → 0.8.2

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