Ignore:
Timestamp:
Mar 27, 2011, 1:40:55 AM (9 years ago)
Author:
julian.reschke@…
Message:

xml2rfc 1.36

File:
1 edited

Legend:

Unmodified
Added
Removed
  • rfc2629xslt/rfc2629xslt.html

    r1145 r1217  
    356356  }
    357357  @top-right {
    358        content: "February 2011";
     358       content: "March 2011";
    359359  }
    360360  @top-center {
     
    383383    }
    384384}
    385 </style><link rel="Contents" href="#rfc.toc"><link rel="Author" href="#rfc.authors"><link rel="Index" href="#rfc.index"><link rel="Chapter" title="1 Introduction" href="#rfc.section.1"><link rel="Chapter" title="2 Supported RFC2629 elements" href="#rfc.section.2"><link rel="Chapter" title="3 Processing Instructions" href="#rfc.section.3"><link rel="Chapter" title="4 Anchors" href="#rfc.section.4"><link rel="Chapter" title="5 Supported XSLT engines" href="#rfc.section.5"><link rel="Chapter" title="6 Transforming to HTML" href="#rfc.section.6"><link rel="Chapter" title="7 Transforming to XHTML" href="#rfc.section.7"><link rel="Chapter" title="8 Transforming to CHM (Microsoft Compiled Help)" href="#rfc.section.8"><link rel="Chapter" title="9 Transforming to PDF" href="#rfc.section.9"><link rel="Chapter" title="10 Transforming to ePub" href="#rfc.section.10"><link rel="Chapter" title="11 Generic Extensions" href="#rfc.section.11"><link rel="Chapter" title="12 Utilities" href="#rfc.section.12"><link rel="Chapter" href="#rfc.section.13" title="13 Informative References"><link rel="Appendix" title="A RELAX NG Compact Schema" href="#rfc.section.A"><link rel="Appendix" title="B Implementation Notes" href="#rfc.section.B"><link rel="Appendix" title="C Examples" href="#rfc.section.C"><link rel="Appendix" title="D Producing the IETF 'Boilerplate'" href="#rfc.section.D"><link rel="Appendix" title="E License" href="#rfc.section.E"><link rel="Appendix" title="F Change Logs" href="#rfc.section.F"><meta name="generator" content="http://greenbytes.de/tech/webdav/rfc2629.xslt, Revision 1.543, 2011-02-18 21:03:40, XSLT vendor: SAXON 6.5.5 from Michael Kay http://saxon.sf.net/"><meta name="keywords" content="RFC2629, xml2rfc, XSLT, hCard, XSL-FO, PDF, GRDDL, epub, Dublin Core"><link rel="schema.dct" href="http://purl.org/dc/terms/"><meta name="dct.creator" content="Reschke, J. F."></head><body><table class="header"><tbody><tr><td class="left">RFC2629 through XSLT</td><td class="right">J. Reschke</td></tr><tr><td class="left"></td><td class="right">greenbytes</td></tr><tr><td class="left"></td><td class="right">February 2011</td></tr></tbody></table><p class="title">Transforming RFC2629-formatted XML through XSLT</p><hr class="noprint"><h1 class="np" id="rfc.toc"><a href="#rfc.toc">Table of Contents</a></h1><ul class="toc"><li>1.&nbsp;&nbsp;&nbsp;<a href="#rfc.section.1">Introduction</a></li><li>2.&nbsp;&nbsp;&nbsp;<a href="#supported.elements">Supported RFC2629 elements</a><ul><li>2.1&nbsp;&nbsp;&nbsp;<a href="#rfc.section.2.1">Extension elements</a></li></ul></li><li>3.&nbsp;&nbsp;&nbsp;<a href="#processing.instructions">Processing Instructions</a><ul><li>3.1&nbsp;&nbsp;&nbsp;<a href="#rfc.section.3.1">Supported xml2rfc-compatible PIs</a></li><li>3.2&nbsp;&nbsp;&nbsp;<a href="#rfc.section.3.2">Unsupported xml2rfc-compatible PIs</a></li><li>3.3&nbsp;&nbsp;&nbsp;<a href="#rfc.section.3.3">Extension PIs</a></li></ul></li><li>4.&nbsp;&nbsp;&nbsp;<a href="#anchors">Anchors</a></li><li>5.&nbsp;&nbsp;&nbsp;<a href="#xslt.engines">Supported XSLT engines</a><ul><li>5.1&nbsp;&nbsp;&nbsp;<a href="#rfc.section.5.1">Standalone Engines</a></li><li>5.2&nbsp;&nbsp;&nbsp;<a href="#xslt.engines.browser">In-Browser Engines</a></li></ul></li><li>6.&nbsp;&nbsp;&nbsp;<a href="#output.html">Transforming to HTML</a><ul><li>6.1&nbsp;&nbsp;&nbsp;<a href="#rfc.section.6.1">HTML compliance</a></li><li>6.2&nbsp;&nbsp;&nbsp;<a href="#html.link">Standard HTML LINK elements</a></li><li>6.3&nbsp;&nbsp;&nbsp;<a href="#rfc.section.6.3">Standard HTML metadata</a></li><li>6.4&nbsp;&nbsp;&nbsp;<a href="#rfc2731.properties">Dublin Core (RFC2731) metadata</a></li><li>6.5&nbsp;&nbsp;&nbsp;<a href="#hcard">Experimental hCard support</a></li></ul></li><li>7.&nbsp;&nbsp;&nbsp;<a href="#output.xhtml">Transforming to XHTML</a></li><li>8.&nbsp;&nbsp;&nbsp;<a href="#output.chm">Transforming to CHM (Microsoft Compiled Help)</a></li><li>9.&nbsp;&nbsp;&nbsp;<a href="#output.pdf">Transforming to PDF</a><ul><li>9.1&nbsp;&nbsp;&nbsp;<a href="#output.pdf.fop">Via XSL-FO</a><ul><li>9.1.1&nbsp;&nbsp;&nbsp;<a href="#rfc.section.9.1.1">Extension feature matrix</a></li><li>9.1.2&nbsp;&nbsp;&nbsp;<a href="#rfc.section.9.1.2">Example: producing output for Apache FOP</a></li></ul></li><li>9.2&nbsp;&nbsp;&nbsp;<a href="#output.pdf.html">Via X(HTML)</a></li></ul></li><li>10.&nbsp;&nbsp;&nbsp;<a href="#output.epub">Transforming to ePub</a></li><li>11.&nbsp;&nbsp;&nbsp;<a href="#extensions">Generic Extensions</a><ul><li>11.1&nbsp;&nbsp;&nbsp;<a href="#ext.element.abnf-char-sequence">&lt;abnf-char-sequence&gt; element</a></li><li>11.2&nbsp;&nbsp;&nbsp;<a href="#ext.element.anchor-alias">&lt;anchor-alias&gt; element</a></li><li>11.3&nbsp;&nbsp;&nbsp;<a href="#ext.element.bcp14">&lt;bcp14&gt; element</a></li><li>11.4&nbsp;&nbsp;&nbsp;<a href="#ext.element.bb">&lt;bb&gt; element</a></li><li>11.5&nbsp;&nbsp;&nbsp;<a href="#ext.element.bc">&lt;bc&gt; element</a></li><li>11.6&nbsp;&nbsp;&nbsp;<a href="#ext.element.blockquote">&lt;blockquote&gt; element</a></li><li>11.7&nbsp;&nbsp;&nbsp;<a href="#ext.element.boilerplate">&lt;boilerplate&gt; element</a></li><li>11.8&nbsp;&nbsp;&nbsp;<a href="#ext.element.bt">&lt;bt&gt; element</a></li><li>11.9&nbsp;&nbsp;&nbsp;<a href="#ext.element.dfn">&lt;dfn&gt; element</a></li><li>11.10&nbsp;&nbsp;&nbsp;<a href="#ext.element.h">&lt;h&gt; element</a></li><li>11.11&nbsp;&nbsp;&nbsp;<a href="#ext.element.highlight">&lt;highlight&gt; element</a></li><li>11.12&nbsp;&nbsp;&nbsp;<a href="#ext.element.length-of">&lt;length-of&gt; element</a></li><li>11.13&nbsp;&nbsp;&nbsp;<a href="#ext.element.link">&lt;link&gt; element</a></li><li>11.14&nbsp;&nbsp;&nbsp;<a href="#ext.element.lt">&lt;lt&gt; element</a></li><li>11.15&nbsp;&nbsp;&nbsp;<a href="#ext.element.note">&lt;note&gt; element</a></li><li>11.16&nbsp;&nbsp;&nbsp;<a href="#ext.element.parse-xml">&lt;parse-xml&gt; element</a></li><li>11.17&nbsp;&nbsp;&nbsp;<a href="#ext.element.prose">&lt;prose&gt; element</a></li><li>11.18&nbsp;&nbsp;&nbsp;<a href="#ext.element.q">&lt;q&gt; element</a></li><li>11.19&nbsp;&nbsp;&nbsp;<a href="#ext.element.ref">&lt;ref&gt; element</a></li><li>11.20&nbsp;&nbsp;&nbsp;<a href="#ext.element.source">&lt;source&gt; element</a></li><li>11.21&nbsp;&nbsp;&nbsp;<a href="#ext.element.sup">&lt;sup&gt; element</a></li><li>11.22&nbsp;&nbsp;&nbsp;<a href="#ext-rfc2629.artwork">Extensions to Xml2rfc &lt;artwork&gt; element</a></li><li>11.23&nbsp;&nbsp;&nbsp;<a href="#ext-rfc2629.iref">Extensions to Xml2rfc &lt;iref&gt; element</a></li><li>11.24&nbsp;&nbsp;&nbsp;<a href="#ext-rfc2629.list">Extensions to Xml2rfc &lt;list&gt; element</a></li><li>11.25&nbsp;&nbsp;&nbsp;<a href="#ext-rfc2629.rfc">Extensions to Xml2rfc &lt;rfc&gt; element</a></li><li>11.26&nbsp;&nbsp;&nbsp;<a href="#ext-rfc2629.section">Extensions to Xml2rfc &lt;section&gt; element</a></li><li>11.27&nbsp;&nbsp;&nbsp;<a href="#ext-rfc2629.xref">Extensions to Xml2rfc &lt;xref&gt; element</a></li></ul></li><li>12.&nbsp;&nbsp;&nbsp;<a href="#utilities">Utilities</a><ul><li>12.1&nbsp;&nbsp;&nbsp;<a href="#checking-references">Checking References</a></li><li>12.2&nbsp;&nbsp;&nbsp;<a href="#rfc.section.12.2">Generating Graphs from References</a></li><li>12.3&nbsp;&nbsp;&nbsp;<a href="#rfc.section.12.3">Producing reference entries for books</a></li><li>12.4&nbsp;&nbsp;&nbsp;<a href="#clean-for-dtd">Down-converting to RFC2629bis DTD</a></li><li>12.5&nbsp;&nbsp;&nbsp;<a href="#extract-artwork">Extracting artwork</a></li><li>12.6&nbsp;&nbsp;&nbsp;<a href="#grddl">GRRDL</a></li></ul></li><li>13.&nbsp;&nbsp;&nbsp;<a href="#rfc.references">Informative References</a></li><li><a href="#rfc.authors">Author's Address</a></li><li>A.&nbsp;&nbsp;&nbsp;<a href="#grammar">RELAX NG Compact Schema</a></li><li>B.&nbsp;&nbsp;&nbsp;<a href="#rfc.section.B">Implementation Notes</a><ul><li>B.1&nbsp;&nbsp;&nbsp;<a href="#rfc.section.B.1">Recognized type attributes for &lt;artwork&gt; element</a></li></ul></li><li>C.&nbsp;&nbsp;&nbsp;<a href="#examples">Examples</a><ul><li>C.1&nbsp;&nbsp;&nbsp;<a href="#examples.internalsubset">Using the 'Internal Subset'</a></li><li>C.2&nbsp;&nbsp;&nbsp;<a href="#examples.customizing">Customization</a></li></ul></li><li>D.&nbsp;&nbsp;&nbsp;<a href="#boilerplate">Producing the IETF 'Boilerplate'</a><ul><li>D.1&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr">The /rfc/@ipr Attribute</a><ul><li>D.1.1&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-current">Current Values: '*trust200902'</a><ul><li>D.1.1.1&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-trust200902">trust200902</a></li><li>D.1.1.2&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-noModificationTrust200902">noModificationTrust200902</a></li><li>D.1.1.3&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-noDerivativesTrust200902">noDerivativesTrust200902</a></li><li>D.1.1.4&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-pre5378Trust200902">pre5378Trust200902</a></li></ul></li><li>D.1.2&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-historic">Historic Values</a><ul><li>D.1.2.1&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-200811">Historic Values: '*trust200811'</a></li><li>D.1.2.2&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-3978">Historic Values: '*3978'</a></li><li>D.1.2.3&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-3667">Historic Values: '*3667'</a></li><li>D.1.2.4&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-2026">Historic Values: '*2026'</a></li></ul></li></ul></li><li>D.2&nbsp;&nbsp;&nbsp;<a href="#attribute-category">The /rfc/@category Attribute</a></li><li>D.3&nbsp;&nbsp;&nbsp;<a href="#attribute-submissiontype">The /rfc/@submissionType Attribute</a></li><li>D.4&nbsp;&nbsp;&nbsp;<a href="#attribute-consensus">The /rfc/@consensus Attribute</a></li><li>D.5&nbsp;&nbsp;&nbsp;<a href="#attribute-number">The /rfc/@number Attribute</a></li><li>D.6&nbsp;&nbsp;&nbsp;<a href="#attribute-docname">The /rfc/@docName Attribute</a></li><li>D.7&nbsp;&nbsp;&nbsp;<a href="#attribute-obsoletes">The /rfc/@obsoletes Attribute</a></li><li>D.8&nbsp;&nbsp;&nbsp;<a href="#attribute-updates">The /rfc/@updates Attribute</a></li></ul></li><li>E.&nbsp;&nbsp;&nbsp;<a href="#license">License</a></li><li>F.&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F">Change Logs</a><ul><li>F.1&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.1">Package</a></li><li>F.2&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.2">amazon-asin.xslt</a></li><li>F.3&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.3">check-references.xslt</a></li><li>F.4&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.4">gen-reference-graph.xslt</a></li><li>F.5&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.5">rfc2629.xslt</a></li><li>F.6&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.6">rfc2629toFO.xslt</a></li><li>F.7&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.7">xsl11toAn.xslt</a></li><li>F.8&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.8">xsl11toFop.xslt</a></li><li>F.9&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.9">xsl11toXep.xslt</a></li></ul></li><li><a href="#rfc.index">Index</a></li></ul><hr class="noprint"><h1 id="rfc.section.1" class="np"><a href="#rfc.section.1">1.</a>&nbsp;Introduction</h1><p id="rfc.section.1.p.1">This document describes a set of XSLT transformations that can be used to transform RFC2629-compliant XML (see <a href="#RFC2629" id="rfc.xref.RFC2629.1"><cite title="Writing I-Ds and RFCs using XML">[RFC2629]</cite></a>) to various output formats, such as HTML and PDF. The main topics are </p><ul><li>compliance to the xml2rfc XML element set (<a href="#supported.elements" title="Supported RFC2629 elements">Section&nbsp;2</a>),</li><li>support for xml2rfc processing instructions (<a href="#processing.instructions" title="Processing Instructions">Section&nbsp;3</a>),</li><li>the names of anchor elements generated in HTML and PDF output (<a href="#anchors" title="Anchors">Section&nbsp;4</a>),</li><li>various XSLT engines that can be used (<a href="#xslt.engines" title="Supported XSLT engines">Section&nbsp;5</a>),</li><li>outputting HTML (<a href="#output.html" title="Transforming to HTML">Section&nbsp;6</a>) and XHTML (<a href="#output.xhtml" title="Transforming to XHTML">Section&nbsp;7</a>),</li><li>outputting CHM (Compiled Microsoft Help, <a href="#output.chm" title="Transforming to CHM (Microsoft Compiled Help)">Section&nbsp;8</a>),</li><li>outputting PDF (<a href="#output.pdf" title="Transforming to PDF">Section&nbsp;9</a>),</li><li>extensions to the xml2rfc vocabulary (<a href="#extensions" title="Generic Extensions">Section&nbsp;11</a>).</li><li>various utilities (<a href="#utilities" title="Utilities">Section&nbsp;12</a>).</li></ul><p id="rfc.section.1.p.2">The full distribution is available at &lt;<a href="http://greenbytes.de/tech/webdav/rfc2629xslt.zip">http://greenbytes.de/tech/webdav/rfc2629xslt.zip</a>&gt;.</p><hr class="noprint"><h1 id="rfc.section.2" class="np"><a href="#rfc.section.2">2.</a>&nbsp;<a id="supported.elements" href="#supported.elements">Supported RFC2629 elements</a></h1><p id="rfc.section.2.p.1"> <samp>rfc2629.xslt</samp> supports both all RFC2629 grammar elements and the extensions implemented in xml2rfc 1.33.</p><h2 id="rfc.section.2.1"><a href="#rfc.section.2.1">2.1</a>&nbsp;Extension elements</h2><p id="rfc.section.2.1.p.1"> <samp>rfc2629.xslt</samp> supports two kind of extension elements, using different XML namespaces.</p><p id="rfc.section.2.1.p.2">The first set contains (hopefully) generally useful extensions, see <a href="#extensions" title="Generic Extensions">Section&nbsp;11</a>.</p><p id="rfc.section.2.1.p.3">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.</p><hr class="noprint"><h1 id="rfc.section.3" class="np"><a href="#rfc.section.3">3.</a>&nbsp;<a id="processing.instructions" href="#processing.instructions">Processing Instructions</a></h1><p id="rfc.section.3.p.1">All PIs can be set as XSLT parameter as well, overriding any value that is found in the source file to be transformed.</p><div id="rfc.figure.u.1"></div> <p>Using processing instructions:</p>  <pre class="text">&lt;?rfc toc="yes"?&gt;
     385</style><link rel="Contents" href="#rfc.toc"><link rel="Author" href="#rfc.authors"><link rel="Index" href="#rfc.index"><link rel="Chapter" title="1 Introduction" href="#rfc.section.1"><link rel="Chapter" title="2 Supported RFC2629 elements" href="#rfc.section.2"><link rel="Chapter" title="3 Processing Instructions" href="#rfc.section.3"><link rel="Chapter" title="4 Anchors" href="#rfc.section.4"><link rel="Chapter" title="5 Supported XSLT engines" href="#rfc.section.5"><link rel="Chapter" title="6 Transforming to HTML" href="#rfc.section.6"><link rel="Chapter" title="7 Transforming to XHTML" href="#rfc.section.7"><link rel="Chapter" title="8 Transforming to CHM (Microsoft Compiled Help)" href="#rfc.section.8"><link rel="Chapter" title="9 Transforming to PDF" href="#rfc.section.9"><link rel="Chapter" title="10 Transforming to ePub" href="#rfc.section.10"><link rel="Chapter" title="11 Generic Extensions" href="#rfc.section.11"><link rel="Chapter" title="12 Utilities" href="#rfc.section.12"><link rel="Chapter" href="#rfc.section.13" title="13 Informative References"><link rel="Appendix" title="A RELAX NG Compact Schema" href="#rfc.section.A"><link rel="Appendix" title="B Implementation Notes" href="#rfc.section.B"><link rel="Appendix" title="C Examples" href="#rfc.section.C"><link rel="Appendix" title="D Producing the IETF 'Boilerplate'" href="#rfc.section.D"><link rel="Appendix" title="E License" href="#rfc.section.E"><link rel="Appendix" title="F Change Logs" href="#rfc.section.F"><meta name="generator" content="http://greenbytes.de/tech/webdav/rfc2629.xslt, Revision 1.543, 2011-02-18 21:03:40, XSLT vendor: SAXON 6.5.5 from Michael Kay http://saxon.sf.net/"><meta name="keywords" content="RFC2629, xml2rfc, XSLT, hCard, XSL-FO, PDF, GRDDL, epub, Dublin Core"><link rel="schema.dct" href="http://purl.org/dc/terms/"><meta name="dct.creator" content="Reschke, J. F."></head><body><table class="header"><tbody><tr><td class="left">RFC2629 through XSLT</td><td class="right">J. Reschke</td></tr><tr><td class="left"></td><td class="right">greenbytes</td></tr><tr><td class="left"></td><td class="right">March 2011</td></tr></tbody></table><p class="title">Transforming RFC2629-formatted XML through XSLT</p><hr class="noprint"><h1 class="np" id="rfc.toc"><a href="#rfc.toc">Table of Contents</a></h1><ul class="toc"><li>1.&nbsp;&nbsp;&nbsp;<a href="#rfc.section.1">Introduction</a></li><li>2.&nbsp;&nbsp;&nbsp;<a href="#supported.elements">Supported RFC2629 elements</a><ul><li>2.1&nbsp;&nbsp;&nbsp;<a href="#rfc.section.2.1">Extension elements</a></li></ul></li><li>3.&nbsp;&nbsp;&nbsp;<a href="#processing.instructions">Processing Instructions</a><ul><li>3.1&nbsp;&nbsp;&nbsp;<a href="#rfc.section.3.1">Supported xml2rfc-compatible PIs</a></li><li>3.2&nbsp;&nbsp;&nbsp;<a href="#rfc.section.3.2">Unsupported xml2rfc-compatible PIs</a></li><li>3.3&nbsp;&nbsp;&nbsp;<a href="#rfc.section.3.3">Extension PIs</a></li></ul></li><li>4.&nbsp;&nbsp;&nbsp;<a href="#anchors">Anchors</a></li><li>5.&nbsp;&nbsp;&nbsp;<a href="#xslt.engines">Supported XSLT engines</a><ul><li>5.1&nbsp;&nbsp;&nbsp;<a href="#rfc.section.5.1">Standalone Engines</a></li><li>5.2&nbsp;&nbsp;&nbsp;<a href="#xslt.engines.browser">In-Browser Engines</a></li></ul></li><li>6.&nbsp;&nbsp;&nbsp;<a href="#output.html">Transforming to HTML</a><ul><li>6.1&nbsp;&nbsp;&nbsp;<a href="#rfc.section.6.1">HTML compliance</a></li><li>6.2&nbsp;&nbsp;&nbsp;<a href="#html.link">Standard HTML LINK elements</a></li><li>6.3&nbsp;&nbsp;&nbsp;<a href="#rfc.section.6.3">Standard HTML metadata</a></li><li>6.4&nbsp;&nbsp;&nbsp;<a href="#rfc2731.properties">Dublin Core (RFC2731) metadata</a></li><li>6.5&nbsp;&nbsp;&nbsp;<a href="#hcard">Experimental hCard support</a></li></ul></li><li>7.&nbsp;&nbsp;&nbsp;<a href="#output.xhtml">Transforming to XHTML</a></li><li>8.&nbsp;&nbsp;&nbsp;<a href="#output.chm">Transforming to CHM (Microsoft Compiled Help)</a></li><li>9.&nbsp;&nbsp;&nbsp;<a href="#output.pdf">Transforming to PDF</a><ul><li>9.1&nbsp;&nbsp;&nbsp;<a href="#output.pdf.fop">Via XSL-FO</a><ul><li>9.1.1&nbsp;&nbsp;&nbsp;<a href="#rfc.section.9.1.1">Extension feature matrix</a></li><li>9.1.2&nbsp;&nbsp;&nbsp;<a href="#rfc.section.9.1.2">Example: producing output for Apache FOP</a></li></ul></li><li>9.2&nbsp;&nbsp;&nbsp;<a href="#output.pdf.html">Via X(HTML)</a></li></ul></li><li>10.&nbsp;&nbsp;&nbsp;<a href="#output.epub">Transforming to ePub</a></li><li>11.&nbsp;&nbsp;&nbsp;<a href="#extensions">Generic Extensions</a><ul><li>11.1&nbsp;&nbsp;&nbsp;<a href="#ext.element.abnf-char-sequence">&lt;abnf-char-sequence&gt; element</a></li><li>11.2&nbsp;&nbsp;&nbsp;<a href="#ext.element.anchor-alias">&lt;anchor-alias&gt; element</a></li><li>11.3&nbsp;&nbsp;&nbsp;<a href="#ext.element.bcp14">&lt;bcp14&gt; element</a></li><li>11.4&nbsp;&nbsp;&nbsp;<a href="#ext.element.bb">&lt;bb&gt; element</a></li><li>11.5&nbsp;&nbsp;&nbsp;<a href="#ext.element.bc">&lt;bc&gt; element</a></li><li>11.6&nbsp;&nbsp;&nbsp;<a href="#ext.element.blockquote">&lt;blockquote&gt; element</a></li><li>11.7&nbsp;&nbsp;&nbsp;<a href="#ext.element.boilerplate">&lt;boilerplate&gt; element</a></li><li>11.8&nbsp;&nbsp;&nbsp;<a href="#ext.element.bt">&lt;bt&gt; element</a></li><li>11.9&nbsp;&nbsp;&nbsp;<a href="#ext.element.dfn">&lt;dfn&gt; element</a></li><li>11.10&nbsp;&nbsp;&nbsp;<a href="#ext.element.h">&lt;h&gt; element</a></li><li>11.11&nbsp;&nbsp;&nbsp;<a href="#ext.element.highlight">&lt;highlight&gt; element</a></li><li>11.12&nbsp;&nbsp;&nbsp;<a href="#ext.element.length-of">&lt;length-of&gt; element</a></li><li>11.13&nbsp;&nbsp;&nbsp;<a href="#ext.element.link">&lt;link&gt; element</a></li><li>11.14&nbsp;&nbsp;&nbsp;<a href="#ext.element.lt">&lt;lt&gt; element</a></li><li>11.15&nbsp;&nbsp;&nbsp;<a href="#ext.element.note">&lt;note&gt; element</a></li><li>11.16&nbsp;&nbsp;&nbsp;<a href="#ext.element.parse-xml">&lt;parse-xml&gt; element</a></li><li>11.17&nbsp;&nbsp;&nbsp;<a href="#ext.element.prose">&lt;prose&gt; element</a></li><li>11.18&nbsp;&nbsp;&nbsp;<a href="#ext.element.q">&lt;q&gt; element</a></li><li>11.19&nbsp;&nbsp;&nbsp;<a href="#ext.element.ref">&lt;ref&gt; element</a></li><li>11.20&nbsp;&nbsp;&nbsp;<a href="#ext.element.source">&lt;source&gt; element</a></li><li>11.21&nbsp;&nbsp;&nbsp;<a href="#ext.element.sup">&lt;sup&gt; element</a></li><li>11.22&nbsp;&nbsp;&nbsp;<a href="#ext-rfc2629.artwork">Extensions to Xml2rfc &lt;artwork&gt; element</a></li><li>11.23&nbsp;&nbsp;&nbsp;<a href="#ext-rfc2629.iref">Extensions to Xml2rfc &lt;iref&gt; element</a></li><li>11.24&nbsp;&nbsp;&nbsp;<a href="#ext-rfc2629.list">Extensions to Xml2rfc &lt;list&gt; element</a></li><li>11.25&nbsp;&nbsp;&nbsp;<a href="#ext-rfc2629.rfc">Extensions to Xml2rfc &lt;rfc&gt; element</a></li><li>11.26&nbsp;&nbsp;&nbsp;<a href="#ext-rfc2629.section">Extensions to Xml2rfc &lt;section&gt; element</a></li><li>11.27&nbsp;&nbsp;&nbsp;<a href="#ext-rfc2629.xref">Extensions to Xml2rfc &lt;xref&gt; element</a></li></ul></li><li>12.&nbsp;&nbsp;&nbsp;<a href="#utilities">Utilities</a><ul><li>12.1&nbsp;&nbsp;&nbsp;<a href="#checking-references">Checking References</a></li><li>12.2&nbsp;&nbsp;&nbsp;<a href="#rfc.section.12.2">Generating Graphs from References</a></li><li>12.3&nbsp;&nbsp;&nbsp;<a href="#rfc.section.12.3">Producing reference entries for books</a></li><li>12.4&nbsp;&nbsp;&nbsp;<a href="#clean-for-dtd">Down-converting to RFC2629bis DTD</a></li><li>12.5&nbsp;&nbsp;&nbsp;<a href="#extract-artwork">Extracting artwork</a></li><li>12.6&nbsp;&nbsp;&nbsp;<a href="#grddl">GRRDL</a></li></ul></li><li>13.&nbsp;&nbsp;&nbsp;<a href="#rfc.references">Informative References</a></li><li><a href="#rfc.authors">Author's Address</a></li><li>A.&nbsp;&nbsp;&nbsp;<a href="#grammar">RELAX NG Compact Schema</a></li><li>B.&nbsp;&nbsp;&nbsp;<a href="#rfc.section.B">Implementation Notes</a><ul><li>B.1&nbsp;&nbsp;&nbsp;<a href="#rfc.section.B.1">Recognized type attributes for &lt;artwork&gt; element</a></li></ul></li><li>C.&nbsp;&nbsp;&nbsp;<a href="#examples">Examples</a><ul><li>C.1&nbsp;&nbsp;&nbsp;<a href="#examples.internalsubset">Using the 'Internal Subset'</a></li><li>C.2&nbsp;&nbsp;&nbsp;<a href="#examples.customizing">Customization</a></li></ul></li><li>D.&nbsp;&nbsp;&nbsp;<a href="#boilerplate">Producing the IETF 'Boilerplate'</a><ul><li>D.1&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr">The /rfc/@ipr Attribute</a><ul><li>D.1.1&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-current">Current Values: '*trust200902'</a><ul><li>D.1.1.1&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-trust200902">trust200902</a></li><li>D.1.1.2&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-noModificationTrust200902">noModificationTrust200902</a></li><li>D.1.1.3&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-noDerivativesTrust200902">noDerivativesTrust200902</a></li><li>D.1.1.4&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-pre5378Trust200902">pre5378Trust200902</a></li></ul></li><li>D.1.2&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-historic">Historic Values</a><ul><li>D.1.2.1&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-200811">Historic Values: '*trust200811'</a></li><li>D.1.2.2&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-3978">Historic Values: '*3978'</a></li><li>D.1.2.3&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-3667">Historic Values: '*3667'</a></li><li>D.1.2.4&nbsp;&nbsp;&nbsp;<a href="#attribute-ipr-2026">Historic Values: '*2026'</a></li></ul></li></ul></li><li>D.2&nbsp;&nbsp;&nbsp;<a href="#attribute-category">The /rfc/@category Attribute</a></li><li>D.3&nbsp;&nbsp;&nbsp;<a href="#attribute-submissiontype">The /rfc/@submissionType Attribute</a></li><li>D.4&nbsp;&nbsp;&nbsp;<a href="#attribute-consensus">The /rfc/@consensus Attribute</a></li><li>D.5&nbsp;&nbsp;&nbsp;<a href="#attribute-number">The /rfc/@number Attribute</a></li><li>D.6&nbsp;&nbsp;&nbsp;<a href="#attribute-docname">The /rfc/@docName Attribute</a></li><li>D.7&nbsp;&nbsp;&nbsp;<a href="#attribute-obsoletes">The /rfc/@obsoletes Attribute</a></li><li>D.8&nbsp;&nbsp;&nbsp;<a href="#attribute-updates">The /rfc/@updates Attribute</a></li></ul></li><li>E.&nbsp;&nbsp;&nbsp;<a href="#license">License</a></li><li>F.&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F">Change Logs</a><ul><li>F.1&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.1">Package</a></li><li>F.2&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.2">amazon-asin.xslt</a></li><li>F.3&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.3">check-references.xslt</a></li><li>F.4&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.4">gen-reference-graph.xslt</a></li><li>F.5&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.5">rfc2629.xslt</a></li><li>F.6&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.6">rfc2629toFO.xslt</a></li><li>F.7&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.7">xsl11toAn.xslt</a></li><li>F.8&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.8">xsl11toFop.xslt</a></li><li>F.9&nbsp;&nbsp;&nbsp;<a href="#rfc.section.F.9">xsl11toXep.xslt</a></li></ul></li><li><a href="#rfc.index">Index</a></li></ul><hr class="noprint"><h1 id="rfc.section.1" class="np"><a href="#rfc.section.1">1.</a>&nbsp;Introduction</h1><p id="rfc.section.1.p.1">This document describes a set of XSLT transformations that can be used to transform RFC2629-compliant XML (see <a href="#RFC2629" id="rfc.xref.RFC2629.1"><cite title="Writing I-Ds and RFCs using XML">[RFC2629]</cite></a>) to various output formats, such as HTML and PDF. The main topics are </p><ul><li>compliance to the xml2rfc XML element set (<a href="#supported.elements" title="Supported RFC2629 elements">Section&nbsp;2</a>),</li><li>support for xml2rfc processing instructions (<a href="#processing.instructions" title="Processing Instructions">Section&nbsp;3</a>),</li><li>the names of anchor elements generated in HTML and PDF output (<a href="#anchors" title="Anchors">Section&nbsp;4</a>),</li><li>various XSLT engines that can be used (<a href="#xslt.engines" title="Supported XSLT engines">Section&nbsp;5</a>),</li><li>outputting HTML (<a href="#output.html" title="Transforming to HTML">Section&nbsp;6</a>) and XHTML (<a href="#output.xhtml" title="Transforming to XHTML">Section&nbsp;7</a>),</li><li>outputting CHM (Compiled Microsoft Help, <a href="#output.chm" title="Transforming to CHM (Microsoft Compiled Help)">Section&nbsp;8</a>),</li><li>outputting PDF (<a href="#output.pdf" title="Transforming to PDF">Section&nbsp;9</a>),</li><li>extensions to the xml2rfc vocabulary (<a href="#extensions" title="Generic Extensions">Section&nbsp;11</a>).</li><li>various utilities (<a href="#utilities" title="Utilities">Section&nbsp;12</a>).</li></ul><p id="rfc.section.1.p.2">The full distribution is available at &lt;<a href="http://greenbytes.de/tech/webdav/rfc2629xslt.zip">http://greenbytes.de/tech/webdav/rfc2629xslt.zip</a>&gt;.</p><hr class="noprint"><h1 id="rfc.section.2" class="np"><a href="#rfc.section.2">2.</a>&nbsp;<a id="supported.elements" href="#supported.elements">Supported RFC2629 elements</a></h1><p id="rfc.section.2.p.1"> <samp>rfc2629.xslt</samp> supports both all RFC2629 grammar elements and the extensions implemented in xml2rfc 1.33.</p><h2 id="rfc.section.2.1"><a href="#rfc.section.2.1">2.1</a>&nbsp;Extension elements</h2><p id="rfc.section.2.1.p.1"> <samp>rfc2629.xslt</samp> supports two kind of extension elements, using different XML namespaces.</p><p id="rfc.section.2.1.p.2">The first set contains (hopefully) generally useful extensions, see <a href="#extensions" title="Generic Extensions">Section&nbsp;11</a>.</p><p id="rfc.section.2.1.p.3">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.</p><hr class="noprint"><h1 id="rfc.section.3" class="np"><a href="#rfc.section.3">3.</a>&nbsp;<a id="processing.instructions" href="#processing.instructions">Processing Instructions</a></h1><p id="rfc.section.3.p.1">All PIs can be set as XSLT parameter as well, overriding any value that is found in the source file to be transformed.</p><div id="rfc.figure.u.1"></div> <p>Using processing instructions:</p>  <pre class="text">&lt;?rfc toc="yes"?&gt;
    386386&lt;?rfc-ext support-rfc2731="no"?&gt;
    387387</pre> <div id="rfc.figure.u.2"></div> <p>Using XSLT parameters (Saxon):</p>  <pre class="text">java -cp saxon.jar com.icl.saxon.StyleSheet source.xml rfc2629.xslt \
     
    390390   --param xml2rfc-ext-support-rfc2731 '"no"' \
    391391   rfc2629.xslt source.xml &gt; result.html
    392 </pre>  <p>(note the required quoting of string parameters)<span id="rfc.iref.x.1"></span></p> <h2 id="rfc.section.3.1"><a href="#rfc.section.3.1">3.1</a>&nbsp;Supported xml2rfc-compatible PIs</h2><div id="rfc.table.u.1"><table class="tt full center" cellpadding="3" cellspacing="0"><thead><tr><th>PI target</th><th>PI pseudo-attribute</th><th>XSLT parameter name</th><th>default</th><th>comment</th></tr></thead><tbody><tr><td class="left">rfc</td><td class="left">background<div id="rfc.iref.b.1"></div><div id="rfc.iref.p.1"></div></td><td class="left">xml2rfc-background<div id="rfc.iref.x.2"></div>  <div id="rfc.iref.p.2"></div></td><td class="left">(not set)</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">compact<div id="rfc.iref.c.1"></div><div id="rfc.iref.p.3"></div></td><td class="left">xml2rfc-compact<div id="rfc.iref.x.3"></div>  <div id="rfc.iref.p.4"></div></td><td class="left">"no"</td><td class="left">only applies to HTML output method when printing</td></tr><tr><td class="left">rfc</td><td class="left">comments<div id="rfc.iref.c.2"></div><div id="rfc.iref.p.5"></div></td><td class="left">xml2rfc-comments<div id="rfc.iref.x.4"></div>  <div id="rfc.iref.p.6"></div></td><td class="left">(not set)</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">editing<div id="rfc.iref.e.1"></div><div id="rfc.iref.p.7"></div></td><td class="left">xml2rfc-editing<div id="rfc.iref.x.5"></div>  <div id="rfc.iref.p.8"></div></td><td class="left">"no"</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">footer<div id="rfc.iref.f.1"></div><div id="rfc.iref.p.9"></div></td><td class="left">xml2rfc-footer<div id="rfc.iref.x.6"></div>  <div id="rfc.iref.p.10"></div></td><td class="left">(not set)</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">header<div id="rfc.iref.h.1"></div><div id="rfc.iref.p.11"></div></td><td class="left">xml2rfc-header<div id="rfc.iref.x.7"></div>  <div id="rfc.iref.p.12"></div></td><td class="left">(not set)</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">inline<div id="rfc.iref.i.1"></div><div id="rfc.iref.p.13"></div></td><td class="left">xml2rfc-inline<div id="rfc.iref.x.8"></div>  <div id="rfc.iref.p.14"></div></td><td class="left">(not set)</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">iprnotified<div id="rfc.iref.i.2"></div><div id="rfc.iref.p.15"></div></td><td class="left">xml2rfc-iprnotified<div id="rfc.iref.x.9"></div>  <div id="rfc.iref.p.16"></div></td><td class="left">"no"</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">linkmailto<div id="rfc.iref.l.1"></div><div id="rfc.iref.p.17"></div></td><td class="left">xml2rfc-linkmailto<div id="rfc.iref.x.10"></div>  <div id="rfc.iref.p.18"></div></td><td class="left">"yes"</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">private<div id="rfc.iref.p.19"></div><div id="rfc.iref.p.20"></div></td><td class="left">xml2rfc-private<div id="rfc.iref.x.11"></div>  <div id="rfc.iref.p.21"></div></td><td class="left">(not set)</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">refparent<div id="rfc.iref.r.1"></div><div id="rfc.iref.p.22"></div></td><td class="left">xml2rfc-private<div id="rfc.iref.x.12"></div>  <div id="rfc.iref.p.23"></div></td><td class="left">"References"</td><td class="left">Title for References sections when automatically inserted</td></tr><tr><td class="left">rfc</td><td class="left">rfcedstyle<div id="rfc.iref.r.2"></div><div id="rfc.iref.p.24"></div></td><td class="left">xml2rfc-rfcedstyle<div id="rfc.iref.x.13"></div>  <div id="rfc.iref.p.25"></div></td><td class="left">(not set)</td><td class="left">(limited support)</td></tr><tr><td class="left">rfc</td><td class="left">sortrefs<div id="rfc.iref.s.1"></div><div id="rfc.iref.p.26"></div></td><td class="left">xml2rfc-sortrefs<div id="rfc.iref.x.14"></div>  <div id="rfc.iref.p.27"></div></td><td class="left">"no"</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">symrefs<div id="rfc.iref.s.2"></div><div id="rfc.iref.p.28"></div></td><td class="left">xml2rfc-symrefs<div id="rfc.iref.x.15"></div>  <div id="rfc.iref.p.29"></div></td><td class="left">"yes"</td><td class="left">The default has changed from "no" to "yes" as of June 6, 2007 and xml2rfc 1.33pre4.</td></tr><tr><td class="left">rfc</td><td class="left">toc<div id="rfc.iref.t.1"></div><div id="rfc.iref.p.30"></div></td><td class="left">xml2rfc-toc<div id="rfc.iref.x.16"></div>  <div id="rfc.iref.p.31"></div></td><td class="left">"no"</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">tocdepth<div id="rfc.iref.t.2"></div><div id="rfc.iref.p.32"></div></td><td class="left">xml2rfc-tocdepth<div id="rfc.iref.x.17"></div>  <div id="rfc.iref.p.33"></div></td><td class="left">99</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">topblock<div id="rfc.iref.t.3"></div><div id="rfc.iref.p.34"></div></td><td class="left">xml2rfc-topblock<div id="rfc.iref.x.18"></div>  <div id="rfc.iref.p.35"></div></td><td class="left">"yes"</td><td class="left"></td></tr></tbody></table></div><h2 id="rfc.section.3.2"><a href="#rfc.section.3.2">3.2</a>&nbsp;Unsupported xml2rfc-compatible PIs</h2><div id="rfc.table.u.2"><table class="tt full center" cellpadding="3" cellspacing="0"><thead><tr><th>PI target</th><th>PI pseudo-attribute</th><th>comment</th></tr></thead><tbody><tr><td class="left">rfc</td><td class="left">include<div id="rfc.iref.i.3"></div><div id="rfc.iref.p.36"></div></td><td class="left">incompatible with XML/XSLT processing model, please use external entities instead</td></tr><tr><td class="left">rfc</td><td class="left">needLines<div id="rfc.iref.n.1"></div><div id="rfc.iref.p.37"></div></td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">slides<div id="rfc.iref.s.3"></div><div id="rfc.iref.p.38"></div></td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">strict<div id="rfc.iref.s.4"></div><div id="rfc.iref.p.39"></div></td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">subcompact<div id="rfc.iref.s.5"></div><div id="rfc.iref.p.40"></div></td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">tocindent<div id="rfc.iref.t.4"></div><div id="rfc.iref.p.41"></div></td><td class="left">(defaults to "yes")</td></tr><tr><td class="left">rfc</td><td class="left">tocompact<div id="rfc.iref.t.5"></div><div id="rfc.iref.p.42"></div></td><td class="left"></td></tr></tbody></table></div><h2 id="rfc.section.3.3"><a href="#rfc.section.3.3">3.3</a>&nbsp;Extension PIs</h2><div id="rfc.table.u.3"><table class="tt full center" cellpadding="3" cellspacing="0"><thead><tr><th>PI target</th><th>PI pseudo-attribute</th><th>XSLT parameter name</th><th>default</th><th>description</th></tr></thead><tbody><tr><td class="left">rfc-ext</td><td class="left">allow-markup-in-artwork<div id="rfc.iref.a.1"></div><div id="rfc.iref.p.43"></div></td><td class="left">xml2rfc-allow-markup-in-artwork<div id="rfc.iref.x.19"></div>  <div id="rfc.iref.p.44"></div></td><td class="left">"no"</td><td class="left">Enables support for specific elements inside abstract elements (using this extension makes the document incompatible to the RFC2629bis DTD; see description of conversion XSLT in <a href="#clean-for-dtd" title="Down-converting to RFC2629bis DTD">Section&nbsp;12.4</a>).</td></tr><tr><td class="left">rfc-ext</td><td class="left">authors-section<div id="rfc.iref.a.2"></div><div id="rfc.iref.p.45"></div></td><td class="left">xml2rfc-ext-authors-section<div id="rfc.iref.x.20"></div>  <div id="rfc.iref.p.46"></div></td><td class="left"></td><td class="left">When "end", place the authors section at the end (just before the copyright statements). This seems to be the preferred order in the newest RFCs.</td></tr><tr><td class="left">rfc-ext</td><td class="left">duplex<div id="rfc.iref.d.1"></div><div id="rfc.iref.p.47"></div></td><td class="left">xml2rfc-ext-duplex<div id="rfc.iref.x.21"></div>  <div id="rfc.iref.p.48"></div></td><td class="left">no</td><td class="left">When set to "yes", format the PDF output for doublesided printing.</td></tr><tr><td class="left">rfc-ext</td><td class="left">include-references-in-index<div id="rfc.iref.i.4"></div><div id="rfc.iref.p.49"></div></td><td class="left">xml2rfc-ext-include-references-in-index<div id="rfc.iref.x.22"></div>  <div id="rfc.iref.p.50"></div></td><td class="left"></td><td class="left">When set to "yes", index entries are generated for all references.</td></tr><tr><td class="left">rfc-ext</td><td class="left">justification<div id="rfc.iref.j.1"></div><div id="rfc.iref.p.51"></div></td><td class="left">xml2rfc-ext-justification<div id="rfc.iref.x.23"></div>  <div id="rfc.iref.p.52"></div></td><td class="left">"never"</td><td class="left">"never": never emit justified text, "always": always emit justified text, "print": only emit justified text for print media.</td></tr><tr><td class="left">rfc-ext</td><td class="left">parse-xml-in-artwork<div id="rfc.iref.p.53"></div><div id="rfc.iref.p.54"></div></td><td class="left">xml2rfc-parse-xml-in-artwork<div id="rfc.iref.x.24"></div>  <div id="rfc.iref.p.55"></div></td><td class="left">"no"</td><td class="left">May be used to enable parsing of XML content in figures (MSXML only).</td></tr><tr><td class="left">rfc-ext</td><td class="left">support-rfc2731<div id="rfc.iref.s.6"></div><div id="rfc.iref.p.56"></div></td><td class="left">xml2rfc-ext-support-rfc2731<div id="rfc.iref.x.25"></div>  <div id="rfc.iref.p.57"></div></td><td class="left">"yes"</td><td class="left">Decides whether the HTML transformation should generate META tags according <a href="#rfc2731.properties" title="Dublin Core (RFC2731) metadata">Section&nbsp;6.4</a>.</td></tr><tr><td class="left">rfc-ext</td><td class="left">sec-no-trailing-dots<div id="rfc.iref.s.7"></div><div id="rfc.iref.p.58"></div></td><td class="left">xml2rfc-ext-sec-no-trailing-dots<div id="rfc.iref.x.26"></div>  <div id="rfc.iref.p.59"></div></td><td class="left"></td><td class="left">When set to "yes", add trailing dots to section numbers. This seems to be the preferred format in the newest RFCs.</td></tr></tbody></table></div><hr class="noprint"><h1 id="rfc.section.4" class="np"><a href="#rfc.section.4">4.</a>&nbsp;<a id="anchors" href="#anchors">Anchors</a></h1><p id="rfc.section.4.p.1">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).</p><div id="rfc.table.u.4"><p>The following anchors get auto-generated:</p><table class="tt full center" cellpadding="3" cellspacing="0"><thead><tr><th>Anchor name</th><th>Description</th></tr></thead><tbody><tr><td class="left">rfc.abstract <div id="rfc.iref.r.3"></div><div id="rfc.iref.a.3"></div></td><td class="left">Abstract</td></tr><tr><td class="left">rfc.authors <div id="rfc.iref.r.4"></div><div id="rfc.iref.a.4"></div></td><td class="left">Authors section</td></tr><tr><td class="left">rfc.copyright <div id="rfc.iref.r.5"></div><div id="rfc.iref.a.5"></div></td><td class="left">Copyright section</td></tr><tr><td class="left">rfc.copyrightnotice <div id="rfc.iref.r.6"></div><div id="rfc.iref.a.6"></div></td><td class="left">Copyright notice</td></tr><tr><td class="left">rfc.figure.<em>n</em>  <div id="rfc.iref.r.7"></div><div id="rfc.iref.a.7"></div></td><td class="left">Figures (titled)</td></tr><tr><td class="left">rfc.figure.u.<em>n</em>  <div id="rfc.iref.r.8"></div><div id="rfc.iref.a.8"></div></td><td class="left">Figures (untitled)</td></tr><tr><td class="left">rfc.index <div id="rfc.iref.r.9"></div><div id="rfc.iref.a.9"></div></td><td class="left">Index</td></tr><tr><td class="left">rfc.ipr <div id="rfc.iref.r.10"></div><div id="rfc.iref.a.10"></div></td><td class="left">Intellectual Property</td></tr><tr><td class="left">rfc.iref.<em>n</em>  <div id="rfc.iref.r.11"></div><div id="rfc.iref.a.11"></div></td><td class="left">Internal references</td></tr><tr><td class="left">rfc.note.<em>n</em>  <div id="rfc.iref.r.12"></div><div id="rfc.iref.a.12"></div></td><td class="left">Notes (from front section)</td></tr><tr><td class="left">rfc.references <div id="rfc.iref.r.13"></div><div id="rfc.iref.a.13"></div></td><td class="left">References</td></tr><tr><td class="left">rfc.references.<em>n</em>  <div id="rfc.iref.r.14"></div><div id="rfc.iref.a.14"></div></td><td class="left">Additional references</td></tr><tr><td class="left">rfc.section.<em>n</em>  <div id="rfc.iref.r.15"></div><div id="rfc.iref.a.15"></div></td><td class="left">Section <em>n</em></td></tr><tr><td class="left">rfc.section.<em>n</em>.p.<em>m</em>  <div id="rfc.iref.r.16"></div><div id="rfc.iref.a.16"></div></td><td class="left">Section <em>n</em>, paragraph <em>m</em></td></tr><tr><td class="left">rfc.status <div id="rfc.iref.r.17"></div><div id="rfc.iref.a.17"></div></td><td class="left">Status of memo</td></tr><tr><td class="left">rfc.table.<em>n</em>  <div id="rfc.iref.r.18"></div><div id="rfc.iref.a.18"></div></td><td class="left">Tables (titled)</td></tr><tr><td class="left">rfc.table.u.<em>n</em>  <div id="rfc.iref.r.19"></div><div id="rfc.iref.a.19"></div></td><td class="left">Tables (untitled)</td></tr><tr><td class="left">rfc.toc <div id="rfc.iref.r.20"></div><div id="rfc.iref.a.20"></div></td><td class="left">Table of contents</td></tr><tr><td class="left">rfc.xref.<em>name</em>.<em>n</em>  <div id="rfc.iref.r.21"></div><div id="rfc.iref.a.21"></div></td><td class="left">References to reference <em>n</em> to <em>name</em></td></tr></tbody></table></div><hr class="noprint"><h1 id="rfc.section.5" class="np"><a href="#rfc.section.5">5.</a>&nbsp;<a id="xslt.engines" href="#xslt.engines">Supported XSLT engines</a></h1><p id="rfc.section.5.p.1">The transformation requires a non-standard extension function (see <a href="http://www.exslt.org/exsl/functions/node-set/exsl.node-set.html">exsl:node-set</a>) which is however widely available. XSLT processors that do not support this extension (or a functional equivalent) currently are not supported.</p><h2 id="rfc.section.5.1"><a href="#rfc.section.5.1">5.1</a>&nbsp;Standalone Engines</h2><p id="rfc.section.5.1.p.1">The following XSLT engines are believed to work well: </p><ul><li>Windows: <span id="rfc.iref.m.1"></span><span id="rfc.iref.m.2"></span>MSXML3 and MSXML4 (&lt;<a href="http://msdn.microsoft.com/xml">http://msdn.microsoft.com/xml</a>&gt;; command line processor "msxsl" is available from <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2FB55371-C94E-4373-B0E9-DB4816552E41">Microsoft Download Center</a>)</li><li>Java: <span id="rfc.iref.s.8"></span>Saxon (&lt;<a href="http://saxon.sourceforge.net/">http://saxon.sourceforge.net/</a>&gt;)</li><li>Java: <span id="rfc.iref.x.27"></span>Xalan (&lt;<a href="http://xml.apache.org/xalan-j/">http://xml.apache.org/xalan-j/</a>&gt;)</li><li>C/C++: <span id="rfc.iref.x.28"></span>xsltproc (libxslt) (&lt;<a href="http://xmlsoft.org/XSLT/">http://xmlsoft.org/XSLT/</a>&gt;, make sure that you have a current version)</li></ul><h2 id="rfc.section.5.2"><a href="#rfc.section.5.2">5.2</a>&nbsp;<a id="xslt.engines.browser" href="#xslt.engines.browser">In-Browser Engines</a></h2><p id="rfc.section.5.2.p.1">The following browsers seem to work fine: </p><ul><li><p><span id="rfc.iref.i.5"></span>Internet Explorer 5.5 (Windows version, if MSXML3 is installed)</p></li><li><p><span id="rfc.iref.i.6"></span><span id="rfc.iref.i.7"></span><span id="rfc.iref.i.8"></span>Internet Explorer 6 and newer</p></li><li><div id="firefox3"><p><span id="rfc.iref.m.3"></span><span id="rfc.iref.f.2"></span>Firefox 3.0 and newer</p></div><p> </p><ul><li>Be aware that XSLT execution can be suppressed using <span id="rfc.iref.n.2"></span><a href="https://addons.mozilla.org/de/firefox/addon/722">NoScript</a></li><li>Firefox does not load external DTDs nor external entities, see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=22942">Mozilla Bug 22942</a>, thus entities like &amp;nbsp; need to be declared in the internal subset (<a href="#examples.internalsubset" title="Using the 'Internal Subset'">Appendix&nbsp;C.1</a>)</li></ul></li><li><p><span id="rfc.iref.s.9"></span><span id="rfc.iref.s.10"></span>Safari 3 (starting with version 3.0.4)</p></li><li><p><span id="rfc.iref.g.1"></span>Google Chrome</p></li><li><p><span id="rfc.iref.o.1"></span>Opera (starting with version 10)</p></li></ul><p id="rfc.section.5.2.p.2">The following browsers are known not to work properly: </p><ul><li><div id="firefox12"><p><span id="rfc.iref.m.4"></span><span id="rfc.iref.f.3"></span>Firefox 1.*/2.*: (missing extension function - see change request at Mozilla BugZilla <a href="http://bugzilla.mozilla.org/show_bug.cgi?id=193678">193678</a>)</p></div></li><li><div id="opera"><p><span id="rfc.iref.o.2"></span>Opera 9.21: execution fails, potentially to a somewhat complex XPath expression (reported to Opera as bug 245725).</p></div></li><li><p>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).</p></li><li><div id="safari"><p><span id="rfc.iref.s.11"></span>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 &lt;<a href="http://drakken.dbc.mtview.ca.us/pipermail/xml2rfc/2005-May/002073.html">http://drakken.dbc.mtview.ca.us/pipermail/xml2rfc/2005-May/002073.html</a>&gt; and &lt;<a href="http://bugs.webkit.org/show_bug.cgi?id=4079">http://bugs.webkit.org/show_bug.cgi?id=4079</a>&gt;.</p></div></li></ul><hr class="noprint"><h1 id="rfc.section.6" class="np"><a href="#rfc.section.6">6.</a>&nbsp;<a id="output.html" href="#output.html">Transforming to HTML</a></h1><p id="rfc.section.6.p.1">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:</p><div id="rfc.iref.x.29"></div><div id="rfc.figure.u.4"></div><pre class="text">  &lt;?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?&gt;
     392</pre>  <p>(note the required quoting of string parameters)<span id="rfc.iref.x.1"></span></p> <h2 id="rfc.section.3.1"><a href="#rfc.section.3.1">3.1</a>&nbsp;Supported xml2rfc-compatible PIs</h2><div id="rfc.table.u.1"><table class="tt full center" cellpadding="3" cellspacing="0"><thead><tr><th>PI target</th><th>PI pseudo-attribute</th><th>XSLT parameter name</th><th>default</th><th>comment</th></tr></thead><tbody><tr><td class="left">rfc</td><td class="left">background<div id="rfc.iref.b.1"></div><div id="rfc.iref.p.1"></div></td><td class="left">xml2rfc-background<div id="rfc.iref.x.2"></div>  <div id="rfc.iref.p.2"></div></td><td class="left">(not set)</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">compact<div id="rfc.iref.c.1"></div><div id="rfc.iref.p.3"></div></td><td class="left">xml2rfc-compact<div id="rfc.iref.x.3"></div>  <div id="rfc.iref.p.4"></div></td><td class="left">"no"</td><td class="left">only applies to HTML output method when printing</td></tr><tr><td class="left">rfc</td><td class="left">comments<div id="rfc.iref.c.2"></div><div id="rfc.iref.p.5"></div></td><td class="left">xml2rfc-comments<div id="rfc.iref.x.4"></div>  <div id="rfc.iref.p.6"></div></td><td class="left">(not set)</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">editing<div id="rfc.iref.e.1"></div><div id="rfc.iref.p.7"></div></td><td class="left">xml2rfc-editing<div id="rfc.iref.x.5"></div>  <div id="rfc.iref.p.8"></div></td><td class="left">"no"</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">footer<div id="rfc.iref.f.1"></div><div id="rfc.iref.p.9"></div></td><td class="left">xml2rfc-footer<div id="rfc.iref.x.6"></div>  <div id="rfc.iref.p.10"></div></td><td class="left">(not set)</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">header<div id="rfc.iref.h.1"></div><div id="rfc.iref.p.11"></div></td><td class="left">xml2rfc-header<div id="rfc.iref.x.7"></div>  <div id="rfc.iref.p.12"></div></td><td class="left">(not set)</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">inline<div id="rfc.iref.i.1"></div><div id="rfc.iref.p.13"></div></td><td class="left">xml2rfc-inline<div id="rfc.iref.x.8"></div>  <div id="rfc.iref.p.14"></div></td><td class="left">(not set)</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">iprnotified<div id="rfc.iref.i.2"></div><div id="rfc.iref.p.15"></div></td><td class="left">xml2rfc-iprnotified<div id="rfc.iref.x.9"></div>  <div id="rfc.iref.p.16"></div></td><td class="left">"no"</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">linkmailto<div id="rfc.iref.l.1"></div><div id="rfc.iref.p.17"></div></td><td class="left">xml2rfc-linkmailto<div id="rfc.iref.x.10"></div>  <div id="rfc.iref.p.18"></div></td><td class="left">"yes"</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">private<div id="rfc.iref.p.19"></div><div id="rfc.iref.p.20"></div></td><td class="left">xml2rfc-private<div id="rfc.iref.x.11"></div>  <div id="rfc.iref.p.21"></div></td><td class="left">(not set)</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">refparent<div id="rfc.iref.r.1"></div><div id="rfc.iref.p.22"></div></td><td class="left">xml2rfc-private<div id="rfc.iref.x.12"></div>  <div id="rfc.iref.p.23"></div></td><td class="left">"References"</td><td class="left">Title for References sections when automatically inserted</td></tr><tr><td class="left">rfc</td><td class="left">rfcedstyle<div id="rfc.iref.r.2"></div><div id="rfc.iref.p.24"></div></td><td class="left">xml2rfc-rfcedstyle<div id="rfc.iref.x.13"></div>  <div id="rfc.iref.p.25"></div></td><td class="left">(not set)</td><td class="left">(limited support)</td></tr><tr><td class="left">rfc</td><td class="left">sortrefs<div id="rfc.iref.s.1"></div><div id="rfc.iref.p.26"></div></td><td class="left">xml2rfc-sortrefs<div id="rfc.iref.x.14"></div>  <div id="rfc.iref.p.27"></div></td><td class="left">"no"</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">symrefs<div id="rfc.iref.s.2"></div><div id="rfc.iref.p.28"></div></td><td class="left">xml2rfc-symrefs<div id="rfc.iref.x.15"></div>  <div id="rfc.iref.p.29"></div></td><td class="left">"yes"</td><td class="left">The default has changed from "no" to "yes" as of June 6, 2007 and xml2rfc 1.33pre4.</td></tr><tr><td class="left">rfc</td><td class="left">toc<div id="rfc.iref.t.1"></div><div id="rfc.iref.p.30"></div></td><td class="left">xml2rfc-toc<div id="rfc.iref.x.16"></div>  <div id="rfc.iref.p.31"></div></td><td class="left">"no"</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">tocdepth<div id="rfc.iref.t.2"></div><div id="rfc.iref.p.32"></div></td><td class="left">xml2rfc-tocdepth<div id="rfc.iref.x.17"></div>  <div id="rfc.iref.p.33"></div></td><td class="left">99</td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">topblock<div id="rfc.iref.t.3"></div><div id="rfc.iref.p.34"></div></td><td class="left">xml2rfc-topblock<div id="rfc.iref.x.18"></div>  <div id="rfc.iref.p.35"></div></td><td class="left">"yes"</td><td class="left"></td></tr></tbody></table></div><h2 id="rfc.section.3.2"><a href="#rfc.section.3.2">3.2</a>&nbsp;Unsupported xml2rfc-compatible PIs</h2><div id="rfc.table.u.2"><table class="tt full center" cellpadding="3" cellspacing="0"><thead><tr><th>PI target</th><th>PI pseudo-attribute</th><th>comment</th></tr></thead><tbody><tr><td class="left">rfc</td><td class="left">include<div id="rfc.iref.i.3"></div><div id="rfc.iref.p.36"></div></td><td class="left">incompatible with XML/XSLT processing model, please use external entities instead</td></tr><tr><td class="left">rfc</td><td class="left">needLines<div id="rfc.iref.n.1"></div><div id="rfc.iref.p.37"></div></td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">slides<div id="rfc.iref.s.3"></div><div id="rfc.iref.p.38"></div></td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">strict<div id="rfc.iref.s.4"></div><div id="rfc.iref.p.39"></div></td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">subcompact<div id="rfc.iref.s.5"></div><div id="rfc.iref.p.40"></div></td><td class="left"></td></tr><tr><td class="left">rfc</td><td class="left">tocindent<div id="rfc.iref.t.4"></div><div id="rfc.iref.p.41"></div></td><td class="left">(defaults to "yes")</td></tr><tr><td class="left">rfc</td><td class="left">tocompact<div id="rfc.iref.t.5"></div><div id="rfc.iref.p.42"></div></td><td class="left"></td></tr></tbody></table></div><h2 id="rfc.section.3.3"><a href="#rfc.section.3.3">3.3</a>&nbsp;Extension PIs</h2><div id="rfc.table.u.3"><table class="tt full center" cellpadding="3" cellspacing="0"><thead><tr><th>PI target</th><th>PI pseudo-attribute</th><th>XSLT parameter name</th><th>default</th><th>description</th></tr></thead><tbody><tr><td class="left">rfc-ext</td><td class="left">allow-markup-in-artwork<div id="rfc.iref.a.1"></div><div id="rfc.iref.p.43"></div></td><td class="left">xml2rfc-allow-markup-in-artwork<div id="rfc.iref.x.19"></div>  <div id="rfc.iref.p.44"></div></td><td class="left">"no"</td><td class="left">Enables support for specific elements inside abstract elements (using this extension makes the document incompatible to the RFC2629bis DTD; see description of conversion XSLT in <a href="#clean-for-dtd" title="Down-converting to RFC2629bis DTD">Section&nbsp;12.4</a>).</td></tr><tr><td class="left">rfc-ext</td><td class="left">authors-section<div id="rfc.iref.a.2"></div><div id="rfc.iref.p.45"></div></td><td class="left">xml2rfc-ext-authors-section<div id="rfc.iref.x.20"></div>  <div id="rfc.iref.p.46"></div></td><td class="left"></td><td class="left">When "end", place the authors section at the end (just before the copyright statements). This seems to be the preferred order in the newest RFCs.</td></tr><tr><td class="left">rfc-ext</td><td class="left">duplex<div id="rfc.iref.d.1"></div><div id="rfc.iref.p.47"></div></td><td class="left">xml2rfc-ext-duplex<div id="rfc.iref.x.21"></div>  <div id="rfc.iref.p.48"></div></td><td class="left">no</td><td class="left">When set to "yes", format the PDF output for doublesided printing.</td></tr><tr><td class="left">rfc-ext</td><td class="left">include-references-in-index<div id="rfc.iref.i.4"></div><div id="rfc.iref.p.49"></div></td><td class="left">xml2rfc-ext-include-references-in-index<div id="rfc.iref.x.22"></div>  <div id="rfc.iref.p.50"></div></td><td class="left"></td><td class="left">When set to "yes", index entries are generated for all references.</td></tr><tr><td class="left">rfc-ext</td><td class="left">justification<div id="rfc.iref.j.1"></div><div id="rfc.iref.p.51"></div></td><td class="left">xml2rfc-ext-justification<div id="rfc.iref.x.23"></div>  <div id="rfc.iref.p.52"></div></td><td class="left">"never"</td><td class="left">"never": never emit justified text, "always": always emit justified text, "print": only emit justified text for print media.</td></tr><tr><td class="left">rfc-ext</td><td class="left">parse-xml-in-artwork<div id="rfc.iref.p.53"></div><div id="rfc.iref.p.54"></div></td><td class="left">xml2rfc-parse-xml-in-artwork<div id="rfc.iref.x.24"></div>  <div id="rfc.iref.p.55"></div></td><td class="left">"no"</td><td class="left">May be used to enable parsing of XML content in figures (MSXML only).</td></tr><tr><td class="left">rfc-ext</td><td class="left">support-rfc2731<div id="rfc.iref.s.6"></div><div id="rfc.iref.p.56"></div></td><td class="left">xml2rfc-ext-support-rfc2731<div id="rfc.iref.x.25"></div>  <div id="rfc.iref.p.57"></div></td><td class="left">"yes"</td><td class="left">Decides whether the HTML transformation should generate META tags according <a href="#rfc2731.properties" title="Dublin Core (RFC2731) metadata">Section&nbsp;6.4</a>.</td></tr><tr><td class="left">rfc-ext</td><td class="left">sec-no-trailing-dots<div id="rfc.iref.s.7"></div><div id="rfc.iref.p.58"></div></td><td class="left">xml2rfc-ext-sec-no-trailing-dots<div id="rfc.iref.x.26"></div>  <div id="rfc.iref.p.59"></div></td><td class="left"></td><td class="left">When set to "yes", add trailing dots to section numbers. This seems to be the preferred format in the newest RFCs.</td></tr></tbody></table></div><hr class="noprint"><h1 id="rfc.section.4" class="np"><a href="#rfc.section.4">4.</a>&nbsp;<a id="anchors" href="#anchors">Anchors</a></h1><p id="rfc.section.4.p.1">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).</p><div id="rfc.table.u.4"><p>The following anchors get auto-generated:</p><table class="tt full center" cellpadding="3" cellspacing="0"><thead><tr><th>Anchor name</th><th>Description</th></tr></thead><tbody><tr><td class="left">rfc.abstract <div id="rfc.iref.r.3"></div><div id="rfc.iref.a.3"></div></td><td class="left">Abstract</td></tr><tr><td class="left">rfc.authors <div id="rfc.iref.r.4"></div><div id="rfc.iref.a.4"></div></td><td class="left">Authors section</td></tr><tr><td class="left">rfc.copyright <div id="rfc.iref.r.5"></div><div id="rfc.iref.a.5"></div></td><td class="left">Copyright section</td></tr><tr><td class="left">rfc.copyrightnotice <div id="rfc.iref.r.6"></div><div id="rfc.iref.a.6"></div></td><td class="left">Copyright notice</td></tr><tr><td class="left">rfc.figure.<em>n</em>  <div id="rfc.iref.r.7"></div><div id="rfc.iref.a.7"></div></td><td class="left">Figures (titled)</td></tr><tr><td class="left">rfc.figure.u.<em>n</em>  <div id="rfc.iref.r.8"></div><div id="rfc.iref.a.8"></div></td><td class="left">Figures (untitled)</td></tr><tr><td class="left">rfc.index <div id="rfc.iref.r.9"></div><div id="rfc.iref.a.9"></div></td><td class="left">Index</td></tr><tr><td class="left">rfc.ipr <div id="rfc.iref.r.10"></div><div id="rfc.iref.a.10"></div></td><td class="left">Intellectual Property</td></tr><tr><td class="left">rfc.iref.<em>n</em>  <div id="rfc.iref.r.11"></div><div id="rfc.iref.a.11"></div></td><td class="left">Internal references</td></tr><tr><td class="left">rfc.note.<em>n</em>  <div id="rfc.iref.r.12"></div><div id="rfc.iref.a.12"></div></td><td class="left">Notes (from front section)</td></tr><tr><td class="left">rfc.references <div id="rfc.iref.r.13"></div><div id="rfc.iref.a.13"></div></td><td class="left">References</td></tr><tr><td class="left">rfc.references.<em>n</em>  <div id="rfc.iref.r.14"></div><div id="rfc.iref.a.14"></div></td><td class="left">Additional references</td></tr><tr><td class="left">rfc.section.<em>n</em>  <div id="rfc.iref.r.15"></div><div id="rfc.iref.a.15"></div></td><td class="left">Section <em>n</em></td></tr><tr><td class="left">rfc.section.<em>n</em>.p.<em>m</em>  <div id="rfc.iref.r.16"></div><div id="rfc.iref.a.16"></div></td><td class="left">Section <em>n</em>, paragraph <em>m</em></td></tr><tr><td class="left">rfc.status <div id="rfc.iref.r.17"></div><div id="rfc.iref.a.17"></div></td><td class="left">Status of memo</td></tr><tr><td class="left">rfc.table.<em>n</em>  <div id="rfc.iref.r.18"></div><div id="rfc.iref.a.18"></div></td><td class="left">Tables (titled)</td></tr><tr><td class="left">rfc.table.u.<em>n</em>  <div id="rfc.iref.r.19"></div><div id="rfc.iref.a.19"></div></td><td class="left">Tables (untitled)</td></tr><tr><td class="left">rfc.toc <div id="rfc.iref.r.20"></div><div id="rfc.iref.a.20"></div></td><td class="left">Table of contents</td></tr><tr><td class="left">rfc.xref.<em>name</em>.<em>n</em>  <div id="rfc.iref.r.21"></div><div id="rfc.iref.a.21"></div></td><td class="left">References to reference <em>n</em> to <em>name</em></td></tr></tbody></table></div><hr class="noprint"><h1 id="rfc.section.5" class="np"><a href="#rfc.section.5">5.</a>&nbsp;<a id="xslt.engines" href="#xslt.engines">Supported XSLT engines</a></h1><p id="rfc.section.5.p.1">The transformation requires a non-standard extension function (see <a href="http://www.exslt.org/exsl/functions/node-set/exsl.node-set.html">exsl:node-set</a>) which is however widely available. XSLT processors that do not support this extension (or a functional equivalent) currently are not supported.</p><h2 id="rfc.section.5.1"><a href="#rfc.section.5.1">5.1</a>&nbsp;Standalone Engines</h2><p id="rfc.section.5.1.p.1">The following XSLT engines are believed to work well: </p><ul><li>Windows: <span id="rfc.iref.m.1"></span><span id="rfc.iref.m.2"></span>MSXML3 and MSXML4 (&lt;<a href="http://msdn.microsoft.com/xml">http://msdn.microsoft.com/xml</a>&gt;; command line processor "msxsl" is available from <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2FB55371-C94E-4373-B0E9-DB4816552E41">Microsoft Download Center</a>)</li><li>Java: <span id="rfc.iref.s.8"></span>Saxon (&lt;<a href="http://saxon.sourceforge.net/">http://saxon.sourceforge.net/</a>&gt;)</li><li>Java: <span id="rfc.iref.x.27"></span>Xalan (&lt;<a href="http://xml.apache.org/xalan-j/">http://xml.apache.org/xalan-j/</a>&gt;)</li><li>C/C++: <span id="rfc.iref.x.28"></span>xsltproc (libxslt) (&lt;<a href="http://xmlsoft.org/XSLT/">http://xmlsoft.org/XSLT/</a>&gt;, make sure that you have a current version)</li></ul><h2 id="rfc.section.5.2"><a href="#rfc.section.5.2">5.2</a>&nbsp;<a id="xslt.engines.browser" href="#xslt.engines.browser">In-Browser Engines</a></h2><p id="rfc.section.5.2.p.1">The following browsers seem to work fine: </p><ul><li><p><span id="rfc.iref.i.5"></span>Internet Explorer 5.5 (Windows version, if MSXML3 is installed)</p></li><li><p><span id="rfc.iref.i.6"></span><span id="rfc.iref.i.7"></span><span id="rfc.iref.i.8"></span>Internet Explorer 6 and newer</p></li><li><div id="firefox3"><p><span id="rfc.iref.m.3"></span><span id="rfc.iref.f.2"></span>Firefox 3.0 and newer</p></div><p> </p><ul><li>Be aware that XSLT execution can be suppressed using <span id="rfc.iref.n.2"></span><a href="https://addons.mozilla.org/de/firefox/addon/722">NoScript</a></li><li>Firefox does not load external DTDs nor external entities, see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=22942">Mozilla Bug 22942</a>, thus entities like &amp;nbsp; need to be declared in the internal subset (<a href="#examples.internalsubset" title="Using the 'Internal Subset'">Appendix&nbsp;C.1</a>)</li><li>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 &lt;<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=640390">https://bugzilla.mozilla.org/show_bug.cgi?id=640390</a>&gt;.</li></ul></li><li><p><span id="rfc.iref.s.9"></span><span id="rfc.iref.s.10"></span>Safari 3 (starting with version 3.0.4)</p></li><li><p><span id="rfc.iref.g.1"></span>Google Chrome</p></li><li><p><span id="rfc.iref.o.1"></span>Opera (starting with version 10)</p></li></ul><p id="rfc.section.5.2.p.2">The following browsers are known not to work properly: </p><ul><li><div id="firefox12"><p><span id="rfc.iref.m.4"></span><span id="rfc.iref.f.3"></span>Firefox 1.*/2.*: (missing extension function - see change request at Mozilla BugZilla <a href="http://bugzilla.mozilla.org/show_bug.cgi?id=193678">193678</a>)</p></div></li><li><div id="opera"><p><span id="rfc.iref.o.2"></span>Opera 9.21: execution fails, potentially to a somewhat complex XPath expression (reported to Opera as bug 245725).</p></div></li><li><p>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).</p></li><li><div id="safari"><p><span id="rfc.iref.s.11"></span>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 &lt;<a href="http://drakken.dbc.mtview.ca.us/pipermail/xml2rfc/2005-May/002073.html">http://drakken.dbc.mtview.ca.us/pipermail/xml2rfc/2005-May/002073.html</a>&gt; and &lt;<a href="http://bugs.webkit.org/show_bug.cgi?id=4079">http://bugs.webkit.org/show_bug.cgi?id=4079</a>&gt;.</p></div></li></ul><hr class="noprint"><h1 id="rfc.section.6" class="np"><a href="#rfc.section.6">6.</a>&nbsp;<a id="output.html" href="#output.html">Transforming to HTML</a></h1><p id="rfc.section.6.p.1">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:</p><div id="rfc.iref.x.29"></div><div id="rfc.figure.u.4"></div><pre class="text">  &lt;?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?&gt;
    393393</pre><p id="rfc.section.6.p.3">(and ensure that <samp>rfc2629.xslt</samp> is present).</p><h2 id="rfc.section.6.1"><a href="#rfc.section.6.1">6.1</a>&nbsp;HTML compliance</h2><p id="rfc.section.6.1.p.1">The transformation result is supposed to conform to the HTML 4.01 strict DTD <a href="#HTML" id="rfc.xref.HTML.1"><cite title="HTML 4.01 Specification">[HTML]</cite></a>. This can be checked using the W3C's online validator at &lt;<a href="http://validator.w3.org">http://validator.w3.org</a>&gt;<span id="rfc.iref.h.2"></span>.</p><h2 id="rfc.section.6.2"><a href="#rfc.section.6.2">6.2</a>&nbsp;<a id="html.link" href="#html.link">Standard HTML LINK elements</a></h2><p id="rfc.section.6.2.p.1">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 <a href="https://addons.mozilla.org/firefox/2933/">Link Widgets</a> extension.</p><div id="rfc.table.u.5"><p>The following LINK elements are produced:</p><table class="tt full center" cellpadding="3" cellspacing="0"><thead><tr><th>LINK type</th><th>description</th></tr></thead><tbody><tr><td class="left">alternate<div id="rfc.iref.a.22"></div><div id="rfc.iref.h.3"></div></td><td class="left">for RFCs, a link to the authorative ASCII version on the IETF web site</td></tr><tr><td class="left">appendic<div id="rfc.iref.a.23"></div><div id="rfc.iref.h.4"></div></td><td class="left">pointer to all top-level appendics</td></tr><tr><td class="left">author<div id="rfc.iref.a.24"></div><div id="rfc.iref.h.5"></div></td><td class="left">pointer to "authors" section</td></tr><tr><td class="left">chapter<div id="rfc.iref.c.3"></div><div id="rfc.iref.h.6"></div></td><td class="left">pointer to all top-level sections</td></tr><tr><td class="left">contents<div id="rfc.iref.c.4"></div><div id="rfc.iref.h.7"></div></td><td class="left">pointer to table of contents</td></tr><tr><td class="left">copyright<div id="rfc.iref.c.5"></div><div id="rfc.iref.h.8"></div></td><td class="left">pointer to copyright statement</td></tr><tr><td class="left">index<div id="rfc.iref.i.9"></div><div id="rfc.iref.h.9"></div></td><td class="left">pointer to index</td></tr></tbody></table></div><div id="rfc.figure.u.5"></div> <p>The figure below shows how Mozilla Firefox 1.0 displays the Site Navigation Bar for rfc2396.xml.</p>  <p><img src="rfc2629xslt-fig1.png" alt="&#xA;(LINK elements displayed in Mozilla Firefox for RFC2396.xml)&#xA;" width="509" height="235"></p> <h2 id="rfc.section.6.3"><a href="#rfc.section.6.3">6.3</a>&nbsp;Standard HTML metadata</h2><div id="rfc.table.u.6"><p>The following standard HTML META elements are produced:</p><table class="tt full center" cellpadding="3" cellspacing="0"><thead><tr><th>META name</th><th>description</th></tr></thead><tbody><tr><td class="left">generator<div id="rfc.iref.g.2"></div><div id="rfc.iref.h.10"></div></td><td class="left">from XSLT engine version and stylesheet version</td></tr><tr><td class="left">keywords<div id="rfc.iref.k.1"></div><div id="rfc.iref.h.11"></div></td><td class="left">from keyword elements in front section</td></tr></tbody></table></div><h2 id="rfc.section.6.4"><a href="#rfc.section.6.4">6.4</a>&nbsp;<a id="rfc2731.properties" href="#rfc2731.properties">Dublin Core (RFC2731) metadata</a></h2><p id="rfc.section.6.4.p.1">Unless turned off using the "rfc-ext support-rfc2731" processing instruction, the transformation will generate metadata according to <a href="#RFC2731" id="rfc.xref.RFC2731.1"><cite title="Encoding Dublin Core Metadata in HTML">[RFC2731]</cite></a> and <a href="#DC-HTML" id="rfc.xref.DC-HTML.1"><cite title="Expressing Dublin Core metadata using HTML/XHTML meta and link elements">[DC-HTML]</cite></a>.</p><div id="rfc.table.u.7"><p>The following DCMI properties are produced:</p><table class="tt full center" cellpadding="3" cellspacing="0"><thead><tr><th>META name</th><th>description</th></tr></thead><tbody><tr><td class="left">DC.Creator<div id="rfc.iref.c.6"></div><div id="rfc.iref.d.2"></div></td><td class="left">from author information in front section</td></tr><tr><td class="left">DC.Date.Issued<div id="rfc.iref.d.3"></div><div id="rfc.iref.d.4"></div></td><td class="left">from date information in front section</td></tr><tr><td class="left">DC.Description.Abstract<div id="rfc.iref.d.5"></div><div id="rfc.iref.d.6"></div></td><td class="left">from abstract</td></tr><tr><td class="left">DC.Identifier<div id="rfc.iref.i.10"></div><div id="rfc.iref.d.7"></div></td><td class="left">document URN <a href="#RFC2648" id="rfc.xref.RFC2648.1"><cite title="A URN Namespace for IETF Documents">[RFC2648]</cite></a> from "docName" attribute</td></tr><tr><td class="left">DC.isPartOf<div id="rfc.iref.i.11"></div><div id="rfc.iref.d.8"></div></td><td class="left">RFC ISSN (for RFCs)</td></tr><tr><td class="left">DC.Relation.Replaces<div id="rfc.iref.r.22"></div><div id="rfc.iref.d.9"></div></td><td class="left">from "obsoletes" attribute</td></tr></tbody></table></div><h2 id="rfc.section.6.5"><a href="#rfc.section.6.5">6.5</a>&nbsp;<a id="hcard" href="#hcard">Experimental hCard support</a></h2><p id="rfc.section.6.5.p.1">The generated author information is formatted in <a href="http://microformats.org/wiki/hcard">hCard</a> format.</p><hr class="noprint"><h1 id="rfc.section.7" class="np"><a href="#rfc.section.7">7.</a>&nbsp;<a id="output.xhtml" href="#output.xhtml">Transforming to XHTML</a></h1><p id="rfc.section.7.p.1">Transforming to XHTML requires slightly different XSLT output options and is implemented by the derived transformation script <samp>rfc2629toXHTML.xslt</samp>.</p><ul class="empty"><li> <b>Note:</b> Microsoft Internet Explorer does <em>not</em> support XHTML. Therefore it usually makes more sense to generate plain old HTML.</li></ul><hr class="noprint"><h1 id="rfc.section.8" class="np"><a href="#rfc.section.8">8.</a>&nbsp;<a id="output.chm" href="#output.chm">Transforming to CHM (Microsoft Compiled Help)</a></h1><p id="rfc.section.8.p.1"> <span id="rfc.iref.c.7"></span>  <span id="rfc.iref.m.5"></span> To generate a CHM file using Microsoft's HTML Help Compiler (hhc), three files are required in addition to the HTML file. </p><ol><li>hhc - table of contents file (HTML)</li><li>hhk - index file (HTML)</li><li>hhp - project file (plain text)</li></ol><p id="rfc.section.8.p.2">The three files are generated with three specific transformations, each requiring the additional XSLT parameter "basename" to specify the filename prefix.</p><div id="rfc.figure.u.6"></div> <p>Example:</p>  <pre class="text">saxon rfc2616.xml rfc2629toHhp.xslt basename=rfc2616  &gt; rfc2616.hhp
    394394saxon rfc2616.xml rfc2629toHhc.xslt basename=rfc2616  &gt; rfc2616.hhc
Note: See TracChangeset for help on using the changeset viewer.