metanorma-ietf 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.hound.yml +3 -0
- data/.oss-guides.rubocop.yml +1077 -0
- data/.rspec +2 -0
- data/.rubocop.ribose.yml +65 -0
- data/.rubocop.tb.yml +650 -0
- data/.rubocop.yml +15 -0
- data/.travis.yml +23 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/Guardfile +22 -0
- data/LICENSE +25 -0
- data/README.adoc +1660 -0
- data/Rakefile +6 -0
- data/bin/asciidoctor-rfc2 +14 -0
- data/bin/asciidoctor-rfc3 +14 -0
- data/bin/console +14 -0
- data/bin/rspec +17 -0
- data/bin/setup +8 -0
- data/docs/installation.md +21 -0
- data/docs/navigation.md +10 -0
- data/docs/overview.md +5 -0
- data/lib/asciidoctor/rfc.rb +8 -0
- data/lib/asciidoctor/rfc/common/base.rb +531 -0
- data/lib/asciidoctor/rfc/common/front.rb +120 -0
- data/lib/asciidoctor/rfc/v2/base.rb +379 -0
- data/lib/asciidoctor/rfc/v2/blocks.rb +261 -0
- data/lib/asciidoctor/rfc/v2/converter.rb +60 -0
- data/lib/asciidoctor/rfc/v2/front.rb +69 -0
- data/lib/asciidoctor/rfc/v2/inline_anchor.rb +111 -0
- data/lib/asciidoctor/rfc/v2/lists.rb +135 -0
- data/lib/asciidoctor/rfc/v2/table.rb +114 -0
- data/lib/asciidoctor/rfc/v2/validate.rb +32 -0
- data/lib/asciidoctor/rfc/v2/validate2.rng +716 -0
- data/lib/asciidoctor/rfc/v3/base.rb +329 -0
- data/lib/asciidoctor/rfc/v3/blocks.rb +246 -0
- data/lib/asciidoctor/rfc/v3/converter.rb +62 -0
- data/lib/asciidoctor/rfc/v3/front.rb +122 -0
- data/lib/asciidoctor/rfc/v3/inline_anchor.rb +89 -0
- data/lib/asciidoctor/rfc/v3/lists.rb +176 -0
- data/lib/asciidoctor/rfc/v3/svg.rng +9081 -0
- data/lib/asciidoctor/rfc/v3/table.rb +65 -0
- data/lib/asciidoctor/rfc/v3/validate.rb +34 -0
- data/lib/asciidoctor/rfc/v3/validate.rng +2143 -0
- data/lib/metanorma-ietf.rb +7 -0
- data/lib/metanorma/ietf.rb +8 -0
- data/lib/metanorma/ietf/processor.rb +89 -0
- data/lib/metanorma/ietf/version.rb +5 -0
- data/metanorma-ietf.gemspec +51 -0
- data/rfc2629-other.ent +61 -0
- data/rfc2629-xhtml.ent +165 -0
- data/rfc2629.dtd +312 -0
- metadata +289 -0
@@ -0,0 +1,135 @@
|
|
1
|
+
module Asciidoctor
|
2
|
+
module Rfc::V2
|
3
|
+
module Lists
|
4
|
+
# Syntax:
|
5
|
+
# * A
|
6
|
+
# * B
|
7
|
+
def ulist(node)
|
8
|
+
noko { |xml| wrap_list :ulist_naked, node, xml }
|
9
|
+
end
|
10
|
+
|
11
|
+
OLIST_TYPES = Hash.new("numbers").merge(
|
12
|
+
arabic: "numbers",
|
13
|
+
# decimal: "1", # not supported
|
14
|
+
loweralpha: "letters",
|
15
|
+
# lowergreek: "lower-greek", # not supported
|
16
|
+
lowerroman: "format %i.",
|
17
|
+
upperalpha: "format %C.",
|
18
|
+
upperroman: "format %I.",
|
19
|
+
).freeze
|
20
|
+
|
21
|
+
# Syntax:
|
22
|
+
# [counter=token] (optional)
|
23
|
+
# . A
|
24
|
+
# . B
|
25
|
+
def olist(node)
|
26
|
+
noko { |xml| wrap_list :olist_naked, node, xml }
|
27
|
+
end
|
28
|
+
|
29
|
+
# Syntax:
|
30
|
+
# [hangIndent=n] (optional)
|
31
|
+
# A:: B
|
32
|
+
# C:: D
|
33
|
+
def dlist(node)
|
34
|
+
noko { |xml| wrap_list :dlist_naked, node, xml }
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def wrap_list(method_name, node, xml)
|
40
|
+
if node.parent.context !~ /paragraph|list_item/
|
41
|
+
xml.t do |xml_t|
|
42
|
+
send method_name, node, xml_t
|
43
|
+
end
|
44
|
+
else
|
45
|
+
send method_name, node, xml
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def ulist_naked(node, xml)
|
50
|
+
style = "symbols"
|
51
|
+
style = "empty" if node.attr("style") == "empty"
|
52
|
+
style = "empty" if node.option?("empty")
|
53
|
+
list_attributes = {
|
54
|
+
style: style,
|
55
|
+
hangIndent: node.attr("hang-indent"),
|
56
|
+
}
|
57
|
+
|
58
|
+
xml.list **attr_code(list_attributes) do |xml_list|
|
59
|
+
node.items.each do |item|
|
60
|
+
t_attributes = {
|
61
|
+
anchor: nil,
|
62
|
+
}
|
63
|
+
|
64
|
+
xml_list.t **attr_code(t_attributes) do |xml_t|
|
65
|
+
xml_t << item.text
|
66
|
+
xml_t << para_to_vspace(item.content) if item.blocks?
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def olist_naked(node, xml)
|
73
|
+
style = OLIST_TYPES[node.style.to_sym]
|
74
|
+
style = "empty" if node.attr("style") == "empty"
|
75
|
+
style = "format #{node.attr('format')}" unless node.attr("format").nil?
|
76
|
+
list_attributes = {
|
77
|
+
hangIndent: node.attr("hang-indent"),
|
78
|
+
counter: node.attr("counter"),
|
79
|
+
style: style,
|
80
|
+
}
|
81
|
+
|
82
|
+
xml.list **attr_code(list_attributes) do |xml_list|
|
83
|
+
node.items.each do |item|
|
84
|
+
t_attributes = {
|
85
|
+
anchor: item.id,
|
86
|
+
}
|
87
|
+
|
88
|
+
xml_list.t **attr_code(t_attributes) do |xml_t|
|
89
|
+
xml_t << item.text
|
90
|
+
xml_t << para_to_vspace(item.content) if item.blocks?
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def dlist_naked(node, xml)
|
97
|
+
style = "hanging"
|
98
|
+
style = "empty" if node.attr("style") == "empty"
|
99
|
+
list_attributes = {
|
100
|
+
hangIndent: node.attr("hang-indent"),
|
101
|
+
style: style,
|
102
|
+
}
|
103
|
+
|
104
|
+
xml.list **attr_code(list_attributes) do |xml_list|
|
105
|
+
node.items.each do |terms, dd|
|
106
|
+
# all but last term have empty dd
|
107
|
+
terms.each_with_index do |term, idx|
|
108
|
+
t_attributes = {
|
109
|
+
hangText: flatten_rawtext(term.text).join(" "),
|
110
|
+
}
|
111
|
+
|
112
|
+
if idx < terms.size - 1
|
113
|
+
xml_list.t **attr_code(t_attributes)
|
114
|
+
else
|
115
|
+
xml_list.t **attr_code(t_attributes) do |xml_t|
|
116
|
+
if !dd.nil? && dd.text?
|
117
|
+
# This vspace element is extraneous to the RFC XML spec,
|
118
|
+
# but is required by IDNITS
|
119
|
+
xml_t.vspace(blankLines: "1") unless $inline_definition_lists
|
120
|
+
xml_t << dd.text
|
121
|
+
end
|
122
|
+
if !dd.nil? && dd.blocks?
|
123
|
+
# v2 does not support multi paragraph list items;
|
124
|
+
# vspace is used to emulate them
|
125
|
+
xml_t << para_to_vspace(dd.content)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
module Asciidoctor
|
2
|
+
module Rfc::V2
|
3
|
+
module Table
|
4
|
+
# Syntax:
|
5
|
+
# [[id]]
|
6
|
+
# .Title
|
7
|
+
# [suppress-title,align,style]
|
8
|
+
# |===
|
9
|
+
# |col | col
|
10
|
+
# |===
|
11
|
+
def table(node)
|
12
|
+
has_body = false
|
13
|
+
has_head = false
|
14
|
+
style_value = case node.attr "grid"
|
15
|
+
when "all"
|
16
|
+
"all"
|
17
|
+
when "rows"
|
18
|
+
"headers"
|
19
|
+
when "cols"
|
20
|
+
"full"
|
21
|
+
when "none"
|
22
|
+
"none"
|
23
|
+
else
|
24
|
+
"full"
|
25
|
+
end
|
26
|
+
warn "asciidoctor: WARNING (#{current_location(node)}): grid=rows attribute is not supported on tables" if node.attr("grid") == "rows"
|
27
|
+
texttable_attributes = {
|
28
|
+
anchor: node.id,
|
29
|
+
title: node.title,
|
30
|
+
'suppress-title': node.attr("supress-title") ? true : false,
|
31
|
+
align: node.attr("align"),
|
32
|
+
style: style_value,
|
33
|
+
}
|
34
|
+
|
35
|
+
noko do |xml|
|
36
|
+
xml.texttable **attr_code(texttable_attributes) do |xml_texttable|
|
37
|
+
[:head, :body, :foot].reject { |tblsec| node.rows[tblsec].empty? }.each do |tblsec|
|
38
|
+
has_body = true if tblsec == :body
|
39
|
+
has_head = true if tblsec == :head
|
40
|
+
end
|
41
|
+
warn "asciidoctor: WARNING (#{current_location(node)}): tables must have at least one body row" unless has_body
|
42
|
+
warn "asciidoctor: WARNING (#{current_location(node)}): tables must have at least one head row" unless has_head
|
43
|
+
|
44
|
+
# preamble, postamble elements not supported
|
45
|
+
table_head node, xml_texttable
|
46
|
+
table_body_and_foot node, xml_texttable
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def table_head(node, xml)
|
54
|
+
[:head].reject { |tblsec| node.rows[tblsec].empty? }.each do |tblsec|
|
55
|
+
warn "asciidoctor: WARNING (#{current_location(node)}): RFC XML v2 tables only support a single header row" if node.rows[tblsec].size > 1
|
56
|
+
widths = table_widths(node)
|
57
|
+
node.rows[tblsec].each do |row|
|
58
|
+
rowlength = 0
|
59
|
+
row.each_with_index do |cell, i|
|
60
|
+
warn "asciidoctor: WARNING (#{current_location(node)}): RFC XML v2 tables do not support colspan attribute" unless cell.colspan.nil?
|
61
|
+
warn "asciidoctor: WARNING (#{current_location(node)}): RFC XML v2 tables do not support rowspan attribute" unless cell.rowspan.nil?
|
62
|
+
width = if node.option?("autowidth") || i >= widths[:percentage].size || !widths[:named]
|
63
|
+
nil
|
64
|
+
else
|
65
|
+
"#{widths[:percentage][i]}%"
|
66
|
+
end
|
67
|
+
ttcol_attributes = {
|
68
|
+
# NOTE: anchor (ttcol.id) not supported
|
69
|
+
align: cell.attr("halign"),
|
70
|
+
width: width,
|
71
|
+
}
|
72
|
+
|
73
|
+
rowlength += cell.text.size
|
74
|
+
xml.ttcol **attr_code(ttcol_attributes) do |ttcol|
|
75
|
+
ttcol << cell.text
|
76
|
+
# NOT cell.content: v2 does not permit blocks in cells
|
77
|
+
end
|
78
|
+
end
|
79
|
+
warn "asciidoctor: WARNING (#{current_location(node)}): header row of table is longer than 72 ascii characters" if rowlength > 72
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def table_widths(node)
|
85
|
+
percentage_widths = []
|
86
|
+
named_widths = false
|
87
|
+
node.columns.each do |col|
|
88
|
+
percentage_widths << col.attr("colpcwidth")
|
89
|
+
named_widths = true if col.attr("width") != 1
|
90
|
+
# 1 is the default set value if no width has been given for the column
|
91
|
+
# if a columns widths have been set as [1,1,1,1,...], they will be ignored
|
92
|
+
end
|
93
|
+
{ percentage: percentage_widths, named: named_widths }
|
94
|
+
end
|
95
|
+
|
96
|
+
def table_body_and_foot(node, xml)
|
97
|
+
[:body, :foot].reject { |tblsec| node.rows[tblsec].empty? }.each do |tblsec|
|
98
|
+
# NOTE: anchor (tblsec.id) not supported
|
99
|
+
node.rows[tblsec].each_with_index do |row, i|
|
100
|
+
rowlength = 0
|
101
|
+
row.each do |cell|
|
102
|
+
rowlength += cell.text.size
|
103
|
+
xml.c do |c|
|
104
|
+
c << cell.text
|
105
|
+
# NOT cell.content: v2 does not permit blocks in cells
|
106
|
+
end
|
107
|
+
end
|
108
|
+
warn "asciidoctor: WARNING (#{current_location(node)}): row #{i} of table is longer than 72 ascii characters" if rowlength > 72
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "nokogiri"
|
2
|
+
require "jing"
|
3
|
+
|
4
|
+
module Asciidoctor
|
5
|
+
module Rfc::V2
|
6
|
+
module Validate
|
7
|
+
class << self
|
8
|
+
def validate(doc)
|
9
|
+
filename = File.join(File.dirname(__FILE__), "validate2.rng")
|
10
|
+
schema = Jing.new(filename)
|
11
|
+
|
12
|
+
File.open(".tmp.xml", "w") { |f| f.write(doc.to_xml) }
|
13
|
+
|
14
|
+
begin
|
15
|
+
errors = schema.validate(".tmp.xml")
|
16
|
+
rescue Jing::Error => e
|
17
|
+
abort "[metanorma-ietf] Validation error: #{e}"
|
18
|
+
end
|
19
|
+
|
20
|
+
if errors.none?
|
21
|
+
warn "[metanorma-ietf] Validation passed."
|
22
|
+
else
|
23
|
+
errors.each do |error|
|
24
|
+
warn "[metanorma-ietf] #{error[:message]} @ #{error[:line]}:#{error[:column]}"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,716 @@
|
|
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
|
+
<define name="rfc">
|
4
|
+
<element name="rfc">
|
5
|
+
<optional>
|
6
|
+
<attribute name="number"/>
|
7
|
+
</optional>
|
8
|
+
<optional>
|
9
|
+
<attribute name="obsoletes" a:defaultValue=""/>
|
10
|
+
</optional>
|
11
|
+
<optional>
|
12
|
+
<attribute name="updates" a:defaultValue=""/>
|
13
|
+
</optional>
|
14
|
+
<optional>
|
15
|
+
<attribute name="category">
|
16
|
+
<choice>
|
17
|
+
<value>std</value>
|
18
|
+
<value>bcp</value>
|
19
|
+
<value>info</value>
|
20
|
+
<value>exp</value>
|
21
|
+
<value>historic</value>
|
22
|
+
</choice>
|
23
|
+
</attribute>
|
24
|
+
</optional>
|
25
|
+
<optional>
|
26
|
+
<attribute name="consensus">
|
27
|
+
<choice>
|
28
|
+
<value>no</value>
|
29
|
+
<value>yes</value>
|
30
|
+
</choice>
|
31
|
+
</attribute>
|
32
|
+
</optional>
|
33
|
+
<optional>
|
34
|
+
<attribute name="seriesNo"/>
|
35
|
+
</optional>
|
36
|
+
<optional>
|
37
|
+
<attribute name="ipr">
|
38
|
+
<choice>
|
39
|
+
<value>full2026</value>
|
40
|
+
<value>noDerivativeWorks2026</value>
|
41
|
+
<value>none</value>
|
42
|
+
<value>full3667</value>
|
43
|
+
<value>noModification3667</value>
|
44
|
+
<value>noDerivatives3667</value>
|
45
|
+
<value>full3978</value>
|
46
|
+
<value>noModification3978</value>
|
47
|
+
<value>noDerivatives3978</value>
|
48
|
+
<value>trust200811</value>
|
49
|
+
<value>noModificationTrust200811</value>
|
50
|
+
<value>noDerivativesTrust200811</value>
|
51
|
+
<value>trust200902</value>
|
52
|
+
<value>noModificationTrust200902</value>
|
53
|
+
<value>noDerivativesTrust200902</value>
|
54
|
+
<value>pre5378Trust200902</value>
|
55
|
+
</choice>
|
56
|
+
</attribute>
|
57
|
+
</optional>
|
58
|
+
<optional>
|
59
|
+
<attribute name="iprExtract">
|
60
|
+
<data type="IDREF"/>
|
61
|
+
</attribute>
|
62
|
+
</optional>
|
63
|
+
<optional>
|
64
|
+
<attribute name="submissionType" a:defaultValue="IETF">
|
65
|
+
<choice>
|
66
|
+
<value>IETF</value>
|
67
|
+
<value>IAB</value>
|
68
|
+
<value>IRTF</value>
|
69
|
+
<value>independent</value>
|
70
|
+
</choice>
|
71
|
+
</attribute>
|
72
|
+
</optional>
|
73
|
+
<optional>
|
74
|
+
<attribute name="docName"/>
|
75
|
+
</optional>
|
76
|
+
<optional>
|
77
|
+
<attribute name="xml:lang" a:defaultValue="en"/>
|
78
|
+
</optional>
|
79
|
+
<ref name="front"/>
|
80
|
+
<ref name="middle"/>
|
81
|
+
<optional>
|
82
|
+
<ref name="back"/>
|
83
|
+
</optional>
|
84
|
+
</element>
|
85
|
+
</define>
|
86
|
+
<define name="front">
|
87
|
+
<element name="front">
|
88
|
+
<ref name="title"/>
|
89
|
+
<oneOrMore>
|
90
|
+
<ref name="author"/>
|
91
|
+
</oneOrMore>
|
92
|
+
<ref name="date"/>
|
93
|
+
<zeroOrMore>
|
94
|
+
<ref name="area"/>
|
95
|
+
</zeroOrMore>
|
96
|
+
<zeroOrMore>
|
97
|
+
<ref name="workgroup"/>
|
98
|
+
</zeroOrMore>
|
99
|
+
<zeroOrMore>
|
100
|
+
<ref name="keyword"/>
|
101
|
+
</zeroOrMore>
|
102
|
+
<optional>
|
103
|
+
<ref name="abstract"/>
|
104
|
+
</optional>
|
105
|
+
<zeroOrMore>
|
106
|
+
<ref name="note"/>
|
107
|
+
</zeroOrMore>
|
108
|
+
</element>
|
109
|
+
</define>
|
110
|
+
<define name="title">
|
111
|
+
<element name="title">
|
112
|
+
<optional>
|
113
|
+
<attribute name="abbrev"/>
|
114
|
+
</optional>
|
115
|
+
<text/>
|
116
|
+
</element>
|
117
|
+
</define>
|
118
|
+
<define name="author">
|
119
|
+
<element name="author">
|
120
|
+
<optional>
|
121
|
+
<attribute name="initials"/>
|
122
|
+
</optional>
|
123
|
+
<optional>
|
124
|
+
<attribute name="surname"/>
|
125
|
+
</optional>
|
126
|
+
<optional>
|
127
|
+
<attribute name="fullname"/>
|
128
|
+
</optional>
|
129
|
+
<optional>
|
130
|
+
<attribute name="role">
|
131
|
+
<value>editor</value>
|
132
|
+
</attribute>
|
133
|
+
</optional>
|
134
|
+
<optional>
|
135
|
+
<ref name="organization"/>
|
136
|
+
</optional>
|
137
|
+
<optional>
|
138
|
+
<ref name="address"/>
|
139
|
+
</optional>
|
140
|
+
</element>
|
141
|
+
</define>
|
142
|
+
<define name="organization">
|
143
|
+
<element name="organization">
|
144
|
+
<optional>
|
145
|
+
<attribute name="abbrev"/>
|
146
|
+
</optional>
|
147
|
+
<text/>
|
148
|
+
</element>
|
149
|
+
</define>
|
150
|
+
<define name="address">
|
151
|
+
<element name="address">
|
152
|
+
<optional>
|
153
|
+
<ref name="postal"/>
|
154
|
+
</optional>
|
155
|
+
<optional>
|
156
|
+
<ref name="phone"/>
|
157
|
+
</optional>
|
158
|
+
<optional>
|
159
|
+
<ref name="facsimile"/>
|
160
|
+
</optional>
|
161
|
+
<optional>
|
162
|
+
<ref name="email"/>
|
163
|
+
</optional>
|
164
|
+
<optional>
|
165
|
+
<ref name="uri"/>
|
166
|
+
</optional>
|
167
|
+
</element>
|
168
|
+
</define>
|
169
|
+
<define name="postal">
|
170
|
+
<element name="postal">
|
171
|
+
<oneOrMore>
|
172
|
+
<ref name="street"/>
|
173
|
+
</oneOrMore>
|
174
|
+
<zeroOrMore>
|
175
|
+
<choice>
|
176
|
+
<ref name="city"/>
|
177
|
+
<ref name="region"/>
|
178
|
+
<ref name="code"/>
|
179
|
+
<ref name="country"/>
|
180
|
+
</choice>
|
181
|
+
</zeroOrMore>
|
182
|
+
</element>
|
183
|
+
</define>
|
184
|
+
<define name="street">
|
185
|
+
<element name="street">
|
186
|
+
<text/>
|
187
|
+
</element>
|
188
|
+
</define>
|
189
|
+
<define name="city">
|
190
|
+
<element name="city">
|
191
|
+
<text/>
|
192
|
+
</element>
|
193
|
+
</define>
|
194
|
+
<define name="region">
|
195
|
+
<element name="region">
|
196
|
+
<text/>
|
197
|
+
</element>
|
198
|
+
</define>
|
199
|
+
<define name="code">
|
200
|
+
<element name="code">
|
201
|
+
<text/>
|
202
|
+
</element>
|
203
|
+
</define>
|
204
|
+
<define name="country">
|
205
|
+
<element name="country">
|
206
|
+
<text/>
|
207
|
+
</element>
|
208
|
+
</define>
|
209
|
+
<define name="phone">
|
210
|
+
<element name="phone">
|
211
|
+
<text/>
|
212
|
+
</element>
|
213
|
+
</define>
|
214
|
+
<define name="facsimile">
|
215
|
+
<element name="facsimile">
|
216
|
+
<text/>
|
217
|
+
</element>
|
218
|
+
</define>
|
219
|
+
<define name="email">
|
220
|
+
<element name="email">
|
221
|
+
<text/>
|
222
|
+
</element>
|
223
|
+
</define>
|
224
|
+
<define name="uri">
|
225
|
+
<element name="uri">
|
226
|
+
<text/>
|
227
|
+
</element>
|
228
|
+
</define>
|
229
|
+
<define name="date">
|
230
|
+
<element name="date">
|
231
|
+
<optional>
|
232
|
+
<attribute name="day"/>
|
233
|
+
</optional>
|
234
|
+
<optional>
|
235
|
+
<attribute name="month"/>
|
236
|
+
</optional>
|
237
|
+
<optional>
|
238
|
+
<attribute name="year"/>
|
239
|
+
</optional>
|
240
|
+
<empty/>
|
241
|
+
</element>
|
242
|
+
</define>
|
243
|
+
<define name="area">
|
244
|
+
<element name="area">
|
245
|
+
<text/>
|
246
|
+
</element>
|
247
|
+
</define>
|
248
|
+
<define name="workgroup">
|
249
|
+
<element name="workgroup">
|
250
|
+
<text/>
|
251
|
+
</element>
|
252
|
+
</define>
|
253
|
+
<define name="keyword">
|
254
|
+
<element name="keyword">
|
255
|
+
<text/>
|
256
|
+
</element>
|
257
|
+
</define>
|
258
|
+
<define name="abstract">
|
259
|
+
<element name="abstract">
|
260
|
+
<oneOrMore>
|
261
|
+
<ref name="t"/>
|
262
|
+
</oneOrMore>
|
263
|
+
</element>
|
264
|
+
</define>
|
265
|
+
<define name="note">
|
266
|
+
<element name="note">
|
267
|
+
<attribute name="title"/>
|
268
|
+
<oneOrMore>
|
269
|
+
<ref name="t"/>
|
270
|
+
</oneOrMore>
|
271
|
+
</element>
|
272
|
+
</define>
|
273
|
+
<define name="middle">
|
274
|
+
<element name="middle">
|
275
|
+
<oneOrMore>
|
276
|
+
<ref name="section"/>
|
277
|
+
</oneOrMore>
|
278
|
+
</element>
|
279
|
+
</define>
|
280
|
+
<define name="section">
|
281
|
+
<element name="section">
|
282
|
+
<optional>
|
283
|
+
<attribute name="anchor">
|
284
|
+
<data type="ID"/>
|
285
|
+
</attribute>
|
286
|
+
</optional>
|
287
|
+
<attribute name="title"/>
|
288
|
+
<optional>
|
289
|
+
<attribute name="toc" a:defaultValue="default">
|
290
|
+
<choice>
|
291
|
+
<value>include</value>
|
292
|
+
<value>exclude</value>
|
293
|
+
<value>default</value>
|
294
|
+
</choice>
|
295
|
+
</attribute>
|
296
|
+
</optional>
|
297
|
+
<zeroOrMore>
|
298
|
+
<choice>
|
299
|
+
<ref name="t"/>
|
300
|
+
<ref name="figure"/>
|
301
|
+
<ref name="texttable"/>
|
302
|
+
<ref name="iref"/>
|
303
|
+
</choice>
|
304
|
+
</zeroOrMore>
|
305
|
+
<zeroOrMore>
|
306
|
+
<ref name="section"/>
|
307
|
+
</zeroOrMore>
|
308
|
+
</element>
|
309
|
+
</define>
|
310
|
+
<define name="t">
|
311
|
+
<element name="t">
|
312
|
+
<optional>
|
313
|
+
<attribute name="anchor">
|
314
|
+
<data type="ID"/>
|
315
|
+
</attribute>
|
316
|
+
</optional>
|
317
|
+
<optional>
|
318
|
+
<attribute name="hangText"/>
|
319
|
+
</optional>
|
320
|
+
<zeroOrMore>
|
321
|
+
<choice>
|
322
|
+
<text/>
|
323
|
+
<ref name="list"/>
|
324
|
+
<ref name="figure"/>
|
325
|
+
<ref name="xref"/>
|
326
|
+
<ref name="eref"/>
|
327
|
+
<ref name="iref"/>
|
328
|
+
<ref name="cref"/>
|
329
|
+
<ref name="spanx"/>
|
330
|
+
<ref name="vspace"/>
|
331
|
+
</choice>
|
332
|
+
</zeroOrMore>
|
333
|
+
</element>
|
334
|
+
</define>
|
335
|
+
<define name="list">
|
336
|
+
<element name="list">
|
337
|
+
<optional>
|
338
|
+
<attribute name="style"/>
|
339
|
+
</optional>
|
340
|
+
<optional>
|
341
|
+
<attribute name="hangIndent"/>
|
342
|
+
</optional>
|
343
|
+
<optional>
|
344
|
+
<attribute name="counter"/>
|
345
|
+
</optional>
|
346
|
+
<oneOrMore>
|
347
|
+
<ref name="t"/>
|
348
|
+
</oneOrMore>
|
349
|
+
</element>
|
350
|
+
</define>
|
351
|
+
<define name="xref">
|
352
|
+
<element name="xref">
|
353
|
+
<attribute name="target">
|
354
|
+
<data type="IDREF"/>
|
355
|
+
</attribute>
|
356
|
+
<optional>
|
357
|
+
<attribute name="pageno" a:defaultValue="false">
|
358
|
+
<choice>
|
359
|
+
<value>true</value>
|
360
|
+
<value>false</value>
|
361
|
+
</choice>
|
362
|
+
</attribute>
|
363
|
+
</optional>
|
364
|
+
<optional>
|
365
|
+
<attribute name="format" a:defaultValue="default">
|
366
|
+
<choice>
|
367
|
+
<value>counter</value>
|
368
|
+
<value>title</value>
|
369
|
+
<value>none</value>
|
370
|
+
<value>default</value>
|
371
|
+
</choice>
|
372
|
+
</attribute>
|
373
|
+
</optional>
|
374
|
+
<text/>
|
375
|
+
</element>
|
376
|
+
</define>
|
377
|
+
<define name="eref">
|
378
|
+
<element name="eref">
|
379
|
+
<attribute name="target"/>
|
380
|
+
<text/>
|
381
|
+
</element>
|
382
|
+
</define>
|
383
|
+
<define name="iref">
|
384
|
+
<element name="iref">
|
385
|
+
<attribute name="item"/>
|
386
|
+
<optional>
|
387
|
+
<attribute name="subitem" a:defaultValue=""/>
|
388
|
+
</optional>
|
389
|
+
<optional>
|
390
|
+
<attribute name="primary" a:defaultValue="false">
|
391
|
+
<choice>
|
392
|
+
<value>true</value>
|
393
|
+
<value>false</value>
|
394
|
+
</choice>
|
395
|
+
</attribute>
|
396
|
+
</optional>
|
397
|
+
<empty/>
|
398
|
+
</element>
|
399
|
+
</define>
|
400
|
+
<define name="cref">
|
401
|
+
<element name="cref">
|
402
|
+
<optional>
|
403
|
+
<attribute name="anchor">
|
404
|
+
<data type="ID"/>
|
405
|
+
</attribute>
|
406
|
+
</optional>
|
407
|
+
<optional>
|
408
|
+
<attribute name="source"/>
|
409
|
+
</optional>
|
410
|
+
<text/>
|
411
|
+
</element>
|
412
|
+
</define>
|
413
|
+
<define name="spanx">
|
414
|
+
<element name="spanx">
|
415
|
+
<optional>
|
416
|
+
<attribute name="xml:space" a:defaultValue="preserve">
|
417
|
+
<choice>
|
418
|
+
<value>default</value>
|
419
|
+
<value>preserve</value>
|
420
|
+
</choice>
|
421
|
+
</attribute>
|
422
|
+
</optional>
|
423
|
+
<optional>
|
424
|
+
<attribute name="style" a:defaultValue="emph"/>
|
425
|
+
</optional>
|
426
|
+
<text/>
|
427
|
+
</element>
|
428
|
+
</define>
|
429
|
+
<define name="vspace">
|
430
|
+
<element name="vspace">
|
431
|
+
<optional>
|
432
|
+
<attribute name="blankLines" a:defaultValue="0"/>
|
433
|
+
</optional>
|
434
|
+
<empty/>
|
435
|
+
</element>
|
436
|
+
</define>
|
437
|
+
<define name="figure">
|
438
|
+
<element name="figure">
|
439
|
+
<optional>
|
440
|
+
<attribute name="anchor">
|
441
|
+
<data type="ID"/>
|
442
|
+
</attribute>
|
443
|
+
</optional>
|
444
|
+
<optional>
|
445
|
+
<attribute name="title" a:defaultValue=""/>
|
446
|
+
</optional>
|
447
|
+
<optional>
|
448
|
+
<attribute name="suppress-title" a:defaultValue="false">
|
449
|
+
<choice>
|
450
|
+
<value>true</value>
|
451
|
+
<value>false</value>
|
452
|
+
</choice>
|
453
|
+
</attribute>
|
454
|
+
</optional>
|
455
|
+
<optional>
|
456
|
+
<attribute name="src"/>
|
457
|
+
</optional>
|
458
|
+
<optional>
|
459
|
+
<attribute name="align" a:defaultValue="left">
|
460
|
+
<choice>
|
461
|
+
<value>left</value>
|
462
|
+
<value>center</value>
|
463
|
+
<value>right</value>
|
464
|
+
</choice>
|
465
|
+
</attribute>
|
466
|
+
</optional>
|
467
|
+
<optional>
|
468
|
+
<attribute name="alt" a:defaultValue=""/>
|
469
|
+
</optional>
|
470
|
+
<optional>
|
471
|
+
<attribute name="width" a:defaultValue=""/>
|
472
|
+
</optional>
|
473
|
+
<optional>
|
474
|
+
<attribute name="height" a:defaultValue=""/>
|
475
|
+
</optional>
|
476
|
+
<zeroOrMore>
|
477
|
+
<ref name="iref"/>
|
478
|
+
</zeroOrMore>
|
479
|
+
<optional>
|
480
|
+
<ref name="preamble"/>
|
481
|
+
</optional>
|
482
|
+
<ref name="artwork"/>
|
483
|
+
<optional>
|
484
|
+
<ref name="postamble"/>
|
485
|
+
</optional>
|
486
|
+
</element>
|
487
|
+
</define>
|
488
|
+
<define name="preamble">
|
489
|
+
<element name="preamble">
|
490
|
+
<zeroOrMore>
|
491
|
+
<choice>
|
492
|
+
<text/>
|
493
|
+
<ref name="xref"/>
|
494
|
+
<ref name="eref"/>
|
495
|
+
<ref name="iref"/>
|
496
|
+
<ref name="cref"/>
|
497
|
+
<ref name="spanx"/>
|
498
|
+
</choice>
|
499
|
+
</zeroOrMore>
|
500
|
+
</element>
|
501
|
+
</define>
|
502
|
+
<define name="artwork">
|
503
|
+
<element name="artwork">
|
504
|
+
<optional>
|
505
|
+
<attribute name="xml:space" a:defaultValue="preserve">
|
506
|
+
<choice>
|
507
|
+
<value>default</value>
|
508
|
+
<value>preserve</value>
|
509
|
+
</choice>
|
510
|
+
</attribute>
|
511
|
+
</optional>
|
512
|
+
<optional>
|
513
|
+
<attribute name="name" a:defaultValue=""/>
|
514
|
+
</optional>
|
515
|
+
<optional>
|
516
|
+
<attribute name="type" a:defaultValue=""/>
|
517
|
+
</optional>
|
518
|
+
<optional>
|
519
|
+
<attribute name="src"/>
|
520
|
+
</optional>
|
521
|
+
<optional>
|
522
|
+
<attribute name="align" a:defaultValue="left">
|
523
|
+
<choice>
|
524
|
+
<value>left</value>
|
525
|
+
<value>center</value>
|
526
|
+
<value>right</value>
|
527
|
+
</choice>
|
528
|
+
</attribute>
|
529
|
+
</optional>
|
530
|
+
<optional>
|
531
|
+
<attribute name="alt" a:defaultValue=""/>
|
532
|
+
</optional>
|
533
|
+
<optional>
|
534
|
+
<attribute name="width" a:defaultValue=""/>
|
535
|
+
</optional>
|
536
|
+
<optional>
|
537
|
+
<attribute name="height" a:defaultValue=""/>
|
538
|
+
</optional>
|
539
|
+
<zeroOrMore>
|
540
|
+
<text/>
|
541
|
+
</zeroOrMore>
|
542
|
+
</element>
|
543
|
+
</define>
|
544
|
+
<define name="postamble">
|
545
|
+
<element name="postamble">
|
546
|
+
<zeroOrMore>
|
547
|
+
<choice>
|
548
|
+
<text/>
|
549
|
+
<ref name="xref"/>
|
550
|
+
<ref name="eref"/>
|
551
|
+
<ref name="iref"/>
|
552
|
+
<ref name="cref"/>
|
553
|
+
<ref name="spanx"/>
|
554
|
+
</choice>
|
555
|
+
</zeroOrMore>
|
556
|
+
</element>
|
557
|
+
</define>
|
558
|
+
<define name="texttable">
|
559
|
+
<element name="texttable">
|
560
|
+
<optional>
|
561
|
+
<attribute name="anchor">
|
562
|
+
<data type="ID"/>
|
563
|
+
</attribute>
|
564
|
+
</optional>
|
565
|
+
<optional>
|
566
|
+
<attribute name="title" a:defaultValue=""/>
|
567
|
+
</optional>
|
568
|
+
<optional>
|
569
|
+
<attribute name="suppress-title" a:defaultValue="false">
|
570
|
+
<choice>
|
571
|
+
<value>true</value>
|
572
|
+
<value>false</value>
|
573
|
+
</choice>
|
574
|
+
</attribute>
|
575
|
+
</optional>
|
576
|
+
<optional>
|
577
|
+
<attribute name="align" a:defaultValue="center">
|
578
|
+
<choice>
|
579
|
+
<value>left</value>
|
580
|
+
<value>center</value>
|
581
|
+
<value>right</value>
|
582
|
+
</choice>
|
583
|
+
</attribute>
|
584
|
+
</optional>
|
585
|
+
<optional>
|
586
|
+
<attribute name="style" a:defaultValue="full">
|
587
|
+
<choice>
|
588
|
+
<value>all</value>
|
589
|
+
<value>none</value>
|
590
|
+
<value>headers</value>
|
591
|
+
<value>full</value>
|
592
|
+
</choice>
|
593
|
+
</attribute>
|
594
|
+
</optional>
|
595
|
+
<optional>
|
596
|
+
<ref name="preamble"/>
|
597
|
+
</optional>
|
598
|
+
<oneOrMore>
|
599
|
+
<ref name="ttcol"/>
|
600
|
+
</oneOrMore>
|
601
|
+
<zeroOrMore>
|
602
|
+
<ref name="c"/>
|
603
|
+
</zeroOrMore>
|
604
|
+
<optional>
|
605
|
+
<ref name="postamble"/>
|
606
|
+
</optional>
|
607
|
+
</element>
|
608
|
+
</define>
|
609
|
+
<define name="ttcol">
|
610
|
+
<element name="ttcol">
|
611
|
+
<optional>
|
612
|
+
<attribute name="width"/>
|
613
|
+
</optional>
|
614
|
+
<optional>
|
615
|
+
<attribute name="align" a:defaultValue="left">
|
616
|
+
<choice>
|
617
|
+
<value>left</value>
|
618
|
+
<value>center</value>
|
619
|
+
<value>right</value>
|
620
|
+
</choice>
|
621
|
+
</attribute>
|
622
|
+
</optional>
|
623
|
+
<text/>
|
624
|
+
</element>
|
625
|
+
</define>
|
626
|
+
<define name="c">
|
627
|
+
<element name="c">
|
628
|
+
<zeroOrMore>
|
629
|
+
<choice>
|
630
|
+
<text/>
|
631
|
+
<ref name="xref"/>
|
632
|
+
<ref name="eref"/>
|
633
|
+
<ref name="iref"/>
|
634
|
+
<ref name="cref"/>
|
635
|
+
<ref name="spanx"/>
|
636
|
+
</choice>
|
637
|
+
</zeroOrMore>
|
638
|
+
</element>
|
639
|
+
</define>
|
640
|
+
<define name="back">
|
641
|
+
<element name="back">
|
642
|
+
<zeroOrMore>
|
643
|
+
<ref name="references"/>
|
644
|
+
</zeroOrMore>
|
645
|
+
<zeroOrMore>
|
646
|
+
<ref name="section"/>
|
647
|
+
</zeroOrMore>
|
648
|
+
</element>
|
649
|
+
</define>
|
650
|
+
<define name="references">
|
651
|
+
<element name="references">
|
652
|
+
<optional>
|
653
|
+
<attribute name="title" a:defaultValue="References"/>
|
654
|
+
</optional>
|
655
|
+
<oneOrMore>
|
656
|
+
<ref name="reference"/>
|
657
|
+
</oneOrMore>
|
658
|
+
</element>
|
659
|
+
</define>
|
660
|
+
<define name="reference">
|
661
|
+
<element name="reference">
|
662
|
+
<attribute name="anchor">
|
663
|
+
<data type="ID"/>
|
664
|
+
</attribute>
|
665
|
+
<optional>
|
666
|
+
<attribute name="target"/>
|
667
|
+
</optional>
|
668
|
+
<ref name="front"/>
|
669
|
+
<zeroOrMore>
|
670
|
+
<ref name="seriesInfo"/>
|
671
|
+
</zeroOrMore>
|
672
|
+
<zeroOrMore>
|
673
|
+
<ref name="format"/>
|
674
|
+
</zeroOrMore>
|
675
|
+
<zeroOrMore>
|
676
|
+
<ref name="annotation"/>
|
677
|
+
</zeroOrMore>
|
678
|
+
</element>
|
679
|
+
</define>
|
680
|
+
<define name="seriesInfo">
|
681
|
+
<element name="seriesInfo">
|
682
|
+
<attribute name="name"/>
|
683
|
+
<attribute name="value"/>
|
684
|
+
<empty/>
|
685
|
+
</element>
|
686
|
+
</define>
|
687
|
+
<define name="format">
|
688
|
+
<element name="format">
|
689
|
+
<optional>
|
690
|
+
<attribute name="target"/>
|
691
|
+
</optional>
|
692
|
+
<attribute name="type"/>
|
693
|
+
<optional>
|
694
|
+
<attribute name="octets"/>
|
695
|
+
</optional>
|
696
|
+
<empty/>
|
697
|
+
</element>
|
698
|
+
</define>
|
699
|
+
<define name="annotation">
|
700
|
+
<element name="annotation">
|
701
|
+
<zeroOrMore>
|
702
|
+
<choice>
|
703
|
+
<text/>
|
704
|
+
<ref name="xref"/>
|
705
|
+
<ref name="eref"/>
|
706
|
+
<ref name="iref"/>
|
707
|
+
<ref name="cref"/>
|
708
|
+
<ref name="spanx"/>
|
709
|
+
</choice>
|
710
|
+
</zeroOrMore>
|
711
|
+
</element>
|
712
|
+
</define>
|
713
|
+
<start>
|
714
|
+
<ref name="rfc"/>
|
715
|
+
</start>
|
716
|
+
</grammar>
|