



                                                              J. Reschke
                                                              greenbytes
                                                        October 29, 2025


            Transforming RFC7749-formatted XML through XSLT

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   4
   2.  Supported RFC7749 elements  . . . . . . . . . . . . . . . . .   5
     2.1.  Extension elements  . . . . . . . . . . . . . . . . . . .   5
   3.  Processing Instructions . . . . . . . . . . . . . . . . . . .   6
     3.1.  Supported xml2rfc-compatible PIs  . . . . . . . . . . . .   6
     3.2.  Unsupported xml2rfc-compatible PIs  . . . . . . . . . . .   9
     3.3.  Extension PIs . . . . . . . . . . . . . . . . . . . . . .   9
       3.3.1.  abort-on - Log Level  . . . . . . . . . . . . . . . .   9
       3.3.2.  allow-markup-in-artwork - Allow certain XML elements
               inside <artwork> and <sourcecode> . . . . . . . . . .  10
       3.3.3.  authors-section - Placement of 'Authors' Section  . .  10
       3.3.4.  css-contents - CSS Contents . . . . . . . . . . . . .  10
       3.3.5.  css-resource - Custom CSS Resource  . . . . . . . . .  11
       3.3.6.  dark-mode - Switch for Disabling 'Dark Mode' Support   11
       3.3.7.  diff-uri - URI Template for Internet Draft Diff Links  11
       3.3.8.  doi-uri - URI Template for DOI Links  . . . . . . . .  12
       3.3.9.  duplex - Support Duplex Printing  . . . . . . . . . .  12
       3.3.10. errata - Embed Errata Information . . . . . . . . . .  12
       3.3.11. html-pretty-print - Switch for Enabling Pretty
               Printing of Code  . . . . . . . . . . . . . . . . . .  13
       3.3.12. include-generator - Switch for Disabling Generator
               Information in Output . . . . . . . . . . . . . . . .  13
       3.3.13. include-index - Switch for Disabling Index Generation  14
       3.3.14. include-references-in-index - Generate Index Entries
               for References  . . . . . . . . . . . . . . . . . . .  14
       3.3.15. insert-metadata - Dynamic Metadata Insertion in HTML   14
       3.3.16. internet-draft-base-uri - base URI for RFC reference
               files . . . . . . . . . . . . . . . . . . . . . . . .  15
       3.3.17. internet-draft-uri - URI Template for Interned Drafts  15
       3.3.18. justification - Text Justification  . . . . . . . . .  15
       3.3.19. isbn-uri - URI Template for ISBNs . . . . . . . . . .  16
       3.3.20. log-level - Log Level . . . . . . . . . . . . . . . .  16
       3.3.21. maxwidth - Maximal Text Width in HTML . . . . . . . .  16
       3.3.22. parse-xml-in-artwork - Parse and Check XML in artwork  17
       3.3.23. rfc-errata-uri - URI Template for RFC Errata  . . . .  17
       3.3.24. rfc-erratum-uri - URI Template for a specific RFC
               Erratum . . . . . . . . . . . . . . . . . . . . . . .  17
       3.3.25. rfc-reference--base-uri - base URI for RFC reference
               files . . . . . . . . . . . . . . . . . . . . . . . .  18



Reschke                    Expires May 2, 2026                  [Page 1]

Documentation             RFC7749 through XSLT              October 2025


       3.3.26. rfc-uri - URI Template for HTML Version of RFCs . . .  18
       3.3.27. sec-no-trailing-dots - Disable Trailing Dots in
               Section Numbers . . . . . . . . . . . . . . . . . . .  18
       3.3.28. std-uri - URI Template for IETF Standards . . . . . .  19
       3.3.29. support-highwire-press-tags - Support 'Highwire
               Press' Metadata . . . . . . . . . . . . . . . . . . .  19
       3.3.30. support-open-graph-tags - Support 'Highwire Press'
               Metadata  . . . . . . . . . . . . . . . . . . . . . .  20
       3.3.31. support-rfc2731 - Support RFC 2731 Metadata . . . . .  20
       3.3.32. ucd-file - Filename of Unicode Database . . . . . . .  20
       3.3.33. xml2rfc-backend - Select xml2rfc Target Version . . .  21
       3.3.34. xref-with-text-generate - Default Handling of <xref>
               with Text Content . . . . . . . . . . . . . . . . . .  21
   4.  Anchors . . . . . . . . . . . . . . . . . . . . . . . . . . .  21
   5.  Supported XSLT engines  . . . . . . . . . . . . . . . . . . .  23
     5.1.  Standalone Engines  . . . . . . . . . . . . . . . . . . .  23
     5.2.  In-Browser Engines  . . . . . . . . . . . . . . . . . . .  23
   6.  Transforming to HTML  . . . . . . . . . . . . . . . . . . . .  24
     6.1.  HTML compliance . . . . . . . . . . . . . . . . . . . . .  25
     6.2.  Standard HTML LINK elements . . . . . . . . . . . . . . .  26
     6.3.  Standard HTML metadata  . . . . . . . . . . . . . . . . .  27
     6.4.  Dublin Core (RFC2731) metadata  . . . . . . . . . . . . .  27
     6.5.  Insertion of Live RFC Meta Data . . . . . . . . . . . . .  28
     6.6.  Insertion of RFC Errata Links . . . . . . . . . . . . . .  29
   7.  Transforming to XHTML . . . . . . . . . . . . . . . . . . . .  30
   8.  Transforming to CHM (Microsoft Compiled Help) . . . . . . . .  30
   9.  Transforming to PDF . . . . . . . . . . . . . . . . . . . . .  30
     9.1.  Via XSL-FO  . . . . . . . . . . . . . . . . . . . . . . .  30
       9.1.1.  Example: producing output for Apache FOP  . . . . . .  31
     9.2.  Via HTML  . . . . . . . . . . . . . . . . . . . . . . . .  31
   10. Transforming to ePub  . . . . . . . . . . . . . . . . . . . .  31
   11. Generic Extensions  . . . . . . . . . . . . . . . . . . . . .  31
     11.1.  <abnf-char-sequence> element . . . . . . . . . . . . . .  31
     11.2.  <anchor-alias> element . . . . . . . . . . . . . . . . .  32
     11.3.  <bb> element . . . . . . . . . . . . . . . . . . . . . .  32
     11.4.  <bc> element . . . . . . . . . . . . . . . . . . . . . .  32
     11.5.  <bcp14> element  . . . . . . . . . . . . . . . . . . . .  32
     11.6.  <blockquote> element . . . . . . . . . . . . . . . . . .  33
     11.7.  <bt> element . . . . . . . . . . . . . . . . . . . . . .  33
     11.8.  <c> element  . . . . . . . . . . . . . . . . . . . . . .  33
     11.9.  <contributor> element  . . . . . . . . . . . . . . . . .  34
     11.10. <dfn> element  . . . . . . . . . . . . . . . . . . . . .  34
     11.11. <feedback> element . . . . . . . . . . . . . . . . . . .  34
     11.12. <h> element  . . . . . . . . . . . . . . . . . . . . . .  34
     11.13. <highlight> element  . . . . . . . . . . . . . . . . . .  34
     11.14. <length-of> element  . . . . . . . . . . . . . . . . . .  34
     11.15. <link> element . . . . . . . . . . . . . . . . . . . . .  35
     11.16. <lt> element . . . . . . . . . . . . . . . . . . . . . .  35



Reschke                    Expires May 2, 2026                  [Page 2]

Documentation             RFC7749 through XSLT              October 2025


     11.17. <note> element . . . . . . . . . . . . . . . . . . . . .  36
     11.18. <parse-xml> element  . . . . . . . . . . . . . . . . . .  36
     11.19. <prose> element  . . . . . . . . . . . . . . . . . . . .  36
     11.20. <q> element  . . . . . . . . . . . . . . . . . . . . . .  36
     11.21. <ref> element  . . . . . . . . . . . . . . . . . . . . .  36
     11.22. <source> element . . . . . . . . . . . . . . . . . . . .  37
     11.23. <sup> element  . . . . . . . . . . . . . . . . . . . . .  37
     11.24. <u-map> element  . . . . . . . . . . . . . . . . . . . .  37
     11.25. Extensions to <artwork> element  . . . . . . . . . . . .  37
     11.26. Extensions to <date> element . . . . . . . . . . . . . .  38
     11.27. Extensions to <eref> element . . . . . . . . . . . . . .  38
     11.28. Extensions to <iref> element . . . . . . . . . . . . . .  38
     11.29. Extensions to <list> element . . . . . . . . . . . . . .  39
     11.30. Extensions to <rfc> element  . . . . . . . . . . . . . .  39
     11.31. Extensions to <section> element  . . . . . . . . . . . .  39
     11.32. Extensions to <xref> element . . . . . . . . . . . . . .  39
   12. Experimental Support for RFC7991bis Vocabulary  . . . . . . .  40
     12.1.  artset Element . . . . . . . . . . . . . . . . . . . . .  40
     12.2.  aside Element  . . . . . . . . . . . . . . . . . . . . .  40
     12.3.  bcp14 Element  . . . . . . . . . . . . . . . . . . . . .  40
     12.4.  blockquote Element . . . . . . . . . . . . . . . . . . .  41
     12.5.  boilerplate Element  . . . . . . . . . . . . . . . . . .  41
     12.6.  br Element . . . . . . . . . . . . . . . . . . . . . . .  41
     12.7.  cityarea Element . . . . . . . . . . . . . . . . . . . .  41
     12.8.  contact Element  . . . . . . . . . . . . . . . . . . . .  41
     12.9.  displayreference Element . . . . . . . . . . . . . . . .  41
     12.10. dd Element . . . . . . . . . . . . . . . . . . . . . . .  41
     12.11. dl Element . . . . . . . . . . . . . . . . . . . . . . .  41
     12.12. dt Element . . . . . . . . . . . . . . . . . . . . . . .  41
     12.13. em Element . . . . . . . . . . . . . . . . . . . . . . .  41
     12.14. extaddr Element  . . . . . . . . . . . . . . . . . . . .  41
     12.15. li Element . . . . . . . . . . . . . . . . . . . . . . .  42
     12.16. link Element . . . . . . . . . . . . . . . . . . . . . .  42
     12.17. name Element . . . . . . . . . . . . . . . . . . . . . .  42
     12.18. ol Element . . . . . . . . . . . . . . . . . . . . . . .  42
     12.19. pobox Element  . . . . . . . . . . . . . . . . . . . . .  42
     12.20. postalLine Element . . . . . . . . . . . . . . . . . . .  42
     12.21. refcontent Element . . . . . . . . . . . . . . . . . . .  42
     12.22. Extensions to reference Element  . . . . . . . . . . . .  42
       12.22.1.  quoteTitle attribute  . . . . . . . . . . . . . . .  42
     12.23. referencegroup Element . . . . . . . . . . . . . . . . .  42
     12.24. relref Element . . . . . . . . . . . . . . . . . . . . .  42
     12.25. Extensions to section Element  . . . . . . . . . . . . .  43
       12.25.1.  numbered attribute  . . . . . . . . . . . . . . . .  43
       12.25.2.  removeInRFC attribute . . . . . . . . . . . . . . .  43
     12.26. sortingcode Element  . . . . . . . . . . . . . . . . . .  43
     12.27. sourcecode Element . . . . . . . . . . . . . . . . . . .  43
     12.28. strong Element . . . . . . . . . . . . . . . . . . . . .  43



Reschke                    Expires May 2, 2026                  [Page 3]

Documentation             RFC7749 through XSLT              October 2025


     12.29. sub Element  . . . . . . . . . . . . . . . . . . . . . .  43
     12.30. sup Element  . . . . . . . . . . . . . . . . . . . . . .  43
     12.31. svg Element  . . . . . . . . . . . . . . . . . . . . . .  43
     12.32. table Element  . . . . . . . . . . . . . . . . . . . . .  43
     12.33. tbody Element  . . . . . . . . . . . . . . . . . . . . .  43
     12.34. td Element . . . . . . . . . . . . . . . . . . . . . . .  44
     12.35. tfoot Element  . . . . . . . . . . . . . . . . . . . . .  44
     12.36. th Element . . . . . . . . . . . . . . . . . . . . . . .  44
     12.37. thead Element  . . . . . . . . . . . . . . . . . . . . .  44
     12.38. tr Element . . . . . . . . . . . . . . . . . . . . . . .  44
     12.39. tt Element . . . . . . . . . . . . . . . . . . . . . . .  44
     12.40. u Element  . . . . . . . . . . . . . . . . . . . . . . .  44
     12.41. ul Element . . . . . . . . . . . . . . . . . . . . . . .  44
     12.42. Extensions to xref Element . . . . . . . . . . . . . . .  44
       12.42.1.  relative attribute  . . . . . . . . . . . . . . . .  45
       12.42.2.  section attribute . . . . . . . . . . . . . . . . .  45
       12.42.3.  sectionFormat attribute . . . . . . . . . . . . . .  45
     12.43. xi:include Element . . . . . . . . . . . . . . . . . . .  45
   13. Utilities . . . . . . . . . . . . . . . . . . . . . . . . . .  45
     13.1.  Checking References  . . . . . . . . . . . . . . . . . .  45
     13.2.  Generating Graphs from References  . . . . . . . . . . .  47
     13.3.  Producing reference entries for books  . . . . . . . . .  47
     13.4.  Down-converting to RFC 7749 Grammar  . . . . . . . . . .  48
     13.5.  Extracting artwork . . . . . . . . . . . . . . . . . . .  49
     13.6.  GRRDL  . . . . . . . . . . . . . . . . . . . . . . . . .  50
     13.7.  HTML Live Refresh  . . . . . . . . . . . . . . . . . . .  50
     13.8.  Refreshing included material in the XML source . . . . .  51
   14. References  . . . . . . . . . . . . . . . . . . . . . . . . .  55
     14.1.  Informative References . . . . . . . . . . . . . . . . .  55
     14.2.  URIs . . . . . . . . . . . . . . . . . . . . . . . . . .  57
   Appendix A.  RELAX NG Compact Schema  . . . . . . . . . . . . . .  57
   Appendix B.  Implementation Notes . . . . . . . . . . . . . . . .  84
     B.1.  Recognized type attributes for <artwork> element  . . . .  84
   Appendix C.  Examples . . . . . . . . . . . . . . . . . . . . . .  85
     C.1.  Using the 'Internal Subset' . . . . . . . . . . . . . . .  86
     C.2.  Customization . . . . . . . . . . . . . . . . . . . . . .  86
   Appendix D.  Producing the IETF 'Boilerplate' . . . . . . . . . .  87
   Appendix E.  License  . . . . . . . . . . . . . . . . . . . . . .  88
   Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  89
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . . 100

1.  Introduction

   This document describes a set of XSLT transformations that can be
   used to transform "XML2RFC" XML ([RFC7749], updating [RFC2629]) to
   various output formats, such as HTML and PDF.  The main topics are

   o  compliance to the xml2rfc XML element set (Section 2),



Reschke                    Expires May 2, 2026                  [Page 4]

Documentation             RFC7749 through XSLT              October 2025


   o  support for xml2rfc processing instructions (Section 3),

   o  the names of anchor elements generated in HTML and PDF output
      (Section 4),

   o  various XSLT engines that can be used (Section 5),

   o  outputting HTML (Section 6) and XHTML (Section 7),

   o  outputting CHM (Compiled Microsoft Help, Section 8),

   o  outputting PDF (Section 9),

   o  outputting ePub (Section 10),

   o  extensions to the xml2rfc vocabulary (Section 11),

   o  selected extensions from the proposed xml2rfc V3 vocabulary
      (Section 12),

   o  various utilities (Section 13).

   The full distribution is available at
   <https://greenbytes.de/tech/webdav/rfc2629xslt.zip>.  A mirror of the
   non-public source repository can be found at
   <https://github.com/reschke/xml2rfc>; this is also a good place for
   reporting issues.

      _Note:_ RFC 2629 was the initial specification of the XML
      vocabulary; that's why the "2629" lives on in various parts, such
      as filenames.

2.  Supported RFC7749 elements

   "rfc2629.xslt" supports both all grammar elements defined in
   [RFC7749], plus a subset of the new elements defined in [RFC7991bis].

2.1.  Extension elements

   "rfc2629.xslt" supports two kind of extension elements, using
   different XML namespaces.

   The first set contains (hopefully) generally useful extensions, see
   Section 11.

   The second set is used for change and issue tracking and currently is
   not documented here.  Please email the author in case you're
   interested in using these extensions.



Reschke                    Expires May 2, 2026                  [Page 5]

Documentation             RFC7749 through XSLT              October 2025


3.  Processing Instructions

   All PIs can be set as XSLT parameter as well, overriding any value
   that is found in the source file to be transformed.

   Using processing instructions:

   <?rfc toc="yes"?>
   <?rfc-ext support-rfc2731="no"?>

   Using XSLT parameters (Saxon):

   java -cp saxon.jar com.icl.saxon.StyleSheet source.xml rfc2629.xslt \
     xml2rfc-toc=yes xml2rfc-ext-support-rfc2731=no > result.html

   Using XSLT parameters (xsltproc):

   xsltproc --param xml2rfc-toc '"yes"' \
      --param xml2rfc-ext-support-rfc2731 '"no"' \
      rfc2629.xslt source.xml > result.html

   (note the required quoting of string parameters)

3.1.  Supported xml2rfc-compatible PIs

   +------+--------------+--------------------+-----------+------------+
   | PI t | PI pseudo-   | XSLT parameter     | default   | comment    |
   | arge | attribute    | name               |           |            |
   | t    |              |                    |           |            |
   +------+--------------+--------------------+-----------+------------+
   | rfc  | authorship   | xml2rfc-authorship | "yes"     | when set   |
   |      |              |                    |           | to "no",   |
   |      |              |                    |           | the        |
   |      |              |                    |           | "Authors"  |
   |      |              |                    |           | section is |
   |      |              |                    |           | suppressed |
   |      |              |                    |           |            |
   | rfc  | background   | xml2rfc-background | (not set) |            |
   |      |              |                    |           |            |
   | rfc  | compact      | xml2rfc-compact    | "no"      | only       |
   |      |              |                    |           | applies to |
   |      |              |                    |           | HTML       |
   |      |              |                    |           | output     |
   |      |              |                    |           | method     |
   |      |              |                    |           | when       |
   |      |              |                    |           | printing   |
   |      |              |                    |           |            |
   | rfc  | comments     | xml2rfc-comments   | "no"      |            |



Reschke                    Expires May 2, 2026                  [Page 6]

Documentation             RFC7749 through XSLT              October 2025


   |      |              |                    | ("yes"    |            |
   |      |              |                    | for v3 do |            |
   |      |              |                    | cuments)  |            |
   |      |              |                    |           |            |
   | rfc  | docmapping   |                    | "yes"     | This is    |
   |      |              |                    |           | the        |
   |      |              |                    |           | default    |
   |      |              |                    |           | for rfc262 |
   |      |              |                    |           | 9.xslt     |
   |      |              |                    |           | anyway,    |
   |      |              |                    |           | and it can |
   |      |              |                    |           | not be     |
   |      |              |                    |           | changed    |
   |      |              |                    |           |            |
   | rfc  | editing      | xml2rfc-editing    | "no"      |            |
   |      |              |                    |           |            |
   | rfc  | footer       | xml2rfc-footer     | (not set) |            |
   |      |              |                    |           |            |
   | rfc  | header       | xml2rfc-header     | (not set) |            |
   |      |              |                    |           |            |
   | rfc  | include      |                    |           | only       |
   |      |              |                    |           | partly     |
   |      |              |                    |           | supported, |
   |      |              |                    |           | use        |
   |      |              |                    |           | external   |
   |      |              |                    |           | entities   |
   |      |              |                    |           | instead    |
   |      |              |                    |           | (see Appen |
   |      |              |                    |           | dix C.1)   |
   |      |              |                    |           | or other   |
   |      |              |                    |           | tools (Sec |
   |      |              |                    |           | tion 13.8) |
   |      |              |                    |           | instead    |
   |      |              |                    |           |            |
   | rfc  | inline       | xml2rfc-inline     | "no"      |            |
   |      |              |                    | ("yes"    |            |
   |      |              |                    | for v3 do |            |
   |      |              |                    | cuments)  |            |
   |      |              |                    |           |            |
   | rfc  | iprnotified  | xml2rfc-           | "no"      |            |
   |      |              | iprnotified        |           |            |
   |      |              |                    |           |            |
   | rfc  | linkmailto   | xml2rfc-linkmailto | "yes"     |            |
   |      |              |                    |           |            |
   | rfc  | multiple-    | xml2rfc-multiple-  | "no"      | determines |
   |      | initials     | initials           |           | whether    |
   |      |              |                    |           | the        |
   |      |              |                    |           | processor  |



Reschke                    Expires May 2, 2026                  [Page 7]

Documentation             RFC7749 through XSLT              October 2025


   |      |              |                    |           | will       |
   |      |              |                    |           | attempt to |
   |      |              |                    |           | truncate   |
   |      |              |                    |           | multiple   |
   |      |              |                    |           | initials   |
   |      |              |                    |           | to a       |
   |      |              |                    |           | single     |
   |      |              |                    |           | one; can   |
   |      |              |                    |           | be set     |
   |      |              |                    |           | globally   |
   |      |              |                    |           | (affecting |
   |      |              |                    |           | the front  |
   |      |              |                    |           | page) but  |
   |      |              |                    |           | also as    |
   |      |              |                    |           | child      |
   |      |              |                    |           | element of |
   |      |              |                    |           | <reference |
   |      |              |                    |           | >          |
   |      |              |                    |           |            |
   | rfc  | private      | xml2rfc-private    | (not set) |            |
   |      |              |                    |           |            |
   | rfc  | refparent    | xml2rfc-private    | "Referenc | Title for  |
   |      |              |                    | es"       | References |
   |      |              |                    |           | sections   |
   |      |              |                    |           | when autom |
   |      |              |                    |           | atically   |
   |      |              |                    |           | inserted   |
   |      |              |                    |           |            |
   | rfc  | rfcedstyle   | xml2rfc-rfcedstyle | (not set) | (limited   |
   |      |              |                    |           | support)   |
   |      |              |                    |           |            |
   | rfc  | sortrefs     | xml2rfc-sortrefs   | "no"      |            |
   |      |              |                    |           |            |
   | rfc  | symrefs      | xml2rfc-symrefs    | "yes"     | The        |
   |      |              |                    |           | default    |
   |      |              |                    |           | has        |
   |      |              |                    |           | changed    |
   |      |              |                    |           | from "no"  |
   |      |              |                    |           | to "yes"   |
   |      |              |                    |           | as of June |
   |      |              |                    |           | 6, 2007    |
   |      |              |                    |           | and        |
   |      |              |                    |           | xml2rfc    |
   |      |              |                    |           | 1.33pre4.  |
   |      |              |                    |           |            |
   | rfc  | toc          | xml2rfc-toc        | "no"      |            |
   |      |              |                    | ("yes"    |            |
   |      |              |                    | for       |            |



Reschke                    Expires May 2, 2026                  [Page 8]

Documentation             RFC7749 through XSLT              October 2025


   |      |              |                    | documents |            |
   |      |              |                    | specifyin |            |
   |      |              |                    | g "3" as  |            |
   |      |              |                    | vocabular |            |
   |      |              |                    | y         |            |
   |      |              |                    | version)  |            |
   |      |              |                    |           |            |
   | rfc  | tocdepth     | xml2rfc-tocdepth   | 99        |            |
   |      |              |                    |           |            |
   | rfc  | topblock     | xml2rfc-topblock   | "yes"     |            |
   +------+--------------+--------------------+-----------+------------+

3.2.  Unsupported xml2rfc-compatible PIs

         +-----------+---------------------+---------------------+
         | PI target | PI pseudo-attribute | comment             |
         +-----------+---------------------+---------------------+
         | rfc       | needLines           |                     |
         |           |                     |                     |
         | rfc       | slides              |                     |
         |           |                     |                     |
         | rfc       | strict              |                     |
         |           |                     |                     |
         | rfc       | subcompact          |                     |
         |           |                     |                     |
         | rfc       | tocindent           | (defaults to "yes") |
         |           |                     |                     |
         | rfc       | tocompact           |                     |
         +-----------+---------------------+---------------------+

3.3.  Extension PIs

3.3.1.  abort-on - Log Level

   PI target
      rfc-ext

   PI pseudo-attribute
      abort-on

   XSLT parameter name
      xml2rfc-ext-abort-on

   default
      "OFF"






Reschke                    Expires May 2, 2026                  [Page 9]

Documentation             RFC7749 through XSLT              October 2025


   Controls at which log level a message causes the XSLT to be aborted
   (one of "OFF", "FATAL", "ERROR", "WARNING", "INFO", "DEBUG",
   "TRACE").

3.3.2.  allow-markup-in-artwork - Allow certain XML elements inside
        <artwork> and <sourcecode>

   PI target
      rfc-ext

   PI pseudo-attribute
      allow-markup-in-artwork

   XSLT parameter name
      xml2rfc-ext-allow-markup-in-artwork

   default
      "no"

   Enables support for specific elements inside <artwork> and
   <sourcecode> elements (using this extension makes the document
   incompatible to the RFC7749 grammar; see description of conversion
   XSLT in Section 13.4).

3.3.3.  authors-section - Placement of 'Authors' Section

   PI target
      rfc-ext

   PI pseudo-attribute
      authors-section

   XSLT parameter name
      xml2rfc-ext-authors-section

   default
      "end"

   When "before-appendices", place the authors section between
   references and appendices (this ordering was used a long time ago).

3.3.4.  css-contents - CSS Contents

   PI target
      rfc-ext

   PI pseudo-attribute
      css-contents



Reschke                    Expires May 2, 2026                 [Page 10]

Documentation             RFC7749 through XSLT              October 2025


   XSLT parameter name
      xml2rfc-ext-css-contents

   default
      none

   CSS content to use instead of the built-in (experimental).

3.3.5.  css-resource - Custom CSS Resource

   PI target
      rfc-ext

   PI pseudo-attribute
      css-resource

   XSLT parameter name
      xml2rfc-ext-css-resource

   default
      none

   Name of CSS resource (URI or relate reference) to use instead of the
   built-in (experimental).

3.3.6.  dark-mode - Switch for Disabling 'Dark Mode' Support

   PI target
      rfc-ext

   PI pseudo-attribute
      dark-mode

   XSLT parameter name
      xml2rfc-ext-dark-mode

   default
      "auto"

   Set to 'no' to disable "dark mode" CSS support.

3.3.7.  diff-uri - URI Template for Internet Draft Diff Links

   PI target
      rfc-ext

   PI pseudo-attribute
      diff-uri



Reschke                    Expires May 2, 2026                 [Page 11]

Documentation             RFC7749 through XSLT              October 2025


   XSLT parameter name
      xml2rfc-ext-diff-uri

   default
      "https://www.ietf.org/rfcdiff?url2={internet-draft}"

   URI template for Internet Draft Diff links.

3.3.8.  doi-uri - URI Template for DOI Links

   PI target
      rfc-ext

   PI pseudo-attribute
      doi-uri

   XSLT parameter name
      xml2rfc-ext-doi-uri

   default
      "https://dx.doi.org/{doi}"

   URI template for DOIs links.

3.3.9.  duplex - Support Duplex Printing

   PI target
      rfc-ext

   PI pseudo-attribute
      duplex

   XSLT parameter name
      xml2rfc-ext-duplex

   default
      "no"

   When set to "yes", format printed output for doublesided printing.

3.3.10.  errata - Embed Errata Information

   PI target
      rfc-ext

   PI pseudo-attribute
      errata




Reschke                    Expires May 2, 2026                 [Page 12]

Documentation             RFC7749 through XSLT              October 2025


   XSLT parameter name
      xml2rfc-ext-errata

   default
      none

   Can be used to specify an errata file; output will link to individual
   errata when possible.  See Section 6.6.

3.3.11.  html-pretty-print - Switch for Enabling Pretty Printing of Code

   PI target
      rfc-ext

   PI pseudo-attribute
      html-pretty-print

   XSLT parameter name
      xml2rfc-ext-html-pretty-print

   default
      none

   Used to specify a JS-based code pretty-printer; the value is the CSS
   class name to insert, followed by a blank space, followed by the URI
   of the JS library.  For instance: "prettyprint
   https://cdn.rawgit.com/google/code-prettify/master/loader/
   run_prettify.js"

3.3.12.  include-generator - Switch for Disabling Generator Information
         in Output

   PI target
      rfc-ext

   PI pseudo-attribute
      include-generator

   XSLT parameter name
      xml2rfc-ext-include-generator

   default
      "yes"

   Set to 'no' in order to disable inclusion of generator version
   information.





Reschke                    Expires May 2, 2026                 [Page 13]

Documentation             RFC7749 through XSLT              October 2025


3.3.13.  include-index - Switch for Disabling Index Generation

   PI target
      rfc-ext

   PI pseudo-attribute
      include-index

   XSLT parameter name
      xml2rfc-ext-include-index

   default
      "yes"

   When set to "no", no index will be generated.

3.3.14.  include-references-in-index - Generate Index Entries for
         References

   PI target
      rfc-ext

   PI pseudo-attribute
      include-references-in-index

   XSLT parameter name
      xml2rfc-ext-include-references-in-index

   default
      "no"

   When set to "yes", index entries are generated for all references.

3.3.15.  insert-metadata - Dynamic Metadata Insertion in HTML

   PI target
      rfc-ext

   PI pseudo-attribute
      insert-metadata

   XSLT parameter name
      xml2rfc-ext-insert-metadata

   default
      "yes"





Reschke                    Expires May 2, 2026                 [Page 14]

Documentation             RFC7749 through XSLT              October 2025


   When set to "yes", include JS code that fetches current RFC/Internet-
   Draft metadata and inserts it into the front page (standards track,
   obsoletion, updates, errata, freshness of draft...).

3.3.16.  internet-draft-base-uri - base URI for RFC reference files

   PI target
      rfc-ext

   PI pseudo-attribute
      internet-draft-reference-base-uri

   XSLT parameter name
      xml2rfc-ext-internet-draft-reference-base-uri

   default
      "https://bib.ietf.org/public/rfc/bibxml-ids/"

   Base URI for Internet-Draft referennces included using the "include"
   processing instruction.

3.3.17.  internet-draft-uri - URI Template for Interned Drafts

   PI target
      rfc-ext

   PI pseudo-attribute
      internet-draft-uri

   XSLT parameter name
      xml2rfc-ext-internet-draft-uri

   default
      "https://datatracker.ietf.org/doc/html/{internet-draft}"

   URI template for Internet-Draft links (can be set locally inside the
   <reference> element as well to override the default).

3.3.18.  justification - Text Justification

   PI target
      rfc-ext

   PI pseudo-attribute
      justification

   XSLT parameter name
      xml2rfc-ext-justification



Reschke                    Expires May 2, 2026                 [Page 15]

Documentation             RFC7749 through XSLT              October 2025


   default
      "never"

   "never": never emit justified text, "always": always emit justified
   text, "print": only emit justified text for print media.

3.3.19.  isbn-uri - URI Template for ISBNs

   PI target
      rfc-ext

   PI pseudo-attribute
      isbn-uri

   XSLT parameter name
      xml2rfc-ext-isbn-uri

   default
      "https://www.worldcat.org/search?q=isbn:{isbn}"

   URI template for ISBN lookup.

3.3.20.  log-level - Log Level

   PI target
      rfc-ext

   PI pseudo-attribute
      log-level

   XSLT parameter name
      xml2rfc-ext-log-level

   default
      "WARNING"

   Logging level, one of "OFF", "FATAL", "ERROR", "WARNING", "INFO",
   "DEBUG", "TRACE".

3.3.21.  maxwidth - Maximal Text Width in HTML

   PI target
      rfc-ext

   PI pseudo-attribute
      maxwidth

   XSLT parameter name



Reschke                    Expires May 2, 2026                 [Page 16]

Documentation             RFC7749 through XSLT              October 2025


      xml2rfc-ext-maxwidth

   default
      1000

   For HTML output: maximal text width in CSS pixels.

3.3.22.  parse-xml-in-artwork - Parse and Check XML in artwork

   PI target
      rfc-ext

   PI pseudo-attribute
      parse-xml-in-artwork

   XSLT parameter name
      xml2rfc-ext-parse-xml-in-artwork

   default
      "no"

   May be used to enable parsing of XML content in figures (MSXML only).

3.3.23.  rfc-errata-uri - URI Template for RFC Errata

   PI target
      rfc-ext

   PI pseudo-attribute
      rfc-errata-uri

   XSLT parameter name
      xml2rfc-ext-rfc-errata-uri

   default
      "https://www.rfc-editor.org/errata/rfc{rfc}"

   URI template for all RFC Errata for a given RFC ("rfc" is the RFC
   number).

3.3.24.  rfc-erratum-uri - URI Template for a specific RFC Erratum

   PI target
      rfc-ext

   PI pseudo-attribute
      rfc-erratum-uri




Reschke                    Expires May 2, 2026                 [Page 17]

Documentation             RFC7749 through XSLT              October 2025


   XSLT parameter name
      xml2rfc-ext-rfc-erratum-uri

   default
      "https://www.rfc-editor.org/errata/eid{eid}"

   URI template for a specific RFC erratum ("eid" is the "errata id").

3.3.25.  rfc-reference--base-uri - base URI for RFC reference files

   PI target
      rfc-ext

   PI pseudo-attribute
      rfc-reference-base-uri

   XSLT parameter name
      xml2rfc-ext-rfc-reference-base-uri

   default
      "https://bib.ietf.org/public/rfc/bibxml/"

   Base URI for RFC referennces included using the "include" processing
   instruction.

3.3.26.  rfc-uri - URI Template for HTML Version of RFCs

   PI target
      rfc-ext

   PI pseudo-attribute
      rfc-uri

   XSLT parameter name
      xml2rfc-ext-rfc-uri

   default
      "https://www.rfc-editor.org/rfc/rfc{rfc}.html" (previously
      "https://tools.ietf.org/html/rfc{rfc}")

   URI Template for HTML Version of RFCs.

3.3.27.  sec-no-trailing-dots - Disable Trailing Dots in Section Numbers

   PI target
      rfc-ext

   PI pseudo-attribute



Reschke                    Expires May 2, 2026                 [Page 18]

Documentation             RFC7749 through XSLT              October 2025


      sec-no-trailing-dots

   XSLT parameter name
      xml2rfc-ext-sec-no-trailing-dots

   default
      none

   When set to "no", do not add trailing dots to section numbers (this
   was the preference in the distant past).

3.3.28.  std-uri - URI Template for IETF Standards

   PI target
      rfc-ext

   PI pseudo-attribute
      std-uri

   XSLT parameter name
      xml2rfc-ext-std-uri

   default
      "https://www.rfc-editor.org/info/std{std}"

   URI Template for IETF Standards.

3.3.29.  support-highwire-press-tags - Support 'Highwire Press' Metadata

   PI target
      rfc-ext

   PI pseudo-attribute
      support-highwire-press-tags

   XSLT parameter name
      xml2rfc-ext-support-highwire-press-tags

   default
      "yes"

   Decides whether the HTML transformation should generate 'Highwire
   Press' META tags, as used by Google Scholar.








Reschke                    Expires May 2, 2026                 [Page 19]

Documentation             RFC7749 through XSLT              October 2025


3.3.30.  support-open-graph-tags - Support 'Highwire Press' Metadata

   PI target
      rfc-ext

   PI pseudo-attribute
      support-open-graph-tags

   XSLT parameter name
      xml2rfc-ext-support-open-graph-tags

   default
      "yes"

   Decides whether the HTML transformation should generate 'Open Graph'
   META tags, as used by Twitter.

3.3.31.  support-rfc2731 - Support RFC 2731 Metadata

   PI target
      rfc-ext

   PI pseudo-attribute
      support-rfc2731

   XSLT parameter name
      xml2rfc-ext-support-rfc2731

   default
      "yes"

   Decides whether the HTML transformation should generate META tags
   according Section 6.4.

3.3.32.  ucd-file - Filename of Unicode Database

   PI target
      rfc-ext

   PI pseudo-attribute
      ucd-file

   XSLT parameter name
      xml2rfc-ext-ucd-file

   default
      none




Reschke                    Expires May 2, 2026                 [Page 20]

Documentation             RFC7749 through XSLT              October 2025


   Specifies an external resource containing Unicode character database
   information, as described in Section 11.24.

3.3.33.  xml2rfc-backend - Select xml2rfc Target Version

   PI target
      rfc-ext

   PI pseudo-attribute
      xml2rfc-backend

   XSLT parameter name
      xml2rfc-ext-xml2rfc-backend

   default
      based on document date

   Used in "clean-for-DTD.xslt" (see Section 13.4).

3.3.34.  xref-with-text-generate - Default Handling of <xref> with Text
         Content

   PI target
      rfc-ext

   PI pseudo-attribute
      xref-with-text-generate

   XSLT parameter name
      xml2rfc-ext-xref-with-text-generate

   default
      "text"

   Determines whether <xref> with text content generates additional text
   as in traditional text output ("text"), or just generates a link
   around the text ("nothing").  Note that the default might change in
   the future in order to achieve compatibility with other formatters.

4.  Anchors

   The transformation automatically generates anchors that are supposed
   to be stable and predictable and that can be used to identify
   specific parts of the document.  Anchors are generated both in HTML
   and XSL-FO content (but the latter will only be used for PDF output
   when the XSL-FO engine supports producing PDF anchors).





Reschke                    Expires May 2, 2026                 [Page 21]

Documentation             RFC7749 through XSLT              October 2025


                 The following anchors get auto-generated:

    +------------------------+---------------------------------------+
    | Anchor name            | Description                           |
    +------------------------+---------------------------------------+
    | rfc.abstract           | Abstract                              |
    |                        |                                       |
    | rfc.authors            | Authors section                       |
    |                        |                                       |
    | rfc.copyright          | Copyright section                     |
    |                        |                                       |
    | rfc.copyrightnotice    | Copyright notice                      |
    |                        |                                       |
    | rfc.figure._n_         | Figures (titled)                      |
    |                        |                                       |
    | rfc.figure.u._n_       | Figures (untitled)                    |
    |                        |                                       |
    | rfc.index              | Index                                 |
    |                        |                                       |
    | rfc.ipr                | Intellectual Property                 |
    |                        |                                       |
    | rfc.iref._n_           | Internal references                   |
    |                        |                                       |
    | rfc.note._n_           | Notes (from front section)            |
    |                        |                                       |
    | rfc.references         | References                            |
    |                        |                                       |
    | rfc.references._n_     | Additional references                 |
    |                        |                                       |
    | rfc.section._n_        | Section _n_                           |
    |                        |                                       |
    | rfc.section._n_.p._m_  | Section _n_, paragraph _m_            |
    |                        |                                       |
    | rfc.status             | Status of memo                        |
    |                        |                                       |
    | rfc.table._n_          | Tables (titled)                       |
    |                        |                                       |
    | rfc.table.u._n_        | Tables (untitled)                     |
    |                        |                                       |
    | rfc.toc                | Table of contents                     |
    |                        |                                       |
    | rfc.xref._name_._n_    | References to reference _n_ to _name_ |
    +------------------------+---------------------------------------+








Reschke                    Expires May 2, 2026                 [Page 22]

Documentation             RFC7749 through XSLT              October 2025


5.  Supported XSLT engines

   The transformation requires a non-standard extension function (see
   exsl:node-set [1]) which is however widely available.  XSLT
   processors that do not support this extension (or a functional
   equivalent, such as msxsl:node-set) currently are not supported.

   Input documents do not always specify the date completely.  In this
   case, the transformation attempts to let the XSLT engine to compute
   the system date, using either scripting in Microsoft's XSLT engine,
   or the exsl:date-time [2] extension function.

5.1.  Standalone Engines

   The following XSLT engines are believed to work well:

   o  Windows: MSXML3 and MSXML4 (<http://msdn.microsoft.com/xml>;
      command line processor "msxsl" is available from Microsoft
      Download Center [3])

   o  Java: Saxon (<http://saxon.sourceforge.net/>)

   o  Java: Xalan (<http://xml.apache.org/xalan-j/>)

   o  C/C++: xsltproc (libxslt) (<http://xmlsoft.org/XSLT/>, make sure
      that you have a current version, also: does not support inclusion
      of "https" resources -- <https://bugzilla.gnome.org/
      show_bug.cgi?id=791491>)

5.2.  In-Browser Engines

   The following browsers seem to work fine:

   o  Internet Explorer 6 and newer

   o  Firefox 3.0 and newer



      *  Be aware that XSLT execution can be suppressed using NoScript
         [4]

      *  There seems to be a new problem in Firefox 4 where it
         occasionally does the initial rendering with the wrong width
         (people who can reproduce this problem please comment on
         <https://bugzilla.mozilla.org/show_bug.cgi?id=640390>.





Reschke                    Expires May 2, 2026                 [Page 23]

Documentation             RFC7749 through XSLT              October 2025


      *  Date computation is available in Firefox starting with Firefox
         6 (see <https://bugzilla.mozilla.org/show_bug.cgi?id=603159>)

   o  Safari 3 (starting with version 3.0.4)



      *  Date computation not available (see <https://bugs.webkit.org/
         show_bug.cgi?id=4079>)

   o  Google Chrome



      *  Date computation not available (see
         <https://bugs.chromium.org/p/chromium/issues/
         detail?id=1006210>)

   Note that browsers in general do not load external DTDs nor external
   entities (see, for instance, Mozilla Bug 22942 [5]) thus entities
   like &nbsp; need to be declared in the internal subset
   (Appendix C.1).

   The following browsers are known not to work properly:

   o  Firefox 1.*/2.*: (missing extension function - see change request
      at Mozilla BugZilla 193678 [6])

   o  Opera 9.21: execution fails, potentially to a somewhat complex
      XPath expression (reported to Opera as bug 245725).

   o  Opera 9.5 and 9.6: transformation appears to work, but CSS isn't
      getting applied (reported to Opera as bug 337388 on 2008-06-12).

   o  Safari 2.* supports client-side XSLT as of MacOS X 10.4, but
      misses required extension functions.  A problem with stylesheets
      producing non-ASCII output (such as NBSP characters) has been
      fixed as of OSX 10.4.4.  Both problems have been reported through
      Apple's bug tracking system, see
      <http://drakken.dbc.mtview.ca.us/pipermail/
      xml2rfc/2005-May/002073.html> and <http://bugs.webkit.org/
      show_bug.cgi?id=4079>.

6.  Transforming to HTML

   Transformation to HTML can be done inside the browser if it supports
   XSLT.  To enable this, add the following processing instruction to
   the start of the source file:



Reschke                    Expires May 2, 2026                 [Page 24]

Documentation             RFC7749 through XSLT              October 2025


     <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

   (and ensure that "rfc2629.xslt" is present).

6.1.  HTML compliance

   The transformation result is supposed to conform to HTML5 [HTML5].
   This can be checked using the W3C's online validator at
   <http://validator.w3.org>.

   XSLT 1.0 is not capable to directly emit the HTML doctype
   declaration, thus uses the SYSTEM ID "about:legacy-compat" instead
   (see Section 8.1.1 of [HTML5]).

   When not run in a browser, the doctype declaration can be adjusted
   using a small script, such as with:

   saxon test.xml rfc2629.xslt | awk -f html5doctype.awk

   with































Reschke                    Expires May 2, 2026                 [Page 25]

Documentation             RFC7749 through XSLT              October 2025


   #!/usr/bin/awk -f

   # waitfordoctype:
   # 0: wait for line starting with DOCTYPE and eat empty lines
   # 1: wait for line starting with <html
   # 2: afterwards

   BEGIN {
     waitfordoctype = 0;
   }

   /<!DOCTYPE .*/ {
     if (waitfordoctype == 0) {
       waitfordoctype = 1
     }
   }

   /<html.*/ {
     if (waitfordoctype == 1) {
       waitfordoctype = 2
       printf("<!DOCTYPE html>\n")
     }
     else {
       print
     }
   }

   {
     if (waitfordoctype == 0 && $0 != "") {
       print
     }
     else if (waitfordoctype == 2) {
       print
     }
   }


6.2.  Standard HTML LINK elements

   LINK elements exist since HTML 2.0.  They can be used to embed
   content-independant links inside the document.  Unfortunately, only
   few user agents support this element.  Firefox users may want to
   check the Link Widgets [7] extension.








Reschke                    Expires May 2, 2026                 [Page 26]

Documentation             RFC7749 through XSLT              October 2025


                 The following LINK elements are produced:

   +-----------+-------------------------------------------------------+
   | LINK type | description                                           |
   +-----------+-------------------------------------------------------+
   | alternate | for RFCs, a link to the authorative ASCII version on  |
   |           | the IETF web site                                     |
   |           |                                                       |
   | appendic  | pointer to all top-level appendics                    |
   |           |                                                       |
   | author    | pointer to "authors" section                          |
   |           |                                                       |
   | chapter   | pointer to all top-level sections                     |
   |           |                                                       |
   | contents  | pointer to table of contents                          |
   |           |                                                       |
   | copyright | pointer to copyright statement                        |
   |           |                                                       |
   | index     | pointer to index                                      |
   +-----------+-------------------------------------------------------+

   The figure below shows how Mozilla Firefox 1.0 displays the Site
   Navigation Bar for rfc2396.xml.

   (LINK elements displayed in Mozilla Firefox for RFC2396.xml)

6.3.  Standard HTML metadata

          The following standard HTML META elements are produced:

      +-----------+-------------------------------------------------+
      | META name | description                                     |
      +-----------+-------------------------------------------------+
      | generator | from XSLT engine version and stylesheet version |
      |           |                                                 |
      | keywords  | from keyword elements in front section          |
      +-----------+-------------------------------------------------+

6.4.  Dublin Core (RFC2731) metadata

   Unless turned off using the "rfc-ext support-rfc2731" processing
   instruction, the transformation will generate metadata according to
   [RFC2731] and [DC-HTML].








Reschke                    Expires May 2, 2026                 [Page 27]

Documentation             RFC7749 through XSLT              October 2025


                The following DCMI properties are produced:

   +-------------------------+-----------------------------------------+
   | META name               | description                             |
   +-------------------------+-----------------------------------------+
   | DC.Creator              | from author information in front        |
   |                         | section                                 |
   |                         |                                         |
   | DC.Date.Issued          | from date information in front section  |
   |                         |                                         |
   | DC.Description.Abstract | from abstract                           |
   |                         |                                         |
   | DC.Identifier           | document URN [RFC2648] from "docName"   |
   |                         | attribute                               |
   |                         |                                         |
   | DC.isPartOf             | RFC ISSN (for RFCs)                     |
   |                         |                                         |
   | DC.Relation.Replaces    | from "obsoletes" attribute              |
   +-------------------------+-----------------------------------------+

6.5.  Insertion of Live RFC Meta Data

   RFCs are immutable; once published, they do not change anymore.  What
   _does_ change though is their status, their relation to subsequent
   RFCs (such as when they are updated), and errata.

   "rfc2629toXHTML.xslt" by default inserts code that will pull the
   relevant information from <https://tools.ietf.org>.  This can be
   disabled by specifying the parameter "xml2rfc-ext-insert-metadata=no"
   (or by inserting the equivalent processing instruction into the
   source code).

   An example for the generated information can be seen at
   <https://greenbytes.de/tech/webdav/rfc2616.html#rfc.meta>.

      *Note:* the status information really should be available from the
      RFC Editor, right now it only exists only in HTML form (such as in
      <https://www.rfc-editor.org/info/rfc2616>.  Furthermore, the
      service provided by <https://tools.ietf.org> is considered
      experimental, so this feature might be changed or removed without
      prior notice.

      ...and no, we currently can't obtain the exact list of errata,
      just a flag indicating whether errata exist.







Reschke                    Expires May 2, 2026                 [Page 28]

Documentation             RFC7749 through XSLT              October 2025


6.6.  Insertion of RFC Errata Links

   Unfortunately, the RFC Editor does not provide errata information in
   a well-defined machine readable format.  What's available is
   "regular" HTML (and that could be the worst currently in use in
   standards bodies...).

   "parse-errata.xslt" attempts to parse useful information out of these
   pages.

   It can be run like that (requires an XSLT2 processor):

 # get the raw html and strip form feed characters
 curl -s https://www.rfc-editor.org/errata_search.php?rfc=2616 \
   | tr -d '\f' > rfc2616.rawerrata
 # regexps are your friend
 saxon97he parse-errata.xslt parse-errata.xslt doc=2616 > rfc2616.errata

   The code tries to make sense of the HTML, in particular it tries to
   detect what RFC sections each erratum applies to.  The resulting XML
   format is work-in-progress and just contains the information that
   will be useful in subsequent formatting of the RFC.

   When _formatting_ the RFC for HTML output, the errata file can be
   passed as stylesheet parameter ("xml2rfc-ext-errata").  The output
   will include errata links at the beginnings of the section they apply
   to, or at the beginning of Section 1 when the location is unknown.

   For the sake of embedding, three types of errata are relevant; their
   type is indicated with a symbol:

   o  "held for update": reviewed and decided to be "held for document
      update" (these are mostly editorial); "scissors" symbol.

   o  "submitted": submitted, but not reviewed; "letter" symbol.

   o  "verified": reviewed and found to be correct; "checkmark" symbol.

   To recap: the errata information is passed into the transformation as
   additional parameter.  The errata information will _not_ be
   automatically retrieved from the RFC Editor web site.

   Finally, here's an example for inserted errata links:
   <https://greenbytes.de/tech/webdav/rfc7230.html#transfer.codings>.







Reschke                    Expires May 2, 2026                 [Page 29]

Documentation             RFC7749 through XSLT              October 2025


7.  Transforming to XHTML

   Transforming to XHTML requires slightly different XSLT output options
   and is implemented by the derived transformation script
   "rfc2629toXHTML.xslt".

8.  Transforming to CHM (Microsoft Compiled Help)

   To generate a CHM file using Microsoft's HTML Help Compiler (hhc),
   three files are required in addition to the HTML file.

   1.  hhc - table of contents file (HTML)

   2.  hhk - index file (HTML)

   3.  hhp - project file (plain text)

   The three files are generated with three specific transformations,
   each requiring the additional XSLT parameter "basename" to specify
   the filename prefix.

   Example:

   saxon rfc2616.xml rfc2629toHhp.xslt basename=rfc2616  > rfc2616.hhp
   saxon rfc2616.xml rfc2629toHhc.xslt basename=rfc2616  > rfc2616.hhc
   saxon rfc2616.xml rfc2629toHhk.xslt basename=rfc2616  > rfc2616.hhk
   hhc rfc2616.hhp

9.  Transforming to PDF

9.1.  Via XSL-FO

   Transformation to XSL-FO [XSL-FO] format is available through
   "rfc2629toFO.xslt" (which includes "rfc2629.xslt", so keep both in
   the same folder).

   Compared to HTML user agents, XSL-FO engines unfortunately either
   come as open source (for instance, Apache FOP) or feature-complete
   (for instance, AntennaHouse XSL Formatter), but not both at the same
   time.

   As Apache FOP needs special workarounds (index generation), and some
   popular extensions aren't standardized yet, the translation produces
   a generic output (hopefully) conforming to [XSL-FO].  Specific
   backends ("xsl11toFop.xslt", "xsl11toXep.xslt", "xsl11toAn.xslt")
   then provide post-processing for the individual processors.

      Note: the output is currently targeted at Apache FOP 1.1.



Reschke                    Expires May 2, 2026                 [Page 30]

Documentation             RFC7749 through XSLT              October 2025


9.1.1.  Example: producing output for Apache FOP

   Example:

   saxon rfc2616.xml rfc2629toFo.xslt > tmp.fo
   saxon tmp.fo xsl11toFop.xslt > rfc2629.fo

9.2.  Via HTML

   PDF output can also be produced directly from (X)HTML.  One simple
   approach is to rely on the browser's printing function, and to use a
   printer driver that produces PDF.  Depending on the brower's CSS
   capabilities, the output will behave properly with respect to table
   breaks etc.

   Alternatives are tools which can produce PDF directly from (X)HTML
   input, based on the CSS printing information.  For instance:
   "PrinceXML" (<http://www.princexml.com/>) and "WeasyPrint"
   (<https://weasyprint.org/>).

   For instance, PDF output can be produced with:

   saxon input.xml rfc2629.xslt > output.html
   weasyprint output.html output.pdf

10.  Transforming to ePub

   Experimental transformation to ePub format is available through a set
   of stylesheets, and the Unix Shell script "mkepub.sh" (which requires
   that "zip" and either "saxon" or "xsltproc" are installed).

   For instance, an epub version of rfc2616.xml can be generated like
   this:

   mkepub.sh rfc2616.xml

11.  Generic Extensions

   This section documents extensions implemented in "rfc2629.xslt",
   using the extension namespace "http://purl.org/net/xml2rfc/ext".

11.1.  <abnf-char-sequence> element

   Converts the contained quoted string into a hex-encoded character
   sequence, for use in case-sensitive ABNF productions.

   For instance, "<x:abnf-char-sequence>"HTTP"</x:abnf-char-sequence>"
   gets converted to "%x48.54.54.50".



Reschke                    Expires May 2, 2026                 [Page 31]

Documentation             RFC7749 through XSLT              October 2025


11.2.  <anchor-alias> element

   Using its "value" attribute, this element allows the definition of an
   internal link target alias for the enclosing element.  This alias can
   then be used with the <ref> element for intra-document references.

   Note that the anchor alias is not subject to the naming constraints
   that apply to anchor elements (which are XML names [8]).

11.3.  <bb> element

   Marking up a string as <bb> indicates that it represents the bottom
   line of a box drawing, replacing the "+" and "-" characters
   accordingly.

11.4.  <bc> element

   Marking up a string as <bc> indicates that it represents a center
   line of a box drawing, replacing the "|" character accordingly.

11.5.  <bcp14> element

   This element marks the content as being one of the normative keywords
   defined in [RFC2119].



























Reschke                    Expires May 2, 2026                 [Page 32]

Documentation             RFC7749 through XSLT              October 2025


   The DOCTYPE definition below allows using these keywords using XML
   entity expansion: such as in "...server &MUST; accept...".

   <!DOCTYPE rfc [
    <!ENTITY MAY "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
      >MAY</bcp14>">
    <!ENTITY MUST "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
      >MUST</bcp14>">
    <!ENTITY MUST-NOT "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
      >MUST NOT</bcp14>">
    <!ENTITY OPTIONAL "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
      >OPTIONAL</bcp14>">
    <!ENTITY RECOMMENDED "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
      >RECOMMENDED</bcp14>">
    <!ENTITY REQUIRED "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
      >REQUIRED</bcp14>">
    <!ENTITY SHALL "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
      >SHALL</bcp14>">
    <!ENTITY SHALL-NOT "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
      >SHALL NOT</bcp14>">
    <!ENTITY SHOULD "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
      >SHOULD</bcp14>">
    <!ENTITY SHOULD-NOT "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
      >SHOULD NOT</bcp14>">]>

11.6.  <blockquote> element

   This element is like the <blockquote> element defined in
   Section 4.4.4 of [HTML5] (note this is a block-level element!).  It
   should contain one or more <t> child elements.

11.7.  <bt> element

   Marking up a string as <bt> indicates that it represents the top line
   of a box drawing, replacing the "+" and "-" characters accordingly.

11.8.  <c> element

   Contains mapping information for a single Unicode code points.
   Attributes are "c" (the actual character), "n" (the code point), and
   "d" (the name/description).

   For instance:

   <x:u-map>
     <x:c n="8364" c="&#8364;" d="EURO SIGN"/>
   <x:u-map>




Reschke                    Expires May 2, 2026                 [Page 33]

Documentation             RFC7749 through XSLT              October 2025


   (The format is deliberately terse so that the size of a mapping file
   containing the whole Unicode character database is minimized).

11.9.  <contributor> element

   This element can be used to include a contributor's contact
   information in place where a paragraph (<t>) would be allowed
   otherwise.

   See Section 12.8 for a standard alternative.

11.10.  <dfn> element

   This element is like the <dfn> element defined in Section 4.5.8 of
   [HTML5].

11.11.  <feedback> element

   This elements allows declaring a feedback link for document
   reviewers.  The template string takes the form of a URI template,
   such as:

<x:feedback template="mailto:ietf-http-wg@w3.org?subject={docname},%20%22{section}%22&amp;body=&lt;{ref}&gt;:"/>

   where "docname" is substituted by the document name, "section" is
   substituted by section title (number and name), and "ref" is
   substituted by a URI pointing to the section being referenced.

11.12.  <h> element

   This element is like the "h [9]" element in [XHTML2].

11.13.  <highlight> element

   Used to highlight text passages, currently only allowed in <artwork>.

   Note: this is stripped when generating input for xml2rfc, so please
   use with care.

11.14.  <length-of> element

   This element can be used to insert the length of another formatted
   section (in decimal).








Reschke                    Expires May 2, 2026                 [Page 34]

Documentation             RFC7749 through XSLT              October 2025


   Example: computing the Content-Length header value

   <artwork>
   ...
   Content-Length: <x:length-of target="req"/>

   <x:span anchor="req">123456789
   <x:span><artwork/>

   The lenght computation counts line ends as two characters (CRLF).

   Note that indentation characters in artwork _will_ be counted.  The
   "indented" attribute allows to specify the amount of indentation to
   be substracted from the computed length.

11.15.  <link> element

   This element can be added as a top-level child element below <rfc> to
   indicate additional link information.  It's currently used only when
   generating HTML output, in which case an HTML <link> [10] element
   with identical attributes gets generated.

   Example: generating HTML link element

   <x:link xmlns:x="http://purl.org/net/xml2rfc/ext"
       rel="Bookmark"
       title="IETF WEBDAV Working Group"
       href="http://ftp.ics.uci.edu/pub/ietf/webdav/"/>

   If the attribute "basename" is present, it is used to compute the
   target href based on the output format being generated (this is handy
   for "next"/"prev" links in a series of documents.  In this case, the
   href attribute is not required.

   For instance:

   <x:link xmlns:x="http://purl.org/net/xml2rfc/ext"
       rel="next"
       title="Part2"
       basename="draft-foobar-protocol-p2-latest"/>

11.16.  <lt> element

   Used for grouping multiple <t> elements into a single list item.







Reschke                    Expires May 2, 2026                 [Page 35]

Documentation             RFC7749 through XSLT              October 2025


11.17.  <note> element

   Can be used to add a note, usually indented by a few characters.  It
   should contain one or more <t> child elements.

11.18.  <parse-xml> element

   This element instructs the processor to parse the contents as XML and
   to warn when there's a problem (requires either MSXML or Saxon8 or
   newer).

11.19.  <prose> element

   This element can be used inside <reference> to add plain text (before
   the date, when present).

   See also <refcontent> (Section 12.21).

11.20.  <q> element

   This element is like the <q> element defined in Section 4.5.7 of
   [HTML5].

11.21.  <ref> element

   This element is a simplified variant of the <xref> element, in that
   no "target" attribute needs to be specified, instead the text
   contents acts as identifier.  That in itself wouldn't be terribly
   useful, but together with the <anchor-alias>, it allows referring to
   other parts of the document with minimal additional markup.

   For instance, given an alias definition such as

   <section title="Test" anchor="test">
     <x:anchor-alias value="alias1"/>
     <x:anchor-alias value="alias 2"/>
     ...
   </section>

   the following simple references

   <x:ref>test</x:ref>
   <x:ref>alias1</x:ref>
   <x:ref>alias 2</x:ref>

   are equivalent to...:





Reschke                    Expires May 2, 2026                 [Page 36]

Documentation             RFC7749 through XSLT              October 2025


   <xref target="test" format="none">test</xref>
   <xref target="test" format="none">alias1</xref>
   <xref target="test" format="none">alias 2</xref>

11.22.  <source> element

   Can be used to enhance a <reference> with information about the
   location for the XML source.  This can be used by the <xref>
   processing code to automatically extract the target section number
   (see Section 11.32).

   For example:

   ...
   <xref target="RFC2616" x:fmt="of" x:rel="#PUT" />
   ...

   <reference target="RFC2616"/>
     ...
     <x:source href="rfc2616.xml"/>
     ...

11.23.  <sup> element

   This element is like the <sup> element in Section 4.5.16 of [HTML5].

   Note: the down conversion to RFC7749 format replaces "x^y" by "x^y".

   See also <sup> (Section 12.30).

11.24.  <u-map> element

   Needed for the lookup of Unicode character database information; this
   element can either appear in-band in the source document, or off-band
   as specified using the xml2rfc-ext-ucd-file parameter/PI.

   Contains multiple <x:c> elements (see Section 11.8).

   The utility XSLT "convert-ucd.xslt" can be used to create a mapping
   file based on the Unicode XML database format, as available from
   <https://unicode.org/ucd/#UCDinXML>.

11.25.  Extensions to <artwork> element

   Sometimes, artwork occurs inside lists.  To get it indent properly in
   xml2rfc's text output, it needs to be indented in the source.  This
   is sub-optimal, as this whitespace will also appear in the HTML
   output, where it's already indented due to HTML's semantics.  As a



Reschke                    Expires May 2, 2026                 [Page 37]

Documentation             RFC7749 through XSLT              October 2025


   workaround, a "x:indent-with" attribute can be specified, containing
   a string that will be prepended to each line when "clean-for-
   DTD.xslt" is run (see Section 13.4).

   Furthermore, documents can contain code that might need to be marked
   as "code component" (<http://www.ietf.org/iesg/statement/
   copyright.html>).  This can be done using "x:is-code-component".

   Finally, when allowing pretty-printing of code (see "html-pretty-
   print" in Section 3.3, the "x:lang" attribute can used to explicitly
   opt into pretty-printing.  If the pretty printer can figure out the
   code type without assistance, an empty value will be sufficient.
   Otherwise, the language can be specified in the attribute (such as
   "html"), which will in turn be coded into the CSS class as "lang-"
   concatenated with the language name.

11.26.  Extensions to <date> element

   The attribute "x:include-day" ("true", "false") can be used to
   control whether the day-of-month should be included in the output.
   This can be used to adjust the rendering of dates for April-1st-RFCs
   to the desired special format, including the "1".

   In particular: on the front page, the attribute defaults to "true",
   _unless_ when generating RFCs.  The output format also varies
   depending on RFC-ness: it's "day month year" for RFCs, but "month
   day, year" otherwise.  In references, the attribute defaults to
   "false", and when set to true, the day is just inserted in front of
   the month.

   Furthermore, this implementation supports the extension discussed in
   in Section 4.1.3.2 of [V3IMPNOTES]: in absence of any attributes, a
   "vague" date can be given as text content (this also applies to the
   case where <date> appears below a <reference> element).

11.27.  Extensions to <eref> element

   For v3 documents, angle brackets will only be produced if the
   attribute "brackets" is set to "angle".

11.28.  Extensions to <iref> element

   The extension attribute below is allowed on the standard <iref>
   element:

   o  x:for-anchor specifies that the <iref> will also be automatically
      inserted whenever the specified anchor is cross-referenced -- this
      may save entering lots of <iref> instances.  As a special case, a



Reschke                    Expires May 2, 2026                 [Page 38]

Documentation             RFC7749 through XSLT              October 2025


      value of "" (empty string) refers to the anchor attribute of the
      closest ancestor.

11.29.  Extensions to <list> element

   The extension attribute below is allowed on the standard <list>
   element:

   o  x:indent specifies the amount of indentation for list items in
      hanging lists.  This can be useful when the output format, such as
      XSL-FO, does not support automatical formatting.  The value takes
      an XSL-FO width, such as "5em".  The default is _length of longest
      label in characters_ times _0.8em_.

   Also, the <list> element can take <x:lt> child elements instead of
   <t>, allowing to insert multiple paragraphs into a single list item.

11.30.  Extensions to <rfc> element

   The extension attributes below are allowed on the standard <rfc>
   element:

   o  grddl:transformation can be used to reference a GRDDL transform.

   o  x:maturity-level can be used to specify the IETF Standards Track
      Maturity Level of "proposed", "draft" or "internet" (see
      Section 4.1 of [RFC2026]).

11.31.  Extensions to <section> element

   The extension attribute below is allowed on the standard <list>
   element:

   o  x:fixed-section-number can be used to specify a fixed section
      number.  This can be useful when formatting historic documents
      that used a different numbering style.

11.32.  Extensions to <xref> element

   Four extension attributes are allowed on the standard <xref> element:

   1.  x:sec can be specified to point to a specific section of the
       referenced document,

   2.  x:rel may specify a relative reference to use when linking into
       the referenced document (if linking by section number is not
       available),




Reschke                    Expires May 2, 2026                 [Page 39]

Documentation             RFC7749 through XSLT              October 2025


   3.  x:fmt defines the text format to be used,

   4.  x:title provided a title for the link (to be used in the HTML
       title attribute).

   The following formats are defined for the x:fmt attribute:

   , (Comma)  [_reference_], Section _sec_

   () [_reference_] (Section _sec_)

   of Section _sec_ of [_reference_]

   number  _sec_

   none  No output (can be used to have xrefs to references without
      having them rendered as such)

   sec  Section _sec_

   These extensions are currently only supported for <xref> elements
   without child nodes.

   If the processor knows how to reference the target section, it will
   generate a link directly to the target section, such as in [RFC2119],
   Section 5.

12.  Experimental Support for RFC7991bis Vocabulary

   "rfc2629.xslt" experimentally supports some elements from the "V3"
   vocabulary, defined in [RFC7991bis]. _This support is experimental,
   as the "v3" vocabulary is still being developed._

12.1.  artset Element

   See Section 3.1.1 of [V3IMPNOTES].

12.2.  aside Element

   See Section 2.7 of [RFC7991bis].

12.3.  bcp14 Element

   See Section 2.10 of [RFC7991bis].







Reschke                    Expires May 2, 2026                 [Page 40]

Documentation             RFC7749 through XSLT              October 2025


12.4.  blockquote Element

   See Section 2.11 of [RFC7991bis].

12.5.  boilerplate Element

   See Section 2.11 of [RFC7991bis].

12.6.  br Element

12.7.  cityarea Element

   See Section 4.2.7 of [V3IMPNOTES].

12.8.  contact Element

   Can be used to embed contact information in a layout _similar_ to the
   one used for authors; mainly for use in a "Contributors" section.

   When used in phrase content, only the name or the organization
   (absent a name) will be displayed.

12.9.  displayreference Element

   See Section 2.20 of [RFC7991bis].

12.10.  dd Element

   See Section 2.19 of [RFC7991bis].

12.11.  dl Element

   See Section 2.21 of [RFC7991bis].

12.12.  dt Element

   See Section 2.22 of [RFC7991bis].

12.13.  em Element

   See Section 2.23 of [RFC7991bis].

12.14.  extaddr Element

   See Section 4.2.7 of [V3IMPNOTES].






Reschke                    Expires May 2, 2026                 [Page 41]

Documentation             RFC7749 through XSLT              October 2025


12.15.  li Element

   See Section 2.31 of [RFC7991bis].

12.16.  link Element

   See Section 2.32 of [RFC7991bis].

12.17.  name Element

   See Section 2.34 of [RFC7991bis].  _Currently only supported inside
   <references> and <section>_.

12.18.  ol Element

   See Section 2.36 of [RFC7991bis].

12.19.  pobox Element

   See Section 4.2.7 of [V3IMPNOTES].

12.20.  postalLine Element

   See Section 2.41 of [RFC7991bis].

12.21.  refcontent Element

   See Section 2.42 of [RFC7991bis].

12.22.  Extensions to reference Element

   See Section 2.43 of [RFC7991bis].

12.22.1.  quoteTitle attribute

   See Section 2.39.2 of [RFC7991bis-01].

12.23.  referencegroup Element

   See Section 2.44 of [RFC7991bis].

12.24.  relref Element

   See Section 2.47 of [RFC7991bis].

   EXPERIMENTAL, might be removed again - see <https://github.com/rfc-
   format/draft-iab-xml2rfc-v3-bis/issues/26>.




Reschke                    Expires May 2, 2026                 [Page 42]

Documentation             RFC7749 through XSLT              October 2025


12.25.  Extensions to section Element

   See Section 2.49 of [RFC7991bis].

12.25.1.  numbered attribute

   See Section 2.49.2 of [RFC7991bis].

12.25.2.  removeInRFC attribute

   See Section 2.49.3 of [RFC7991bis].

12.26.  sortingcode Element

   See Section 4.2.7 of [V3IMPNOTES].

12.27.  sourcecode Element

   See Section 2.52 of [RFC7991bis].

12.28.  strong Element

   See Section 2.54 of [RFC7991bis].

12.29.  sub Element

   See Section 2.55 of [RFC7991bis].

12.30.  sup Element

   See Section 2.56 of [RFC7991bis].

12.31.  svg Element

   See Section 4 of [RFC7991bis].

12.32.  table Element

   See Section 2.58 of [RFC7991bis].

12.33.  tbody Element

   See Section 2.59 of [RFC7991bis].








Reschke                    Expires May 2, 2026                 [Page 43]

Documentation             RFC7749 through XSLT              October 2025


12.34.  td Element

   See Section 2.60 of [RFC7991bis].

12.35.  tfoot Element

   See Section 2.61 of [RFC7991bis].

12.36.  th Element

   See Section 2.62 of [RFC7991bis].

12.37.  thead Element

   See Section 2.63 of [RFC7991bis].

12.38.  tr Element

   See Section 2.65 of [RFC7991bis].

12.39.  tt Element

   See Section 2.66 of [RFC7991bis].

12.40.  u Element

   See Appendix A.1 of [V3IMPNOTES].

   Note that in this implementation, this element needs mapping
   information in two cases:

   1.  When in XSLT 1.0: to compute the Unicode code point of a given
       character (when non-ASCII),

   2.  In any case: to lookup the Unicode name of a character.

   The mapping information can be supplied inline using the <x:u-map>
   element, or in an external file.  See Section 11.24 for details.

12.41.  ul Element

   See Section 2.67 of [RFC7991bis].

12.42.  Extensions to xref Element







Reschke                    Expires May 2, 2026                 [Page 44]

Documentation             RFC7749 through XSLT              October 2025


12.42.1.  relative attribute

   See Section 11.32, "x:rel" attribute.

12.42.2.  section attribute

   See Section 11.32, "x:sec" attribute.

12.42.3.  sectionFormat attribute

   See Section 11.32, "x:fmt" attribute, where "bare" maps to "sec",
   "comma" maps to ",", "of" maps to "of", and "parens" maps to "()".

12.43.  xi:include Element

   See Appendix B.1 of [RFC7991bis].

   _EXPERIMENTAL and INCOMPLETE - only supported as a child element of
   <references>, and only supporting parse type "XML"._

13.  Utilities

13.1.  Checking References

   "check-references.xslt" can be used to check all references to RFC-
   and ID-series IETF publications and to W3C publications (note this
   script requires local copies of <ftp://ftp.isi.edu/in-notes/rfc-
   index.xml> and <http://www.w3.org/2002/01/tr-automation/tr.rdf> and
   will use the XML status information provided at
   <http://tools.ietf.org/>).

   If the document is supposed to be published on the IETF standards
   track, the desired level can be specified using the parameter
   "intended-level" as 'proposed', 'draft' or 'internet'.
   Alternatively, it can be specified inside the document using the
   attribute x:maturity-level on the <rfc> element (see Section 11.30).

   Note: Downward references should be annotated using the <annotate>
   element, containing an <xref> to [BCP97].

   When an XSLT 2.0 processor is used, links in the document can be
   checked as well using the "link-check" parameter ('yes' or 'no').
   Note that this only works for http links to documents of type text/*.








Reschke                    Expires May 2, 2026                 [Page 45]

Documentation             RFC7749 through XSLT              October 2025


   For instance, as of 2008-07-12, the script produces for
   <https://greenbytes.de/tech/webdav/rfc2518.xml>:

   > saxon rfc2518.xml check-references.xslt intended-status=PROPOSED \
     link-check=yes

   Normative References:
   ISO-11578: not checked
   ISO-639: not checked
   ISO-8601: not checked
   REC-xml-19980210: [FirstEdition] obsoleted by REC-xml-20001006
   REC-xml-names-19990114: [FirstEdition] obsoleted by
    REC-xml-names-20060816
   RFC1766: [PROPOSED STANDARD] obsoleted by RFC3066 RFC3282
   RFC2068: [PROPOSED STANDARD] obsoleted by RFC2616
   RFC2069: [PROPOSED STANDARD] obsoleted by RFC2617
   RFC2119: [BEST CURRENT PRACTICE] (-> BCP0014) ok
   RFC2141: [PROPOSED STANDARD] ok
   RFC2277: [BEST CURRENT PRACTICE] (-> BCP0018) ok
   RFC2396: [DRAFT STANDARD] obsoleted by RFC3986
   RFC2279: [DRAFT STANDARD] obsoleted by RFC3629

   Informational References:
   REC-PICS-labels-961031: [REC] ok
   RFC1807: [INFORMATIONAL] ok
   RFC2026: [BEST CURRENT PRACTICE] (-> BCP0009) ok
   RFC2291: [INFORMATIONAL] ok
   RFC2376: [INFORMATIONAL] obsoleted by RFC3023
   RFC2413: [INFORMATIONAL] obsoleted by RFC5013
   USMARC: not checked
   WF: not checked

   Link Targets
   <http://www.w3.org/TR/1998/REC-xml-19980210>: ok
   <http://www.w3.org/TR/1999/REC-xml-names-19990114>: ok
   <http://www.dlib.org/dlib/july96/lagoze/07lagoze.html>: ok
   <http://www.w3.org/pub/WWW/TR/REC-PICS-labels-961031.html>: ok

   Recognized formats in the <seriesInfo> element are:

   o  for RFCs, the name attribute must be "RFC", and the value
      attribute must be the number of the RFC,

   o  for Internet Drafs, the name attribute must be "ID" or "Internet-
      Draft", and the value attribute must be the file name of the draft
      (including the two-digit running number, but excluding a file
      extension),




Reschke                    Expires May 2, 2026                 [Page 46]

Documentation             RFC7749 through XSLT              October 2025


   o  for W3C documents, the name attribute must be "W3C", must start
      with "W3C ", or must start with "World Wide Web Consortium ", and
      the value attribute must be the "shorthand" name of the
      specification, such as "REC-xml-19980210".

      Note: this stylesheet will need network access to check links and
      status of Internet Drafts.  When running a Java-based XSLT engine,
      you may have to supply Java system properties specifying the HTTP
      proxy to be used, such as "-Dhttp.proxyHost=hostname
      -Dhttp.proxyPort=80".

13.2.  Generating Graphs from References

   "gen-reference-graph.xslt" generates a graph of RFC dependencies,
   using the same base data as in "check-references.xslt" (see
   Section 13.1).  Its output is a "dot" file, to be processed by
   GraphViz (see <http://www.graphviz.org/>).

   The picture below shows the RFC dependencies in RFC2629.

   (PNG output obtained from GraphViz)

13.3.  Producing reference entries for books

   "amazon-asin.xslt" uses the Amazon web services to generate a
   <reference> element for a given ASIN (ISBN).

   For instance:

   <?xml version="1.0" encoding="utf-8"?>
   <references>
    <reference target="urn:isbn:0134516591">
      <front>
        <title>Simple Book, The: An Introduction to Internet Management,
                  Revised Second Edition</title>
        <author surname="Rose"
                   fullname="Marshall T. Rose" initials="M. T. ">
          <organization/>
        </author>
        <author surname="Marshall"
                   fullname="Rose T. Marshall" initials="R. T.">
          <organization/>
        </author>
        <date year="1996" month="March"/>
      </front>
      <seriesInfo name="Prentice Hall" value=""/>
    </reference>
   </references>



Reschke                    Expires May 2, 2026                 [Page 47]

Documentation             RFC7749 through XSLT              October 2025


   Note that the resulting XML usually requires checking, in this case
   Amazon's database is playing tricks with Marshall's name...

13.4.  Down-converting to RFC 7749 Grammar

   "clean-for-DTD.xslt" can be used to down-convert some extensions to a
   format that is supported by the existing xml2rfc formatters, mainly
   for the purpose of generating plain-text output.  Note that these
   extensions are experimental (feedback appreciated).

   The following mappings are done:

   o  <iref> elements inside <artwork> elements are moved in front of
      the enclosing <figure> element.

   o  <xref> elements inside <artwork> are expanded just like in regular
      text (that is, the markup is stripped, but the element is replaced
      by the applicable replacement text).

   o  <x:anchor-alias> elements get stripped.

   o  <x:bcp14> elements get stripped.

   o  <x:bb>, <x:bc> and <x:bt> elements get stripped.

   o  <x:blockquote> elements get converted to indented text (through a
      <list> element).

   o  <x:dfn> elements get stripped.

   o  <x:h> elements get stripped.

   o  <x:link> elements get stripped.

   o  <x:lt> elements get collapsed into a single <lt> element with
      added <vspace> added to simulate paragraph breaks.

   o  <x:note> elements get converted to indented text (through a <list>
      element).

   o  <x:q> elements get stripped, with apostrophes added around the
      text.

   o  <x:prose> elements are transformed into <seriesInfo> elements
      (which is an abuse of the element and only a workaround until
      xml2rfc gets a matching extension).





Reschke                    Expires May 2, 2026                 [Page 48]

Documentation             RFC7749 through XSLT              October 2025


   o  <x:ref> elements get replaced by <xref> elements, targetting
      either the anchor or another anchor with matching <x:anchor-alias>
      child element.

      *Note:* the above list is known to be incomplete and needs work.
      For instance, most of the extensions described in Section 12 get
      some mapping as well.

   As the output formatters evolve to support the V3 format (proposed in
   [RFC7991bis]), "clean-for-DTD.xslt" will start taking advantage of
   these changes.  Right now, it supports three modes, one of which
   being used for the historic TCL processor, and the other ones being
   used with "xml2rfc 2.5.2" and "xml2rfc 2.6.0" (see
   https://pypi.python.org/pypi/xml2rfc/ [11]).

   The modes can be selected using the "xml2rfc-ext-xml2rfc-backend"
   parameter or the "rfc-ext/xml2rfc-backend" processing instruction.
   The default mode is "201610" for documents with a publication date
   between January and May 2017, "201706" for documents newer than May
   2017, and "201510" otherwise:

   201510  For "xml2rfc.tcl" and versions of the Python formatter before
      version 2.5.2.

   201610  Maps the V3 extension for unnumbered section numbers to
      something the 2.5.2 version of the Python formatter understands
      (but note https://trac.tools.ietf.org/tools/xml2rfc/trac/
      ticket/313 [12]).

   201706  Copies the V3 extension for unnumbered section numbers to the
      output.

13.5.  Extracting artwork

   With "extract-artwork.xslt", artwork elements named through the
   "name" attribute can be extracted.  This can be used to automatically
   check their syntax (for instance, when ABNFs appear within a figure
   element).

   For instance:

   saxon rfc3986.xml extract-artwork.xslt name=uri.abnf

   In addition, artwork of a specific type can be extracted, such as
   with:

   saxon rfc3986.xml extract-artwork.xslt type=abnf




Reschke                    Expires May 2, 2026                 [Page 49]

Documentation             RFC7749 through XSLT              October 2025


   When extracting by type, artwork elements with a specified name can
   be excluded; this can be handy when the document uses some kind of
   schema language, and an appendix contains the collected schema,
   repeating definitions from earlier on.  Example:

   saxon rfc3986.xml extract-artwork.xslt type=abnf except-name=clschm

13.6.  GRRDL

   "rfc2629grddl.xslt" extracts RDF information.  This is experimental
   work-in-progress.  See <http://www.w3.org/TR/grddl/> for more
   information.

13.7.  HTML Live Refresh

   _Experimental_

   The "HTML Live Refresh" mode allows to run a text editor and a
   browser side-by-side, with the browser auto-updating every few
   seconds, displaying the updated HTML, and automatically navigating to
   the part of the page that changed last.

   The requirements for this mode are:

   1.  A browser that supports the "DOMParser" and "XSLTProcessor" APIs.

   2.  The ability to reload the source code and the XSLT code from
       within Javascript; in some browsers this is forbidden for "file:"
       URIs due to perceived security problems.

   This feature is currently tested with:

   1.  Mozilla Firefox (where, to be able to reload from the local
       filesystem, Firefox needs to be configured with
       "security.fileuri.strict_origin_policy" set to "false" in
       "about:config", see Mozilla documentation [13]), and

   2.  Google Chome (where, to be able to reload from the local
       filesystem, Chrome needs to be started with the command line
       option "--allow-file-access-from-files").

   Use of this feature requires the inclusion of a processing
   instruction that holds the name of the XML source, such as:

   <?rfc-ext refresh-from="draft-foo-bar-00.xml"?>






Reschke                    Expires May 2, 2026                 [Page 50]

Documentation             RFC7749 through XSLT              October 2025


   The optional parameters "refresh-interval" and "refresh-xslt" support
   changing the refresh interval (in seconds, defaulting to 10), and the
   name of the XSLT file to use (defaulting to "rfc2629.xslt").

   To test this feature, start with a minimal source file like this:

   <?xml-stylesheet type='text/xsl' href='rfc2629.xslt'?>
   <?rfc-ext refresh-from="draft-foo-bar-00.xml"?>
   <rfc docName="draft-foo-bar-00" ipr="trust200902">
     <front>
       <title>Title Goes Here</title>
       <abstract>
         <t>Abstract</t>
       </abstract>
     </front>
   </rfc>

   ...open it in both text editor and browser, start editing and of
   course ocasionally save.  And don't forget to put "rfc2629.xslt" into
   the same folder.

13.8.  Refreshing included material in the XML source

   There are many methods for automatic inclusion of material in the XML
   source, such as the "include" processing instruction (see
   Section 3.1), external entities (Appendix C.1), or XInclude.  In
   general, those share a common problem: the XML source file isn't
   self-contained, which makes it harder to submit it as Internet Draft.

   The tool "refresh-inclusions.sh" does in-place replacement: it scans
   the source file for inclusion directives (expressed as XML processing
   instructions), and refreshes the included text with data from an
   external file.  It will not modify the source file unless included
   material did actually change.  When it does modify the source file,
   it will copy the original source to a backup file.

   "refresh-inclusions.sh" can include both plain text
   ("BEGINESCAPEDINC"/"ENDESCAPEDINC") and XML ("BEGININC"/"ENDINC").
   The figure below was inserted using:

   <?BEGINESCAPEDINC refresh-inclusions.sh ?>
   ...
   <?ENDSCAPEDINC refresh-inclusions.sh ?>

   (note that the SP character at the end of the directive is
   significant)

   "refresh-inclusions.sh":



Reschke                    Expires May 2, 2026                 [Page 51]

Documentation             RFC7749 through XSLT              October 2025


#!/bin/sh
# Refresh file inclusions based on XML processing instructions
#
# Copyright (c) 2006-2023, Julian Reschke (julian.reschke@greenbytes.de)
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
#   this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
#   this list of conditions and the following disclaimer in the documentation
#   and/or other materials provided with the distribution.
# * Neither the name of Julian Reschke nor the names of its contributors
#   may be used to endorse or promote products derived from this software
#   without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.

expand() {

  # remember whether we started with CRLF (assumes that we have dos2unix)
  CRLF=$(dos2unix -ic "$1" 2>/dev/null | tr -d ' ')

  cat "$1" | tr -d "\015" | awk '

  function filecontents(filename) {
    while (getline < filename > 0) {
      fc[filename] = fc[filename] $0 "\n"
    }
    return fc[filename]
  }

  BEGIN {
    includefile = "";
    includeescapedfile = "";
  }



Reschke                    Expires May 2, 2026                 [Page 52]

Documentation             RFC7749 through XSLT              October 2025


  # start include (verbatim mode)
  /<\?BEGININC .* \?>$/ {
    print
    keyword = "<?BEGININC "
    extract = match($0, /<\?BEGININC .* \?>$/)
    includefile = substr($0, RSTART + length(keyword),
                    RLENGTH - 3 - length(keyword))
    output = filecontents(includefile)
    printf("%s", output)
  }

  # start include (escape-for-XML mode)
  /<\?BEGINESCAPEDINC .* \?>$/ {
    print
    keyword = "<?BEGINESCAPEDINC "
    extract = match($0, /<\?BEGINESCAPEDINC .* \?>$/)
    includeescapedfile = substr($0, RSTART + length(keyword),
                           RLENGTH - 3 - length(keyword))
    output = filecontents(includeescapedfile)
    # escape ampersand, less-than, and greater-than
    # when part of a CDATA end marker
    gsub(/&/, "\\&amp;", output)
    gsub(/</, "\\&lt;", output)
    gsub(/]]>/, "]]\\&gt;", output)
    printf("%s", output)
  }

  # end include (verbatim mode)
  /^<\?ENDINC .* \?>/ {
    if ("" == includefile) {
      printf ("unexpected ENDINC, did not see BEGININC for %s\n",
        $2) >> "/dev/stderr"
    } else if ($2 != includefile) {
      printf ("unexpected ENDINC, got %s but expected %s\n", $2,
        includefile) >> "/dev/stderr"
    }
    includefile = "";
  }

  # end include (escape-for-XML mode)
  /^<\?ENDESCAPEDINC .* \?>/ {
    if ("" == includeescapedfile) {
      printf ("unexpected ENDESCAPEDINC, did not see BEGINESCAPEDINC for %s\n",
        $2) >> "/dev/stderr"
    } else if ($2 != includeescapedfile) {
      printf ("unexpected ENDESCAPEDINC, got %s but expected %s\n", $2,
        includeescapedfile) >> "/dev/stderr"
    }



Reschke                    Expires May 2, 2026                 [Page 53]

Documentation             RFC7749 through XSLT              October 2025


    includeescapedfile = "";
  }

  #default
  {
    if (includefile == "" && includeescapedfile == "") {
      print
    }
  }

  END {
    if (includefile != "") {
      printf ("missing ENDINC for %s\n",
        includefile) >> "/dev/stderr"
    }
    if (includeescapedfile != "") {
      printf ("missing ENDESCAPEDINC for %s\n",
        includeescapedfile) >> "/dev/stderr"
    }
  }

  ' > $$

  # restore CRLF if needed
  if [ -n "$CRLF" ]; then
    FNN=$(echo "$1" | tr -d ' ')
    [ "$FNN" = "$CRLF" ] && unix2dos -q $$
  fi

  # check for changes
  cmp -s "$1" $$ || (
    cp -v "$1" "$1".ri.bak
    cp $$ "$1"
    echo "$1" updated )

  rm -f $$
}

[ $# -ne 0 ] || ( echo "refresh-inclusions.sh file..." >&2 ; exit 2 )

for i in $*
do
  expand $i
done







Reschke                    Expires May 2, 2026                 [Page 54]

Documentation             RFC7749 through XSLT              October 2025


14.  References

14.1.  Informative References

   [BCP97]    Klensin, J. and S. Hartman, "Handling Normative References
              to Standards-Track Documents", BCP 97, RFC 4897, June
              2007, <https://www.rfc-editor.org/info/bcp97>.

   [DC-HTML]  Johnston, P. and A. Powell, "Expressing Dublin Core
              metadata using HTML/XHTML meta and link elements", Dublin
              Core Metadata Initiative , August 2008,
              <http://dublincore.org/documents/2008/08/04/dc-html/>.

   [HTML5]    Hickson, I., Berjon, R., Faulkner, S., Leithead, T., Doyle
              Navara, E., O'Connor, E., and S. Pfeiffer, "HTML5", W3C
              Recommendation REC-html5-20141028, October 2014,
              <http://www.w3.org/TR/2014/REC-html5-20141028/>.

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

   [RFC2026]  Bradner, S., "The Internet Standards Process -- Revision
              3", BCP 9, RFC 2026, DOI 10.17487/RFC2026, October 1996,
              <https://www.rfc-editor.org/info/rfc2026>.

   [RFC2045]  Freed, N. and N. Borenstein, "Multipurpose Internet Mail
              Extensions (MIME) Part One: Format of Internet Message
              Bodies", RFC 2045, DOI 10.17487/RFC2045, November 1996,
              <https://www.rfc-editor.org/info/rfc2045>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC2616]  Fielding, R., Gettys, J., Mogul, J., Nielsen, H.,
              Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
              Transfer Protocol -- HTTP/1.1", RFC 2616,
              DOI 10.17487/RFC2616, June 1999,
              <https://www.rfc-editor.org/info/rfc2616>.

   [RFC2629]  Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629,
              DOI 10.17487/RFC2629, June 1999,
              <https://www.rfc-editor.org/info/rfc2629>.

   [RFC2648]  Moats, R., "A URN Namespace for IETF Documents", RFC 2648,
              DOI 10.17487/RFC2648, August 1999,
              <https://www.rfc-editor.org/info/rfc2648>.




Reschke                    Expires May 2, 2026                 [Page 55]

Documentation             RFC7749 through XSLT              October 2025


   [RFC2731]  Kunze, J., "Encoding Dublin Core Metadata in HTML",
              RFC 2731, DOI 10.17487/RFC2731, December 1999,
              <https://www.rfc-editor.org/info/rfc2731>.

   [RFC5234]  Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
              Specifications: ABNF", STD 68, RFC 5234,
              DOI 10.17487/RFC5234, January 2008,
              <https://www.rfc-editor.org/info/rfc5234>.

   [RFC7230]  Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer
              Protocol (HTTP/1.1): Message Syntax and Routing",
              RFC 7230, DOI 10.17487/RFC7230, June 2014,
              <https://www.rfc-editor.org/info/rfc7230>.

   [RFC7749]  Reschke, J., "The "xml2rfc" Version 2 Vocabulary",
              RFC 7749, DOI 10.17487/RFC7749, February 2016,
              <https://www.rfc-editor.org/info/rfc7749>.

   [RFC7991bis]
              Levine, J., Ed., "The "xml2rfc" version 3 Vocabulary",
              draft-iab-rfc7991bis-03 (work in progress), March 2020.

   [RFC7991bis-01]
              Hoffman, P., "The "xml2rfc" version 3 Vocabulary", draft-
              iab-rfc7991bis-01 (work in progress), October 2018.

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

   [V3IMPNOTES]
              Levkowetz, H., "Implementation notes for RFC7991, "The
              'xml2rfc' Version 3 Vocabulary"", draft-levkowetz-xml2rfc-
              v3-implementation-notes-12 (work in progress), December
              2020.

   [XHTML2]   Birbeck, M., Gylling, M., McCarron, S., Pemberton, S.,
              Axelsson, J., Dubinko, M., Epperson, B., Ishikawa, M., and
              A. Navarro, "XHTML(tm) 2.0", W3C Group Note NOTE-
              xhtml2-20101216, December 2010,
              <http://www.w3.org/TR/2010/NOTE-xhtml2-20101216>.

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

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



Reschke                    Expires May 2, 2026                 [Page 56]

Documentation             RFC7749 through XSLT              October 2025


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

   [XSL-FO]   Berglund, A., "Extensible Stylesheet Language (XSL)
              Version 1.1", W3C Recommendation REC-xsl11-20061205,
              December 2006,
              <http://www.w3.org/TR/2006/REC-xsl11-20061205/>.

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

14.2.  URIs

   [1] http://www.exslt.org/exsl/functions/node-set/index.html

   [2] http://www.exslt.org/date/functions/date-time/

   [3] http://www.microsoft.com/downloads/
       details.aspx?FamilyID=2FB55371-C94E-4373-B0E9-DB4816552E41

   [4] https://addons.mozilla.org/de/firefox/addon/722

   [5] https://bugzilla.mozilla.org/show_bug.cgi?id=22942

   [6] http://bugzilla.mozilla.org/show_bug.cgi?id=193678

   [7] https://addons.mozilla.org/firefox/2933/

   [8] http://www.w3.org/TR/REC-xml/#NT-Name

   [9] http://www.w3.org/TR/2006/WD-xhtml2-20060726/mod-
       structural.html#edef_structural_h

   [10] http://www.w3.org/TR/html4/struct/links.html#edef-LINK

   [11] https://pypi.python.org/pypi/xml2rfc/

   [12] https://trac.tools.ietf.org/tools/xml2rfc/trac/ticket/313

   [13] https://developer.mozilla.org/en-US/docs/Archive/Misc_top_level/
        Same-origin_policy_for_file:_URIs

   [14] http://www.thaiopensource.com/relaxng/jing.html

Appendix A.  RELAX NG Compact Schema

   The RelaxNG schema ([RNC]) below can be used to validate input
   documents (for instance, with Jing [14]).





Reschke                    Expires May 2, 2026                 [Page 57]

Documentation             RFC7749 through XSLT              October 2025


   _Note that this is work in progress, and doesn't yet cover all
   extensions completely._

# WORK IN PROGRESS! PLEASE REPORT PROBLEMS TO THE AUTHOR.

# Define our extension namespace
namespace x = "http://purl.org/net/xml2rfc/ext"

# Define GRDDL namespace
namespace grddl = "http://www.w3.org/2003/g/data-view#"

# Define RDF namespace
namespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"

# Define SVG namespace
namespace svg = "http://www.w3.org/2000/svg"

# Define XInclude namespace
namespace xi = "http://www.w3.org/2001/XInclude"

# Include rfc2629bis RNC grammar
include "rfc2629.rnc" {

  # Redefine <address> to allow multiple email addresses
  address =
    element address {
      attlist.address,
      postal?,
      phone?,
      facsimile?,
      email*,
      uri?
  }

  # Redefine <annotation> to allow more markup
  annotation =
    element annotation {
      attlist.annotation,
      (TEXT
        | xref
        | eref
        | iref
        | cref
        | spanx
        | v3_tt
        )*
    }




Reschke                    Expires May 2, 2026                 [Page 58]

Documentation             RFC7749 through XSLT              October 2025


  # Redefine <artwork> to allow markup
  artwork =
    element artwork {
      attlist.artwork,
      attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
      ( v3_svg |
        (TEXT
          | eref
          | iref
          | spanx
          | xref
          | v3_em
          | v3_strong
          | x_abnf-char-sequence
          | x_bb
          | x_bc
          | x_bcp14
          | x_bt
          | x_highlight
          | x_length-of
          | x_parse-xml
          | x_ref
          | x_span
          | x_x)*
        )
    }

  # Redefine <back> to allow displayreference
  back =
    element back {
      attlist.back,
      v3_displayreference*,
      references*,
      section*
    }

  # Redefine <c> to allow our extension elements
  c =
    element c {
      attlist.c,
      (TEXT
        | xref
        | eref
        | iref
        | cref
        | spanx
        | v3_em
        | v3_strong



Reschke                    Expires May 2, 2026                 [Page 59]

Documentation             RFC7749 through XSLT              October 2025


        | v3_tt
        | x_ref)*
    }

  # Redefine <cref> to allow more child elements
  cref =
    element cref {
      attlist.cref,
      (TEXT
        | eref
        | xref
        | x_ref)*
    }

  # Redefine <date> to allow text content (see Section 11.26)
  date =
    element date {
      attlist.date,
      TEXT?
    }

  # Redefine <figure> to allow more child elements
  figure =
    element figure {
      attlist.figure,
      attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
      v3_name?,
      iref*,
      preamble?,
      (artwork
        | v3_sourcecode
        | v3_artset
      ),
      postamble?
    }

  # Redefine <front> to allow boilerplate
  front =
    element front {
      attlist.front,
      title,
      seriesInfo*,
      author+,
      date?,
      area*,
      workgroup*,
      keyword*,
      abstract?,



Reschke                    Expires May 2, 2026                 [Page 60]

Documentation             RFC7749 through XSLT              October 2025


      note*,
      v3_boilerplate?
    }

  # Redefine <list> element to allow <x:lt> child elements
  \list =
    element list {
      attlist.list,
      (t+ | x_lt+)
    }

  # Redefine <note> to allow <name> and not require title attribute
  note =
    element note {
      attlist.x_note,
      v3_name?,
      (v3_dl
        | v3_ol
        | t
        | v3_ul)+
    }

  # Redefine <preamble> to allow our extension elements
  preamble =
    element preamble {
      attlist.preamble,
      (TEXT
        | xref
        | eref
        | iref
        | cref
        | spanx
        | v3_em
        | v3_strong
        | v3_tt
        | x_anchor-alias
        | x_bcp14)*
  }

  # Redefine <postal> to allow <postalLine> and new detail elements
  postal =
    element postal {
      (
        (city
          | code
          | country
          | v3_cityarea
          | v3_extaddr



Reschke                    Expires May 2, 2026                 [Page 61]

Documentation             RFC7749 through XSLT              October 2025


          | v3_pobox
          | v3_sortingcode
          | region
          | street)*
          | (v3_postalLine+,
          country?
          ))
    }

  # Redefine <postamble> to allow our extension elements
  postamble =
    element postamble {
      attlist.postamble,
      (TEXT
        | xref
        | eref
        | iref
        | cref
        | spanx
        | v3_em
        | v3_strong
        | v3_tt
        | x_bcp14)*
    }

  # Redefine <reference> to allow our extension elements
  reference =
    element reference {
      attlist.reference,
      (
        (
          front,
          v3_refcontent?,
          seriesInfo*,
          x_prose?,
          v3_refcontent?,
          format*,
          annotation*,
          x_source?
        ) | (
          v3_refcontent?,
          seriesInfo*,
          x_prose?,
          v3_refcontent?,
          format*,
          annotation*,
          x_source
        )



Reschke                    Expires May 2, 2026                 [Page 62]

Documentation             RFC7749 through XSLT              October 2025


      )
    }

  # Redefine <references> to allow extension elements and attributes
  references =
    element references {
      attribute title { text }?,
      attribute anchor { xsd:ID }?,
      attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
      v3_name?,
      (references+ # (see [V3IMPNOTES], Section 3.1.16)
       |
        (reference
         | v3_referencegroup
         | xi_include)+
       )
    }

  # Redefine <rfc> to allow our extension elements
  rfc =
    element rfc {
      attribute xml:lang { text }?,
      attribute grddl:transformation { ATEXT }?,
      attribute x:maturity-level { "proposed" | "draft" | "internet" }?,
      attribute category { "std" | "bcp" | "info" | "exp" | "historic" }?,
      attribute consensus { "false" | "true" | "no" | "yes" }?,
      attribute docName { text }?,
      attribute indexInclude { "true" | "false" }?, # (see [RFC7991bis], Section 2.48.4)
      attribute ipr {
        "full2026"
        | "noDerivativeWorks2026"
        | "none"
        | "full3667"
        | "noModification3667"
        | "noDerivatives3667"
        | "full3978"
        | "noModification3978"
        | "noDerivatives3978"
        | "trust200811"
        | "noModificationTrust200811"
        | "noDerivativesTrust200811"
        | "trust200902"
        | "noModificationTrust200902"
        | "noDerivativesTrust200902"
        | "pre5378Trust200902"
      }?,
      attribute iprExtract { xsd:IDREF }?,
      attribute number { text }?,



Reschke                    Expires May 2, 2026                 [Page 63]

Documentation             RFC7749 through XSLT              October 2025


      attribute obsoletes { text }?,
      attribute tocDepth { text }?, # (see [RFC7991bis], Section 2.48.14)
      attribute tocInclude { "true" | "false" }?, # (see [RFC7991bis], Section 2.48.15)
      attribute scripts { text }?, # (see [RFC7991bis], Appendix B.3)
      attribute seriesNo { text }?,
      attribute sortRefs { "true" | "false" }?, # (see [RFC7991bis], Section 2.48.11)
      attribute submissionType { "IETF" | "IAB" | "IRTF" | "independent" }?,
      attribute symRefs { "true" | "false" }?, # (see [RFC7991bis], Section 2.48.13)
      attribute updates { text }?,
      attribute version { text }?, # (see [RFC7991bis], Section 2.48.13)
      v3_link*,
      x_link*,
      x_feedback?,
      x_assign-section-number*,
      front,
      middle,
      back?
    }

  # Redefine <section> to allow new elements
  section =
    element section {
      attlist.x_section,
      (t
       | artwork
       | figure
       | texttable
       | iref
       | section
       | v3_artset
       | v3_aside
       | v3_blockquote
       | v3_contact
       | v3_dl
       | v3_name
       | v3_ol
       | v3_sourcecode
       | v3_table
       | v3_ul
       | x_anchor-alias
       | x_blockquote
       | x_contributor
       | x_include-author
       | x_note
       | x_u-map
       | rdf_Description)*
    }




Reschke                    Expires May 2, 2026                 [Page 64]

Documentation             RFC7749 through XSLT              October 2025


  # Redefine <spanx> to allow some markup
  spanx =
    element spanx {
      attlist.spanx,
      (TEXT
        | iref
        | xref
        | x_ref)*
    }

  # Redefine <t> to allow our extension elements
  t =
    element t {
      attlist.t,
      (TEXT
       | \list
       | figure
       | xref
       | eref
       | iref
       | cref
       | spanx
       | vspace
       | v3_bcp14
       | v3_br
       | v3_contact
       | v3_em
       | v3_relref
       | v3_strong
       | v3_sub
       | v3_sup
       | v3_tt
       | v3_u
       | x_abnf-char-sequence
       | x_anchor-alias
       | x_bcp14
       | x_dfn
       | x_h
       | x_q
       | x_ref
       | x_span
       | x_sup)*
    }

  # Redefine <title> to allow <br>
  title =
    element title {
      attlist.title,



Reschke                    Expires May 2, 2026                 [Page 65]

Documentation             RFC7749 through XSLT              October 2025


      (TEXT
        | v3_br)*
    }

  # Redefine <xref> to allow some markup
  xref =
    element xref {
      attlist.xref,
      (TEXT
        | v3_em
        | v3_strong
        | v3_sub
        | v3_sup
        | v3_tt)*
    }
}

# Extend attribute set for <abstract>
attlist.abstract &=
  attribute anchor { xsd:ID }?, # (see [RFC7991bis], Section 2.1.1)
  attribute pn { text }? # (see [RFC7991bis], Appendix B.2)

# Allow extension attributes on <artwork> (Section 11.25)
attlist.artwork &=
  attribute anchor { xsd:ID }?,
  attribute originalSrc { text }?, # (see [RFC7991bis], Appendix B.3)
  attribute x:indent-with { ATEXT }?,
  attribute x:lang { "" }?,
  attribute x:is-code-component { "no" | "yes" }?

# Allow anchor and x:annotation attributes on <author>
attlist.author &=
  attribute asciiFullname { ATEXT }?,
  attribute asciiInitials { ATEXT }?,
  attribute asciiSurname { ATEXT }?,
  attribute anchor { xsd:ID }?,
  attribute x:annotation { ATEXT }?

# Extend attribute set for <c>
attlist.c &=
  attribute anchor { xsd:ID }?

# Extend attribute set for <city>
attlist.city &=
  attribute ascii { ATEXT }?

# Extend attribute set for <code>
attlist.code &=



Reschke                    Expires May 2, 2026                 [Page 66]

Documentation             RFC7749 through XSLT              October 2025


  attribute ascii { ATEXT }?

# Extend attribute set for <country>
attlist.country &=
  attribute ascii { ATEXT }?

# Extend attribute set for <cref> (see Section 2.17.2 of [RFC7991bis])
attlist.cref &=
  attribute display { "false" | "true" }?

# Extend attribute set for <date> (see Section 11.26)
attlist.date &=
  attribute x:include-day { "false" | "true" }?

# Extend attribute set for <eref> (see Section 11.27)
attlist.eref &=
  attribute brackets { "none" | "angle" }?

# Extend attribute set for <iref> (see Section 11.28)
attlist.iref &=
  attribute x:for-anchor { ATEXT }?

# Extend attribute set for <list> (see Section 11.29)
attlist.list &=
  attribute x:indent { ATEXT }?

# Extend/Relax attribute set for <note>
attlist.x_note &=
  attribute anchor { xsd:ID }?,
  attribute title { ATEXT }?,
  attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
  attribute removeInRFC { "false" | "true" }? # see Section 12.25.2

# Extend attribute set for <preamble>
attlist.preamble &=
  attribute anchor { xsd:ID }?

# Extend attribute set for <organization>
attlist.organization &=
  attribute ascii { ATEXT }?,
  attribute showOnFrontPage { "false" | "true" }?

# Extend attribute set for <reference>
attlist.reference &=
  attribute quoteTitle { "false" | "true" }?, # (see Section 12.22.1)
  attribute xml:base { text }? # (see [RFC7991bis], Section 2)

# Extend attribute set for <references>



Reschke                    Expires May 2, 2026                 [Page 67]

Documentation             RFC7749 through XSLT              October 2025


attlist.references &=
  attribute pn { text }? # (see [RFC7991bis], Appendix B.2)

# Extend attribute set for <region>
attlist.region &=
  attribute ascii { ATEXT }?

# Extend/Relax attribute set for <section> (see Section 11.31)
attlist.x_section &=
  attribute anchor { xsd:ID }?,
  attribute title { ATEXT }?,
  attribute toc { "include" | "exclude" | "default" }?,
  attribute numbered { "false" | "true" }?, # see Section 12.25.1
  attribute removeInRFC { "false" | "true" }?, # see Section 12.25.2
  attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
  attribute x:fixed-section-number { ATEXT }?

# Allow anchor attribute on <spanx>
attlist.spanx &=
  attribute anchor { xsd:ID }?

# Extend attribute set for <street>
attlist.street &=
  attribute ascii { ATEXT }?

# Extend attribute set for <c> (see Section 11.28)
attlist.t &=
  attribute indent { text }?,
  attribute keepWithNext { text }?,
  attribute keepWithPrevious { text }?,
  attribute pn { text }? # (see [RFC7991bis], Appendix B.2)

# Extend attribute set for <texttable>
attlist.texttable &=
  attribute x:caption-side { ATEXT }?

# Extend attribute set for <title>
attlist.title &=
  attribute ascii { ATEXT }?,
  attribute x:quotes { "true" | "false" }? # (deprecated, see Section 12.22.1)

# Allow annotation attribute on <uri>
attlist.uri &=
  attribute x:annotation { ATEXT }?

# Extend attribute set for <xref> (see Section 11.32)
attlist.xref &=
  attribute derivedContent { text }?, # (see [RFC7991bis], Appendix B.3)



Reschke                    Expires May 2, 2026                 [Page 68]

Documentation             RFC7749 through XSLT              October 2025


  attribute x:fmt  { "()" | "," | "of" | "number" | "sec" |
                     "none" }?,
  attribute x:rel  { ATEXT }?,
  attribute x:sec  { ATEXT }?,
  attribute x:title  { ATEXT }?,
  attribute relative  { ATEXT }?,
  attribute section  { ATEXT }?,
  attribute sectionFormat  { "bare" | "comma" | "of" | "parens" }?


# Set of artwork (see Section 12.1)
v3_artset =
  element artset {
    attribute anchor { xsd:ID }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    artwork+
  }

# Side Note (see Section 12.2)
v3_aside =
  element aside {
    attribute anchor { xsd:ID }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    (artwork
      | figure
      | iref
      | t
      | v3_blockquote
      | v3_dl
      | v3_ol
      | v3_table
      | v3_ul)*
  }

# BCP14/RFC2119 keywords (see Section 12.3)
v3_bcp14 =
  element bcp14 {
    TEXT
  }

# Blockquote (see Section 12.4)
v3_blockquote =
  element blockquote {
    attribute anchor { xsd:ID }?,
    attribute cite { URI }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    attribute quotedFrom { ATEXT }?,
    (



Reschke                    Expires May 2, 2026                 [Page 69]

Documentation             RFC7749 through XSLT              October 2025


      (artwork
        | v3_dl
        | figure
        | v3_ol
        | v3_sourcecode
        | t
        | v3_ul)+
    |
      (TEXT
        | v3_bcp14
        | cref
        | v3_em
        | eref
        | iref
        | v3_strong
        | v3_sub
        | v3_sup
        | v3_tt
        | xref)+
    )
  }

# Boilerplate (see Section 12.4)
v3_boilerplate =
  element boilerplate {
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    section+
  }

# Forced Line Break (see Section 12.6)
v3_br =
  element br {
    empty
  }

# (see Section 12.7)
v3_cityarea =
  element cityarea {
    attribute ascii { ATEXT }?,
    TEXT
  }

# (see Section 12.8)
v3_contact =
  element contact {
    attribute initials { text }?,
    attribute asciiInitials { text }?,
    attribute surname { text }?,



Reschke                    Expires May 2, 2026                 [Page 70]

Documentation             RFC7749 through XSLT              October 2025


    attribute asciiSurname { text }?,
    attribute fullname { text }?,
    attribute asciiFullname { text }?,
    organization?,
    address?
  }

# Mapping of reference names to display names (see Section 12.9)
v3_displayreference =
  element displayreference {
    attribute target { xsd:IDREF },
    attribute to { ATEXT }
  }

# Definition List Description Element (see Section 12.10)
v3_dd =
  element dd {
    attribute anchor { xsd:ID }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    ((v3_artset
      | artwork
      | figure
      | t
      | v3_aside
      | v3_dl
      | v3_ol
      | v3_table
      | v3_sourcecode
      | v3_ul)+ |
    (TEXT
      | cref
      | eref
      | iref
      | xref
      | v3_bcp14
      | v3_br
      | v3_em
      | v3_sub
      | v3_sup
      | v3_tt
      | v3_strong
      | v3_u
      | x_ref)*
    )
  }

# Definition List (see Section 12.11)
v3_dl =



Reschke                    Expires May 2, 2026                 [Page 71]

Documentation             RFC7749 through XSLT              October 2025


  element dl {
    attribute anchor { xsd:ID }?, # (see [RFC7991bis], Section 2.21.1)
    attribute indent { text }?,
    attribute newline { "false" | "true" }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    attribute spacing { "normal" | "compact" }?,
    (v3_dt, v3_dd)+
  }

# Definition List Description Term (see Section 12.12)
v3_dt =
  element dt {
    attribute anchor { xsd:ID }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    (TEXT
      | cref
      | eref
      | iref
      | xref
      | v3_em
      | v3_tt
      | v3_strong)*
  }

# Emphasized Text (see Section 12.13)
v3_em =
  element em {
    attribute anchor { xsd:ID }?,
    (TEXT
      | eref
      | iref
      | xref
      | v3_strong
      | x_ref)*
  }

# Extended Postal Address (see Section 12.14)
v3_extaddr =
  element extaddr {
    attribute ascii { ATEXT }?,
    TEXT
  }

# Definition List (see Section 12.15)
v3_li =
  element li {
    attribute anchor { xsd:ID }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)



Reschke                    Expires May 2, 2026                 [Page 72]

Documentation             RFC7749 through XSLT              October 2025


    ((v3_artset
      | artwork
      | figure
      | v3_blockquote
      | v3_dl
      | v3_ol
      | t
      | v3_table
      | v3_sourcecode
      | v3_ul
    )+
      |
    (TEXT
      | cref
      | eref
      | iref
      | xref
      | v3_bcp14
      | v3_em
      | v3_strong
      | v3_sub
      | v3_sup
      | v3_tt
      | v3_u
      | x_dfn
      | x_ref)*
    )
  }

# Container for additional links (see Section 12.16)
v3_link =
  element link {
    attribute href { text },
    attribute rel { text }?
  }

# Section/Figure/Table Name (see Section 12.17)
v3_name =
  element name {
    attribute slugifiedName { text }?, # (see [RFC7991bis], Appendix B.2)
    (TEXT
      | cref
      | v3_br
      | v3_em
      | v3_sup
      | v3_tt
      | xref)*
  }



Reschke                    Expires May 2, 2026                 [Page 73]

Documentation             RFC7749 through XSLT              October 2025


# Ordered List (see Section 12.18)
v3_ol =
  element ol {
    attribute anchor { xsd:ID }?,
    attribute indent { text }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    attribute start { TEXT }?,
    attribute group { TEXT }?,
    attribute type { TEXT }?,
    v3_li+
  }

# Extended Postal Address (see Section 12.19)
v3_pobox =
  element pobox {
    attribute ascii { ATEXT }?,
    TEXT
  }

# Line in postal address (see Section 12.20)
v3_postalLine =
  element postalLine {
    attribute ascii { TEXT }?,
    TEXT
  }

# EXPERIMENTAL DO NOT USE YET (see Section 12.24)
v3_relref =
  element relref {
    attribute derivedLink { text }?, # (see [RFC7991bis], Appendix B.3)
    attribute displayFormat { "of" | "comma" | "parens" | "bare" }?,
    attribute relative { text }?,
    attribute section { text },
    attribute target { xsd:IDREF },
    TEXT
  }

# additional content for references (see Section 12.21)
v3_refcontent =
  element refcontent {
    (TEXT
      | v3_em)*
  }

# reference group (see Section 12.23)
v3_referencegroup =
  element referencegroup {
    attribute anchor { xsd:ID },



Reschke                    Expires May 2, 2026                 [Page 74]

Documentation             RFC7749 through XSLT              October 2025


    attribute target { URI }?,
    (reference
      | xi_include)+
  }

# (see Section 12.26)
v3_sortingcode =
  element sortingcode {
    attribute ascii { ATEXT }?,
    TEXT
  }

# Source Code (see Section 12.27)
v3_sourcecode =
  element sourcecode {
    attribute anchor { xsd:ID }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    attribute markers { text }?, #(see [V3IMPNOTES], Section 3.1.22)
    attribute name { text }?,
    attribute src { text }?,
    attribute type { text }?,
    attribute x:lang { "" }?,
    (TEXT
      | iref
      | xref
      | x_ref)*
  }

# Emphasized Text (see Section 12.28)
v3_strong =
  element strong {
    attribute anchor { xsd:ID }?,
    (TEXT
      | xref
      | v3_em
      | x_ref)*
  }

# Subscript (see Section 12.29)
v3_sub =
  element sub {
    (TEXT
      | v3_sup)*
  }

# Superscript (see Section 12.30)
v3_sup =
  element sup {



Reschke                    Expires May 2, 2026                 [Page 75]

Documentation             RFC7749 through XSLT              October 2025


    (TEXT
      | v3_sub)*
  }

# Table (see Section 12.32)
v3_table =
  element table {
    attribute anchor { xsd:ID }?,
    attribute align { "left" | "center" | "right" }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    v3_name?,
    iref*,
    v3_thead?,
    v3_tbody+,
    v3_tfoot?
  }

# Table Body (see Section 12.33)
v3_tbody =
  element tbody {
    attribute anchor { xsd:ID }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    v3_tr+
  }

# Table Contents Cell (see Section 12.34)
v3_td =
  element td {
    attribute anchor { xsd:ID }?,
    attribute align { "left" | "center" | "right" }?,
    attribute colspan { text }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    attribute rowspan { text }?,
    ( (t
       | v3_dl
       | v3_ol
       | v3_sourcecode
       | v3_ul
      )+
      | (TEXT
         | v3_bcp14
         | v3_br
         | cref
         | v3_em
         | eref
         | v3_strong
         | v3_sub
         | v3_sup



Reschke                    Expires May 2, 2026                 [Page 76]

Documentation             RFC7749 through XSLT              October 2025


         | v3_tt
         | xref)*
    )
  }

# Table Footer (see Section 12.35)
v3_tfoot =
  element tfoot {
    attribute anchor { xsd:ID }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    v3_tr
  }

# Table Header Cell (see Section 12.36)
v3_th =
  element th {
    attribute anchor { xsd:ID }?,
    attribute align { "left" | "center" | "right" }?,
    attribute colspan { text }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    attribute rowspan { text }?,
    ( (t
       | v3_dl
       | v3_ol
       | v3_sourcecode
       | v3_ul
      )+
      | (TEXT
         | v3_bcp14
         | cref
         | v3_em
         | eref
         | v3_strong
         | v3_sub
         | v3_sup
         | v3_tt
         | xref)*
    )
  }

# Table Head (see Section 12.37)
v3_thead =
  element thead {
    attribute anchor { xsd:ID }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    v3_tr+
  }




Reschke                    Expires May 2, 2026                 [Page 77]

Documentation             RFC7749 through XSLT              October 2025


# Table Row (see Section 12.38)
v3_tr =
  element tr {
    attribute anchor { xsd:ID }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    (
      v3_td
      | v3_th
    )+
  }

# Monospaced Text (see Section 12.39)
v3_tt =
  element tt {
    (TEXT
      | xref
      | v3_em
      | x_ref)*
  }

# Non-ASCII characters (see Section 12.40)
v3_u =
  element u {
    attribute ascii { text }?,
    attribute format { text }?,
    TEXT
  }

# Unordered List (see Section 12.41)
v3_ul =
  element ul {
    attribute anchor { xsd:ID }?,
    attribute bare { "false" | "true" }?, # but see <https://trac.tools.ietf.org/tools/xml2rfc/trac/ticket/547>
    attribute indent { text }?,
    attribute empty { "false" | "true" }?,
    attribute pn { text }?, # (see [RFC7991bis], Appendix B.2)
    v3_li+
  }

# SVG (see Section 12.31)
v3_svg =
  element svg:svg {
    (attribute * { text }
        | text
        | anySVGElement)*
  }

 anySVGElement =



Reschke                    Expires May 2, 2026                 [Page 78]

Documentation             RFC7749 through XSLT              October 2025


    element svg:* {
       (attribute * { text }
        | text
        | anySVGElement)*
    }

# Conversion to ABNF char sequence (see Section 11.1)
x_abnf-char-sequence =
  element x:abnf-char-sequence {
    TEXT
  }

# Aliasing of anchors (see Section 11.2)
x_anchor-alias =
  element x:anchor-alias {
    attribute value { TEXT },
    empty
  }

# Contributor information (see Section 11.9)
# (experimental)
x_contributor =
  element x:contributor {
    attlist.author,
    organization?,
    address?
  }

# Supply feedback links (see Section 11.11)
x_feedback =
  element x:feedback {
    attribute template { TEXT },
    empty
  }

# Including Author information
# (experimental)
x_include-author =
  element x:include-author {
    attribute target { xsd:IDREF }
  }

# Setting section numbers for internally generated sections
# (experimental)
x_assign-section-number =
  element x:assign-section-number {
    attribute builtin-target { "authors" },
    attribute number { TEXT },



Reschke                    Expires May 2, 2026                 [Page 79]

Documentation             RFC7749 through XSLT              October 2025


    empty
  }

# Bottom line of box drawing (see Section 11.3)
x_bb =
  element x:bb {
    (TEXT
      | iref
      | xref
      | x_bb
      | x_bc
      | x_bt
      | x_ref)*
  }

# Center line of box drawing (see Section 11.4)
x_bc =
  element x:bc {
    (TEXT
      | iref
      | spanx
      | xref
      | x_bb
      | x_bc
      | x_bt
      | x_ref)*
  }

# BCP14/RFC2119 keywords (see Section 11.5)
x_bcp14 =
  element x:bcp14 {
    TEXT
  }

# Blockquote (see Section 11.6)
x_blockquote =
  element x:blockquote {
    attribute anchor { xsd:ID }?,
    attribute cite { URI }?,
    t+
  }

# Top line of box drawing (see Section 11.7)
x_bt =
  element x:bt {
    (TEXT
      | iref
      | xref



Reschke                    Expires May 2, 2026                 [Page 80]

Documentation             RFC7749 through XSLT              October 2025


      | x_bb
      | x_bc
      | x_bt
      | x_ref)*
  }

# Unicode character map entry (see Section 11.8)
x_c =
  element x:c {
    attribute c { TEXT },
    attribute d { TEXT }?,
    attribute n { TEXT }
  }

# declaration of definition in external reference
x_defines =
  element x:defines {
    TEXT
  }

# Definition (see Section 11.10)
x_dfn =
  element x:dfn {
    attribute anchor { xsd:ID }?,
    (TEXT
      | iref)*
  }

# Heading (see Section 11.12)
x_h =
  element x:h {
    TEXT
  }

# declaration of anchor in external reference
x_has =
  element x:has {
    attribute anchor { xsd:ID }?
  }

# Heading (see Section 11.13)
x_highlight =
  element x:highlight {
    TEXT
  }

# Length Measurement (see Section 11.14)
x_length-of =



Reschke                    Expires May 2, 2026                 [Page 81]

Documentation             RFC7749 through XSLT              October 2025


  element x:length-of {
    attribute indented { NUMBER }?,
    attribute target { xsd:IDREF },
    empty
  }

# Link (see Section 11.15)
x_link =
  element x:link {
    attribute basename { URI }?,
    attribute href { URI }?,
    attribute title { TEXT }?,
    attribute rel { TEXT },
    empty
  }

# Extended list item (see Section 11.16)
x_lt =
  element x:lt {
    attribute anchor { xsd:ID }?,
    attribute hangText { TEXT }?,
    t+
  }

# Note (see Section 11.17)
x_note =
  element x:note {
    attribute anchor { xsd:ID }?,
    t+
  }

# Signal XML content (see Section 11.18)
x_parse-xml =
  element x:parse-xml {
    (TEXT
      | xref)*
  }

# Inline prose in a reference (see Section 11.19)
x_prose =
  element x:prose {
    TEXT
  }

# Inline quote (see Section 11.20)
x_q =
  element x:q {
    TEXT



Reschke                    Expires May 2, 2026                 [Page 82]

Documentation             RFC7749 through XSLT              October 2025


  }

# Anchor reference (see Section 11.21)
x_ref =
  element x:ref {
    attribute anchor { xsd:ID }?,
    TEXT
  }

# source information (see Section 11.22)
x_source =
  element x:source {
    attribute basename { ATEXT }?,
    attribute href { URI },
    x_defines*,
    x_has*
  }

# superscript (see Section 11.23)
x_sup =
  element x:sup {
    TEXT
  }

# Inline Span
x_span =
  element x:span {
    attribute anchor { xsd:ID }?,
    attribute x:lang { "" }?,
    (TEXT
      | x_parse-xml)*
  }

# Unicode character map (see Section 11.24)
x_u-map =
  element x:u-map {
    x_c*
  }

# Nop (for alignment in source)
x_x =
  element x:x {
    empty
  }

# XInclude (see Section 12.43)
xi_include =
  element xi:include {



Reschke                    Expires May 2, 2026                 [Page 83]

Documentation             RFC7749 through XSLT              October 2025


    attribute href { text },
    empty
  }

# Embed RDF statements
rdf_Description =
  element rdf:Description {
    rdf_content
  }

rdf_content =
  ( TEXT | element * { rdf_content })*

Appendix B.  Implementation Notes

B.1.  Recognized type attributes for <artwork> element

   Specific values in the <artwork> element's "type" attribute are
   recognized and cause a different visual style to be used:
































Reschke                    Expires May 2, 2026                 [Page 84]

Documentation             RFC7749 through XSLT              October 2025


   +-------------------------------------+-----------------------------+
   | Type                                | Comment                     |
   +-------------------------------------+-----------------------------+
   | abnf                                | ABNF as per [RFC5234]       |
   |                                     |                             |
   | abnf2045                            | ABNF as per [RFC2045]       |
   |                                     |                             |
   | abnf2616                            | ABNF as per [RFC2616],      |
   |                                     | Section 2.1                 |
   |                                     |                             |
   | abnf7230                            | ABNF as per [RFC7230],      |
   |                                     | Section 1.2                 |
   |                                     |                             |
   | application/relax-ng-compact-syntax | Relax NG Compact Syntax as  |
   |                                     | per [RNC]                   |
   |                                     |                             |
   | application/xml-dtd                 | XML DTD                     |
   |                                     |                             |
   | code                                | monospaced text (with       |
   |                                     | outline)                    |
   |                                     |                             |
   | drawing                             | drawing (with outline)      |
   |                                     |                             |
   | example                             | monospaced text (with       |
   |                                     | outline)                    |
   |                                     |                             |
   | image/*                             | images (to be used with     |
   |                                     | "src" attribute)            |
   |                                     |                             |
   | inline                              | monospaced text (no         |
   |                                     | outline)                    |
   |                                     |                             |
   | message/http; msgtype="request"     | HTTP message, as per        |
   |                                     | [RFC7230], Section 8.3.1    |
   |                                     |                             |
   | message/http; msgtype="response"    | HTTP message, as per        |
   |                                     | [RFC7230], Section 8.3.1    |
   |                                     |                             |
   | pdu                                 | pdu (with outline)          |
   |                                     |                             |
   | svg and image/svg+xml               | SVG                         |
   +-------------------------------------+-----------------------------+

Appendix C.  Examples







Reschke                    Expires May 2, 2026                 [Page 85]

Documentation             RFC7749 through XSLT              October 2025


C.1.  Using the 'Internal Subset'

   The prolog of the XML document can both be used to refer to an
   external DTD, and also to define internal entities (Section 2.8 of
   [XML]):

   <?xml version="1.0"?>
   <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

   <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [

     <!-- use "&MAY;" for a BCP 14 "MAY", see Section 11.5 -->
     <!ENTITY MAY
     "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'>MAY</bcp14>">

     <!-- re-declare "&nbsp;" as code point 160 (non-breaking space) -->
     <!-- you may need this for UAs that do not read external DTDs -->
     <!ENTITY nbsp
     "&#160;">

     <!-- allow later RFC2616 reference using "&rfc2616;" -->
     <!-- the data will be fetched from xml.resource.org -->
     <!ENTITY rfc2616 SYSTEM
     "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2616.xml">

     <!-- allow a custom reference using "&mydraft;" -->
     <!-- the data will be fetched from the same location as the
          source file -->
     <!ENTITY mydraft SYSTEM "reference.mydraft.xml">
   ]>

   Note: including entities from a remote site will not work in browsers
   due to the Same-Origin policy.

C.2.  Customization

   The XSLT code can be customized by creating a custom XSLT file that
   uses <xsl:import> to include the original code, and just overrides
   particular rules.












Reschke                    Expires May 2, 2026                 [Page 86]

Documentation             RFC7749 through XSLT              October 2025


   For instance, the code below overrides several attributes in
   "rfc2629toFO.xslt", changing the color, spacing and font family for
   headers.

   <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                  version="1.0">

     <xsl:import href="rfc2629toFO.xslt"/>

     <xsl:attribute-set name="h1">
       <xsl:attribute name="color">darkblue</xsl:attribute>
       <xsl:attribute name="font-family">sans-serif</xsl:attribute>
       <xsl:attribute name="space-before">24pt</xsl:attribute>
     </xsl:attribute-set>

     <xsl:attribute-set name="h2">
       <xsl:attribute name="color">darkblue</xsl:attribute>
       <xsl:attribute name="font-family">sans-serif</xsl:attribute>
       <xsl:attribute name="space-before">18pt</xsl:attribute>
       <xsl:attribute name="space-after">3pt</xsl:attribute>
     </xsl:attribute-set>

     <xsl:attribute-set name="h3">
       <xsl:attribute name="color">darkblue</xsl:attribute>
       <xsl:attribute name="font-family">sans-serif</xsl:attribute>
       <xsl:attribute name="space-before">16pt</xsl:attribute>
       <xsl:attribute name="space-after">2pt</xsl:attribute>
     </xsl:attribute-set>

   </xsl:transform>

      Note: the name for the attribute sets may change in the future as
      more working is done with respect to customizability.  In any
      case, overriding the settings in a separate file will be easier to
      maintain.  Please contact the author if you find yourself trying
      to override style definitions that currently do not use attribute
      sets.

      Note: the CSS style information used in "rfc2629.xslt" can be
      overriden in a similar (but less granular) way: just overwrite the
      template called "insertCss".  As for XSL-FO, the class names may
      change in future.

Appendix D.  Producing the IETF 'Boilerplate'

   Various attributes of the "<rfc>" element plus some child elements of
   "<front>" affect the automatically generated parts of the front page,




Reschke                    Expires May 2, 2026                 [Page 87]

Documentation             RFC7749 through XSLT              October 2025


   such as the tabular information at the beginning, the "Status Of This
   Memo", and the "Copyright Notice".

   When submitting an Internet Draft, this "boilerplate" is checked by
   "Idnits" (<http://tools.ietf.org/tools/idnits/>) for compliance with
   the current Intellectual Property rules, and thus it is important to
   set the correct values.

   Furthermore, the RFC Production Center uses RFC7749-based tools to
   generate the final RFC text, so the more accurate the supplied
   information is, the less additional work is left, and the risk for
   errors in producing the final (and immutable!) document is reduced.

      Note: this only applies to the case when IETF documents are
      produced.  The "private" processing instruction allows to switch
      off most of the autogeneration logic.

   The individual attributes on the "<rfc>" element are discussed in
   detail in Appendix A of [RFC7749].

Appendix E.  License

   Copyright (c) 2006-2019, Julian Reschke
   (julian.reschke@greenbytes.de)

   All rights reserved.

   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions
   are met:

   o  Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.

   o  Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in
      the documentation and/or other materials provided with the
      distribution.

   o  Neither the name of Julian Reschke nor the names of its
      contributors may be used to endorse or promote products derived
      from this software without specific prior written permission.

   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT
   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,



Reschke                    Expires May 2, 2026                 [Page 88]

Documentation             RFC7749 through XSLT              October 2025


   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Index

   A
      Anchors
         rfc.abstract  22
         rfc.authors  22
         rfc.copyright  22
         rfc.copyrightnotice  22
         rfc.figure.n  22
         rfc.figure.u.n  22
         rfc.index  22
         rfc.ipr  22
         rfc.iref.n  22
         rfc.note.n  22
         rfc.references  22
         rfc.section.n  22
         rfc.section.n.p.m  22
         rfc.status  22
         rfc.toc  22
         rfc.xref.name.n  22
      AntennaHouse XSL Formatter  30
      Apache FOP  30
      abnf-char-sequence Extension Element  31, 58
      abort-on PI pseudo-attribute  9
      allow-markup-in-artwork PI pseudo-attribute  10
      alternate HTML LINK element  27
      anchor-alias Extension Element  32, 58
      appendix HTML LINK element  27
      artset V3 Extension Element  40, 58
      aside V3 Extension Element  40, 58
      assign-section-number Extension Element  58
      author HTML LINK element  27
      authors-section PI pseudo-attribute  10
      authorship PI pseudo-attribute  6

   B
      background PI pseudo-attribute  6
      bb Extension Element  32, 58
      bc Extension Element  32, 58
      bcp14 Extension Element  32, 58
      bcp14 V3 Extension Element  40, 58



Reschke                    Expires May 2, 2026                 [Page 89]

Documentation             RFC7749 through XSLT              October 2025


      blockquote Extension Element  33, 58
      blockquote V3 Extension Element  41, 58
      boilerplate V3 Extension Element  41, 58
      br V3 Extension Element  41
      bt Extension Element  33, 58

   C
      CHM format  30
      Creator DCMI property  28
      c Extension Element  33, 58
      chapter HTML LINK element  27
      cityarea V3 Extension Element  41, 58
      comments PI pseudo-attribute  6
      compact PI pseudo-attribute  6
      contact V3 Extension Element  41, 58
      contents HTML LINK element  27
      contributor Extension Element  34, 58
      copyright HTML LINK element  27
      css-contents PI pseudo-attribute  10
      css-resource PI pseudo-attribute  11

   D
      DCMI properties
         Creator  28
         Date.Issued  28
         Description.Abstract  28
         Identifier  28
         isPartOf  28
         Relation.Replaces  28
      Date.Issued DCMI property  28
      Description.Abstract DCMI property  28
      dark-mode PI pseudo-attribute  11
      dd V3 Extension Element  41, 58
      defines Extension Element  58
      dfn Extension Element  34, 58
      diff-uri PI pseudo-attribute  11
      displayreference V3 Extension Element  41, 58
      dl V3 Extension Element  41, 58
      docmapping PI pseudo-attribute  6
      doi-uri PI pseudo-attribute  12
      dt V3 Extension Element  41, 58
      duplex PI pseudo-attribute  12

   E
      Extension Elements
         abnf-char-sequence  31, 58
         anchor-alias  32, 58
         assign-section-number  58



Reschke                    Expires May 2, 2026                 [Page 90]

Documentation             RFC7749 through XSLT              October 2025


         bb  32, 58
         bc  32, 58
         bcp14  32, 58
         blockquote  33, 58
         bt  33, 58
         c  33, 58
         contributor  34, 58
         defines  58
         dfn  34, 58
         feedback  34, 58
         h  34, 58
         has  58
         highlight  34, 58
         include-author  58
         length-of  34, 58
         link  35, 58
         lt  35, 58
         note  36, 58
         parse-xml  36, 58
         prose  36, 58
         q  36, 58
         rdf:Description  58
         ref  36, 58
         source  37, 58
         span  58
         sup  37, 58
         u-map  37, 58
         x  58
      editing PI pseudo-attribute  6
      em V3 Extension Element  41, 58
      errata PI pseudo-attribute  12, 29
      extaddr V3 Extension Element  41, 58

   F
      Firefox
         1.*/2.*  24
         3.*  23
      feedback Extension Element  34, 58
      footer PI pseudo-attribute  6

   G
      Google Chrome  24
      Grammar  57
      generator HTML META element  27

   H
      HTML LINK elements
         alternate  27



Reschke                    Expires May 2, 2026                 [Page 91]

Documentation             RFC7749 through XSLT              October 2025


         appendix  27
         author  27
         chapter  27
         contents  27
         copyright  27
         index  27
      HTML META elements
         generator  27
         keywords  27
      HTML compliance  25
      h Extension Element  34, 58
      has Extension Element  58
      header PI pseudo-attribute  6
      highlight Extension Element  34, 58
      html-pretty-print PI pseudo-attribute  13

   I
      Identifier DCMI property  28
      Internet Explorer 6  23
      Internet Explorer 7  23
      Internet Explorer 8  23
      Internet Explorer 9  23
      include PI pseudo-attribute  6, 51
      include-author Extension Element  58
      include-generator PI pseudo-attribute  13
      include-index PI pseudo-attribute  14
      include-references-in-index PI pseudo-attribute  14
      index HTML LINK element  27
      inline PI pseudo-attribute  6
      insert-metadata PI pseudo-attribute  14, 28
      internet-draft-reference-base-uri PI pseudo-attribute  15
      internet-draft-uri PI pseudo-attribute  15
      iprnotified PI pseudo-attribute  6
      isPartOf DCMI property  28
      isbn-uri PI pseudo-attribute  16

   J
      justification PI pseudo-attribute  15

   K
      keywords HTML META element  27

   L
      length-of Extension Element  34, 58
      li V3 Extension Element  42, 58
      link Extension Element  35, 58
      link V3 Extension Element  42, 58
      linkmailto PI pseudo-attribute  6



Reschke                    Expires May 2, 2026                 [Page 92]

Documentation             RFC7749 through XSLT              October 2025


      log-level PI pseudo-attribute  16
      lt Extension Element  35, 58

   M
      MSXML3  23
      MSXML4  23
      Microsoft Help  30
      Mozilla  23-24
      maxwidth PI pseudo-attribute  16
      multiple-initials PI pseudo-attribute  6

   N
      NoScript  23
      name V3 Extension Element  42, 58
      needLines PI pseudo-attribute  9
      note Extension Element  36, 58

   O
      Opera  24
      ol V3 Extension Element  42, 58

   P
      Parameters
         xml2rfc-authorship  6
         xml2rfc-background  6
         xml2rfc-comments  6
         xml2rfc-compact  6
         xml2rfc-editing  6
         xml2rfc-ext-abort-on  9
         xml2rfc-ext-allow-markup-in-artwork  10
         xml2rfc-ext-authors-section  10
         xml2rfc-ext-css-contents  10
         xml2rfc-ext-css-resource  11
         xml2rfc-ext-dark-mode  11
         xml2rfc-ext-diff-uri  11
         xml2rfc-ext-doi-uri  12
         xml2rfc-ext-duplex  12
         xml2rfc-ext-errata  12, 29
         xml2rfc-ext-html-pretty-print  13
         xml2rfc-ext-include-generator  13
         xml2rfc-ext-include-index  14
         xml2rfc-ext-include-references-in-index  14
         xml2rfc-ext-insert-metadata  14, 28
         xml2rfc-ext-internet-draft-uri  15
         xml2rfc-ext-isbn-uri  16
         xml2rfc-ext-justification  15
         xml2rfc-ext-log-level  16
         xml2rfc-ext-maxwidth  16



Reschke                    Expires May 2, 2026                 [Page 93]

Documentation             RFC7749 through XSLT              October 2025


         xml2rfc-ext-parse-xml-in-artwork  17
         xml2rfc-ext-rfc-erratam-uri  17
         xml2rfc-ext-rfc-erratum-uri  17
         xml2rfc-ext-rfc-reference-base-uri  15, 18
         xml2rfc-ext-rfc-uri  18
         xml2rfc-ext-sec-no-trailing-dots  18
         xml2rfc-ext-std-uri  19
         xml2rfc-ext-support-highwire-press-tags  19
         xml2rfc-ext-support-open-graph-tags  20
         xml2rfc-ext-support-rfc2731  20
         xml2rfc-ext-ucd-file  20
         xml2rfc-ext-xml2rfc-backend  21
         xml2rfc-ext-xref-with-text-generate  21
         xml2rfc-footer  6
         xml2rfc-header  6
         xml2rfc-inline  6
         xml2rfc-iprnotified  6
         xml2rfc-linkmailto  6
         xml2rfc-multiple-initials  6
         xml2rfc-private  6
         xml2rfc-refparent  6
         xml2rfc-rfcedstyle  6
         xml2rfc-sortrefs  6
         xml2rfc-symrefs  6
         xml2rfc-toc  6
         xml2rfc-tocdepth  6
         xml2rfc-topblock  6
      Processing Instruction pseudo attributes
         abort-on  9
         allow-markup-in-artwork  10
         authors-section  10
         authorship  6
         background  6
         comments  6
         compact  6
         css-contents  10
         css-resource  11
         dark-mode  11
         diff-uri  11
         docmapping  6
         doi-uri  12
         duplex  12
         editing  6
         errata  12, 29
         footer  6
         header  6
         html-pretty-print  13
         include  6, 51



Reschke                    Expires May 2, 2026                 [Page 94]

Documentation             RFC7749 through XSLT              October 2025


         include-generator  13
         include-index  14
         include-references-in-index  14
         inline  6
         insert-metadata  14, 28
         internet-draft-reference-base-uri  15
         internet-draft-uri  15
         iprnotified  6
         isbn-uri  16
         justification  15
         linkmailto  6
         log-level  16
         maxwidth  16
         multiple-initials  6
         needLines  9
         parse-xml-in-artwork  17
         private  6, 88
         refparent  6
         rfc-errata-uri  17
         rfc-erratum-uri  17
         rfc-reference-base-uri  18
         rfc-uri  18
         rfcedstyle  6
         sec-no-trailing-dots  18
         slides  9
         sortrefs  6
         std-uri  19
         strict  9
         subcompact  9
         support-highwire-press-tags  19
         support-open-graph-tags  20
         support-rfc2731  20
         symrefs  6
         toc  6
         tocdepth  6
         tocindent  9
         tocompact  9
         topblock  6
         ucd-file  20
         xml2rfc-backend  21
         xref-with-text-generate  21
      parse-xml Extension Element  36, 58
      parse-xml-in-artwork PI pseudo-attribute  17
      pobox V3 Extension Element  42
      postalLine V3 Extension Element  42, 58
      private PI pseudo-attribute  6, 88
      prose Extension Element  36, 58




Reschke                    Expires May 2, 2026                 [Page 95]

Documentation             RFC7749 through XSLT              October 2025


   Q
      q Extension Element  36, 58

   R
      RELAX NG Compact Schema  57
      Relation.Replaces DCMI property  28
      rdf:Description Extension Element  58
      ref Extension Element  36, 58
      refcontent V3 Extension Element  42, 58
      reference V3 Extension Element  42
      referencegroup V3 Extension Element  42, 58
      refparent PI pseudo-attribute  6
      relref V3 Extension Element  42, 58
      rfc-errata-uri PI pseudo-attribute  17
      rfc-erratum-uri PI pseudo-attribute  17
      rfc-reference-base-uri PI pseudo-attribute  18
      rfc-uri PI pseudo-attribute  18
      rfc.abstract anchor  22
      rfc.authors anchor  22
      rfc.copyright anchor  22
      rfc.copyrightnotice anchor  22
      rfc.figure.n anchor  22
      rfc.figure.u.n anchor  22
      rfc.index anchor  22
      rfc.ipr anchor  22
      rfc.iref.n anchor  22
      rfc.note.n anchor  22
      rfc.references anchor  22
      rfc.references.n anchor  22
      rfc.section.n anchor  22
      rfc.section.n.p.m anchor  22
      rfc.status anchor  22
      rfc.toc anchor  22
      rfc.xref.name.n anchor  22
      rfcedstyle PI pseudo-attribute  6

   S
      Safari  24
         3.*  24
      Saxon  23
      Schema  57
      sec-no-trailing-dots PI pseudo-attribute  18
      section V3 Extension Element  43
      slides PI pseudo-attribute  9
      sortingcode V3 Extension Element  43, 58
      sortrefs PI pseudo-attribute  6
      source Extension Element  37, 58
      sourcecode V3 Extension Element  43, 58



Reschke                    Expires May 2, 2026                 [Page 96]

Documentation             RFC7749 through XSLT              October 2025


      span Extension Element  58
      std-uri PI pseudo-attribute  19
      strict PI pseudo-attribute  9
      strong V3 Extension Element  43, 58
      sub V3 Extension Element  43, 58
      subcompact PI pseudo-attribute  9
      sup Extension Element  37, 58
      sup V3 Extension Element  43, 58
      support-highwire-press-tags PI pseudo-attribute  19
      support-open-graph-tags PI pseudo-attribute  20
      support-rfc2731 PI pseudo-attribute  20
      svg V3 Extension Element  43, 58
      symrefs PI pseudo-attribute  6

   T
      table V3 Extension Element  43, 58
      tbody V3 Extension Element  43, 58
      td V3 Extension Element  44, 58
      tfoot V3 Extension Element  44, 58
      th V3 Extension Element  44, 58
      thead V3 Extension Element  44, 58
      toc PI pseudo-attribute  6
      tocdepth PI pseudo-attribute  6
      tocindent PI pseudo-attribute  9
      tocompact PI pseudo-attribute  9
      topblock PI pseudo-attribute  6
      tr V3 Extension Element  44
      tre V3 Extension Element  58
      tt V3 Extension Element  44, 58

   U
      u V3 Extension Element  44, 58
      u-map Extension Element  37, 58
      ucd-file PI pseudo-attribute  20
      ul V3 Extension Element  44, 58

   V
      V3 Extension Elements
         artset  40, 58
         aside  40, 58
         bcp14  40, 58
         blockquote  41, 58
         boilerplate  41, 58
         br  41, 58
         cityarea  41, 58
         contact  41, 58
         dd  41, 58
         displayreference  41, 58



Reschke                    Expires May 2, 2026                 [Page 97]

Documentation             RFC7749 through XSLT              October 2025


         dl  41, 58
         dt  41, 58
         em  41, 58
         extaddr  41, 58
         li  42, 58
         link  42, 58
         name  42, 58
         ol  42, 58
         pobox  42, 58
         postalLine  42, 58
         refcontent  42, 58
         reference  42
         referencegroup  42, 58
         relref  42, 58
         section  43
         sortingcode  43, 58
         sourcecode  43, 58
         strong  43, 58
         sub  43, 58
         sup  43, 58
         svg  43, 58
         table  43, 58
         tbody  43, 58
         td  44, 58
         tfoot  44, 58
         th  44, 58
         thead  44, 58
         tr  44, 58
         tt  44, 58
         u  44, 58
         ul  44, 58
         xi:include  45
         xref  45

   X
      XInclude Extension Elements
         include  58
      Xalan  23
      x Extension Element  58
      xi:include Extension Element  58
      xi:include V3 Extension Element  45
      xml-stylesheet PI  25
      xml2rfc-authorship parameter  6
      xml2rfc-backend PI pseudo-attribute  21
      xml2rfc-background parameter  6
      xml2rfc-comments parameter  6
      xml2rfc-editing parameter  6
      xml2rfc-ext-abort-on parameter  9



Reschke                    Expires May 2, 2026                 [Page 98]

Documentation             RFC7749 through XSLT              October 2025


      xml2rfc-ext-allow-markup-in-artwork parameter  10
      xml2rfc-ext-authors-section parameter  10
      xml2rfc-ext-css-contents parameter  10
      xml2rfc-ext-css-resource parameter  11
      xml2rfc-ext-dark-mode parameter  11
      xml2rfc-ext-diff-uri parameter  11
      xml2rfc-ext-doi-uri parameter  12
      xml2rfc-ext-duplex parameter  12
      xml2rfc-ext-errata  29
      xml2rfc-ext-errata parameter  12
      xml2rfc-ext-html-pretty-print parameter  13
      xml2rfc-ext-include-generator parameter  13
      xml2rfc-ext-include-index parameter  14
      xml2rfc-ext-include-references-in-index parameter  14
      xml2rfc-ext-insert-metadata parameter  14, 28
      xml2rfc-ext-internet-draft-uri parameter  15
      xml2rfc-ext-isbn-uri parameter  16
      xml2rfc-ext-justification parameter  15
      xml2rfc-ext-log-level parameter  16
      xml2rfc-ext-maxwidth parameter  16
      xml2rfc-ext-parse-xml-in-artwork parameter  17
      xml2rfc-ext-rfc-errata-uri parameter  17
      xml2rfc-ext-rfc-erratum-uri parameter  17
      xml2rfc-ext-rfc-reference-base-uri  15, 18
      xml2rfc-ext-rfc-uri parameter  18
      xml2rfc-ext-sec-no-trailing-dots parameter  18
      xml2rfc-ext-std-uri parameter  19
      xml2rfc-ext-support-highwire-press-tags parameter  19
      xml2rfc-ext-support-open-graph-tags parameter  20
      xml2rfc-ext-support-rfc2731 parameter  20
      xml2rfc-ext-ucd-file parameter  20
      xml2rfc-ext-xml2rfc-backend parameter  21
      xml2rfc-ext-xref-with-text-generate parameter  21
      xml2rfc-footer parameter  6
      xml2rfc-header parameter  6
      xml2rfc-inline parameter  6
      xml2rfc-iprnotified parameter  6
      xml2rfc-linkmailto parameter  6
      xml2rfc-multiple-initials parameter  6
      xml2rfc-private parameter  6
      xml2rfc-refparent parameter  6
      xml2rfc-rfcedstyle parameter  6
      xml2rfc-sortrefs parameter  6
      xml2rfc-symrefs parameter  6
      xml2rfc-toc parameter  6
      xml2rfc-tocdepth parameter  6
      xml2rfc-topblock parameter  6
      xref V3 Extension Element  45



Reschke                    Expires May 2, 2026                 [Page 99]

Documentation             RFC7749 through XSLT              October 2025


      xref-with-text-generate PI pseudo-attribute  21
      xsltproc  23
         passing parameters  6

Author's Address

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

   Email: julian.reschke@greenbytes.de
   URI:   https://greenbytes.de/tech/webdav/





































Reschke                    Expires May 2, 2026                [Page 100]
