1<!--
2  revised DTD for the RFC document series, draft of 2009-10-06
3  -->
4
5
6<!--
7  Typical invocation:
8      <!DOCTYPE rfc PUBLIC "-//IETF//DTD RFC 2629//EN"
9                           "http://xml.resource.org/authoring/rfc2629.dtd" [
10        ... dtd subset ...
11      ]>
12    or
13      <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
14        ... dtd subset ...
15      ]>
16  -->
17
18
19<!--
20  Contents
21
22    Character entities
23
24    DTD data types
25
26    The top-level
27
28    Front matter
29
30    The Body
31
32    Back matter
33  -->
34
35
36<!--
37  Character entities
38  -->
39
40
41<!ENTITY % rfc2629-xhtml
42         PUBLIC "-//IETF//ENTITIES XHTML subset for RFC 2629//EN"
43                "rfc2629-xhtml.ent">
44%rfc2629-xhtml;
45
46<!ENTITY % rfc2629-other
47         PUBLIC "-//IETF//ENTITIES Other for RFC 2629//EN"
48                "rfc2629-other.ent">
49%rfc2629-other;
50
51
52<!--
53  DTD data types:
54
55        entity        description
56        ======        ===============================================
57        NUMBER        [0-9]+
58        NUMBERS       a comma-separated list of NUMBER
59
60        DAY           the day of the month, e.g., "1"
61        MONTH         the month of the year, e.g., "January"
62        YEAR          a four-digit year, e.g., "1999"
63
64        URI           e.g., "http://invisible.net/"
65
66        ATEXT/CTEXT   printable ASCII text (no line-terminators)
67
68        TEXT          character data
69  -->
70
71
72<!ENTITY % NUMBER     "CDATA">
73<!ENTITY % NUMBERS    "CDATA">
74
75<!ENTITY % DAY        "CDATA">
76<!ENTITY % MONTH      "CDATA">
77<!ENTITY % YEAR       "CDATA">
78
79<!ENTITY % URI        "CDATA">
80
81<!ENTITY % ATEXT      "CDATA">
82<!ENTITY % CTEXT      "#PCDATA">
83
84<!ENTITY % TEXT       "#PCDATA">
85
86<!ENTITY   rfc.number "XXXX">
87
88
89<!--
90  The top-level
91  -->
92
93
94<!--
95  attributes for the "rfc" element are supplied by the RFC
96  editor. when preparing drafts, authors should leave them blank.
97
98  the "seriesNo" attribute is used if the category is, e.g., BCP.
99  -->
100<!ELEMENT rfc         (front,middle,back?)>
101<!ATTLIST rfc
102          number      %NUMBER;           #IMPLIED
103          obsoletes   %NUMBERS;          ""
104          updates     %NUMBERS;          ""
105          category    (std|bcp|info|exp|historic)
106                                         #IMPLIED
107          consensus   (no|yes)           #IMPLIED
108          seriesNo    %NUMBER;           #IMPLIED
109          ipr         (full2026|noDerivativeWorks2026|none
110                      |full3667|noModification3667|noDerivatives3667
111                      |full3978|noModification3978|noDerivatives3978
112                      |trust200811|noModificationTrust200811|noDerivativesTrust200811
113                      |trust200902|noModificationTrust200902|noDerivativesTrust200902
114                      |pre5378Trust200902)
115                                         #IMPLIED
116          iprExtract  IDREF              #IMPLIED
117          submissionType
118                      (IETF|IAB|IRTF|independent) "IETF"
119          docName     %ATEXT;            #IMPLIED
120          xml:lang    %ATEXT;            "en">
121
122
123<!--
124  Front matter
125  -->
126
127
128<!ELEMENT front       (title,author+,date,area*,workgroup*,keyword*,
129                       abstract?,note*)>
130
131<!-- the "abbrev" attribute is used for headers, etc. -->
132<!ELEMENT title       (%CTEXT;)>
133<!ATTLIST title
134          abbrev      %ATEXT;            #IMPLIED>
135
136<!ELEMENT author      (organization?,address?)>
137<!ATTLIST author
138          initials    %ATEXT;            #IMPLIED
139          surname     %ATEXT;            #IMPLIED
140          fullname    %ATEXT;            #IMPLIED
141          role        (editor)           #IMPLIED>
142
143<!ELEMENT organization
144                      (%CTEXT;)>
145<!ATTLIST organization
146          abbrev      %ATEXT;            #IMPLIED>
147
148<!ELEMENT address     (postal?,phone?,facsimile?,email?,uri?)>
149
150<!-- this content model should be more strict:
151     at most one of each the city, region, code, and country
152     elements may be present -->
153<!ELEMENT postal      (street+,(city|region|code|country)*)>
154<!ELEMENT street      (%CTEXT;)>
155<!ELEMENT city        (%CTEXT;)>
156<!ELEMENT region      (%CTEXT;)>
157<!ELEMENT code        (%CTEXT;)>
158<!ELEMENT country     (%CTEXT;)>
159<!ELEMENT phone       (%CTEXT;)>
160<!ELEMENT facsimile   (%CTEXT;)>
161<!ELEMENT email       (%CTEXT;)>
162<!ELEMENT uri         (%CTEXT;)>
163
164<!ELEMENT date        EMPTY>
165<!ATTLIST date
166          day         %DAY;              #IMPLIED
167          month       %MONTH;            #IMPLIED
168          year        %YEAR;             #IMPLIED>
169
170<!-- meta-data... -->
171<!ELEMENT area        (%CTEXT;)>
172<!ELEMENT workgroup   (%CTEXT;)>
173<!ELEMENT keyword     (%CTEXT;)>
174
175<!ELEMENT abstract    (t)+>
176<!ELEMENT note        (t)+>
177<!ATTLIST note
178          title       %ATEXT;            #REQUIRED>
179
180
181<!--
182  The body
183  -->
184
185
186<!ELEMENT middle      (section+)>
187
188<!ELEMENT section     ((t|figure|texttable|iref)*,section*)>
189<!ATTLIST section
190          anchor      ID                 #IMPLIED
191          title       %ATEXT;            #REQUIRED
192          toc         (include|exclude|default)
193                                         "default">
194
195<!-- use of <appendix/> is deprecated...
196<!ELEMENT appendix    ((t|figure|texttable|iref)*,appendix*)>
197<!ATTLIST appendix
198          anchor      ID                 #IMPLIED
199          title       %ATEXT;            #REQUIRED
200          toc         (include|exclude|default)
201                                         "default">
202  -->
203
204<!-- use of <figure/> is deprecated... -->
205<!ELEMENT t           (%TEXT;|list|figure|xref|eref|iref|cref|spanx|vspace)*>
206<!ATTLIST t
207          anchor      ID                 #IMPLIED
208          hangText    %ATEXT;            #IMPLIED>
209
210<!-- the value of the style attribute is inherited from the closest
211     parent -->
212<!ELEMENT list        (t+)>
213<!ATTLIST list
214          style       %ATEXT;            #IMPLIED
215          hangIndent  %NUMBER;           #IMPLIED
216          counter     %ATEXT;            #IMPLIED>
217
218<!ELEMENT xref        (%CTEXT;)>
219<!ATTLIST xref
220          target      IDREF              #REQUIRED
221          pageno      (true|false)       "false"
222          format      (counter|title|none|default)
223                                         "default">
224
225<!ELEMENT eref        (%CTEXT;)>
226<!ATTLIST eref
227          target      %URI;              #REQUIRED>
228
229<!ELEMENT iref        EMPTY>
230<!ATTLIST iref
231          item        %ATEXT;            #REQUIRED
232          subitem     %ATEXT;            ""
233          primary    (true|false)       "false">
234
235<!ELEMENT cref        (%CTEXT;)>
236<!ATTLIST cref
237          anchor      ID                 #IMPLIED
238          source      %ATEXT;            #IMPLIED>
239
240<!ELEMENT spanx       (%CTEXT;)>
241<!ATTLIST spanx
242          xml:space   (default|preserve) "preserve"
243          style       %ATEXT;            "emph">
244
245<!ELEMENT vspace      EMPTY>
246<!ATTLIST vspace
247          blankLines  %NUMBER;           "0">
248
249<!ELEMENT figure      (iref*,preamble?,artwork,postamble?)>
250<!ATTLIST figure
251          anchor      ID                 #IMPLIED
252          title       %ATEXT;            ""
253          suppress-title (true|false)    "false"
254          src         %URI;              #IMPLIED
255          align       (left|center|right) "left"
256          alt         %ATEXT;            ""
257          width       %ATEXT;            ""
258          height      %ATEXT;            "">
259
260<!ELEMENT preamble    (%TEXT;|xref|eref|iref|cref|spanx)*>
261<!ELEMENT artwork     (%TEXT;)*>
262<!ATTLIST artwork
263          xml:space   (default|preserve) "preserve"
264          name        %ATEXT;            ""
265          type        %ATEXT;            ""
266          src         %URI;              #IMPLIED
267          align       (left|center|right) "left"
268          alt         %ATEXT;            ""
269          width       %ATEXT;            ""
270          height      %ATEXT;            "">
271
272<!ELEMENT postamble   (%TEXT;|xref|eref|iref|cref|spanx)*>
273
274<!ELEMENT texttable   (preamble?,ttcol+,c*,postamble?)>
275<!ATTLIST texttable
276          anchor      ID                 #IMPLIED
277          title       %ATEXT;            ""
278          suppress-title (true|false)    "false"
279          align       (left|center|right) "center"
280          style       (all|none|headers|full) "full">
281<!ELEMENT ttcol       (%CTEXT;)>
282<!ATTLIST ttcol
283          width       %ATEXT;            #IMPLIED
284          align       (left|center|right) "left">
285<!ELEMENT c           (%TEXT;|xref|eref|iref|cref|spanx)*>
286
287
288<!--
289  Back matter
290  -->
291
292
293<!-- sections, if present, are appendices -->
294<!ELEMENT back        (references*,section*)>
295
296<!ELEMENT references  (reference+)>
297<!ATTLIST references
298          title       %ATEXT;            "References">
299<!ELEMENT reference   (front,seriesInfo*,format*,annotation*)>
300<!ATTLIST reference
301          anchor      ID                 #IMPLIED
302          target      %URI;              #IMPLIED>
303<!ELEMENT seriesInfo  EMPTY>
304<!ATTLIST seriesInfo
305          name        %ATEXT;            #REQUIRED
306          value       %ATEXT;            #REQUIRED>
307<!ELEMENT format      EMPTY>
308<!ATTLIST format
309          target      %URI;              #IMPLIED
310          type        %ATEXT;            #REQUIRED
311          octets      %NUMBER;           #IMPLIED>
312<!ELEMENT annotation  (%TEXT;|xref|eref|iref|cref|spanx)*>
313