Appendix A. Front-Page ("Boilerplate") Generation
A.1. The "category" Attribute
For RFCs, the "category" attribute (Section 2.33.1) determines the "maturity level" (see Section 4 of [RFC2026]). The allowed values are "std" for "Standards Track", "bcp" for "BCP", "info" for "Informational", "exp" for "Experimental", and "historic" for "Historic". For Internet-Drafts, the "category" attribute is not needed; when supplied, it will appear as "Intended Status". Supplying this information can be useful to reviewers.A.2. The "ipr" Attribute
This attribute value can take a long list of values, each of which describes an IPR policy for the document (Section 2.33.4). The values are not the result of a grand design, but they remain simply for historic reasons. Of these values, only a few are currently in use; all others are supported by various tools for backwards compatibility with old source files. *Note:* some variations of the boilerplate are selected based on the document's date; therefore, it is important to specify the "year", "month", and "day" attributes of the <date> element when archiving the XML source of an Internet-Draft on the day of submission. _Disclaimer: THIS ONLY PROVIDES IMPLEMENTATION INFORMATION. IF YOU NEED LEGAL ADVICE, PLEASE CONTACT A LAWYER._ For further information, refer to <http://trustee.ietf.org/docs/IETF-Copyright-FAQ.pdf>. For the current "Status of This Memo" text, the "submissionType" attribute (Section 2.33.9) determines whether a statement about "Code Components" is inserted (which is the case for the value "IETF", which is the default). Other values, such as "independent", suppress this part of the text.
A.2.1. Current Values: "*trust200902"
The name for these values refers to the IETF Trust's "Legal Provisions Relating to IETF Documents", sometimes simply called the "TLP", which went into effect on February 15, 2009 [TLP2.0]. Updates to this document were published on September 12, 2009 [TLP3.0] and on December 28, 2009 [TLP4.0], modifying the license for code components (see <http://trustee.ietf.org/license-info/> for further information). The actual text is located in Section 6 ("Text to Be Included in IETF Documents") of these documents. Formatters will automatically produce the "correct" text, depending on the document's date information (see above): +----------+--------------------------------+ | TLP | starting with publication date | +----------+--------------------------------+ | [TLP3.0] | 2009-11-01 | | [TLP4.0] | 2010-04-01 | +----------+--------------------------------+ The TLP was again updated in March 2015 ([TLP5.0]), but the changes made in that version do not affect the boilerplate text.A.2.1.1. trust200902
This value should be used unless one of the more specific "*trust200902" values is a better fit. It produces the text in Sections 6.a and 6.b of the TLP.A.2.1.2. noModificationTrust200902
This produces additional text from Section 6.c.i of the TLP: This document may not be modified, and derivative works of it may not be created, except to format it for publication as an RFC or to translate it into languages other than English. *Note:* this clause is incompatible with RFCs that are published on the Standards Track.
A.2.1.3. noDerivativesTrust200902
This produces the additional text from Section 6.c.ii of the TLP: This document may not be modified, and derivative works of it may not be created, and it may not be published except as an Internet-Draft. *Note:* this clause is incompatible with RFCs.A.2.1.4. pre5378Trust200902
This produces the additional text from Section 6.c.iii of the TLP, frequently called the "pre-5378 escape clause" (referring to changes introduced in [RFC5378]): This document may contain material from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008. The person(s) controlling the copyright in some of this material may not have granted the IETF Trust the right to allow modifications of such material outside the IETF Standards Process. Without obtaining an adequate license from the person(s) controlling the copyright in such materials, this document may not be modified outside the IETF Standards Process, and derivative works of it may not be created outside the IETF Standards Process, except to format it for publication as an RFC or to translate it into languages other than English. See Section 4 of <http://trustee.ietf.org/docs/IETF-Copyright-FAQ.pdf> for further information about when to use this value. *Note:* this text appears under "Copyright Notice", unless the document was published before November 2009, in which case it appears under "Status of This Memo".A.2.2. Historic Values
A.2.2.1. Historic Values: "*trust200811"
The attribute values "trust200811", "noModificationTrust200811", and "noDerivativesTrust200811" are similar to their "trust200902" counterparts, except that they use text specified in [TLP1.0].
A.2.2.2. Historic Values: "*3978"
The attribute values "full3978", "noModification3978", and "noDerivatives3978" are similar to their counterparts above, except that they use text specified in Section 5 of [RFC3978].A.2.2.3. Historic Values: "*3667"
The attribute values "full3667", "noModification3667", and "noDerivatives3667" are similar to their counterparts above, except that they use text specified in Section 5 of [RFC3667].A.2.2.4. Historic Values: "*2026"
The attribute values "full2026" and "noDerivativeWorks2026" are similar to their counterparts above, except that they use text specified in Section 10 of [RFC2026]. The special value "none" was also used back then; it denied the IETF any rights beyond publication as an Internet-Draft.
A.3. The "submissionType" Attribute
The RFC Editor publishes documents from different document streams, of which the IETF stream is the most prominent. Other streams are the independent stream (used for things such as discussion of Internet-related technologies that are not part of the IETF agenda), the IAB stream (Internet Architecture Board) and the IRTF stream (Internet Research Task Force). The values for the attribute are "IETF" (the default value), "independent", "IAB", and "IRTF". Historically, this attribute did not affect the final appearance of RFCs, except for subtle differences in copyright notices. Nowadays (as of [RFC5741]), the stream name appears in the first line of the front page, and it also affects the text in the "Status of This Memo" section. For current documents, setting the "submissionType" attribute will have the following effect: o For RFCs, the stream name appears in the upper left corner of the first page (in Internet-Drafts, this is either "Network Working Group" or the value of the <workgroup> element). o For RFCs, it affects the whole "Status of This Memo" section (see Section 3.2.2 of [RFC5741]). o For all RFCs and Internet-Drafts, it determines whether the "Copyright Notice" mentions the copyright on Code Components (see Section 6 of the TLP ("Text to Be Included in IETF Documents")).
A.4. The "consensus" Attribute
For some of the publication streams (see Appendix A.3), the "Status of This Memo" section depends on whether there was a consensus to publish (again, see Section 3.2.2 of [RFC5741]). The "consensus" attribute ("yes"/"no", defaulting to "yes") can be used to supply this information. The effect for the various streams is: o "independent" and "IAB": none. o "IETF": mention that there was an IETF consensus. o "IRTF": mention that there was a research group consensus (where the name of the research group is extracted from the <workgroup> element).
Appendix B. Changes from RFC 2629 ("v1")
B.1. Removed Elements
The <appendix> element has been removed; to generate an appendix, place a <section> inside <back>.B.2. Changed Defaults
Many attributes have lost their "default" value; this is to avoid having document semantics differ based on whether a DTD was specified and evaluated. Processors will handle absent values the way the default value was specified before.
B.3. Changed Elements
<artwork>: Has a set of new attributes: "name", "type", "src", "align", "alt", "width", and "height". (Section 2.5) <author>: The <organization> element is now optional. The "role" attribute was added. (Section 2.6) <country>: The requirement to use ISO 3166 codes was removed. (Section 2.11) <date>: All attributes are now optional. (Section 2.13) <figure>: Has a set of new attributes: "suppress-title", "src", "align", "alt", "width", and "height". (Section 2.17) <iref>: Has a new "primary" attribute. (Section 2.20) <list>: The "style" attribute isn't restricted to a set of enumerated values anymore. The "hangIndent" and "counter" attributes have been added. (Section 2.22) <reference>: <annotation> allows adding prose to a reference. The "anchor" attribute has been made mandatory. (Section 2.30) <references>: Can now appear multiple times and can carry a "title" attribute (so that normative and informative references can be split). (Section 2.31) <rfc>: The "ipr" attribute has gained additional values. The attributes "consensus", "iprExtract", "submissionType", and "xml:lang" have been added. (Section 2.33) <section>: The new "toc" attribute controls whether it will appear in the Table Of Contents. <iref> can now appear as a direct child element. (Section 2.34) <t>: The "anchor" attribute can now be used as well; however, there are restrictions on how they can be referred to. (Section 2.38)B.4. New Elements
The following elements have been added: <annotation> (Section 2.3), <c> (Section 2.8), <cref> (Section 2.12), <format> (Section 2.18), <spanx> (Section 2.36), <texttable> (Section 2.39), and <ttcol> (Section 2.41).
Appendix C. RELAX NG Schema
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" rfc = element rfc { attribute number { text }?, [ a:defaultValue = "" ] attribute obsoletes { text }?, [ a:defaultValue = "" ] attribute updates { text }?, attribute category { "std" | "bcp" | "info" | "exp" | "historic" }?, attribute consensus { "no" | "yes" }?, attribute seriesNo { text }?, attribute ipr { "full2026" | "noDerivativeWorks2026" | "none" | "full3667" | "noModification3667" | "noDerivatives3667" | "full3978" | "noModification3978" | "noDerivatives3978" | "trust200811" | "noModificationTrust200811" | "noDerivativesTrust200811" | "trust200902" | "noModificationTrust200902" | "noDerivativesTrust200902" | "pre5378Trust200902" }?, attribute iprExtract { xsd:IDREF }?, [ a:defaultValue = "IETF" ] attribute submissionType { "IETF" | "IAB" | "IRTF" | "independent" }?, attribute docName { text }?, [ a:defaultValue = "en" ] attribute xml:lang { text }?, front, middle, back? }
front = element front { title, author+, date, area*, workgroup*, keyword*, abstract?, note* } title = element title { attribute abbrev { text }?, text } author = element author { attribute initials { text }?, attribute surname { text }?, attribute fullname { text }?, attribute role { "editor" }?, organization?, address? } organization = element organization { attribute abbrev { text }?, text } address = element address { postal?, phone?, facsimile?, email?, uri? } postal = element postal { street+, (city | region | code | country)* } street = element street { text } city = element city { text } region = element region { text } code = element code { text }
country = element country { text }
phone = element phone { text }
facsimile = element facsimile { text }
email = element email { text }
uri = element uri { text }
date =
element date {
attribute day { text }?,
attribute month { text }?,
attribute year { text }?,
empty
}
area = element area { text }
workgroup = element workgroup { text }
keyword = element keyword { text }
abstract = element abstract { t+ }
note =
element note {
attribute title { text },
t+
}
middle = element middle { section+ }
section =
element section {
attribute anchor { xsd:ID }?,
attribute title { text },
[ a:defaultValue = "default" ]
attribute toc { "include" | "exclude" | "default" }?,
(t | figure | texttable | iref)*,
section*
}
t =
element t {
attribute anchor { xsd:ID }?,
attribute hangText { text }?,
(text
| \list
| figure
| xref
| eref
| iref
| cref
| spanx
| vspace)*
}
\list =
element list {
attribute style { text }?,
attribute hangIndent { text }?,
attribute counter { text }?,
t+
}
xref =
element xref {
attribute target { xsd:IDREF },
[ a:defaultValue = "false" ]
attribute pageno { "true" | "false" }?,
[ a:defaultValue = "default" ]
attribute format { "counter" | "title" | "none" | "default" }?,
text
}
eref =
element eref {
attribute target { text },
text
}
iref =
element iref {
attribute item { text },
[ a:defaultValue = "" ] attribute subitem { text }?,
[ a:defaultValue = "false" ]
attribute primary { "true" | "false" }?,
empty
}
cref = element cref { attribute anchor { xsd:ID }?, attribute source { text }?, text } spanx = element spanx { [ a:defaultValue = "preserve" ] attribute xml:space { "default" | "preserve" }?, [ a:defaultValue = "emph" ] attribute style { text }?, text } vspace = element vspace { [ a:defaultValue = "0" ] attribute blankLines { text }?, empty } figure = element figure { attribute anchor { xsd:ID }?, [ a:defaultValue = "" ] attribute title { text }?, [ a:defaultValue = "false" ] attribute suppress-title { "true" | "false" }?, attribute src { text }?, [ a:defaultValue = "left" ] attribute align { "left" | "center" | "right" }?, [ a:defaultValue = "" ] attribute alt { text }?, [ a:defaultValue = "" ] attribute width { text }?, [ a:defaultValue = "" ] attribute height { text }?, iref*, preamble?, artwork, postamble? } preamble = element preamble { (text | xref | eref | iref | cref | spanx)* }
artwork = element artwork { [ a:defaultValue = "preserve" ] attribute xml:space { "default" | "preserve" }?, [ a:defaultValue = "" ] attribute name { text }?, [ a:defaultValue = "" ] attribute type { text }?, attribute src { text }?, [ a:defaultValue = "left" ] attribute align { "left" | "center" | "right" }?, [ a:defaultValue = "" ] attribute alt { text }?, [ a:defaultValue = "" ] attribute width { text }?, [ a:defaultValue = "" ] attribute height { text }?, text* } postamble = element postamble { (text | xref | eref | iref | cref | spanx)* } texttable = element texttable { attribute anchor { xsd:ID }?, [ a:defaultValue = "" ] attribute title { text }?, [ a:defaultValue = "false" ] attribute suppress-title { "true" | "false" }?, [ a:defaultValue = "center" ] attribute align { "left" | "center" | "right" }?, [ a:defaultValue = "full" ] attribute style { "all" | "none" | "headers" | "full" }?, preamble?, ttcol+, c*, postamble? } ttcol = element ttcol { attribute width { text }?, [ a:defaultValue = "left" ] attribute align { "left" | "center" | "right" }?, text } c = element c { (text | xref | eref | iref | cref | spanx)* } back = element back { references*, section* }
references = element references { [ a:defaultValue = "References" ] attribute title { text }?, reference+ } reference = element reference { attribute anchor { xsd:ID }, attribute target { text }?, front, seriesInfo*, format*, annotation* } seriesInfo = element seriesInfo { attribute name { text }, attribute value { text }, empty } format = element format { attribute target { text }?, attribute type { text }, attribute octets { text }?, empty } annotation = element annotation { (text | xref | eref | iref | cref | spanx)* } start = rfc (This schema was derived from version 1.3.6 of the xml2rfc DTD ("Document Type Definition") (Section 2.8 of [XML]), available from <http://svn.tools.ietf.org/svn/tools/xml2rfc/vocabulary/v2/03/ xml2rfcv2.dtd>.)
C.1. Checking Validity
The validity of XML files can be checked with any tool that supports RELAX NG [RNC]. The reference implementation is the Java-based, open-sourced "Jing" [JING]. To use Jing, download the latest ZIP file from the "downloads" page (currently <https://code.google.com/p/jing-trang/downloads/ detail?name=jing-20091111.zip>), extract the archive, copy "jing.jar" from the "bin" folder, and make sure Java is installed. To check a file "test.xml" using the RNC file "schema.rnc", run (from a command-line prompt): java -jar jing.jar -c schema.rnc test.xml In good Unix tradition, no output means the file is valid.
IAB Members at the Time of Approval
Jari Arkko (IETF Chair) Mary Barnes Marc Blanchet Ralph Droms Ted Hardie Joe Hildebrand Russ Housley Erik Nordmark Robert Sparks Andrew Sullivan Dave Thaler Brian Trammell Suzanne WoolfAcknowledgments
Thanks to everybody who reviewed this document and provided feedback and/or specification text, in particular Brian Carpenter, Elwyn Davies, Tony Hansen, Joe Hildebrand, Paul Hoffman, Henrik Levkowetz, Alice Russo, Tom Taylor, Dave Thaler, Jim Schaad, and Nico Williams. We also thank Marshall T. Rose for both the original design and the reference implementation of the "xml2rfc" formatter.
Index
A Attributes abbrev 21, 34 align 7, 14, 32, 34 alt 7, 15 anchor 11, 15, 23, 28, 31-32 blankLines 35 category 25 consensus 25 counter 18 day 12 docName 25 format 36 fullname 9 hangIndent 18 hangText 31 height 7, 15 initials 9 ipr 26 iprExtract 26 item 17 month 12 name 7, 29 number 27 obsoletes 27 octets 16 pageno 37 primary 17 role 9 seriesNo 27 source 12 src 7, 15 style 19, 30, 32 subitem 17 submissionType 27 suppress-title 15, 33 surname 10 target 13, 16, 23, 37 title 15, 21, 24, 28, 33 toc 28 type 8, 16 updates 27 value 29 width 8, 15, 34
xml:lang 28 xml:space 8, 30 year 13 abbrev attribute in organization element 21 in title element 34 abstract element 4, 50 inside front 16 address element 4, 50 inside author 9 align attribute in artwork element 7 in figure element 14 in texttable element 32 in ttcol element 34 alt attribute in artwork element 7 in figure element 15 anchor attribute in cref element 11 in figure element 15 in reference element 23 in section element 28 in t element 31 in texttable element 32 annotation element 5, 50 inside reference 23 application/rfc+xml Media Type 40 area element 5, 50 inside front 16 artwork element 6, 50 align attribute 7 alt attribute 7 height attribute 7 inside figure 14 name attribute 7 src attribute 7 type attribute 8 width attribute 8 xml:space attribute 8 author element 8, 50 fullname attribute 9 initials attribute 9 inside front 16 role attribute 9 surname attribute 10
B back element 10, 50 inside rfc 25 blankLines attribute in vspace element 35 C c element 10, 50 inside texttable 32 category attribute in rfc element 25 city element 11, 50 inside postal 22 code element 11, 50 inside postal 22 consensus attribute in rfc element 25 counter attribute in list element 18 country element 11, 50 inside postal 22 cref element 11, 50 anchor attribute 11 inside annotation 5 inside c 10 inside postamble 22 inside preamble 23 inside t 31 source attribute 12 D date element 12, 50 day attribute 12 inside front 16 month attribute 12 year attribute 13 day attribute in date element 12 docName attribute in rfc element 25 E Elements abstract 4, 16 address 4, 9 annotation 5, 23 area 5, 16 artwork 6, 14 author 8, 16 back 10, 25 c 10, 32
city 11, 22
code 11, 22
country 11, 22
cref 5, 10-11, 22-23, 31
date 12, 16
email 5, 13
eref 5, 10, 13, 22-23, 31
facsimile 5, 14
figure 14, 28, 31
format 15, 23
front 16, 23, 25
iref 5, 10, 14, 17, 22-23, 28, 31
keyword 16, 18
list 18, 31
middle 20, 25
note 17, 20
organization 9, 21
phone 5, 21
postal 5, 21
postamble 14, 22, 32
preamble 14, 22, 32
reference 23-24
references 10, 24
region 22, 24
rfc 24
section 10, 20, 28
seriesInfo 23, 29
spanx 5, 10, 22-23, 29, 31
street 21, 30
t 4, 18, 20, 28, 31
texttable 28, 31
title 16, 33
ttcol 32, 34
uri 5, 34
vspace 31, 34
workgroup 16, 35
xref 5, 10, 22, 31, 35
email element 13, 50
inside address 5
eref element 13, 50
inside annotation 5
inside c 10
inside postamble 22
inside preamble 23
inside t 31
target attribute 13
F facsimile element 14, 50 inside address 5 figure element 14, 50 align attribute 14 alt attribute 15 anchor attribute 15 height attribute 15 inside section 28 inside t 31 src attribute 15 suppress-title attribute 15 title attribute 15 width attribute 15 format attribute in xref element 36 format element 15, 50 inside reference 23 octets attribute 16 target attribute 16 type attribute 16 front element 16, 50 inside reference 23 inside rfc 25 fullname attribute in author element 9 H hangIndent attribute in list element 18 hangText attribute in t element 31 height attribute in artwork element 7 in figure element 15 I initials attribute in author element 9 ipr attribute "*2026" 48 "*3667" 48 "*3978" 47 "*trust200811" 47 "*trust200902" 46 "noDerivativesTrust200902" 47 "noModificationTrust200902" 46 "pre5378Trust200902" 47 "trust200902" 46 in rfc element 26
iprExtract attribute
in rfc element 26
iref element 17, 50
inside annotation 5
inside c 10
inside figure 14
inside postamble 22
inside preamble 23
inside section 28
inside t 31
item attribute 17
primary attribute 17
subitem attribute 17
item attribute
in iref element 17
K
keyword element 18, 50
inside front 16
L
list element 18, 50
counter attribute 18
hangIndent attribute 18
inside t 31
style attribute 19
list styles
empty 19
format ... 20
hanging 19
letters 19
numbers 19
symbols 19
M
Media Type
application/rfc+xml 40
middle element 20, 50
inside rfc 25
month attribute
in date element 12
N
name attribute
in artwork element 7
in seriesInfo element 29
note element 20, 50
inside front 17
title attribute 21
number attribute
in rfc element 27
O obsoletes attribute in rfc element 27 octets attribute in format element 16 organization element 21, 50 abbrev attribute 21 inside author 9 P pageno attribute in xref element 37 phone element 21, 50 inside address 5 postal element 21, 50 inside address 5 postamble element 22, 50 inside figure 14 inside texttable 32 preamble element 22, 50 inside figure 14 inside texttable 32 primary attribute in iref element 17 R reference element 23, 50 anchor attribute 23 inside references 24 target attribute 23 references element 24, 50 inside back 10 title attribute 24 region element 24, 50 inside postal 22 rfc element 24, 50 category attribute 25 consensus attribute 25 docName attribute 25 ipr attribute 26 iprExtract attribute 26 number attribute 27 obsoletes attribute 27 seriesNo attribute 27 submissionType attribute 27 updates attribute 27 xml:lang attribute 28 role attribute in author element 9
S section element 28, 50 anchor attribute 28 inside back 10 inside middle 20 inside section 28 title attribute 28 toc attribute 28 seriesInfo element 29, 50 inside reference 23 name attribute 29 value attribute 29 seriesNo attribute in rfc element 27 source attribute in cref element 12 spanx element 29, 50 inside annotation 5 inside c 10 inside postamble 22 inside preamble 23 inside t 31 style attribute 30 xml:space attribute 30 src attribute in artwork element 7 in figure element 15 street element 30, 50 inside postal 21 style attribute in list element 19 in spanx element 30 in texttable element 32 subitem attribute in iref element 17 submissionType attribute in rfc element 27 suppress-title attribute in figure element 15 in texttable element 33 surname attribute in author element 10
T
t element 31, 50
anchor attribute 31
hangText attribute 31
inside abstract 4
inside list 18
inside note 20
inside section 28
target attribute
in eref element 13
in format element 16
in reference element 23
in xref element 37
texttable element 31, 50
align attribute 32
anchor attribute 32
inside section 28
style attribute 32
suppress-title attribute 33
title attribute 33
title attribute
in figure element 15
in note element 21
in references element 24
in section element 28
in texttable element 33
title element 33, 50
abbrev attribute 34
inside front 16
toc attribute
in section element 28
ttcol element 34, 50
align attribute 34
inside texttable 32
width attribute 34
type attribute
in artwork element 8
in format element 16
U
updates attribute
in rfc element 27
uri element 34, 50
inside address 5
V value attribute in seriesInfo element 29 vspace element 34, 50 blankLines attribute 35 inside t 31 W width attribute in artwork element 8 in figure element 15 in ttcol element 34 workgroup element 35, 50 inside front 16 X xml:lang attribute in rfc element 28 xml:space attribute in artwork element 8 in spanx element 30 xref element 35, 50 format attribute 36 inside annotation 5 inside c 10 inside postamble 22 inside preamble 22 inside t 31 pageno attribute 37 target attribute 37 xref formats counter 36 default 36 none 36 title 36 Y year attribute in date element 13Author's Address
Julian F. Reschke greenbytes GmbH Hafenweg 16 Muenster, NW 48155 Germany Email: julian.reschke@greenbytes.de URI: http://greenbytes.de/tech/webdav/