Network Working Group                                         J. Reschke
Internet-Draft                                                greenbytes
Obsoletes: 2629 (if approved)                          November 26, 2013
Intended status: Standards Track
Expires: May 30, 2014


                   The 'XML2RFC' version 2 Vocabulary
                        draft-reschke-xml2rfc-02

Abstract

   This document defines the 'XML2RFC' version 2 vocabulary; an XML-
   based language used for writing Internet-Drafts and RFCs.  This
   vocabulary is used for current processing of XML into RFCs.  A future
   version of this vocabulary will be used as the canonical version of
   RFCs.

Editorial Note (To be removed by RFC Editor)

   Discussion of this draft takes place on the XML2RFC mailing list
   (xml2rfc@ietf.org), which has its home page at
   <https://www.ietf.org/mailman/listinfo/xml2rfc>.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on May 30, 2014.

Copyright Notice

   Copyright (c) 2013 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents



Reschke                   Expires May 30, 2014                  [Page 1]


Internet-Draft                   XML2RFC                   November 2013


   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
     1.1.  Syntax Notation  . . . . . . . . . . . . . . . . . . . . .  4
   2.  Elements . . . . . . . . . . . . . . . . . . . . . . . . . . .  4
     2.1.  <abstract> . . . . . . . . . . . . . . . . . . . . . . . .  4
     2.2.  <address>  . . . . . . . . . . . . . . . . . . . . . . . .  5
     2.3.  <annotation> . . . . . . . . . . . . . . . . . . . . . . .  5
     2.4.  <area> . . . . . . . . . . . . . . . . . . . . . . . . . .  6
     2.5.  <artwork>  . . . . . . . . . . . . . . . . . . . . . . . .  7
     2.6.  <author> . . . . . . . . . . . . . . . . . . . . . . . . . 10
     2.7.  <back> . . . . . . . . . . . . . . . . . . . . . . . . . . 11
     2.8.  <c>  . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
     2.9.  <city> . . . . . . . . . . . . . . . . . . . . . . . . . . 13
     2.10. <code> . . . . . . . . . . . . . . . . . . . . . . . . . . 13
     2.11. <country>  . . . . . . . . . . . . . . . . . . . . . . . . 13
     2.12. <cref> . . . . . . . . . . . . . . . . . . . . . . . . . . 14
     2.13. <date> . . . . . . . . . . . . . . . . . . . . . . . . . . 14
     2.14. <email>  . . . . . . . . . . . . . . . . . . . . . . . . . 16
     2.15. <eref> . . . . . . . . . . . . . . . . . . . . . . . . . . 16
     2.16. <facsimile>  . . . . . . . . . . . . . . . . . . . . . . . 17
     2.17. <figure> . . . . . . . . . . . . . . . . . . . . . . . . . 17
     2.18. <format> . . . . . . . . . . . . . . . . . . . . . . . . . 19
     2.19. <front>  . . . . . . . . . . . . . . . . . . . . . . . . . 20
     2.20. <iref> . . . . . . . . . . . . . . . . . . . . . . . . . . 21
     2.21. <keyword>  . . . . . . . . . . . . . . . . . . . . . . . . 22
     2.22. <list> . . . . . . . . . . . . . . . . . . . . . . . . . . 23
     2.23. <middle> . . . . . . . . . . . . . . . . . . . . . . . . . 24
     2.24. <note> . . . . . . . . . . . . . . . . . . . . . . . . . . 24
     2.25. <organization> . . . . . . . . . . . . . . . . . . . . . . 25
     2.26. <phone>  . . . . . . . . . . . . . . . . . . . . . . . . . 25
     2.27. <postal> . . . . . . . . . . . . . . . . . . . . . . . . . 26
     2.28. <postamble>  . . . . . . . . . . . . . . . . . . . . . . . 26
     2.29. <preamble> . . . . . . . . . . . . . . . . . . . . . . . . 27
     2.30. <reference>  . . . . . . . . . . . . . . . . . . . . . . . 28
     2.31. <references> . . . . . . . . . . . . . . . . . . . . . . . 29
     2.32. <region> . . . . . . . . . . . . . . . . . . . . . . . . . 30
     2.33. <rfc>  . . . . . . . . . . . . . . . . . . . . . . . . . . 30
     2.34. <section>  . . . . . . . . . . . . . . . . . . . . . . . . 34
     2.35. <seriesInfo> . . . . . . . . . . . . . . . . . . . . . . . 36



Reschke                   Expires May 30, 2014                  [Page 2]


Internet-Draft                   XML2RFC                   November 2013


     2.36. <spanx>  . . . . . . . . . . . . . . . . . . . . . . . . . 37
     2.37. <street> . . . . . . . . . . . . . . . . . . . . . . . . . 38
     2.38. <t>  . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
     2.39. <texttable>  . . . . . . . . . . . . . . . . . . . . . . . 39
     2.40. <title>  . . . . . . . . . . . . . . . . . . . . . . . . . 41
     2.41. <ttcol>  . . . . . . . . . . . . . . . . . . . . . . . . . 42
     2.42. <uri>  . . . . . . . . . . . . . . . . . . . . . . . . . . 43
     2.43. <vspace> . . . . . . . . . . . . . . . . . . . . . . . . . 43
     2.44. <workgroup>  . . . . . . . . . . . . . . . . . . . . . . . 44
     2.45. <xref> . . . . . . . . . . . . . . . . . . . . . . . . . . 44
   3.  Special Unicode Code Points  . . . . . . . . . . . . . . . . . 45
   4.  Internationalization Considerations  . . . . . . . . . . . . . 46
   5.  Security Considerations  . . . . . . . . . . . . . . . . . . . 46
   6.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 46
   7.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 46
   8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 46
     8.1.  Normative References . . . . . . . . . . . . . . . . . . . 46
     8.2.  Informative References . . . . . . . . . . . . . . . . . . 46
   Appendix A.  Front Page Generation . . . . . . . . . . . . . . . . 47
     A.1.  The /rfc/@category Attribute . . . . . . . . . . . . . . . 48
     A.2.  The /rfc/@ipr Attribute  . . . . . . . . . . . . . . . . . 48
       A.2.1.  Current Values: '*trust200902' . . . . . . . . . . . . 48
       A.2.2.  Historic Values  . . . . . . . . . . . . . . . . . . . 50
   Appendix B.  Changes from RFC 2629 ('v1')  . . . . . . . . . . . . 51
     B.1.  Removed Elements . . . . . . . . . . . . . . . . . . . . . 51
     B.2.  Changed Defaults . . . . . . . . . . . . . . . . . . . . . 51
     B.3.  Changed Elements . . . . . . . . . . . . . . . . . . . . . 51
     B.4.  New Elements . . . . . . . . . . . . . . . . . . . . . . . 52
   Appendix C.  Relax NG Schema . . . . . . . . . . . . . . . . . . . 52
   Appendix D.  Proposed Future Changes for 'v3'  . . . . . . . . . . 57
     D.1.  Contact Information  . . . . . . . . . . . . . . . . . . . 57
     D.2.  Figures  . . . . . . . . . . . . . . . . . . . . . . . . . 58
     D.3.  Linking  . . . . . . . . . . . . . . . . . . . . . . . . . 58
     D.4.  Lists  . . . . . . . . . . . . . . . . . . . . . . . . . . 58
     D.5.  References . . . . . . . . . . . . . . . . . . . . . . . . 59
     D.6.  Archival Considerations  . . . . . . . . . . . . . . . . . 59
     D.7.  Document Metadata  . . . . . . . . . . . . . . . . . . . . 59
     D.8.  Misc.  . . . . . . . . . . . . . . . . . . . . . . . . . . 59
   Appendix E.  Comparison Of Vocabularies (to be removed before
                publication as RFC) . . . . . . . . . . . . . . . . . 60
     E.1.  RFC 2629 ('v1') RelaxNG Grammar  . . . . . . . . . . . . . 60
     E.2.  Current ('v2') RelaxNG Grammar . . . . . . . . . . . . . . 63
   Index  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68








Reschke                   Expires May 30, 2014                  [Page 3]


Internet-Draft                   XML2RFC                   November 2013


1.  Introduction

   This document describes version 2 ('v2') of the 'XML2RFC' vocabulary;
   an XML (Extensible Markup Language) language ([XML]) used for writing
   RFCs ([RFCSTYLE]) and Internet-Drafts ([IDGUIDE]).

   It obsoletes the original version ("v1") [RFC2629], which contained
   the original language definition, and which was subsequently extended
   ("v2").  Furthermore, it discusses potential extensions in a future
   revision ("v3").

   Note that not the vocabulary contains certain constructs that might
   not be used when generating the final text; however, they can provide
   useful data for other uses (such index generation, populating a
   keyword database, or syntax checks).

1.1.  Syntax Notation

   The XML vocabulary here is defined in prose, based on the Relax NG
   schema ([RNC]) contained in Appendix C (specified in Relax NG Compact
   Notation, "RNC").

   Each element description also contains the RNC fragment for that
   specific element in a slightly simplified form (for instance, leaving
   out defaults).  This is included as alternative for readers who
   prefer formal syntax over prose. [[anchor2: This information is
   redundant with the prose *and* repeated in the index; I'd like to
   hear feedback whether it's more useful than distracting.]]

   Note that the schema can be used for automated validity checks, but
   certain constraints are only described in prose (example: the
   conditionally required presence of the "abbrev" attribute).

2.  Elements

   [[anchor3: In the section below, some elements/attributes do not have
   a prose description yet.  This is because this is work-in-progress;
   feedback with accurate descriptions is appreciated.]]

2.1.  <abstract>

   Contains the abstract of the document.  The abstract ought to be
   self-contained and thus should not contain references or unexpanded
   abbreviations.  See Section 4.3 of [RFCSTYLE] for more information.

   This element appears as child element of: <front> (Section 2.19).

   Content model:



Reschke                   Expires May 30, 2014                  [Page 4]


Internet-Draft                   XML2RFC                   November 2013


   One or more <t> elements (Section 2.38)

2.1.1.  Grammar

   abstract =
     element abstract {
       t+
     }

2.2.  <address>

   Provides address information for the author.

   This element appears as child element of: <author> (Section 2.6).

   Content model:

   1.  One optional <postal> element (Section 2.27)

   2.  One optional <phone> element (Section 2.26)

   3.  One optional <facsimile> element (Section 2.16)

   4.  One optional <email> element (Section 2.14)

   5.  One optional <uri> element (Section 2.42)

2.2.1.  Grammar

   address =
     element address {
       postal?,
       phone?,
       facsimile?,
       email?,
       uri?
     }

2.3.  <annotation>

   Provides additional prose augmenting a bibliographical reference.










Reschke                   Expires May 30, 2014                  [Page 5]


Internet-Draft                   XML2RFC                   November 2013


   For instance:

   <annotation>
     Latest version available at <eref
     target='http://www.w3.org/TR/xml'/>.
   </annotation>

   ...will generate the text used in the reference for [XML].

   This element appears as child element of: <reference> (Section 2.30).

   Content model:

   In any order:

   o  Text

   o  <xref> elements (Section 2.45)

   o  <eref> elements (Section 2.15)

   o  <iref> elements (Section 2.20)

   o  <cref> elements (Section 2.12)

   o  <spanx> elements (Section 2.36)

2.3.1.  Grammar

   annotation =
     element annotation {
       (TEXT
        | xref
        | eref
        | iref
        | cref
        | spanx)*
     }

2.4.  <area>

   Provides information about the IETF area this document applies to
   (currently not used when generating documents).

   This element appears as child element of: <front> (Section 2.19).

   Content model: only text content.




Reschke                   Expires May 30, 2014                  [Page 6]


Internet-Draft                   XML2RFC                   November 2013


2.4.1.  Grammar

   area =
     element area {
       CTEXT
     }

2.5.  <artwork>

   This element allows the inclusion of "artwork" into the document.

   <artwork> is the only element in the vocabulary that provides full
   control of horizontal whitespace and line breaks, and thus is used
   for a variety of things, such as:

   o  diagrams ("line art"),

   o  source code,

   o  formal languages (such as ABNF or the RNC notation used in this
      document),

   o  complex tables, or

   o  protocol unit diagrams.

   Alternatively, the "src" attribute allows referencing an external
   graphics file, such as a bitmap or a vector drawing.  In this case,
   the textual content ought to contain either a "line art" variant of
   the graphics, or otherwise prose that describes the included image in
   sufficient detail.  Note that RFCs occasionally are published with
   enhanced diagrams; a recent example is [RFC5598].

   This element appears as child element of: <figure> (Section 2.17).

   Content model:

   Text

2.5.1.  Attributes

2.5.1.1.  align

   (optional)

   Controls whether the artwork appears left (default), centered, or
   right.




Reschke                   Expires May 30, 2014                  [Page 7]


Internet-Draft                   XML2RFC                   November 2013


   Allowed values:

   o  "left" (default)

   o  "center"

   o  "right"

2.5.1.2.  alt

   (optional)

   Alternative text description of the artwork (not just the caption).

2.5.1.3.  height

   (optional)

   The suggested height of the graphics included using the "src"
   attribute.

   This attribute is format-dependent and ought to be avoided.

   When generating HTML output, current implementations copy the
   attribute "as is".  For other output formats it is usually ignored.

2.5.1.4.  name

   (optional)

   A filename suitable for the contents (such as for extraction to a
   local file).

   This attribute generally isn't used for document generation, but it
   can be helpful for other kinds of tools (such as automated syntax
   checkers which work by extracting the source code).

2.5.1.5.  src

   (optional)

   The URI of a graphics file.

   Note that this can be a "data" URI ([RFC2397]) as well, in which case
   the graphics file essentially is in-lined.






Reschke                   Expires May 30, 2014                  [Page 8]


Internet-Draft                   XML2RFC                   November 2013


2.5.1.6.  type

   (optional)

   Specifies the type of the artwork.

   The value either is a well-known keyword (such as "abnf"), or an
   Internet Media Type (see [RFC2046]).

   How it is used depends on context and application.  For instance, a
   formatter can attempt to syntax-highlight code in certain known
   languages.

2.5.1.7.  width

   (optional)

   The suggested width of the graphics included using the "src"
   attribute.

   This attribute is format-dependent and ought to be avoided.

   When generating HTML output, current implementations copy the
   attribute "as is".  For other output formats it is usually ignored.

2.5.1.8.  xml:space

   (optional)

   Determines whitespace handling.

   "preserve" is both the default value and the only meaningful setting
   anyway (because that's what the <artwork> element is for).

   See also Section 2.10 of [XML].

   Allowed values:

   o  "default"

   o  "preserve" (default)

2.5.2.  Grammar








Reschke                   Expires May 30, 2014                  [Page 9]


Internet-Draft                   XML2RFC                   November 2013


   artwork =
     element artwork {
       attribute xml:space ( "default" | "preserve" )?,
       attribute name { ATEXT }?,
       attribute type { ATEXT }?,
       attribute src { URI }?,
       attribute align ( "left" | "center" | "right" )?,
       attribute alt { ATEXT }?,
       attribute width { ATEXT }?,
       attribute height { ATEXT }?,
       TEXT*
     }

2.6.  <author>

   Provides information about a document author.

   The <author> elements contained within the document's <front> element
   are used to fill the boilerplate, and also to generate the "Author's
   Address" section (see Section 4.9 of [RFCSTYLE]).

   Note that an "author" can also be just an organization (by not
   specifying any of the name attributes, but adding the <organization>
   child element).

   Furthermore, the "role" attribute can be used to mark an author as
   "editor".  This is reflected both on the front page and in
   bibliographical references.  Note that this specification does not
   define a precise meaning for the term "editor".

   See Section "Authors vs. Contributors" of [RFCPOLICY] for more
   information.

   This element appears as child element of: <front> (Section 2.19).

   Content model:

   1.  One optional <organization> element (Section 2.25)

   2.  One optional <address> element (Section 2.2)

2.6.1.  Attributes

2.6.1.1.  fullname

   (optional)

   The full name (used in the automatically generated "Author's Address"



Reschke                   Expires May 30, 2014                 [Page 10]


Internet-Draft                   XML2RFC                   November 2013


   section).

2.6.1.2.  initials

   (optional)

   Author initials (used on the front page and in references).

   Initials should be provided as a whitespace separated list of pairs
   of a letter and a dot.

2.6.1.3.  role

   (optional)

   Specifies the role the author had in creating the document.

   Allowed values:

   o  "editor"

2.6.1.4.  surname

   (optional)

   The author's surname.

2.6.2.  Grammar

   author =
     element author {
       attribute initials { ATEXT }?,
       attribute surname { ATEXT }?,
       attribute fullname { ATEXT }?,
       attribute role { "editor" }?,
       organization?,
       address?
     }

2.7.  <back>

   Contains the "back" part of the document: the references and
   appendices.

   This element appears as child element of: <rfc> (Section 2.33).

   Content model:




Reschke                   Expires May 30, 2014                 [Page 11]


Internet-Draft                   XML2RFC                   November 2013


   1.  Optional <references> elements (Section 2.31)

   2.  Optional <section> elements (Section 2.34)

2.7.1.  Grammar

   back =
     element back {
       references*,
       section*
     }

2.8.  <c>

   Provides the content of a cell in a table.

   This element appears as child element of: <texttable> (Section 2.39).

   Content model:

   In any order:

   o  Text

   o  <xref> elements (Section 2.45)

   o  <eref> elements (Section 2.15)

   o  <iref> elements (Section 2.20)

   o  <cref> elements (Section 2.12)

   o  <spanx> elements (Section 2.36)

2.8.1.  Grammar

   c =
     element c {
       (TEXT
        | xref
        | eref
        | iref
        | cref
        | spanx)*
     }






Reschke                   Expires May 30, 2014                 [Page 12]


Internet-Draft                   XML2RFC                   November 2013


2.9.  <city>

   Gives the city name in a postal address.

   This element appears as child element of: <postal> (Section 2.27).

   Content model: only text content.

2.9.1.  Grammar

   city =
     element city {
       CTEXT
     }

2.10.  <code>

   Gives the postal region code.

   This element appears as child element of: <postal> (Section 2.27).

   Content model: only text content.

2.10.1.  Grammar

   code =
     element code {
       CTEXT
     }

2.11.  <country>

   Gives the country in a postal address.

   This element appears as child element of: <postal> (Section 2.27).

   Content model: only text content.

2.11.1.  Grammar

   country =
     element country {
       CTEXT
     }







Reschke                   Expires May 30, 2014                 [Page 13]


Internet-Draft                   XML2RFC                   November 2013


2.12.  <cref>

   Represents a comment.

   Comments can be used in a document while it is work-in-progress.
   They usually appear either visually highlighted, at the end of the
   document (depending on file format and settings of the formatter), or
   not at all (when generating an RFC).

   This element appears as child element of: <annotation> (Section 2.3),
   <c> (Section 2.8), <postamble> (Section 2.28), <preamble>
   (Section 2.29), and <t> (Section 2.38).

   Content model: only text content.

2.12.1.  Attributes

2.12.1.1.  anchor

   (optional)

   [[element.cref.attribute.anchor.missing: attribute description
   missing]]

2.12.1.2.  source

   (optional)

   Holds the "source" of a comment, such as the name or the initials of
   the person who made the comment.

2.12.2.  Grammar

   cref =
     element cref {
       attribute anchor { xsd:ID }?,
       attribute source { ATEXT }?,
       CTEXT
     }

2.13.  <date>

   Provides information about the publication date.

   Note that this element is used both for the boilerplate of the
   document being produced, and also inside bibliographic references.

   In the first case, it defines the publication date, which, when



Reschke                   Expires May 30, 2014                 [Page 14]


Internet-Draft                   XML2RFC                   November 2013


   producing Internet-Drafts, will be used for computing the expiration
   date (see Section 8 of [IDGUIDE]).  When "year", "month" or "day" are
   left out, the processor will attempt to use the current system date
   if the attributes that are specified do match the system date.  Note
   that month names need to match the full (English) month name
   ("January", "February", "March", "April", "May, "June", "July",
   "August", "September", "October", "November", or "December") in order
   for expiration calculations to work.

   In the second case, the date information will be embedded as-is into
   the reference text.  Therefore, also vague dates ("ca. 2000"), date
   ranges, and so on, are allowed.

   This element appears as child element of: <front> (Section 2.19).

   Content model: this element does not have any contents.

2.13.1.  Attributes

2.13.1.1.  day

   (optional)

   Day of publication.

2.13.1.2.  month

   (optional)

   Month of publication.

2.13.1.3.  year

   (optional)

   Year of publication.

2.13.2.  Grammar

   date =
     element date {
       attribute day { DAY }?,
       attribute month { MONTH }?,
       attribute year { YEAR }?,
       empty
     }





Reschke                   Expires May 30, 2014                 [Page 15]


Internet-Draft                   XML2RFC                   November 2013


2.14.  <email>

   Provides an email address.

   The value is expected to be the scheme-specific part of a "mailto"
   URI (so does not include the prefix "mailto:").  See Section 2 of
   [RFC6068] for details.

   This element appears as child element of: <address> (Section 2.2).

   Content model: only text content.

2.14.1.  Grammar

   email =
     element email {
       CTEXT
     }

2.15.  <eref>

   Represents an "external" link (as specified in the "target"
   attribute).

   If the element has text content, that content will be used.
   Otherwise, the value of the target attribute will be inserted in
   angle brackets ([RFC3986], Appendix C).

   This element appears as child element of: <annotation> (Section 2.3),
   <c> (Section 2.8), <postamble> (Section 2.28), <preamble>
   (Section 2.29), and <t> (Section 2.38).

   Content model: only text content.

2.15.1.  Attributes

2.15.1.1.  target

   (mandatory)

   URI of the link target (see Section 3 of [RFC3986]).

2.15.2.  Grammar








Reschke                   Expires May 30, 2014                 [Page 16]


Internet-Draft                   XML2RFC                   November 2013


   eref =
     element eref {
       attribute target { URI },
       CTEXT
     }

2.16.  <facsimile>

   Represents the phone number of a fax machine.

   The value is expected to be the scheme-specific part of a "tel" URI
   (so does not include the prefix "tel:"), using the "global numbers"
   syntax.  See Section 3 of [RFC3966] for details.

   This element appears as child element of: <address> (Section 2.2).

   Content model: only text content.

2.16.1.  Grammar

   facsimile =
     element facsimile {
       CTEXT
     }

2.17.  <figure>

   [[element.figure.missing: element description missing]]

   This element appears as child element of: <section> (Section 2.34),
   and <t> (Section 2.38).

   Content model:

   1.  Optional <iref> elements (Section 2.20)

   2.  One optional <preamble> element (Section 2.29)

   3.  One <artwork> element (Section 2.5)

   4.  One optional <postamble> element (Section 2.28)

2.17.1.  Attributes

2.17.1.1.  align

   (optional)




Reschke                   Expires May 30, 2014                 [Page 17]


Internet-Draft                   XML2RFC                   November 2013


   [[element.figure.attribute.align.missing: attribute description
   missing]]

   Allowed values:

   o  "left" (default)

   o  "center"

   o  "right"

2.17.1.2.  alt

   (optional)

   [[element.figure.attribute.alt.missing: attribute description
   missing]]

2.17.1.3.  anchor

   (optional)

   [[element.figure.attribute.anchor.missing: attribute description
   missing]]

2.17.1.4.  height

   (optional)

   [[element.figure.attribute.height.missing: attribute description
   missing]]

2.17.1.5.  src

   (optional)

   [[element.figure.attribute.src.missing: attribute description
   missing]]

2.17.1.6.  suppress-title

   (optional)

   Figures that have an "anchor" attribute will automatically get an
   autogenerated title (such as "Figure 1").  Setting this attribute to
   "false" will prevent this.

   Allowed values:



Reschke                   Expires May 30, 2014                 [Page 18]


Internet-Draft                   XML2RFC                   November 2013


   o  "true"

   o  "false" (default)

2.17.1.7.  title

   (optional)

   [[element.figure.attribute.title.missing: attribute description
   missing]]

2.17.1.8.  width

   (optional)

   [[element.figure.attribute.width.missing: attribute description
   missing]]

2.17.2.  Grammar

   figure =
     element figure {
       attribute anchor { xsd:ID }?,
       attribute title { ATEXT }?,
       attribute suppress-title ( "true" | "false" )?,
       attribute src { URI }?,
       attribute align ( "left" | "center" | "right" )?,
       attribute alt { ATEXT }?,
       attribute width { ATEXT }?,
       attribute height { ATEXT }?,
       iref*,
       preamble?,
       artwork,
       postamble?
     }

2.18.  <format>

   Provides a link to an additional format variant for a reference.

   Note that these additional links are neither used in published RFCs,
   nor supported by all tools.  If the goal is to provide a single URI
   for a reference, the "target" attribute on <reference> can be used
   instead.

   This element appears as child element of: <reference> (Section 2.30).

   Content model: this element does not have any contents.



Reschke                   Expires May 30, 2014                 [Page 19]


Internet-Draft                   XML2RFC                   November 2013


2.18.1.  Attributes

2.18.1.1.  octets

   (optional)

   Octet length of linked-to document.

2.18.1.2.  target

   (optional)

   URI of document.

   [[anchor11: Why is this optional?]]

2.18.1.3.  type

   (mandatory)

   The type of the linked-to document, such as "TXT", "HTML", or "PDF".

2.18.2.  Grammar

   format =
     element format {
       attribute target { URI }?,
       attribute type { ATEXT },
       attribute octets { NUMBER }?,
       empty
     }

2.19.  <front>

   Represent the "front matter": metadata (such as author information),
   abstract, and additional notes.

   This element appears as child element of: <reference> (Section 2.30),
   and <rfc> (Section 2.33).

   Content model:

   1.  One <title> element (Section 2.40)

   2.  One or more <author> elements (Section 2.6)

   3.  One <date> element (Section 2.13)




Reschke                   Expires May 30, 2014                 [Page 20]


Internet-Draft                   XML2RFC                   November 2013


   4.  Optional <area> elements (Section 2.4)

   5.  Optional <workgroup> elements (Section 2.44)

   6.  Optional <keyword> elements (Section 2.21)

   7.  One optional <abstract> element (Section 2.1)

   8.  Optional <note> elements (Section 2.24)

2.19.1.  Grammar

   front =
     element front {
       title,
       author+,
       date,
       area*,
       workgroup*,
       keyword*,
       abstract?,
       note*
     }

2.20.  <iref>

   Provides terms for the document's index.

   Index entries can be either single items (when just the "item"
   attribute is given) or nested items (by specifying "subitem" as
   well).

   For instance:

   <iref item="Grammar" subitem="item"/>

   will produce an index entry for "Grammar, item".

   This element appears as child element of: <annotation> (Section 2.3),
   <c> (Section 2.8), <figure> (Section 2.17), <postamble>
   (Section 2.28), <preamble> (Section 2.29), <section> (Section 2.34),
   and <t> (Section 2.38).

   Content model: this element does not have any contents.







Reschke                   Expires May 30, 2014                 [Page 21]


Internet-Draft                   XML2RFC                   November 2013


2.20.1.  Attributes

2.20.1.1.  item

   (mandatory)

   The item to include.

2.20.1.2.  primary

   (optional)

   Setting this to "true" declares the occurrence as "primary", which
   might cause it to be highlighted in the index.

   Allowed values:

   o  "true"

   o  "false" (default)

2.20.1.3.  subitem

   (optional)

   The subitem to include.

2.20.2.  Grammar

   iref =
     element iref {
       attribute item { ATEXT },
       attribute subitem { ATEXT }?,
       attribute primary ( "true" | "false" )?,
       empty
     }

2.21.  <keyword>

   Specifies a keyword applicable to the document.

   Note that each element should only contain a single keyword; for
   multiple keywords, the element can simply be repeated.

   Keywords are used both in the RFC Index and in the metadata of
   generated document formats.

   This element appears as child element of: <front> (Section 2.19).



Reschke                   Expires May 30, 2014                 [Page 22]


Internet-Draft                   XML2RFC                   November 2013


   Content model: only text content.

2.21.1.  Grammar

   keyword =
     element keyword {
       CTEXT
     }

2.22.  <list>

   Delineates a text list.

   This element appears as child element of: <t> (Section 2.38).

   Content model:

   One or more <t> elements (Section 2.38)

2.22.1.  Attributes

2.22.1.1.  counter

   (optional)

   [[element.list.attribute.counter.missing: attribute description
   missing]]

2.22.1.2.  hangIndent

   (optional)

   [[element.list.attribute.hangIndent.missing: attribute description
   missing]]

2.22.1.3.  style

   (optional)

   [[element.list.attribute.style.missing: attribute description
   missing]]

2.22.2.  Grammar








Reschke                   Expires May 30, 2014                 [Page 23]


Internet-Draft                   XML2RFC                   November 2013


   \list =
     element \list {
       attribute style { ATEXT }?,
       attribute hangIndent { NUMBER }?,
       attribute counter { ATEXT }?,
       t+
     }

2.23.  <middle>

   Represents the main content of the document.

   This element appears as child element of: <rfc> (Section 2.33).

   Content model:

   One or more <section> elements (Section 2.34)

2.23.1.  Grammar

   middle =
     element middle {
       section+
     }

2.24.  <note>

   Creates an unnumbered section that appears after the abstract.

   It is usually used for additional information to reviewers (working
   group information, mailing list, ...), or for additional publication
   information such as "IESG Notes".

   This element appears as child element of: <front> (Section 2.19).

   Content model:

   One or more <t> elements (Section 2.38)

2.24.1.  Attributes

2.24.1.1.  title

   (mandatory)

   The title of the note.





Reschke                   Expires May 30, 2014                 [Page 24]


Internet-Draft                   XML2RFC                   November 2013


2.24.2.  Grammar

   note =
     element note {
       attribute title { ATEXT },
       t+
     }

2.25.  <organization>

   Specifies the affiliation of an author.

   This information appears in both the "Author's Address" section and
   on the front page ([RFCSTYLE], Section 4.1.2).  If the value is long,
   an abbreviated variant can be specified in the "abbrev" attribute.

   This element appears as child element of: <author> (Section 2.6).

   Content model: only text content.

2.25.1.  Attributes

2.25.1.1.  abbrev

   (optional)

   Abbreviated variant.

2.25.2.  Grammar

   organization =
     element organization {
       attribute abbrev { ATEXT }?,
       CTEXT
     }

2.26.  <phone>

   Represents a phone number.

   The value is expected to be the scheme-specific part of a "tel" URI
   (so does not include the prefix "tel:"), using the "global numbers"
   syntax.  See Section 3 of [RFC3966] for details.

   This element appears as child element of: <address> (Section 2.2).

   Content model: only text content.




Reschke                   Expires May 30, 2014                 [Page 25]


Internet-Draft                   XML2RFC                   November 2013


2.26.1.  Grammar

   phone =
     element phone {
       CTEXT
     }

2.27.  <postal>

   Contains child elements providing postal information.

   This element appears as child element of: <address> (Section 2.2).

   Content model:

   1.  One or more <street> elements (Section 2.37)

   2.  In any order:

       *  <city> elements (Section 2.9)

       *  <region> elements (Section 2.32)

       *  <code> elements (Section 2.10)

       *  <country> elements (Section 2.11)

2.27.1.  Grammar

   postal =
     element postal {
       street+,
       (city
        | region
        | code
        | country)*
     }

2.28.  <postamble>

   Gives text that appears at the bottom of a figure or table.

   This element appears as child element of: <figure> (Section 2.17),
   and <texttable> (Section 2.39).

   Content model:

   In any order:



Reschke                   Expires May 30, 2014                 [Page 26]


Internet-Draft                   XML2RFC                   November 2013


   o  Text

   o  <xref> elements (Section 2.45)

   o  <eref> elements (Section 2.15)

   o  <iref> elements (Section 2.20)

   o  <cref> elements (Section 2.12)

   o  <spanx> elements (Section 2.36)

2.28.1.  Grammar

   postamble =
     element postamble {
       (TEXT
        | xref
        | eref
        | iref
        | cref
        | spanx)*
     }

2.29.  <preamble>

   Gives text that appears at the top of a figure or table.

   This element appears as child element of: <figure> (Section 2.17),
   and <texttable> (Section 2.39).

   Content model:

   In any order:

   o  Text

   o  <xref> elements (Section 2.45)

   o  <eref> elements (Section 2.15)

   o  <iref> elements (Section 2.20)

   o  <cref> elements (Section 2.12)

   o  <spanx> elements (Section 2.36)





Reschke                   Expires May 30, 2014                 [Page 27]


Internet-Draft                   XML2RFC                   November 2013


2.29.1.  Grammar

   preamble =
     element preamble {
       (TEXT
        | xref
        | eref
        | iref
        | cref
        | spanx)*
     }

2.30.  <reference>

   Represents a bibliographical reference.

   This element appears as child element of: <references>
   (Section 2.31).

   Content model:

   1.  One <front> element (Section 2.19)

   2.  Optional <seriesInfo> elements (Section 2.35)

   3.  Optional <format> elements (Section 2.18)

   4.  Optional <annotation> elements (Section 2.3)

2.30.1.  Attributes

2.30.1.1.  anchor

   (optional)

   [[element.reference.attribute.anchor.missing: attribute description
   missing]]

2.30.1.2.  target

   (optional)

   Holds the URI for the reference.

   Note that depending on the <seriesInfo> element, a URI might not be
   needed, nor desirable, as it can be automatically generated (for
   instance, for RFCs).




Reschke                   Expires May 30, 2014                 [Page 28]


Internet-Draft                   XML2RFC                   November 2013


2.30.2.  Grammar

   reference =
     element reference {
       attribute anchor { xsd:ID }?,
       attribute target { URI }?,
       front,
       seriesInfo*,
       format*,
       annotation*
     }

2.31.  <references>

   Contains a set of bibliographical references.

   In the early days of the RFC series, there was only one "References"
   section per RFC.  This convention was later changed to group
   references into two sets, "Normative" and "Informative"; see item x
   of Section 4.8 of [RFCSTYLE]).  This vocabulary supports the split
   with the "title" attribute.

   This element appears as child element of: <back> (Section 2.7).

   Content model:

   One or more <reference> elements (Section 2.30)

2.31.1.  Attributes

2.31.1.1.  title

   (optional)

   Provides the title for the References section (defaulting to
   "References").

   In general, the title should be either "Normative References" or
   "Informative References".

2.31.2.  Grammar

   references =
     element references {
       attribute title { ATEXT }?,
       reference+
     }




Reschke                   Expires May 30, 2014                 [Page 29]


Internet-Draft                   XML2RFC                   November 2013


2.32.  <region>

   Provides the region name in a postal address.

   This element appears as child element of: <postal> (Section 2.27).

   Content model: only text content.

2.32.1.  Grammar

   region =
     element region {
       CTEXT
     }

2.33.  <rfc>

   This is the root element of the xml2rfc vocabulary.

   Processors distinguish between RFC mode ("number" attribute being
   present) and Internet-Draft mode ("docName" attribute being present):
   it is invalid to specify both.  Setting neither "number" nor
   "docName" can be useful for producing other types of document but is
   out-of-scope for this specification.

   Content model:

   1.  One <front> element (Section 2.19)

   2.  One <middle> element (Section 2.23)

   3.  One optional <back> element (Section 2.7)

2.33.1.  Attributes

2.33.1.1.  category

   (optional)

   Document category (see Appendix A.1).

   Allowed values:

   o  "std"

   o  "bcp"





Reschke                   Expires May 30, 2014                 [Page 30]


Internet-Draft                   XML2RFC                   November 2013


   o  "info"

   o  "exp"

   o  "historic"

2.33.1.2.  consensus

   (optional)

   Affects the generated boilerplate.

   See [RFC5741] for more information.

   Allowed values:

   o  "no"

   o  "yes"

2.33.1.3.  docName

   (optional)

   For Internet-Drafts, this specifies the draft name (which appears
   below the title).

   Note that the file extension is not part of the draft, so in general
   it should end with the current draft number ("-", plus two digits).

   Furthermore, it is good practice to disambiguate current editor
   copies from submitted drafts (for instance, by replacing the draft
   number with the string "latest").

   See Section 7 of [IDGUIDE] for further information.

2.33.1.4.  ipr

   (optional)

   Represents the Intellectual Property status of the document.  See
   Appendix A.2 for details.

   Allowed values:

   o  "full2026"





Reschke                   Expires May 30, 2014                 [Page 31]


Internet-Draft                   XML2RFC                   November 2013


   o  "noDerivativeWorks2026"

   o  "none"

   o  "full3667"

   o  "noModification3667"

   o  "noDerivatives3667"

   o  "full3978"

   o  "noModification3978"

   o  "noDerivatives3978"

   o  "trust200811"

   o  "noModificationTrust200811"

   o  "noDerivativesTrust200811"

   o  "trust200902"

   o  "noModificationTrust200902"

   o  "noDerivativesTrust200902"

   o  "pre5378Trust200902"

2.33.1.5.  iprExtract

   (optional)

   Identifies a Section within the document for which extraction "as-is"
   is explicitly allowed (only relevant for historic values of the "ipr"
   attribute).

2.33.1.6.  number

   (optional)

   The number of the RFC to be produced.

2.33.1.7.  obsoletes

   (optional)




Reschke                   Expires May 30, 2014                 [Page 32]


Internet-Draft                   XML2RFC                   November 2013


   A comma-separated list of RFC _numbers_ or Internet-Draft names.

2.33.1.8.  seriesNo

   (optional)

   When producing a document within document series (such as "STD"): the
   number within that series.

2.33.1.9.  submissionType

   (optional)

   The document stream.

   See Section 2 of [RFC5741] for details.

   Allowed values:

   o  "IETF" (default)

   o  "IAB"

   o  "IRTF"

   o  "independent"

2.33.1.10.  updates

   (optional)

   A comma-separated list of RFC _numbers_ or Internet-Draft names.

2.33.1.11.  xml:lang

   (optional)

   The natural language used in the document (defaults to "en").

   See Section 2.12 of [XML] for more information.

2.33.2.  Grammar









Reschke                   Expires May 30, 2014                 [Page 33]


Internet-Draft                   XML2RFC                   November 2013


rfc =
  element rfc {
    attribute number { NUMBER }?,
    attribute obsoletes { NUMBERS }?,
    attribute updates { NUMBERS }?,
    attribute category ( "std" | "bcp" | "info" | "exp" | "historic" )?,
    attribute consensus ( "no" | "yes" )?,
    attribute seriesNo { NUMBER }?,
    attribute ipr (
      "full2026"
      | "noDerivativeWorks2026"
      | "none"
      | "full3667"
      | "noModification3667"
      | "noDerivatives3667"
      | "full3978"
      | "noModification3978"
      | "noDerivatives3978"
      | "trust200811"
      | "noModificationTrust200811"
      | "noDerivativesTrust200811"
      | "trust200902"
      | "noModificationTrust200902"
      | "noDerivativesTrust200902"
      | "pre5378Trust200902"
    )?,
    attribute iprExtract { xsd:IDREF }?,
    attribute submissionType ( "IETF" | "IAB" | "IRTF" | "independent" )?,
    attribute docName { ATEXT }?,
    attribute xml:lang { ATEXT }?,
    front,
    middle,
    back?
  }

2.34.  <section>

   Represents a section (when inside a <middle> element) or an appendix
   (when inside a <back> element).

   Sub-sections are created by nesting <section> elements inside
   <section> elements.

   This element appears as child element of: <back> (Section 2.7),
   <middle> (Section 2.23), and <section> (Section 2.34).

   Content model:




Reschke                   Expires May 30, 2014                 [Page 34]


Internet-Draft                   XML2RFC                   November 2013


   1.  In any order:

       *  <t> elements (Section 2.38)

       *  <figure> elements (Section 2.17)

       *  <texttable> elements (Section 2.39)

       *  <iref> elements (Section 2.20)

   2.  Optional <section> elements (Section 2.34)

2.34.1.  Attributes

2.34.1.1.  anchor

   (optional)

   [[element.section.attribute.anchor.missing: attribute description
   missing]]

2.34.1.2.  title

   (mandatory)

   The title of the section.

2.34.1.3.  toc

   (optional)

   Determines whether the section is included in the Table Of Contents.

   [[anchor20: Need to consider inheritance.]]

   Allowed values:

   o  "include"

   o  "exclude"

   o  "default" (default)

2.34.2.  Grammar







Reschke                   Expires May 30, 2014                 [Page 35]


Internet-Draft                   XML2RFC                   November 2013


   section =
     element section {
       attribute anchor { xsd:ID }?,
       attribute title { ATEXT },
       attribute toc ( "include" | "exclude" | "default" )?,
       (t
        | figure
        | texttable
        | iref)*,
       section*
     }

2.35.  <seriesInfo>

   Specifies the document series in which this document appears, and
   also specifies an identifier within that series.

   This element appears as child element of: <reference> (Section 2.30).

   Content model: this element does not have any contents.

2.35.1.  Attributes

2.35.1.1.  name

   (mandatory)

   The name of the series.

   The following names trigger specific processing (such as for auto-
   generating links, and adding descriptions such as "work in
   progress"): "BCP", "FYI", "Internet-Draft", "RFC", and "STD".

2.35.1.2.  value

   (mandatory)

   The identifier within the series specified by the "name" attribute.

   For BCPs, FYIs, RFCs, and STDs this is the number within the series.
   For Internet-Drafts, it is the full draft name (ending with the two-
   digit version number).

2.35.2.  Grammar







Reschke                   Expires May 30, 2014                 [Page 36]


Internet-Draft                   XML2RFC                   November 2013


   seriesInfo =
     element seriesInfo {
       attribute name { ATEXT },
       attribute value { ATEXT },
       empty
     }

2.36.  <spanx>

   [[element.spanx.missing: element description missing]]

   This element appears as child element of: <annotation> (Section 2.3),
   <c> (Section 2.8), <postamble> (Section 2.28), <preamble>
   (Section 2.29), and <t> (Section 2.38).

   Content model: only text content.

2.36.1.  Attributes

2.36.1.1.  style

   (optional)

   [[element.spanx.attribute.style.missing: attribute description
   missing]]

2.36.1.2.  xml:space

   (optional)

   Determines whitespace handling.

   The default value is "preserve", but that value isn't really suitable
   for the use cases <spanx> is defined for (so this might change in
   future versions).

   See also Section 2.10 of [XML].

   Allowed values:

   o  "default"

   o  "preserve" (default)








Reschke                   Expires May 30, 2014                 [Page 37]


Internet-Draft                   XML2RFC                   November 2013


2.36.2.  Grammar

   spanx =
     element spanx {
       attribute xml:space ( "default" | "preserve" )?,
       attribute style { ATEXT }?,
       CTEXT
     }

2.37.  <street>

   Provides a street address.

   This element appears as child element of: <postal> (Section 2.27).

   Content model: only text content.

2.37.1.  Grammar

   street =
     element street {
       CTEXT
     }

2.38.  <t>

   Contains a paragraph of text.

   This element appears as child element of: <abstract> (Section 2.1),
   <list> (Section 2.22), <note> (Section 2.24), and <section>
   (Section 2.34).

   Content model:

   In any order:

   o  Text

   o  <list> elements (Section 2.22)

   o  <figure> elements (Section 2.17)

   o  <xref> elements (Section 2.45)

   o  <eref> elements (Section 2.15)

   o  <iref> elements (Section 2.20)




Reschke                   Expires May 30, 2014                 [Page 38]


Internet-Draft                   XML2RFC                   November 2013


   o  <cref> elements (Section 2.12)

   o  <spanx> elements (Section 2.36)

   o  <vspace> elements (Section 2.43)

2.38.1.  Attributes

2.38.1.1.  anchor

   (optional)

   [[element.t.attribute.anchor.missing: attribute description missing]]

2.38.1.2.  hangText

   (optional)

   [[element.t.attribute.hangText.missing: attribute description
   missing]]

2.38.2.  Grammar

   t =
     element t {
       attribute anchor { xsd:ID }?,
       attribute hangText { ATEXT }?,
       (TEXT
        | \list
        | figure
        | xref
        | eref
        | iref
        | cref
        | spanx
        | vspace)*
     }

2.39.  <texttable>

   Contains a table, consisting of an optional preamble, a header line,
   rows, and an optional postamble.

   This element appears as child element of: <section> (Section 2.34).

   Content model:





Reschke                   Expires May 30, 2014                 [Page 39]


Internet-Draft                   XML2RFC                   November 2013


   1.  One optional <preamble> element (Section 2.29)

   2.  One or more <ttcol> elements (Section 2.41)

   3.  Optional <c> elements (Section 2.8)

   4.  One optional <postamble> element (Section 2.28)

2.39.1.  Attributes

2.39.1.1.  align

   (optional)

   Determines the horizontal alignment of the table.

   Allowed values:

   o  "left"

   o  "center" (default)

   o  "right"

2.39.1.2.  anchor

   (optional)

   [[element.texttable.attribute.anchor.missing: attribute description
   missing]]

2.39.1.3.  style

   (optional)

   [[element.texttable.attribute.style.missing: attribute description
   missing]]

   Allowed values:

   o  "all"

   o  "none"

   o  "headers"

   o  "full" (default)




Reschke                   Expires May 30, 2014                 [Page 40]


Internet-Draft                   XML2RFC                   November 2013


2.39.1.4.  suppress-title

   (optional)

   [[element.texttable.attribute.suppress-title.missing: attribute
   description missing]]

   Allowed values:

   o  "true"

   o  "false" (default)

2.39.1.5.  title

   (optional)

   [[element.texttable.attribute.title.missing: attribute description
   missing]]

2.39.2.  Grammar

   texttable =
     element texttable {
       attribute anchor { xsd:ID }?,
       attribute title { ATEXT }?,
       attribute suppress-title ( "true" | "false" )?,
       attribute align ( "left" | "center" | "right" )?,
       attribute style ( "all" | "none" | "headers" | "full" )?,
       preamble?,
       ttcol+,
       c*,
       postamble?
     }

2.40.  <title>

   Represents the document title.

   When this element appears in the <front> element of the current
   document, the title might also appear in page headers or footers.  If
   it's long (~40 characters), the "abbrev" attribute is used to
   specified an abbreviated variant.

   This element appears as child element of: <front> (Section 2.19).

   Content model: only text content.




Reschke                   Expires May 30, 2014                 [Page 41]


Internet-Draft                   XML2RFC                   November 2013


2.40.1.  Attributes

2.40.1.1.  abbrev

   (optional)

   Specifies an abbreviated variant of the document title.

2.40.2.  Grammar

   title =
     element title {
       attribute abbrev { ATEXT }?,
       CTEXT
     }

2.41.  <ttcol>

   Contains a column heading in a table.

   This element appears as child element of: <texttable> (Section 2.39).

   Content model: only text content.

2.41.1.  Attributes

2.41.1.1.  align

   (optional)

   Determines the horizontal alignment within the table column.

   Allowed values:

   o  "left" (default)

   o  "center"

   o  "right"

2.41.1.2.  width

   (optional)

   [[element.ttcol.attribute.width.missing: attribute description
   missing]]





Reschke                   Expires May 30, 2014                 [Page 42]


Internet-Draft                   XML2RFC                   November 2013


2.41.2.  Grammar

   ttcol =
     element ttcol {
       attribute width { ATEXT }?,
       attribute align ( "left" | "center" | "right" )?,
       CTEXT
     }

2.42.  <uri>

   Contains a web address associated with the author.

   The contents should be a valid URI (see Section 3 of [RFC3986]).

   This element appears as child element of: <address> (Section 2.2).

   Content model: only text content.

2.42.1.  Grammar

   uri =
     element uri {
       CTEXT
     }

2.43.  <vspace>

   [[element.vspace.missing: element description missing]]

   This element appears as child element of: <t> (Section 2.38).

   Content model: this element does not have any contents.

2.43.1.  Attributes

2.43.1.1.  blankLines

   (optional)

   [[element.vspace.attribute.blankLines.missing: attribute description
   missing]]

2.43.2.  Grammar







Reschke                   Expires May 30, 2014                 [Page 43]


Internet-Draft                   XML2RFC                   November 2013


   vspace =
     element vspace {
       attribute blankLines { NUMBER }?,
       empty
     }

2.44.  <workgroup>

   This element is used to specify the Working Group the document
   originates from, if any.  The recommended format is the official name
   of the Working Group (with some capitalization), plus the string
   "Working Group".

   In Internet-Drafts, this is used in the upper left corner of the
   boilerplate, replacing the "Network Working Group" string.

   This element appears as child element of: <front> (Section 2.19).

   Content model: only text content.

2.44.1.  Grammar

   workgroup =
     element workgroup {
       CTEXT
     }

2.45.  <xref>

   [[element.xref.missing: element description missing]]

   This element appears as child element of: <annotation> (Section 2.3),
   <c> (Section 2.8), <postamble> (Section 2.28), <preamble>
   (Section 2.29), and <t> (Section 2.38).

   Content model: only text content.

2.45.1.  Attributes

2.45.1.1.  format

   (optional)

   [[element.xref.attribute.format.missing: attribute description
   missing]]

   Allowed values:




Reschke                   Expires May 30, 2014                 [Page 44]


Internet-Draft                   XML2RFC                   November 2013


   o  "counter"

   o  "title"

   o  "none"

   o  "default" (default)

2.45.1.2.  pageno

   (optional)

   Unused.

   It's unclear what the purpose of this attribute is; processors seem
   to ignore it and it never was documented.

   Allowed values:

   o  "true"

   o  "false" (default)

2.45.1.3.  target

   (mandatory)

   [[element.xref.attribute.target.missing: attribute description
   missing]]

2.45.2.  Grammar

   xref =
     element xref {
       attribute target { xsd:IDREF },
       attribute pageno ( "true" | "false" )?,
       attribute format ( "counter" | "title" | "none" | "default" )?,
       CTEXT
     }

3.  Special Unicode Code Points

   [[anchor29: Explain those code points where the processors implement
   something special, such as "nbsp".]]







Reschke                   Expires May 30, 2014                 [Page 45]


Internet-Draft                   XML2RFC                   November 2013


4.  Internationalization Considerations

   [[anchor30: TBD]]

5.  Security Considerations

   [[anchor31: TBD]]

6.  IANA Considerations

   [[anchor32: Register application/xml2rfc+xml.]]

7.  Acknowledgments

   Thanks to everybody who reviewed this document and provided feedback
   and/or specification text, in particular Brian Carpenter and Paul
   Hoffman.

   We also thank Marshall T. Rose for both the original design and the
   reference implementation of the "xml2rfc" formatter.

8.  References

8.1.  Normative References

   [XML]        Maler, E., Yergeau, F., Paoli, J., Sperberg-McQueen, M.,
                and T. Bray, "Extensible Markup Language (XML) 1.0
                (Fifth Edition)", W3C Recommendation REC-xml-20081126,
                November 2008,
                <http://www.w3.org/TR/2008/REC-xml-20081126/>.

                Latest version available at <http://www.w3.org/TR/xml>.

 8.2.   Informative References

    [IDGUIDE]     Housley, R., "Guidelines to Authors of Internet-
                Drafts", December 2010,
                <http://www.ietf.org/id-info/guidelines.html>.

    [RFC2026]     Bradner, S., "The Internet Standards Process --
                Revision 3", BCP 9, RFC 2026, October 1996.

    [RFC2046]     Freed, N.  and N. Borenstein, "Multipurpose Internet
                Mail Extensions (MIME) Part Two: Media Types", RFC 2046,
                November 1996.

    [RFC2397]     Masinter, L., "The "data" URL scheme", RFC 2397,
                August 1998.



Reschke                   Expires May 30, 2014                 [Page 46]


Internet-Draft                   XML2RFC                   November 2013


    [RFC2629]     Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629,
                June 1999.

    [RFC3966]     Schulzrinne, H., "The tel URI for Telephone Numbers",
                RFC 3966, December 2004.

    [RFC3986]     Berners-Lee, T., Fielding, R., and L. Masinter,
                "Uniform Resource Identifier (URI): Generic Syntax",
                STD 66, RFC 3986, January 2005.

    [RFC5598]     Crocker, D., "Internet Mail Architecture", RFC 5598,
                July 2009.

                PDF version: <http://www.rfc-editor.org/rfc/rfc5598.pdf>

   [RFC5741]    Daigle, L. and O. Kolkman, "RFC Streams, Headers, and
                Boilerplates", RFC 5741, December 2009.

   [RFC6068]    Duerst, M., Masinter, L., and J. Zawinski, "The 'mailto'
                URI Scheme", RFC 6068, October 2010.

   [RFCPOLICY]  RFC Editor, "RFC Editorial Guidelines and Procedures",
                February 2012, <http://www.rfc-editor.org/policy.html>.

   [RFCSTYLE]   Braden, R., Ginoza, S., and A. Hagens, "RFC Document
                Style (draft 09)", September 2009,
                <http://www.rfc-editor.org/rfc-style-guide/rfc-style>.

   [RNC]        Clark, J., "RELAX NG Compact Syntax", OASIS ,
                November 2002, <http://www.oasis-open.org/committees/
                relax-ng/compact-20021121.html>.

   [TLP2.0]     IETF Trust, "Legal Provisions Relating to IETF
                Documents", February 2009, <http://trustee.ietf.org/
                license-info/IETF-Trust-License-Policy-20090215.htm>.

   [TLP3.0]     IETF Trust, "Legal Provisions Relating to IETF
                Documents", September 2009, <http://trustee.ietf.org/
                license-info/IETF-Trust-License-Policy-20090912.htm>.

   [TLP4.0]     IETF Trust, "Legal Provisions Relating to IETF
                Documents", December 2009, <http://trustee.ietf.org/
                license-info/IETF-Trust-License-Policy-20091228.htm>.

Appendix A.  Front Page Generation






Reschke                   Expires May 30, 2014                 [Page 47]


Internet-Draft                   XML2RFC                   November 2013


A.1.  The /rfc/@category Attribute

   For RFCs, the "category" 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 - surprise - "Historic".

   For Internet-Drafts, the category attribute is not needed, but will
   appear on the front page as "Intended Status".  Supplying this
   information can be useful to reviewers.

A.2.  The /rfc/@ipr Attribute

   This attribute value can take a long list of values, each of which
   describes an IPR policy for the document.  This attribute's values
   are not the result of a grand plan, but remain simply for historic
   reasons.  Of these values, only a few are currently in use; all
   others are supported by the 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 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 Legal Provisions
   Relating to IETF Documents", sometimes simply called the "TLP, that
   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.

   The tools will automatically produce the "correct" text depending on



Reschke                   Expires May 30, 2014                 [Page 48]


Internet-Draft                   XML2RFC                   November 2013


   the document's date information (see above):

   +----------+--------------------------------+
   | TLP      | starting with publication date |
   +----------+--------------------------------+
   | [TLP3.0] | 2009-11-01                     |
   | [TLP4.0] | 2010-04-01                     |
   +----------+--------------------------------+

A.2.1.1.  trust200902

   This should be the default, 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 that are published on
      the Standards Track.

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":

      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)



Reschke                   Expires May 30, 2014                 [Page 49]


Internet-Draft                   XML2RFC                   November 2013


      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 <http://
   trustee.ietf.org/license-info/archive/
   IETF-Trust-License-Policy_11-10-08.pdf>.

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 RFC 3978 (March 2005).

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 RFC 3667 (February 2004).

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 RFC 2026 (October 1996).

   The special value "none" was also used back then, and denied the IETF
   any rights beyond publication as Internet-Draft.







Reschke                   Expires May 30, 2014                 [Page 50]


Internet-Draft                   XML2RFC                   November 2013


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)

   <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)

   <rfc>: The "ipr" attribute has gained additional values.  The
   attributes "consensus", "iprExtract", "submissionType", and "xml:
   lang" have been added.  (Section 2.33)

   <reference>: <annotation> allows adding prose to a reference.
   (Section 2.30)

   <references>: Can now appear multiple times, and carry a "title"
   attribute (so that normative and informative references can be
   split).  (Section 2.31)

   <section>: The new "toc" attribute controls whether it will appear in
   the Table Of Contents. <iref> can now appear as direct child element.
   (Section 2.34)




Reschke                   Expires May 30, 2014                 [Page 51]


Internet-Draft                   XML2RFC                   November 2013


   <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).

Appendix C.  Relax NG Schema


   namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"

   NUMBER = string
   NUMBERS = string
   DAY = string
   MONTH = string
   YEAR = string
   URI = string
   ATEXT = string
   CTEXT = text
   TEXT = text
   rfc =
     element rfc {
       attribute number { NUMBER }?,
       [ a:defaultValue = "" ] attribute obsoletes { NUMBERS }?,
       [ a:defaultValue = "" ] attribute updates { NUMBERS }?,
       attribute category { "std" | "bcp" | "info" | "exp" | "historic"
   }?,
       attribute consensus { "no" | "yes" }?,
       attribute seriesNo { NUMBER }?,
       attribute ipr {
         "full2026"
         | "noDerivativeWorks2026"
         | "none"
         | "full3667"
         | "noModification3667"
         | "noDerivatives3667"
         | "full3978"
         | "noModification3978"
         | "noDerivatives3978"
         | "trust200811"
         | "noModificationTrust200811"
         | "noDerivativesTrust200811"
         | "trust200902"
         | "noModificationTrust200902"
         | "noDerivativesTrust200902"



Reschke                   Expires May 30, 2014                 [Page 52]


Internet-Draft                   XML2RFC                   November 2013


         | "pre5378Trust200902"
       }?,
       attribute iprExtract { xsd:IDREF }?,
       [ a:defaultValue = "IETF" ]
       attribute submissionType {
         "IETF" | "IAB" | "IRTF" | "independent"
       }?,
       attribute docName { ATEXT }?,
       [ a:defaultValue = "en" ] attribute xml:lang { ATEXT }?,
       front,
       middle,
       back?
     }
   front =
     element front {
       title, author+, date, area*, workgroup*, keyword*, abstract?,
   note*
     }
   title =
     element title {
       attribute abbrev { ATEXT }?,
       CTEXT
     }
   author =
     element author {
       attribute initials { ATEXT }?,
       attribute surname { ATEXT }?,
       attribute fullname { ATEXT }?,
       attribute role { "editor" }?,
       organization?,
       address?
     }
   organization =
     element organization {
       attribute abbrev { ATEXT }?,
       CTEXT
     }
   address = element address { postal?, phone?, facsimile?, email?,
   uri? }
   postal = element postal { street+, (city | region | code | country)*
   }
   street = element street { CTEXT }
   city = element city { CTEXT }
   region = element region { CTEXT }
   code = element code { CTEXT }
   country = element country { CTEXT }
   phone = element phone { CTEXT }
   facsimile = element facsimile { CTEXT }



Reschke                   Expires May 30, 2014                 [Page 53]


Internet-Draft                   XML2RFC                   November 2013


   email = element email { CTEXT }
   uri = element uri { CTEXT }
   date =
     element date {
       attribute day { DAY }?,
       attribute month { MONTH }?,
       attribute year { YEAR }?,
       empty
     }
   area = element area { CTEXT }
   workgroup = element workgroup { CTEXT }
   keyword = element keyword { CTEXT }
   abstract = element abstract { t+ }
   note =
     element note {
       attribute title { ATEXT },
       t+
     }
   middle = element middle { section+ }
   section =
     element section {
       attribute anchor { xsd:ID }?,
       attribute title { ATEXT },
       [ a:defaultValue = "default" ]
       attribute toc { "include" | "exclude" | "default" }?,
       (t | figure | texttable | iref)*,
       section*
     }
   t =
     element t {
       attribute anchor { xsd:ID }?,
       attribute hangText { ATEXT }?,
       (TEXT
        | \list
        | figure
        | xref
        | eref
        | iref
        | cref
        | spanx
        | vspace)*
     }
   \list =
     element list {
       attribute style { ATEXT }?,
       attribute hangIndent { NUMBER }?,
       attribute counter { ATEXT }?,
       t+



Reschke                   Expires May 30, 2014                 [Page 54]


Internet-Draft                   XML2RFC                   November 2013


     }
   xref =
     element xref {
       attribute target { xsd:IDREF },
       [ a:defaultValue = "false" ] attribute pageno { "true" | "false"
   }?,
       [ a:defaultValue = "default" ]
       attribute format { "counter" | "title" | "none" | "default" }?,
       CTEXT
     }
   eref =
     element eref {
       attribute target { URI },
       CTEXT
     }
   iref =
     element iref {
       attribute item { ATEXT },
       [ a:defaultValue = "" ] attribute subitem { ATEXT }?,
       [ a:defaultValue = "false" ]
       attribute primary { "true" | "false" }?,
       empty
     }
   cref =
     element cref {
       attribute anchor { xsd:ID }?,
       attribute source { ATEXT }?,
       CTEXT
     }
   spanx =
     element spanx {
       [ a:defaultValue = "preserve" ]
       attribute xml:space { "default" | "preserve" }?,
       [ a:defaultValue = "emph" ] attribute style { ATEXT }?,
       CTEXT
     }
   vspace =
     element vspace {
       [ a:defaultValue = "0" ] attribute blankLines { NUMBER }?,
       empty
     }
   figure =
     element figure {
       attribute anchor { xsd:ID }?,
       [ a:defaultValue = "" ] attribute title { ATEXT }?,
       [ a:defaultValue = "false" ]
       attribute suppress-title { "true" | "false" }?,
       attribute src { URI }?,



Reschke                   Expires May 30, 2014                 [Page 55]


Internet-Draft                   XML2RFC                   November 2013


       [ a:defaultValue = "left" ]
       attribute align { "left" | "center" | "right" }?,
       [ a:defaultValue = "" ] attribute alt { ATEXT }?,
       [ a:defaultValue = "" ] attribute width { ATEXT }?,
       [ a:defaultValue = "" ] attribute height { ATEXT }?,
       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 { ATEXT }?,
       [ a:defaultValue = "" ] attribute type { ATEXT }?,
       attribute src { URI }?,
       [ a:defaultValue = "left" ]
       attribute align { "left" | "center" | "right" }?,
       [ a:defaultValue = "" ] attribute alt { ATEXT }?,
       [ a:defaultValue = "" ] attribute width { ATEXT }?,
       [ a:defaultValue = "" ] attribute height { ATEXT }?,
       TEXT*
     }
   postamble =
     element postamble { (TEXT | xref | eref | iref | cref | spanx)* }
   texttable =
     element texttable {
       attribute anchor { xsd:ID }?,
       [ a:defaultValue = "" ] attribute title { ATEXT }?,
       [ 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 { ATEXT }?,
       [ a:defaultValue = "left" ]
       attribute align { "left" | "center" | "right" }?,



Reschke                   Expires May 30, 2014                 [Page 56]


Internet-Draft                   XML2RFC                   November 2013


       CTEXT
     }
   c = element c { (TEXT | xref | eref | iref | cref | spanx)* }
   back = element back { references*, section* }
   references =
     element references {
       [ a:defaultValue = "References" ] attribute title { ATEXT }?,
       reference+
     }
   reference =
     element reference {
       attribute anchor { xsd:ID }?,
       attribute target { URI }?,
       front,
       seriesInfo*,
       format*,
       annotation*
     }
   seriesInfo =
     element seriesInfo {
       attribute name { ATEXT },
       attribute value { ATEXT },
       empty
     }
   format =
     element format {
       attribute target { URI }?,
       attribute type { ATEXT },
       attribute octets { NUMBER }?,
       empty
     }
   annotation =
     element annotation { (TEXT | xref | eref | iref | cref | spanx)* }
   start = rfc


Appendix D.  Proposed Future Changes for 'v3'

   [[anchor40: The list below is just a starting point, see
   <https://www.rfc-editor.org/rse/wiki/doku.php?id=design:xml-tags> for
   more.]]

D.1.  Contact Information

   If contact information is changed to allow non-ASCII characters: add
   a place for a ASCII fallback (probably just for the author names).

   The content model for <postal> ought to be more strict to allow at



Reschke                   Expires May 30, 2014                 [Page 57]


Internet-Draft                   XML2RFC                   November 2013


   most one of <city>, <region>, <code>, and <country>.

   It should be possible to have multiple <uri> elements.

   <facsimile> looks outdated, while a container for IM (messaging) URIs
   is missing.  Maybe this area needs to be aligned with vCard.

   Section 4.8 of [RFCSTYLE] hints at a "Contributors" Section that
   could supply contact information similar to the one in the auto-
   generated "Authors' Address" Section.  Consider how to capture
   contributor contact information (probably not using <author> to avoid
   confusion).  Furthermore, consider ways to augment the contact
   information section with prose.

D.2.  Figures

   Cleanup the set of overlapping attributes between <figure> and
   <artwork>.

   For artwork that consists of a sequence of items (such as messages in
   a protocol example), it would be good if a <figure> element could
   contain multiple <artwork> elements (to assist code to find good
   places for page breaks).

   Extend <figure> to support different types of artwork (such as by
   specifying certain type attribute values, see <http://greenbytes.de/
   tech/webdav/rfc2629xslt/rfc2629xslt.html#artwork.types>), and also
   avoid having to markup code (such as ABNF) as "artwork".

   It would be good if "code components" could be marked as such.

   Finally, even in preformatted text use of markup could be useful to
   support (a) references, or (b) highlighting the important bits (<http
   ://greenbytes.de/tech/webdav/rfc2629xslt/
   rfc2629xslt.html#ext-rfc2629.artwork>).

D.3.  Linking

   Extend <xref> so that subsection/anchors can be specified (see <http:
   //greenbytes.de/tech/webdav/rfc2629xslt/
   rfc2629xslt.html#ext-rfc2629.xref>).  Remove the "pageno" attribute
   which seems to be both undocumented and non-functional.

D.4.  Lists

   Allow multiple paragraphs in list items; eliminating the need to use
   <vspace> (see <http://greenbytes.de/tech/webdav/rfc2629xslt/
   rfc2629xslt.html#ext.element.lt>).



Reschke                   Expires May 30, 2014                 [Page 58]


Internet-Draft                   XML2RFC                   November 2013


D.5.  References

   Allow overriding the "anchor" attribute of an included <reference>
   element.

   Add a way to add prose to a reference that avoids abuse of
   <seriesInfo>.

   Allow <reference>s that identify a document set such as a BCP.

   Deprecate or remove the <format> element; right now it's not used for
   the generation of the plain text document anyway.

   It is unclear why the "anchor" attribute is optional.

D.6.  Archival Considerations

   When this vocabulary becomes the canonical RFC format, it will need
   to be able to capture all generated information, such as section/
   figure/table numbers, plus any auto-generated boilerplate (copyright
   statements etc.).

D.7.  Document Metadata

   Extend the concept of language tagging to at least examples and
   contact information to address potential japanese/chinese font
   confusion.

   Provide a way to indicate the intended level on the standards track.

   Include feedback information in a way so that generated documents can
   provide usable feedback links (see <http://greenbytes.de/tech/webdav/
   rfc2629xslt/rfc2629xslt.html#ext.element.feedback>).

D.8.  Misc.

   Make the <date> element optional; all of its content is optional
   already.

   <spanx> has both a weird whitespace model ("preserve") and
   problematic styling.  Consider to deprecate it in favor of elements
   such as <em> and <code> (where the name "code" is already in use for
   region codes).

   Indented paragraphs currently can be created by abusing the <list>.
   It would be good to have a special element for this purpose.

   Provide a special element for generating citations.



Reschke                   Expires May 30, 2014                 [Page 59]


Internet-Draft                   XML2RFC                   November 2013


   The content model for <cref> should be extended to allow more flow
   elements, such as <xref> and <eref>.

Appendix E.  Comparison Of Vocabularies (to be removed before
             publication as RFC)

   With comments being stripped; using "diff -C100" to add change marks.

E.1.  RFC 2629 ('v1') RelaxNG Grammar

   (from Appendix B of [RFC2629], converted using "trang" into Relag NG
   Compact Notation [RNC])

  namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"

  NUMBER = string
  NUMBERS = string
  DAY = string
  MONTH = string
  YEAR = string
  URI = string
  ATEXT = string
  CTEXT = text
  TEXT = text
  rfc =
    element rfc {
      attribute number { NUMBER }?,
      [ a:defaultValue = "" ] attribute obsoletes { NUMBERS }?,
      [ a:defaultValue = "" ] attribute updates { NUMBERS }?,
-     [ a:defaultValue = "info" ]
      attribute category { "std" | "bcp" | "info" | "exp" | "historic" }?,
      attribute seriesNo { NUMBER }?,
!     attribute ipr { "full2026" | "noDerivativeWorks2026" | "none" }?,
      attribute docName { ATEXT }?,
      front,
      middle,
      back?
    }
  front =
    element front {
      title, author+, date, area*, workgroup*, keyword*, abstract?, note*
    }
  title =
    element title {
      attribute abbrev { ATEXT }?,
      CTEXT
    }
  author =



Reschke                   Expires May 30, 2014                 [Page 60]


Internet-Draft                   XML2RFC                   November 2013


    element author {
      attribute initials { ATEXT }?,
      attribute surname { ATEXT }?,
      attribute fullname { ATEXT }?,
!     organization,
      address?
    }
  organization =
    element organization {
      attribute abbrev { ATEXT }?,
      CTEXT
    }
  address = element address { postal?, phone?, facsimile?, email?, uri? }
  postal = element postal { street+, (city | region | code | country)* }
  street = element street { CTEXT }
  city = element city { CTEXT }
  region = element region { CTEXT }
  code = element code { CTEXT }
  country = element country { CTEXT }
  phone = element phone { CTEXT }
  facsimile = element facsimile { CTEXT }
  email = element email { CTEXT }
  uri = element uri { CTEXT }
  date =
    element date {
      attribute day { DAY }?,
!     attribute month { MONTH },
!     attribute year { YEAR },
      empty
    }
  area = element area { CTEXT }
  workgroup = element workgroup { CTEXT }
  keyword = element keyword { CTEXT }
  abstract = element abstract { t+ }
  note =
    element note {
      attribute title { ATEXT },
      t+
    }
  middle = element middle { section+ }
  section =
    element section {
      attribute anchor { xsd:ID }?,
      attribute title { ATEXT },
!     (t | figure | section)*
    }
  t =
    element t {



Reschke                   Expires May 30, 2014                 [Page 61]


Internet-Draft                   XML2RFC                   November 2013


      attribute hangText { ATEXT }?,
!     (TEXT | \list | figure | xref | eref | iref | vspace)*
    }
  \list =
    element list {
!     [ a:defaultValue = "empty" ]
!     attribute style { "numbers" | "symbols" | "hanging" | "empty" }?,
      t+
    }
  xref =
    element xref {
      attribute target { xsd:IDREF },
      [ a:defaultValue = "false" ] attribute pageno { "true" | "false" }?,
      CTEXT
    }
  eref =
    element eref {
      attribute target { URI },
      CTEXT
    }
  iref =
    element iref {
      attribute item { ATEXT },
      [ a:defaultValue = "" ] attribute subitem { ATEXT }?,
      empty
    }
  vspace =
    element vspace {
      [ a:defaultValue = "0" ] attribute blankLines { NUMBER }?,
      empty
    }
  figure =
    element figure {
      attribute anchor { xsd:ID }?,
      [ a:defaultValue = "" ] attribute title { ATEXT }?,
      preamble?,
      artwork,
      postamble?
    }
! preamble = element preamble { (TEXT | xref | eref | iref)* }
  artwork =
    element artwork {
      [ a:defaultValue = "preserve" ]
      attribute xml:space { "default" | "preserve" }?,
      TEXT*
    }
! postamble = element postamble { (TEXT | xref | eref | iref)* }
! back = element back { references?, section* }



Reschke                   Expires May 30, 2014                 [Page 62]


Internet-Draft                   XML2RFC                   November 2013


! references = element references { reference+ }
  reference =
    element reference {
      attribute anchor { xsd:ID }?,
      attribute target { URI }?,
      front,
!     seriesInfo*
    }
  seriesInfo =
    element seriesInfo {
      attribute name { ATEXT },
      attribute value { ATEXT },
      empty
    }
  start = rfc

E.2.  Current ('v2') RelaxNG Grammar

  namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"

  NUMBER = string
  NUMBERS = string
  DAY = string
  MONTH = string
  YEAR = string
  URI = string
  ATEXT = string
  CTEXT = text
  TEXT = text
  rfc =
    element rfc {
      attribute number { NUMBER }?,
      [ a:defaultValue = "" ] attribute obsoletes { NUMBERS }?,
      [ a:defaultValue = "" ] attribute updates { NUMBERS }?,
      attribute category { "std" | "bcp" | "info" | "exp" | "historic" }?,
+     attribute consensus { "no" | "yes" }?,
      attribute seriesNo { NUMBER }?,
!     attribute ipr {
!       "full2026"
!       | "noDerivativeWorks2026"
!       | "none"
!       | "full3667"
!       | "noModification3667"
!       | "noDerivatives3667"
!       | "full3978"
!       | "noModification3978"
!       | "noDerivatives3978"
!       | "trust200811"



Reschke                   Expires May 30, 2014                 [Page 63]


Internet-Draft                   XML2RFC                   November 2013


!       | "noModificationTrust200811"
!       | "noDerivativesTrust200811"
!       | "trust200902"
!       | "noModificationTrust200902"
!       | "noDerivativesTrust200902"
!       | "pre5378Trust200902"
!     }?,
!     attribute iprExtract { xsd:IDREF }?,
!     [ a:defaultValue = "IETF" ]
!     attribute submissionType {
!       "IETF" | "IAB" | "IRTF" | "independent"
!     }?,
      attribute docName { ATEXT }?,
+     [ a:defaultValue = "en" ] attribute xml:lang { ATEXT }?,
      front,
      middle,
      back?
    }
  front =
    element front {
      title, author+, date, area*, workgroup*, keyword*, abstract?, note*
    }
  title =
    element title {
      attribute abbrev { ATEXT }?,
      CTEXT
    }
  author =
    element author {
      attribute initials { ATEXT }?,
      attribute surname { ATEXT }?,
      attribute fullname { ATEXT }?,
!     attribute role { "editor" }?,
!     organization?,
      address?
    }
  organization =
    element organization {
      attribute abbrev { ATEXT }?,
      CTEXT
    }
  address = element address { postal?, phone?, facsimile?, email?, uri? }
  postal = element postal { street+, (city | region | code | country)* }
  street = element street { CTEXT }
  city = element city { CTEXT }
  region = element region { CTEXT }
  code = element code { CTEXT }
  country = element country { CTEXT }



Reschke                   Expires May 30, 2014                 [Page 64]


Internet-Draft                   XML2RFC                   November 2013


  phone = element phone { CTEXT }
  facsimile = element facsimile { CTEXT }
  email = element email { CTEXT }
  uri = element uri { CTEXT }
  date =
    element date {
      attribute day { DAY }?,
!     attribute month { MONTH }?,
!     attribute year { YEAR }?,
      empty
    }
  area = element area { CTEXT }
  workgroup = element workgroup { CTEXT }
  keyword = element keyword { CTEXT }
  abstract = element abstract { t+ }
  note =
    element note {
      attribute title { ATEXT },
      t+
    }
  middle = element middle { section+ }
  section =
    element section {
      attribute anchor { xsd:ID }?,
      attribute title { ATEXT },
!     [ a:defaultValue = "default" ]
!     attribute toc { "include" | "exclude" | "default" }?,
!     (t | figure | texttable | iref)*,
!     section*
    }
  t =
    element t {
+     attribute anchor { xsd:ID }?,
      attribute hangText { ATEXT }?,
!     (TEXT
!      | \list
!      | figure
!      | xref
!      | eref
!      | iref
!      | cref
!      | spanx
!      | vspace)*
    }
  \list =
    element list {
!     attribute style { ATEXT }?,
!     attribute hangIndent { NUMBER }?,



Reschke                   Expires May 30, 2014                 [Page 65]


Internet-Draft                   XML2RFC                   November 2013


!     attribute counter { ATEXT }?,
      t+
    }
  xref =
    element xref {
      attribute target { xsd:IDREF },
      [ a:defaultValue = "false" ] attribute pageno { "true" | "false" }?,
+     [ a:defaultValue = "default" ]
+     attribute format { "counter" | "title" | "none" | "default" }?,
      CTEXT
    }
  eref =
    element eref {
      attribute target { URI },
      CTEXT
    }
  iref =
    element iref {
      attribute item { ATEXT },
      [ a:defaultValue = "" ] attribute subitem { ATEXT }?,
+     [ a:defaultValue = "false" ]
+     attribute primary { "true" | "false" }?,
      empty
    }
+ cref =
+   element cref {
+     attribute anchor { xsd:ID }?,
+     attribute source { ATEXT }?,
+     CTEXT
+   }
+ spanx =
+   element spanx {
+     [ a:defaultValue = "preserve" ]
+     attribute xml:space { "default" | "preserve" }?,
+     [ a:defaultValue = "emph" ] attribute style { ATEXT }?,
+     CTEXT
+   }
  vspace =
    element vspace {
      [ a:defaultValue = "0" ] attribute blankLines { NUMBER }?,
      empty
    }
  figure =
    element figure {
      attribute anchor { xsd:ID }?,
      [ a:defaultValue = "" ] attribute title { ATEXT }?,
+     [ a:defaultValue = "false" ]
+     attribute suppress-title { "true" | "false" }?,



Reschke                   Expires May 30, 2014                 [Page 66]


Internet-Draft                   XML2RFC                   November 2013


+     attribute src { URI }?,
+     [ a:defaultValue = "left" ]
+     attribute align { "left" | "center" | "right" }?,
+     [ a:defaultValue = "" ] attribute alt { ATEXT }?,
+     [ a:defaultValue = "" ] attribute width { ATEXT }?,
+     [ a:defaultValue = "" ] attribute height { ATEXT }?,
+     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 { ATEXT }?,
+     [ a:defaultValue = "" ] attribute type { ATEXT }?,
+     attribute src { URI }?,
+     [ a:defaultValue = "left" ]
+     attribute align { "left" | "center" | "right" }?,
+     [ a:defaultValue = "" ] attribute alt { ATEXT }?,
+     [ a:defaultValue = "" ] attribute width { ATEXT }?,
+     [ a:defaultValue = "" ] attribute height { ATEXT }?,
      TEXT*
    }
! postamble =
!   element postamble { (TEXT | xref | eref | iref | cref | spanx)* }
! texttable =
!   element texttable {
!     attribute anchor { xsd:ID }?,
!     [ a:defaultValue = "" ] attribute title { ATEXT }?,
!     [ 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 { ATEXT }?,
!     [ a:defaultValue = "left" ]



Reschke                   Expires May 30, 2014                 [Page 67]


Internet-Draft                   XML2RFC                   November 2013


!     attribute align { "left" | "center" | "right" }?,
!     CTEXT
!   }
! c = element c { (TEXT | xref | eref | iref | cref | spanx)* }
! back = element back { references*, section* }
! references =
!   element references {
!     [ a:defaultValue = "References" ] attribute title { ATEXT }?,
!     reference+
!   }
  reference =
    element reference {
      attribute anchor { xsd:ID }?,
      attribute target { URI }?,
      front,
!     seriesInfo*,
!     format*,
!     annotation*
    }
  seriesInfo =
    element seriesInfo {
      attribute name { ATEXT },
      attribute value { ATEXT },
      empty
    }
+ format =
+   element format {
+     attribute target { URI }?,
+     attribute type { ATEXT },
+     attribute octets { NUMBER }?,
+     empty
+   }
+ annotation =
+   element annotation { (TEXT | xref | eref | iref | cref | spanx)* }
  start = rfc

Index

   A
      abbrev attribute
         in organization element  25
         in title element  42
      abstract element  4
         inside front  21
      address element  5
         inside author  10
      align attribute
         in artwork element  7



Reschke                   Expires May 30, 2014                 [Page 68]


Internet-Draft                   XML2RFC                   November 2013


         in figure element  17
         in texttable element  40
         in ttcol element  42
      alt attribute
         in artwork element  8
         in figure element  18
      anchor attribute
         in cref element  14
         in figure element  18
         in reference element  28
         in section element  35
         in t element  39
         in texttable element  40
      annotation element  5
         inside reference  28
      area element  6
         inside front  21
      artwork element  7
         align attribute  7
         alt attribute  8
         height attribute  8
         inside figure  17
         name attribute  8
         src attribute  8
         type attribute  9
         width attribute  9
         xml:space attribute  9
      Attributes
         abbrev  25, 42
         align  7, 17, 40, 42
         alt  8, 18
         anchor  14, 18, 28, 35, 39-40
         blankLines  43
         category  30
         consensus  31
         counter  23
         day  15
         docName  31
         format  44
         fullname  10
         hangIndent  23
         hangText  39
         height  8, 18
         initials  11
         ipr  31
         iprExtract  32
         item  22
         month  15



Reschke                   Expires May 30, 2014                 [Page 69]


Internet-Draft                   XML2RFC                   November 2013


         name  8, 36
         number  32
         obsoletes  32
         octets  20
         pageno  45
         primary  22
         role  11
         seriesNo  33
         source  14
         src  8, 18
         style  23, 37, 40
         subitem  22
         submissionType  33
         suppress-title  18, 41
         surname  11
         target  16, 20, 28, 45
         title  19, 24, 29, 35, 41
         toc  35
         type  9, 20
         updates  33
         value  36
         width  9, 19, 42
         xml:lang  33
         xml:space  9, 37
         year  15
      author element  10
         fullname attribute  10
         initials attribute  11
         inside front  20
         role attribute  11
         surname attribute  11

   B
      back element  11
         inside rfc  30
      blankLines attribute
         in vspace element  43

   C
      c element  12
         inside texttable  40
      category attribute
         in rfc element  30
      city element  13
         inside postal  26
      code element  13
         inside postal  26
      consensus attribute



Reschke                   Expires May 30, 2014                 [Page 70]


Internet-Draft                   XML2RFC                   November 2013


         in rfc element  31
      counter attribute
         in list element  23
      country element  13
         inside postal  26
      cref element  14
         anchor attribute  14
         inside annotation  6
         inside c  12
         inside postamble  27
         inside preamble  27
         inside t  39
         source attribute  14

   D
      date element  14
         day attribute  15
         inside front  20
         month attribute  15
         year attribute  15
      day attribute
         in date element  15
      docName attribute
         in rfc element  31

   E
      Elements
         abstract  4, 21
         address  5, 10
         annotation  5, 28
         area  6, 21
         artwork  7, 17
         author  10, 20
         back  11, 30
         c  12, 40
         city  13, 26
         code  13, 26
         country  13, 26
         cref  6, 12, 14, 27, 39
         date  14, 20
         email  5, 16
         eref  6, 12, 16, 27, 38
         facsimile  5, 17
         figure  17, 35, 38
         format  19, 28
         front  20, 28, 30
         iref  6, 12, 17, 21, 27, 35, 38
         keyword  21-22



Reschke                   Expires May 30, 2014                 [Page 71]


Internet-Draft                   XML2RFC                   November 2013


         list  23, 38
         middle  24, 30
         note  21, 24
         organization  10, 25
         phone  5, 25
         postal  5, 26
         postamble  17, 26, 40
         preamble  17, 27, 40
         reference  28-29
         references  12, 29
         region  26, 30
         rfc  30
         section  12, 24, 34-35
         seriesInfo  28, 36
         spanx  6, 12, 27, 37, 39
         street  26, 38
         t  5, 23-24, 35, 38
         texttable  35, 39
         title  20, 41
         ttcol  40, 42
         uri  5, 43
         vspace  39, 43
         workgroup  21, 44
         xref  6, 12, 27, 38, 44
      email element  16
         inside address  5
      eref element  16
         inside annotation  6
         inside c  12
         inside postamble  27
         inside preamble  27
         inside t  38
         target attribute  16

   F
      facsimile element  17
         inside address  5
      figure element  17
         align attribute  17
         alt attribute  18
         anchor attribute  18
         height attribute  18
         inside section  35
         inside t  38
         src attribute  18
         suppress-title attribute  18
         title attribute  19
         width attribute  19



Reschke                   Expires May 30, 2014                 [Page 72]


Internet-Draft                   XML2RFC                   November 2013


      format attribute
         in xref element  44
      format element  19
         inside reference  28
         octets attribute  20
         target attribute  20
         type attribute  20
      front element  20
         inside reference  28
         inside rfc  30
      fullname attribute
         in author element  10

   H
      hangIndent attribute
         in list element  23
      hangText attribute
         in t element  39
      height attribute
         in artwork element  8
         in figure element  18

   I
      initials attribute
         in author element  11
      ipr attribute
         '*2026'  50
         '*3667'  50
         '*3978'  50
         '*trust200811'  50
         '*trust200902'  48
         'noDerivativesTrust200902'  49
         'noModificationTrust200902'  49
         'pre5378Trust200902'  49
         'trust200902'  49
         in rfc element  31
      iprExtract attribute
         in rfc element  32
      iref element  21
         inside annotation  6
         inside c  12
         inside figure  17
         inside postamble  27
         inside preamble  27
         inside section  35
         inside t  38
         item attribute  22
         primary attribute  22



Reschke                   Expires May 30, 2014                 [Page 73]


Internet-Draft                   XML2RFC                   November 2013


         subitem attribute  22
      item attribute
         in iref element  22

   K
      keyword element  22
         inside front  21

   L
      list element  23
         counter attribute  23
         hangIndent attribute  23
         inside t  38
         style attribute  23

   M
      middle element  24
         inside rfc  30
      month attribute
         in date element  15

   N
      name attribute
         in artwork element  8
         in seriesInfo element  36
      note element  24
         inside front  21
         title attribute  24
      number attribute
         in rfc element  32

   O
      obsoletes attribute
         in rfc element  32
      octets attribute
         in format element  20
      organization element  25
         abbrev attribute  25
         inside author  10

   P
      pageno attribute
         in xref element  45
      phone element  25
         inside address  5
      postal element  26
         inside address  5
      postamble element  26



Reschke                   Expires May 30, 2014                 [Page 74]


Internet-Draft                   XML2RFC                   November 2013


         inside figure  17
         inside texttable  40
      preamble element  27
         inside figure  17
         inside texttable  40
      primary attribute
         in iref element  22

   R
      reference element  28
         anchor attribute  28
         inside references  29
         target attribute  28
      references element  29
         inside back  12
         title attribute  29
      region element  30
         inside postal  26
      rfc element  30
         category attribute  30
         consensus attribute  31
         docName attribute  31
         ipr attribute  31
         iprExtract attribute  32
         number attribute  32
         obsoletes attribute  32
         seriesNo attribute  33
         submissionType attribute  33
         updates attribute  33
         xml:lang attribute  33
      role attribute
         in author element  11

   S
      section element  34
         anchor attribute  35
         inside back  12
         inside middle  24
         inside section  35
         title attribute  35
         toc attribute  35
      seriesInfo element  36
         inside reference  28
         name attribute  36
         value attribute  36
      seriesNo attribute
         in rfc element  33
      source attribute



Reschke                   Expires May 30, 2014                 [Page 75]


Internet-Draft                   XML2RFC                   November 2013


         in cref element  14
      spanx element  37
         inside annotation  6
         inside c  12
         inside postamble  27
         inside preamble  27
         inside t  39
         style attribute  37
         xml:space attribute  37
      src attribute
         in artwork element  8
         in figure element  18
      street element  38
         inside postal  26
      style attribute
         in list element  23
         in spanx element  37
         in texttable element  40
      subitem attribute
         in iref element  22
      submissionType attribute
         in rfc element  33
      suppress-title attribute
         in figure element  18
         in texttable element  41
      surname attribute
         in author element  11

   T
      t element  38
         anchor attribute  39
         hangText attribute  39
         inside abstract  5
         inside list  23
         inside note  24
         inside section  35
      target attribute
         in eref element  16
         in format element  20
         in reference element  28
         in xref element  45
      texttable element  39
         align attribute  40
         anchor attribute  40
         inside section  35
         style attribute  40
         suppress-title attribute  41
         title attribute  41



Reschke                   Expires May 30, 2014                 [Page 76]


Internet-Draft                   XML2RFC                   November 2013


      title attribute
         in figure element  19
         in note element  24
         in references element  29
         in section element  35
         in texttable element  41
      title element  41
         abbrev attribute  42
         inside front  20
      toc attribute
         in section element  35
      ttcol element  42
         align attribute  42
         inside texttable  40
         width attribute  42
      type attribute
         in artwork element  9
         in format element  20

   U
      updates attribute
         in rfc element  33
      uri element  43
         inside address  5

   V
      value attribute
         in seriesInfo element  36
      vspace element  43
         blankLines attribute  43
         inside t  39

   W
      width attribute
         in artwork element  9
         in figure element  19
         in ttcol element  42
      workgroup element  44
         inside front  21

   X
      xml:lang attribute
         in rfc element  33
      xml:space attribute
         in artwork element  9
         in spanx element  37
      xref element  44
         format attribute  44



Reschke                   Expires May 30, 2014                 [Page 77]


Internet-Draft                   XML2RFC                   November 2013


         inside annotation  6
         inside c  12
         inside postamble  27
         inside preamble  27
         inside t  38
         pageno attribute  45
         target attribute  45

   Y
      year attribute
         in date element  15

Author's Address

   Julian F. Reschke
   greenbytes GmbH
   Hafenweg 16
   Muenster, NW  48155
   Germany

   EMail: julian.reschke@greenbytes.de
   URI:   http://greenbytes.de/tech/webdav/





























Reschke                   Expires May 30, 2014                 [Page 78]