source: rfc2629xslt/rfc2629xslt.xml

Last change on this file was 2754, checked in by julian.reschke@…, 4 years ago

update XSLTs, add RFC 7838

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/xml
File size: 123.7 KB
Line 
1<?xml version="1.0" encoding="utf-8"?>
2<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
3
4<?rfc header="Documentation"?>
5<?rfc private="RFC2629 through XSLT"?>
6<?rfc toc="yes"?>
7<!-- <?rfc topblock="no"?>  -->
8<?rfc strict="no"?>
9<?rfc symrefs="yes"?>
10<?rfc sortrefs="yes"?>
11<?rfc-ext allow-markup-in-artwork="yes" ?>
12<?rfc-ext html-pretty-print="prettyprint https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"?>
13<?rfc-ext include-references-in-index="yes" ?>
14<!--<?rfc-ext refresh-from="rfc2629xslt.xml"?>-->
15
16<rfc xmlns:x="http://purl.org/net/xml2rfc/ext">
17        <front>
18        <title abbrev="RFC2629 through XSLT">Transforming RFC2629-formatted XML through XSLT</title>
19
20        <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke">
21                <organization abbrev="greenbytes">greenbytes GmbH</organization>
22      <address>
23        <postal>
24                <street>Hafenweg 16</street>
25          <city>Muenster</city><region>NW</region><code>48155</code>
26                <country>Germany</country>
27        </postal>
28                  <email>julian.reschke@greenbytes.de</email>   
29                  <uri>http://greenbytes.de/tech/webdav/</uri> 
30                </address>
31        </author>
32     
33    <date/>
34
35    <keyword>RFC2629</keyword>
36    <keyword>xml2rfc</keyword>
37    <keyword>XSLT</keyword>
38    <keyword>XSL-FO</keyword>
39    <keyword>PDF</keyword>
40    <keyword>GRDDL</keyword>
41    <keyword>epub</keyword>
42    <keyword>Dublin Core</keyword>
43        </front>
44
45        <middle>
46
47<section title="Introduction" anchor="introduction">
48<t>
49  This document describes a set of XSLT transformations that can be used to
50  transform "XML2RFC" XML (<xref target="RFC7749"/>, updating <xref target="RFC2629"/>) to various
51  output formats, such as HTML and PDF. The main topics are 
52  <list style="symbols">
53    <t>compliance to the xml2rfc XML element set (<xref target="supported.elements"/>),</t>
54    <t>support for xml2rfc processing instructions (<xref target="processing.instructions"/>),</t>
55    <t>the names of anchor elements generated in HTML and PDF output (<xref target="anchors"/>),</t>
56    <t>various XSLT engines that can be used (<xref target="xslt.engines"/>),</t>
57    <t>outputting HTML (<xref target="output.html"/>) and XHTML (<xref target="output.xhtml"/>),</t>
58    <t>outputting CHM (Compiled Microsoft Help, <xref target="output.chm"/>),</t>
59    <t>outputting PDF (<xref target="output.pdf"/>),</t>
60    <t>outputting ePub (<xref target="output.epub"/>),</t>
61    <t>extensions to the xml2rfc vocabulary (<xref target="extensions"/>),</t>
62    <t>selected extensions from the proposed xml2rfc V3 vocabulary (<xref target="v3"/>),</t>
63    <t>various utilities (<xref target="utilities"/>).</t>
64  </list>
65</t>
66<t>
67  The full distribution is available at <eref target="http://greenbytes.de/tech/webdav/rfc2629xslt.zip"/>.
68</t>
69</section>
70
71<section title="Supported RFC2629 elements" anchor="supported.elements">
72<t>
73  <tt>rfc2629.xslt</tt> supports both all RFC2629 grammar elements and the extensions
74  implemented in xml2rfc 1.36.
75</t>
76<section title="Extension elements">
77<t>
78  <tt>rfc2629.xslt</tt> supports two kind of extension
79  elements, using different XML namespaces.
80</t>
81<t>
82  The first set contains (hopefully) generally useful extensions, see
83  <xref target="extensions"/>.
84</t>
85<t>
86  The second set is used for change and issue tracking and currently is not
87  documented here. Please email the author in case
88  you're interested in using these extensions.
89</t>
90</section>
91</section>
92
93<section title="Processing Instructions" anchor="processing.instructions">
94<t>
95  All PIs can be set as XSLT parameter as well, overriding any value that
96  is found in the source file to be transformed.
97</t>
98<figure>
99<preamble>Using processing instructions:</preamble>
100<artwork type="example" x:lang="">
101&lt;?rfc toc="yes"?>
102&lt;?rfc-ext support-rfc2731="no"?>
103</artwork>
104</figure>
105<figure>
106<preamble>Using XSLT parameters (Saxon):</preamble>
107<artwork type="example">
108java -cp saxon.jar com.icl.saxon.StyleSheet source.xml rfc2629.xslt \
109  xml2rfc-toc=yes xml2rfc-ext-support-rfc2731=no > result.html
110</artwork></figure>
111<figure>
112<preamble>Using XSLT parameters (xsltproc):</preamble>
113<artwork type="example">
114xsltproc --param xml2rfc-toc '"yes"' \
115   --param xml2rfc-ext-support-rfc2731 '"no"' \
116   rfc2629.xslt source.xml > result.html
117</artwork>
118<postamble>(note the required quoting of string parameters)<iref item="xsltproc" subitem="passing parameters"/></postamble>
119</figure>
120
121<section title="Supported xml2rfc-compatible PIs" anchor="supported.pis">
122<texttable>
123  <ttcol>PI target</ttcol>
124  <ttcol>PI pseudo-attribute</ttcol>
125  <ttcol>XSLT parameter name</ttcol>
126  <ttcol>default</ttcol>
127  <ttcol>comment</ttcol>
128
129  <c>rfc</c>
130  <c>background<iref item="background PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="background"/></c>
131  <c>xml2rfc-background<iref item="xml2rfc-background parameter"/> <iref item="Parameters" subitem="xml2rfc-background"/></c>
132  <c>(not set)</c>
133  <c/>
134 
135  <c>rfc</c>
136  <c>compact<iref item="compact PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="compact"/></c>
137  <c>xml2rfc-compact<iref item="xml2rfc-editing parameter"/> <iref item="Parameters" subitem="xml2rfc-compact"/></c>
138  <c>"no"</c>
139  <c>only applies to HTML output method when printing</c>
140
141  <c>rfc</c>
142  <c>comments<iref item="comments PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="comments"/></c>
143  <c>xml2rfc-comments<iref item="xml2rfc-comments parameter"/> <iref item="Parameters" subitem="xml2rfc-comments"/></c>
144  <c>(not set)</c>
145  <c/>
146
147  <c>rfc</c>
148  <c>docmapping<iref item="docmapping PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="docmapping"/></c>
149  <c/>
150  <c>"yes"</c>
151  <c>This is the default for rfc2629.xslt anyway, and it can not be changed</c>
152
153  <c>rfc</c>
154  <c>editing<iref item="editing PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="editing"/></c>
155  <c>xml2rfc-editing<iref item="xml2rfc-editing parameter"/> <iref item="Parameters" subitem="xml2rfc-editing"/></c>
156  <c>"no"</c>
157  <c/>
158 
159  <c>rfc</c>
160  <c>footer<iref item="footer PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="footer"/></c>
161  <c>xml2rfc-footer<iref item="xml2rfc-footer parameter"/> <iref item="Parameters" subitem="xml2rfc-footer"/></c>
162  <c>(not set)</c>
163  <c/>
164 
165  <c>rfc</c>
166  <c>header<iref item="header PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="header"/></c>
167  <c>xml2rfc-header<iref item="xml2rfc-header parameter"/> <iref item="Parameters" subitem="xml2rfc-header"/></c>
168  <c>(not set)</c>
169  <c/>
170
171  <c>rfc</c>
172  <c>include<iref item="include PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="include"/></c>
173  <c>only partly supported, use external entities instead (see <xref target="examples.internalsubset"/>) or other tools (<xref target="refreshing.inclusions"/>) instead</c>
174
175  <c>rfc</c>
176  <c>inline<iref item="inline PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="inline"/></c>
177  <c>xml2rfc-inline<iref item="xml2rfc-inline parameter"/> <iref item="Parameters" subitem="xml2rfc-inline"/></c>
178  <c>(not set)</c>
179  <c/>
180
181  <c>rfc</c>
182  <c>iprnotified<iref item="iprnotified PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="iprnotified"/></c>
183  <c>xml2rfc-iprnotified<iref item="xml2rfc-iprnotified parameter"/> <iref item="Parameters" subitem="xml2rfc-iprnotified"/></c>
184  <c>"no"</c>
185  <c/>
186
187  <c>rfc</c>
188  <c>linkmailto<iref item="linkmailto PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="linkmailto"/></c>
189  <c>xml2rfc-linkmailto<iref item="xml2rfc-linkmailto parameter"/> <iref item="Parameters" subitem="xml2rfc-linkmailto"/></c>
190  <c>"yes"</c>
191  <c/>
192 
193  <c>rfc</c>
194  <c>private<iref item="private PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="private"/></c>
195  <c>xml2rfc-private<iref item="xml2rfc-private parameter"/> <iref item="Parameters" subitem="xml2rfc-private"/></c>
196  <c>(not set)</c>
197  <c/>
198 
199  <c>rfc</c>
200  <c>refparent<iref item="refparent PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="refparent"/></c>
201  <c>xml2rfc-private<iref item="xml2rfc-refparent parameter"/> <iref item="Parameters" subitem="xml2rfc-refparent"/></c>
202  <c>"References"</c>
203  <c>Title for References sections when automatically inserted</c>
204
205  <c>rfc</c>
206  <c>rfcedstyle<iref item="rfcedstyle PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="rfcedstyle"/></c>
207  <c>xml2rfc-rfcedstyle<iref item="xml2rfc-rfcedstyle parameter"/> <iref item="Parameters" subitem="xml2rfc-rfcedstyle"/></c>
208  <c>(not set)</c>
209  <c>(limited support)</c>
210
211  <c>rfc</c>
212  <c>sortrefs<iref item="sortrefs PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="sortrefs"/></c>
213  <c>xml2rfc-sortrefs<iref item="xml2rfc-sortrefs parameter"/> <iref item="Parameters" subitem="xml2rfc-sortrefs"/></c>
214  <c>"no"</c>
215  <c/>
216 
217  <c>rfc</c>
218  <c>symrefs<iref item="symrefs PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="symrefs"/></c>
219  <c>xml2rfc-symrefs<iref item="xml2rfc-symrefs parameter"/> <iref item="Parameters" subitem="xml2rfc-symrefs"/></c>
220  <c>"yes"</c>
221  <c>The default has changed from "no" to "yes" as of June 6, 2007 and xml2rfc 1.33pre4.</c>
222 
223  <c>rfc</c>
224  <c>toc<iref item="toc PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="toc"/></c>
225  <c>xml2rfc-toc<iref item="xml2rfc-toc parameter"/> <iref item="Parameters" subitem="xml2rfc-toc"/></c>
226  <c>"no"</c>
227  <c/>
228 
229  <c>rfc</c>
230  <c>tocdepth<iref item="tocdepth PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="tocdepth"/></c>
231  <c>xml2rfc-tocdepth<iref item="xml2rfc-tocdepth parameter"/> <iref item="Parameters" subitem="xml2rfc-tocdepth"/></c>
232  <c>99</c>
233  <c/>
234
235  <c>rfc</c>
236  <c>topblock<iref item="topblock PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="topblock"/></c>
237  <c>xml2rfc-topblock<iref item="xml2rfc-topblock parameter"/> <iref item="Parameters" subitem="xml2rfc-topblock"/></c>
238  <c>"yes"</c>
239  <c/>
240
241</texttable>
242</section>
243
244<section title="Unsupported xml2rfc-compatible PIs" anchor="unsupported.pis">
245<texttable>
246  <ttcol>PI target</ttcol>
247  <ttcol>PI pseudo-attribute</ttcol>
248  <ttcol>comment</ttcol>
249
250  <c>rfc</c>
251  <c>needLines<iref item="needLines PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="needLines"/></c>
252  <c/>
253
254  <c>rfc</c>
255  <c>slides<iref item="slides PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="slides"/></c>
256  <c/>
257
258  <c>rfc</c>
259  <c>strict<iref item="strict PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="strict"/></c>
260  <c/>
261
262  <c>rfc</c>
263  <c>subcompact<iref item="subcompact PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="subcompact"/></c>
264  <c/>
265
266  <c>rfc</c>
267  <c>tocindent<iref item="tocindent PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="tocindent"/></c>
268  <c>(defaults to "yes")</c>
269
270 <c>rfc</c>
271  <c>tocompact<iref item="tocompact PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="tocompact"/></c>
272  <c/>
273
274</texttable>
275</section>
276
277<section title="Extension PIs" anchor="extension.pis">
278<texttable>
279  <ttcol>PI target</ttcol>
280  <ttcol>PI pseudo-attribute</ttcol>
281  <ttcol>XSLT parameter name</ttcol>
282  <ttcol>default</ttcol>
283  <ttcol>description</ttcol>
284
285  <c>rfc-ext</c>
286  <c>allow-markup-in-artwork<iref item="allow-markup-in-artwork PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="allow-markup-in-artwork"/></c>
287  <c>xml2rfc-allow-markup-in-artwork<iref item="xml2rfc-ext-allow-markup-in-artwork parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-allow-markup-in-artwork"/></c>
288  <c>"no"</c>
289  <c>Enables support for specific elements inside abstract elements (using this extension
290  makes the document incompatible to the RFC2629bis DTD; see description of
291  conversion XSLT in <xref target="clean-for-dtd"/>).</c>
292
293  <c>rfc-ext</c>
294  <c>authors-section<iref item="authors-section PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="authors-section"/></c>
295  <c>xml2rfc-ext-authors-section<iref item="xml2rfc-ext-authors-section parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-authors-section"/></c>
296  <c>"end"</c>
297  <c>When "before-appendices", place the authors section between references
298  and appendices (this ordering was used a long time ago).</c>
299
300  <c>rfc-ext</c>
301  <c>duplex<iref item="duplex PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="duplex"/></c>
302  <c>xml2rfc-ext-duplex<iref item="xml2rfc-ext-duplex"/> <iref item="Parameters" subitem="xml2rfc-ext-duplex"/></c>
303  <c>"no"</c>
304  <c>When set to "yes", format the PDF output for doublesided printing.</c>
305
306  <c>rfc-ext</c>
307  <c>html-pretty-print<iref item="html-pretty-print PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="html-pretty-print"/></c>
308  <c>xml2rfc-ext-html-pretty-print<iref item="xml2rfc-ext-html-pretty-print"/> <iref item="Parameters" subitem="xml2rfc-ext-html-pretty-print"/></c>
309  <c></c>
310  <c>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:
311  "prettyprint https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"</c>
312
313  <c>rfc-ext</c>
314  <c>include-index<iref item="include-index PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="include-index"/></c>
315  <c>xml2rfc-ext-include-index<iref item="xml2rfc-ext-include-index parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-include-index"/></c>
316  <c>"yes"</c>
317  <c>When set to "no", no index will be generated.</c>
318
319  <c>rfc-ext</c>
320  <c>include-references-in-index<iref item="include-references-in-index PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="include-references-in-index"/></c>
321  <c>xml2rfc-ext-include-references-in-index<iref item="xml2rfc-ext-include-references-in-index parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-include-references-in-index"/></c>
322  <c>"no"</c>
323  <c>When set to "yes", index entries are generated for all references.</c>
324
325  <c>rfc-ext</c>
326  <c>insert-metadata<iref item="insert-metadata PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="insert-metadata"/></c>
327  <c>xml2rfc-ext-insert-metadata<iref item="xml2rfc-ext-insert-metadata parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-insert-metadata"/></c>
328  <c>"yes"</c>
329  <c>When set to "yes", include JS code that fetches current RFC metadata and
330  inserts it into the front page (standards track, obsoletion, updates, errata).</c>
331
332  <c>rfc-ext</c>
333  <c>justification<iref item="justification PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="justification"/></c>
334  <c>xml2rfc-ext-justification<iref item="xml2rfc-ext-justification parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-justification"/></c>
335  <c>"never"</c>
336  <c>"never": never emit justified text, "always": always emit justified text, "print": only emit justified text for print media.</c>
337
338  <c>rfc-ext</c>
339  <c>parse-xml-in-artwork<iref item="parse-xml-in-artwork PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="parse-xml-in-artwork"/></c>
340  <c>xml2rfc-parse-xml-in-artwork<iref item="xml2rfc-ext-parse-xml-in-artwork parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-parse-xml-in-artwork"/></c>
341  <c>"no"</c>
342  <c>May be used to enable parsing of XML content in figures (MSXML only).</c>
343
344  <c>rfc-ext</c>
345  <c>sec-no-trailing-dots<iref item="sec-no-trailing-dots PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="sec-no-trailing-dots"/></c>
346  <c>xml2rfc-ext-sec-no-trailing-dots<iref item="xml2rfc-ext-sec-no-trailing-dots parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-sec-no-trailing-dots"/></c>
347  <c></c>
348  <c>When set to "yes", add trailing dots to section numbers. This seems to be the preferred format in the
349  newest RFCs.</c>
350
351  <c>rfc-ext</c>
352  <c>support-rfc2731<iref item="support-rfc2731 PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="support-rfc2731"/></c>
353  <c>xml2rfc-ext-support-rfc2731<iref item="xml2rfc-ext-support-rfc2731 parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-support-rfc2731"/></c>
354  <c>"yes"</c>
355  <c>Decides whether the HTML transformation should generate META tags according <xref target="rfc2731.properties"/>.</c>
356
357
358</texttable>
359</section>
360
361</section>
362
363<section title="Anchors" anchor="anchors">
364<t>
365  The transformation automatically generates anchors that are supposed to
366  be stable and predictable and that can be used to identify specific
367  parts of the document. Anchors are generated both in HTML and XSL-FO
368  content (but the latter will only be used for PDF output when the XSL-FO
369  engine supports producing PDF anchors).
370</t>
371<texttable>
372<preamble>The following anchors get auto-generated:</preamble>
373<ttcol>Anchor name</ttcol><ttcol>Description</ttcol>
374
375  <c>rfc.abstract <iref item="rfc.abstract anchor"/><iref item="Anchors" subitem="rfc.abstract"/></c><c>Abstract</c>
376  <c>rfc.authors <iref item="rfc.authors anchor"/><iref item="Anchors" subitem="rfc.authors"/></c><c>Authors section</c>
377  <c>rfc.copyright <iref item="rfc.copyright anchor"/><iref item="Anchors" subitem="rfc.copyright"/></c><c>Copyright section</c>
378  <c>rfc.copyrightnotice <iref item="rfc.copyrightnotice anchor"/><iref item="Anchors" subitem="rfc.copyrightnotice"/></c><c>Copyright notice</c>
379  <c>rfc.figure.<em>n</em> <iref item="rfc.figure.n anchor"/><iref item="Anchors" subitem="rfc.figure.n"/></c><c>Figures (titled)</c>
380  <c>rfc.figure.u.<em>n</em> <iref item="rfc.figure.u.n anchor"/><iref item="Anchors" subitem="rfc.figure.u.n"/></c><c>Figures (untitled)</c>
381  <c>rfc.index <iref item="rfc.index anchor"/><iref item="Anchors" subitem="rfc.index"/></c><c>Index</c>
382  <c>rfc.ipr <iref item="rfc.ipr anchor"/><iref item="Anchors" subitem="rfc.ipr"/></c><c>Intellectual Property</c>
383  <c>rfc.iref.<em>n</em> <iref item="rfc.iref.n anchor"/><iref item="Anchors" subitem="rfc.iref.n"/></c><c>Internal references</c>
384  <c>rfc.note.<em>n</em> <iref item="rfc.note.n anchor"/><iref item="Anchors" subitem="rfc.note.n"/></c><c>Notes (from front section)</c>
385  <c>rfc.references <iref item="rfc.references anchor"/><iref item="Anchors" subitem="rfc.references"/></c><c>References</c>
386  <c>rfc.references.<em>n</em> <iref item="rfc.references.n anchor"/><iref item="Anchors" subitem="rfc.references"/></c><c>Additional references</c>
387  <c>rfc.section.<em>n</em> <iref item="rfc.section.n anchor"/><iref item="Anchors" subitem="rfc.section.n"/></c><c>Section <em>n</em></c>
388  <c>rfc.section.<em>n</em>.p.<em>m</em> <iref item="rfc.section.n.p.m anchor"/><iref item="Anchors" subitem="rfc.section.n.p.m"/></c><c>Section <em>n</em>, paragraph <em>m</em></c>
389  <c>rfc.status <iref item="rfc.status anchor"/><iref item="Anchors" subitem="rfc.status"/></c><c>Status of memo</c>
390  <c>rfc.table.<em>n</em> <iref item="rfc.figure.n anchor"/><iref item="Anchors" subitem="rfc.figure.n"/></c><c>Tables (titled)</c>
391  <c>rfc.table.u.<em>n</em> <iref item="rfc.figure.u.n anchor"/><iref item="Anchors" subitem="rfc.figure.u.n"/></c><c>Tables (untitled)</c>
392  <c>rfc.toc <iref item="rfc.toc anchor"/><iref item="Anchors" subitem="rfc.toc"/></c><c>Table of contents</c>
393  <c>rfc.xref.<em>name</em>.<em>n</em> <iref item="rfc.xref.name.n anchor"/><iref item="Anchors" subitem="rfc.xref.name.n"/></c><c>References to reference <em>n</em> to <em>name</em></c>
394
395</texttable>
396</section>
397
398<section title="Supported XSLT engines" anchor="xslt.engines">
399<t>
400  The transformation requires a non-standard extension function (see <eref target="http://www.exslt.org/exsl/functions/node-set/index.html">
401  exsl:node-set</eref>)
402  which is however widely available. XSLT processors that do not support this
403  extension (or a functional equivalent, such as msxsl:node-set) currently are not supported.
404</t>
405<t anchor="exsl-date-time">
406  Input documents do not always specify the date completely. In this case, the
407  transformation attempts to let the XSLT engine to compute the system date,
408  using either scripting in Microsoft's XSLT engine, or
409  the  <eref target="http://www.exslt.org/date/functions/date-time/">
410  exsl:date-time</eref> extension function.
411</t>
412<section title="Standalone Engines">
413<t>
414  The following XSLT engines are believed to work well:
415  <list style="symbols">
416    <t>Windows: <iref item="MSXML3"/><iref item="MSXML4"/>MSXML3 and MSXML4 (<eref target="http://msdn.microsoft.com/xml"/>;
417      command line processor "msxsl" is available from <eref target="http://www.microsoft.com/downloads/details.aspx?FamilyID=2FB55371-C94E-4373-B0E9-DB4816552E41">Microsoft Download Center</eref>)</t>
418    <t>Java: <iref item="Saxon"/>Saxon (<eref target="http://saxon.sourceforge.net/"/>)</t>
419    <t>Java: <iref item="Xalan"/>Xalan (<eref target="http://xml.apache.org/xalan-j/"/>)</t>
420    <t>C/C++: <iref item="xsltproc"/>xsltproc (libxslt) (<eref target="http://xmlsoft.org/XSLT/"/>, make sure that you
421    have a current version)</t>
422  </list>
423</t>
424</section>
425
426<section title="In-Browser Engines" anchor="xslt.engines.browser">
427<t>
428  The following browsers seem to work fine:
429  <list style="symbols">
430    <x:lt>
431      <t><iref item="Internet Explorer 5.5"/>Internet Explorer 5.5 (Windows version, if MSXML3 is installed)</t>
432    </x:lt>
433    <x:lt>
434      <t><iref item="Internet Explorer 6"/><iref item="Internet Explorer 7"/><iref item="Internet Explorer 8"/><iref item="Internet Explorer 9"/>Internet Explorer 6 and newer</t>
435    </x:lt>
436    <x:lt>
437      <t anchor="firefox3"><iref item="Mozilla"/><iref item="Firefox" subitem="3.*"/>Firefox 3.0 and newer</t>
438      <t>
439        <list style="symbols">
440          <t>Be aware that XSLT execution can be suppressed using <iref item="NoScript"/><eref target="https://addons.mozilla.org/de/firefox/addon/722">NoScript</eref></t>
441          <t>Firefox does not load external DTDs nor external entities,
442          see <eref target="https://bugzilla.mozilla.org/show_bug.cgi?id=22942">Mozilla Bug 22942</eref>, thus entities
443          like &amp;nbsp; need to be declared in the internal subset (<xref target="examples.internalsubset"/>)</t>
444          <t>There seems to be a new problem in Firefox 4 where it occasionally
445          does the initial rendering with the wrong width (people who can reproduce
446          this problem please comment on <eref target="https://bugzilla.mozilla.org/show_bug.cgi?id=640390"/>.
447          </t>
448          <t>Date computation is available in Firefox starting with Firefox 6 (see <eref target="https://bugzilla.mozilla.org/show_bug.cgi?id=603159"/>)</t>
449        </list>
450      </t>
451    </x:lt>
452    <x:lt>
453      <t><iref item="Safari"/><iref item="Safari" subitem="3.*"/>Safari 3 (starting with version 3.0.4)</t>
454      <t>
455        <list style="symbols">
456          <t>Date computation not available (see <eref target="https://bugs.webkit.org/show_bug.cgi?id=4079"/>)</t>
457        </list>
458      </t>
459    </x:lt>
460    <x:lt>
461      <t><iref item="Google Chrome"/>Google Chrome</t>
462      <t>
463        <list style="symbols">
464          <t>Date computation not available (see <eref target="https://bugs.webkit.org/show_bug.cgi?id=4079"/>)</t>
465        </list>
466      </t>
467    </x:lt>
468    <x:lt>
469      <t><iref item="Opera"/>Opera (starting with version 10)</t>
470      <t>
471        <list style="symbols">
472          <t>Date computation not available<!--DSK-336575@bugs.opera.com--></t>
473        </list>
474      </t>
475    </x:lt>
476  </list>
477</t>
478<t>
479  The following browsers are known not to work properly:
480  <list style="symbols">
481    <x:lt>
482      <t anchor="firefox12"><iref item="Mozilla"/><iref item="Firefox" subitem="1.*/2.*"/>Firefox 1.*/2.*: (missing extension function - see change request at Mozilla BugZilla
483      <eref target="http://bugzilla.mozilla.org/show_bug.cgi?id=193678">193678</eref>)</t>
484    </x:lt>
485    <x:lt>
486      <t anchor="opera"><iref item="Opera"/>Opera 9.21: execution fails, potentially
487      to a somewhat complex XPath expression (reported to Opera as bug 245725).</t>
488    </x:lt>
489    <x:lt>
490      <t>Opera 9.5 and 9.6:
491      transformation appears to work, but CSS isn't getting applied (reported to Opera as bug 337388 on 2008-06-12).</t>
492    </x:lt>
493    <x:lt>
494      <t anchor="safari"><iref item="Safari"/>Safari 2.* supports client-side XSLT as of MacOS X 10.4,
495      but misses required extension functions. A problem
496      with stylesheets producing non-ASCII output (such as NBSP characters)
497      has been fixed as of OSX 10.4.4. Both
498      problems have been reported through Apple's bug tracking system, see
499      <eref target="http://drakken.dbc.mtview.ca.us/pipermail/xml2rfc/2005-May/002073.html"/> and
500      <eref target="http://bugs.webkit.org/show_bug.cgi?id=4079"/>.
501      </t>
502    </x:lt>
503  </list>
504</t>
505</section>
506
507</section>
508
509<section title="Transforming to HTML" anchor="output.html">
510<t>
511  Transformation to HTML can be done inside the browser if it supports
512  XSLT. To enable this, add the following processing instruction to
513  the start of the source file:
514</t>
515<iref item="xml-stylesheet PI"/>
516<figure><artwork type="example" x:lang="">
517  &lt;?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
518</artwork></figure>
519<t>
520  (and ensure that <tt>rfc2629.xslt</tt> is present).
521</t>
522
523<section title="HTML compliance">
524<t>
525  The transformation result is supposed to conform to HTML5 <xref target="HTML5"/>.
526  This can be checked using the W3C's online
527  validator at <eref target="http://validator.w3.org" /><iref item="HTML compliance"/>.
528</t>
529<t>
530  XSLT 1.0 is not capable to directly emit the HTML doctype declaration, thus
531  uses the SYSTEM ID "about:legacy-compat" instead
532  (see <xref target="HTML5" x:sec="8.1.1" x:rel="syntax.html#the-doctype"/>).
533</t>
534<t>
535  When not run in a browser, the doctype declaration can be adjusted using
536  a small script, such as with:
537</t>
538<figure><artwork type="example">
539saxon test.xml rfc2629.xslt | awk -f html5doctype.awk
540</artwork></figure>
541<t>
542  with
543</t>
544<figure><artwork x:lang="" filename="html5doctype.awk" type="code">
545<?BEGINESCAPEDINC html5doctype.awk ?>
546#!/usr/bin/awk -f
547
548# waitfordoctype:
549# 0: wait for line starting with DOCTYPE and eat empty lines
550# 1: wait for line starting with &lt;html
551# 2: afterwards
552
553BEGIN {
554  waitfordoctype = 0;
555}
556
557/&lt;!DOCTYPE .*/ {
558  if (waitfordoctype == 0) {
559    waitfordoctype = 1
560  }
561}
562
563/&lt;html.*/ {
564  if (waitfordoctype == 1) {
565    waitfordoctype = 2
566    printf("&lt;!DOCTYPE html>\n")
567  }
568  else {
569    print
570  }
571}
572
573{
574  if (waitfordoctype == 0 &amp;&amp; $0 != "") {
575    print
576  }
577  else if (waitfordoctype == 2) {
578    print
579  }
580}
581<?ENDESCAPEDINC html5doctype.awk ?>
582</artwork></figure>
583</section>
584
585<section title="Standard HTML LINK elements" anchor="html.link">
586<t>
587  LINK elements exist since HTML 2.0. They can be used to embed content-independant
588  links inside the document. Unfortunately, only few user agents
589  support this element. Firefox users may want to check the
590  <eref target="https://addons.mozilla.org/firefox/2933/">Link Widgets</eref>
591  extension.
592</t>
593<texttable>
594<preamble>The following LINK elements are produced:</preamble>
595
596  <ttcol>LINK type</ttcol>
597  <ttcol>description</ttcol>
598 
599  <c>alternate<iref item="alternate HTML LINK element"/><iref item="HTML LINK elements" subitem="alternate"/></c><c>for RFCs, a link to the authorative ASCII version on the IETF web site</c>
600  <c>appendic<iref item="appendix HTML LINK element"/><iref item="HTML LINK elements" subitem="appendix"/></c><c>pointer to all top-level appendics</c>
601  <c>author<iref item="author HTML LINK element"/><iref item="HTML LINK elements" subitem="author"/></c><c>pointer to "authors" section</c>
602  <c>chapter<iref item="chapter HTML LINK element"/><iref item="HTML LINK elements" subitem="chapter"/></c><c>pointer to all top-level sections</c>
603  <c>contents<iref item="contents HTML LINK element"/><iref item="HTML LINK elements" subitem="contents"/></c><c>pointer to table of contents</c>
604  <c>copyright<iref item="copyright HTML LINK element"/><iref item="HTML LINK elements" subitem="copyright"/></c><c>pointer to copyright statement</c>
605  <c>index<iref item="index HTML LINK element"/><iref item="HTML LINK elements" subitem="index"/></c><c>pointer to index</c>
606
607</texttable>
608<figure>
609<preamble>
610The figure below shows how Mozilla Firefox 1.0 displays the Site Navigation Bar
611for rfc2396.xml.
612</preamble>
613<artwork src="rfc2629xslt-fig1.png" height="235" width="509" type="image/png">
614(LINK elements displayed in Mozilla Firefox for RFC2396.xml)
615</artwork>
616</figure>
617
618</section>
619
620
621<section title="Standard HTML metadata">
622<texttable>
623<preamble>The following standard HTML META elements are produced:</preamble>
624
625  <ttcol>META name</ttcol>
626  <ttcol>description</ttcol>
627 
628  <c>generator<iref item="generator HTML META element"/><iref item="HTML META elements" subitem="generator"/></c><c>from XSLT engine version and stylesheet version</c>
629  <c>keywords<iref item="keywords HTML META element"/><iref item="HTML META elements" subitem="keywords"/></c><c>from keyword elements in front section</c>
630
631</texttable>
632</section>
633
634
635<section title="Dublin Core (RFC2731) metadata" anchor="rfc2731.properties">
636<t>
637  Unless turned off using the "rfc-ext support-rfc2731" processing
638  instruction, the transformation will generate metadata according to
639  <xref target="RFC2731"/> and <xref target="DC-HTML"/>.
640</t>
641<texttable>
642<preamble>The following DCMI properties are produced:</preamble>
643
644  <ttcol>META name</ttcol>
645  <ttcol>description</ttcol>
646 
647  <c>DC.Creator<iref item="Creator DCMI property"/><iref item="DCMI properties" subitem="Creator"/></c><c>from author information in front section</c>
648  <c>DC.Date.Issued<iref item="Date.Issued DCMI property"/><iref item="DCMI properties" subitem="Date.Issued"/></c><c>from date information in front section</c>
649  <c>DC.Description.Abstract<iref item="Description.Abstract DCMI property"/><iref item="DCMI properties" subitem="Description.Abstract"/></c><c>from abstract</c>
650  <c>DC.Identifier<iref item="Identifier DCMI property"/><iref item="DCMI properties" subitem="Identifier"/></c><c>document URN <xref target="RFC2648" /> from "docName" attribute</c>
651  <c>DC.isPartOf<iref item="isPartOf DCMI property"/><iref item="DCMI properties" subitem="isPartOf"/></c><c>RFC ISSN (for RFCs)</c>
652  <c>DC.Relation.Replaces<iref item="Relation.Replaces DCMI property"/><iref item="DCMI properties" subitem="Relation.Replaces"/></c><c>from "obsoletes" attribute</c>
653
654</texttable>
655</section>
656
657</section>
658
659<section title="Transforming to XHTML" anchor="output.xhtml">
660<t>
661  Transforming to XHTML requires slightly different XSLT output options and
662  is implemented by the derived transformation script <tt>rfc2629toXHTML.xslt</tt>.
663</t>
664<t><list><t>
665  <x:h>Note:</x:h> Microsoft Internet Explorer does <em>not</em> support XHTML.
666  Therefore it usually makes more sense to generate plain old HTML.
667</t></list></t>
668</section>
669
670<section title="Transforming to CHM (Microsoft Compiled Help)" anchor="output.chm">
671<t>
672  <iref item="CHM format"/>
673  <iref item="Microsoft Help"/>
674  To generate a CHM file using Microsoft's HTML Help Compiler (hhc), three
675  files are required in addition to the HTML file.
676  <list style="numbers">
677    <t>hhc - table of contents file (HTML)</t>
678    <t>hhk - index file (HTML)</t>
679    <t>hhp - project file (plain text)</t>
680  </list> 
681</t>
682<t>
683  The three files are generated with three specific transformations, each
684  requiring the additional XSLT parameter "basename" to specify the filename
685  prefix.
686</t>
687<figure>
688<preamble>Example:</preamble>
689<artwork type="example">
690saxon rfc2616.xml rfc2629toHhp.xslt basename=rfc2616  > rfc2616.hhp
691saxon rfc2616.xml rfc2629toHhc.xslt basename=rfc2616  > rfc2616.hhc
692saxon rfc2616.xml rfc2629toHhk.xslt basename=rfc2616  > rfc2616.hhk
693hhc rfc2616.hhp
694</artwork>
695</figure>
696</section>
697
698<section title="Transforming to PDF" anchor="output.pdf">
699
700<section title="Via XSL-FO" anchor="output.pdf.fop">
701<t>
702  Transformation to XSL-FO <xref target="XSL-FO"/> format is available through
703  <tt>rfc2629toFO.xslt</tt> (which includes <tt>rfc2629.xslt</tt>, so keep both in the
704  same folder).
705</t>
706<t>
707  Compared to HTML user agents, XSL-FO engines unfortunately either come
708  as open source (for instance, <iref item="Apache FOP"/>Apache FOP) or
709  feature-complete (for instance, <iref item="AntennaHouse XSL Formatter"/>
710  AntennaHouse XSL Formatter), but not both at the same time.
711</t>
712<t>
713  As Apache FOP needs special workarounds (index generation), and
714  some popular extensions aren't standardized yet, the translation produces
715  a generic output (hopefully) conforming to <xref target="XSL-FO"/>.
716  Specific backends (<tt>xsl11toFop.xslt</tt>,
717  <tt>xsl11toXep.xslt</tt>, <tt>xsl11toAn.xslt</tt>)
718  then provide post-processing for the individual processors.
719</t>
720<x:note>
721  <t>
722    <x:h>Note:</x:h>
723    the output is currently targeted at Apache FOP 1.1.
724  </t>
725</x:note>
726
727<!-- outdated <section title="Extension feature matrix">
728<texttable>
729  <ttcol/>
730  <ttcol align="center" width="20%">PDF anchors</ttcol>
731  <ttcol align="center" width="20%">PDF bookmarks</ttcol>
732  <ttcol align="center" width="20%">PDF document information</ttcol>
733  <ttcol align="center" width="20%">Index cleanup</ttcol>
734 
735  <c><eref target="http://www.w3.org/TR/2003/WD-xsl11-20031217/">XSL 1.1 WD</eref></c>
736  <c>no, but can be auto-generated from "id" attributes</c> 
737  <c><eref target="http://www.w3.org/TR/2003/WD-xsl11-20031217/#d0e12873">yes</eref></c>
738  <c>no, but uses XEP output extensions</c>
739  <c><eref target="http://www.w3.org/TR/2003/WD-xsl11-20031217/#d0e12534">yes</eref></c>
740
741  <c><eref target="http://www.antennahouse.com/">Antenna House XSL formatter</eref></c>
742  <c>no</c>
743  <c><eref target="http://www.antennahouse.com/XSL20/axf-extension.htm">yes</eref> (from XSL 1.1 bookmarks)</c>
744  <c><eref target="http://www.antennahouse.com/XSL20/axf-extension.htm">yes</eref> (from XEP document info)</c>
745  <c><eref target="http://www.antennahouse.com/XSL20/axf-extension.htm">yes</eref> (just page duplicate elimination, from XSL 1.1 page index)</c>
746
747  <c><eref target="http://xml.apache.org/fop/">Apache FOP</eref></c>
748  <c><eref target="http://xml.apache.org/fop/extensions.html#named-destinations">yes</eref></c>
749  <c><eref target="http://xml.apache.org/fop/extensions.html#bookmarks">yes</eref> (from XSL 1.1 bookmarks)</c>
750  <c><eref target="http://xmlgraphics.apache.org/fop/0.95/metadata.html#xmp-in-fo">yes</eref></c>
751  <c>no</c>
752
753  <c><eref target="http://xep.xattic.com/">RenderX XEP</eref></c>
754  <c>no</c>
755  <c><eref target="http://xep.xattic.com/xep/spec.html">yes</eref> (from XSL 1.1 bookmarks)</c>
756  <c><eref target="http://xep.xattic.com/xep/spec.html">yes</eref></c>
757  <c><eref target="http://xep.xattic.com/xep/spec.html">yes</eref> (from XSL 1.1 page index)</c>
758
759</texttable>
760</section>-->
761
762<section title="Example: producing output for Apache FOP">
763<figure>
764<preamble>Example:</preamble>
765<artwork type="example">
766saxon rfc2616.xml rfc2629toFo.xslt > tmp.fo
767saxon tmp.fo xsl11toFop.xslt > rfc2629.fo
768</artwork>
769</figure>
770</section>
771</section>
772
773<section title="Via HTML" anchor="output.pdf.html">
774<t>
775  PDF output can also be produced directly from (X)HTML. One simple approach
776  is to rely on the browser's printing function, and to use a printer driver
777  that produces PDF. Depending on the brower's CSS capabilities, the output
778  will behave properly with respect to table breaks etc.
779</t>
780<t>
781  An alternative is PrinceXML (see <eref target="http://www.princexml.com/"/>),
782  which can produce PDF directly from (X)HTML input, based on the CSS printing
783  information.
784</t>
785<figure>
786  <preamble>
787    For instance, PDF output with text justification turned on can be
788    produced with:
789  </preamble>
790  <artwork type="example">
791saxon input.xml rfc2629.xslt > output.html
792prince output.html output.pdf</artwork>
793</figure>
794</section>
795
796</section>
797
798<section title="Transforming to ePub" anchor="output.epub">
799<t>
800  Experimental transformation to ePub format is available through a set
801  of stylesheets, and the Unix Shell script
802  <tt>mkepub.sh</tt> (which requires that "zip" and either
803  "saxon" or "xsltproc" are installed).
804</t>
805<figure>
806  <preamble>
807    For instance, an epub version of rfc2616.xml can be generated like this:
808  </preamble>
809  <artwork type="example">
810mkepub.sh rfc2616.xml
811</artwork>
812</figure>
813</section>
814
815<section title="Generic Extensions" anchor="extensions">
816<t>
817  This section documents extensions implemented in
818  <tt>rfc2629.xslt</tt>, using the extension
819  namespace "http://purl.org/net/xml2rfc/ext".
820</t>
821
822<section title="&lt;abnf-char-sequence> element" anchor="ext.element.abnf-char-sequence">
823  <iref item="Extension Elements" subitem="abnf-char-sequence" primary="true"/>
824  <iref item="abnf-char-sequence Extension Element" primary="true"/>
825  <x:anchor-alias value="abnf-char-sequence"/>
826  <t>
827    Converts the contained quoted string into a hex-encoded character
828    sequence, for use in case-sensitive ABNF productions.
829  </t>
830  <t>
831    For instance, "&lt;x:abnf-char-sequence>"HTTP"&lt;/x:abnf-char-sequence>"
832    gets converted to "<x:abnf-char-sequence>"HTTP"</x:abnf-char-sequence>".
833  </t>
834</section>
835
836<section title="&lt;anchor-alias> element" anchor="ext.element.anchor-alias">
837  <iref item="Extension Elements" subitem="anchor-alias" primary="true"/>
838  <iref item="anchor-alias Extension Element" primary="true"/>
839  <x:anchor-alias value="anchor-alias"/>
840  <t>
841    Using its "value" attribute, this element allows the definition of an
842    internal link target alias for the enclosing element. This alias can
843    then be used with the &lt;<x:ref>ref</x:ref>> element for intra-document
844    references.
845  </t>
846  <t>
847    Note that the anchor alias is not subject to the naming constraints that
848    apply to anchor elements (which are <eref target="http://www.w3.org/TR/REC-xml/#NT-Name">XML
849    names</eref>).
850  </t>
851</section>
852
853<!--<section title="&lt;include-author> element" anchor="ext.element.include-author">
854  <iref item="Extension Elements" subitem="include-author" primary="true"/>
855  <iref item="include-author Extension Element" primary="true"/>
856  <x:anchor-alias value="include-author"/>
857  <t>
858    This element can be used to include an author's contact information in
859    place where a paragraphj (&lt;t>) would be allowed otherwise.
860  </t>
861</section> -->
862
863<section title="&lt;bcp14> element" anchor="ext.element.bcp14">
864  <iref item="Extension Elements" subitem="bcp14" primary="true"/>
865  <iref item="bcp14 Extension Element" primary="true"/>
866  <x:anchor-alias value="bcp14"/>
867  <t>
868    This element marks the content as being one of the normative keywords
869    defined in <xref target="RFC2119"/>.
870  </t>
871  <figure>
872    <preamble>
873      The DOCTYPE definition below allows using these keywords using XML
874      entity expansion: such as in "...server &amp;MUST; accept...".
875    </preamble>
876    <artwork type="example" x:lang="">
877&lt;!DOCTYPE rfc [
878 &lt;!ENTITY MAY "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
879   >MAY&lt;/bcp14>">
880 &lt;!ENTITY MUST "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
881   >MUST&lt;/bcp14>">
882 &lt;!ENTITY MUST-NOT "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
883   >MUST NOT&lt;/bcp14>">
884 &lt;!ENTITY OPTIONAL "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
885   >OPTIONAL&lt;/bcp14>">
886 &lt;!ENTITY RECOMMENDED "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
887   >RECOMMENDED&lt;/bcp14>">
888 &lt;!ENTITY REQUIRED "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
889   >REQUIRED&lt;/bcp14>">
890 &lt;!ENTITY SHALL "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
891   >SHALL&lt;/bcp14>">
892 &lt;!ENTITY SHALL-NOT "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
893   >SHALL NOT&lt;/bcp14>">
894 &lt;!ENTITY SHOULD "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
895   >SHOULD&lt;/bcp14>">
896 &lt;!ENTITY SHOULD-NOT "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
897   >SHOULD NOT&lt;/bcp14>">]></artwork>
898  </figure>
899</section>
900
901<section title="&lt;bb> element" anchor="ext.element.bb">
902  <iref item="Extension Elements" subitem="bb" primary="true"/>
903  <iref item="bb Extension Element" primary="true"/>
904  <x:anchor-alias value="bb"/>
905  <t>
906    Marking up a string as &lt;bb> indicates that it represents the bottom
907    line of a box drawing, replacing the "+" and "-" characters accordingly.
908  </t>
909</section>
910
911<section title="&lt;bc> element" anchor="ext.element.bc">
912  <iref item="Extension Elements" subitem="bc" primary="true"/>
913  <iref item="bc Extension Element" primary="true"/>
914  <x:anchor-alias value="bc"/>
915  <t>
916    Marking up a string as &lt;bc> indicates that it represents a center
917    line of a box drawing, replacing the "|" character accordingly.
918  </t>
919</section>
920
921<section title="&lt;blockquote> element" anchor="ext.element.blockquote">
922  <iref item="Extension Elements" subitem="blockquote" primary="true"/>
923  <iref item="blockquote Extension Element" primary="true"/>
924  <x:anchor-alias value="blockquote"/>
925  <t>
926    This element is like the &lt;blockquote&gt; element defined in <xref target="HTML5" x:sec="4.4.4" x:rel="grouping-content.html#the-blockquote-element"/> 
927    (note this is a block-level element!). It should contain one or more
928    &lt;t> child elements.
929  </t>
930</section>
931
932<section title="&lt;bt> element" anchor="ext.element.bt">
933  <iref item="Extension Elements" subitem="bt" primary="true"/>
934  <iref item="bt Extension Element" primary="true"/>
935  <x:anchor-alias value="bt"/>
936  <t>
937    Marking up a string as &lt;bt> indicates that it represents the top
938    line of a box drawing, replacing the "+" and "-" characters accordingly.
939  </t>
940</section>
941
942<section title="&lt;dfn> element" anchor="ext.element.dfn">
943  <iref item="Extension Elements" subitem="dfn" primary="true"/>
944  <iref item="dfn Extension Element" primary="true"/>
945  <x:anchor-alias value="dfn"/>
946  <t>
947    This element is like the &lt;dfn&gt; element defined in <xref target="HTML5" x:sec="4.5.8" x:rel="text-level-semantics.html#the-dfn-element"/>.
948  </t>
949</section>
950
951<section title="&lt;feedback> element" anchor="ext.element.feedback">
952  <iref item="Extension Elements" subitem="feedback" primary="true"/>
953  <iref item="feedback Extension Element" primary="true"/>
954  <x:anchor-alias value="feedback"/>
955  <t>
956    This elements allows declaring a feedback link for document reviewers.
957    The template string takes the form of a URI template, such as:
958  </t>
959  <figure>
960    <artwork type="example" x:lang="">
961&lt;x:feedback template="mailto:ietf-http-wg@w3.org?subject={docname},%20%22{section}%22&amp;amp;body=&amp;lt;{ref}&amp;gt;:"/>
962</artwork></figure>
963  <t>
964    where "docname" is substituted by the document name, "section" is substituted
965    by section title (number and name), and "ref" is substituted by a URI pointing
966    to the section being referenced.
967  </t>
968</section>
969
970<section title="&lt;h> element" anchor="ext.element.h">
971  <iref item="Extension Elements" subitem="h" primary="true"/>
972  <iref item="h Extension Element" primary="true"/>
973  <x:anchor-alias value="h"/>
974  <t>
975    This element is like the "<eref target="http://www.w3.org/TR/2006/WD-xhtml2-20060726/mod-structural.html#edef_structural_h">h</eref>" element in <xref target="XHTML2"/>.
976  </t>
977</section>
978
979<section title="&lt;highlight> element" anchor="ext.element.highlight">
980  <iref item="Extension Elements" subitem="highlight" primary="true"/>
981  <iref item="highlight Extension Element" primary="true"/>
982  <x:anchor-alias value="highlight"/>
983  <t>
984    Used to highlight text passages, currently only allowed in &lt;artwork>.
985  </t>
986  <t>
987    <x:h>Note:</x:h> this is stripped when generating input for xml2rfc,
988    so please use with care.
989  </t>
990</section>
991
992<section title="&lt;length-of> element" anchor="ext.element.length-of">
993  <iref item="Extension Elements" subitem="length-of" primary="true"/>
994  <iref item="length-of Extension Element" primary="true"/>
995  <x:anchor-alias value="length-of"/>
996  <t>
997    This element can be used to insert the length of another formatted
998    section (in decimal).
999  </t>
1000  <figure>
1001    <preamble>Example: computing the Content-Length header value</preamble>
1002    <artwork type="example" x:lang="">
1003&lt;artwork>
1004...
1005Content-Length: &lt;x:length-of target="req"/>
1006 
1007&lt;x:span anchor="req">123456789
1008&lt;x:span>&lt;artwork/>
1009</artwork>
1010  </figure>
1011  <t>
1012    The lenght computation counts line ends as two characters (CRLF).
1013  </t>
1014  <t>
1015    Note that indentation characters in artwork <em>will</em> be
1016    counted. The "indented" attribute allows to specify the amount of
1017    indentation to be substracted from the computed length.
1018  </t>
1019</section>
1020
1021<section title="&lt;link> element" anchor="ext.element.link">
1022  <iref item="Extension Elements" subitem="link" primary="true"/>
1023  <iref item="link Extension Element" primary="true"/>
1024  <x:anchor-alias value="link"/>
1025  <t>
1026    This element can be added as a top-level child element below
1027    &lt;rfc> to indicate additional link information. It's currently
1028    used only when generating HTML output, in which case an HTML
1029    <eref target="http://www.w3.org/TR/html4/struct/links.html#edef-LINK">&lt;link></eref> element with identical attributes gets generated.
1030  </t>
1031  <figure>
1032    <preamble>Example: generating HTML link element</preamble>
1033    <artwork type="example" x:lang="">
1034&lt;x:link xmlns:x="http://purl.org/net/xml2rfc/ext"
1035    rel="Bookmark"
1036    title="IETF WEBDAV Working Group"
1037    href="http://ftp.ics.uci.edu/pub/ietf/webdav/"/></artwork>
1038  </figure>
1039  <t>
1040    If the attribute "basename" is present, it is used to compute the
1041    target href based on the output format being generated (this is handy
1042    for "next"/"prev" links in a series of documents. In this case, the href
1043    attribute is not required.
1044  </t>
1045  <figure>
1046    <preamble>For instance:</preamble>
1047    <artwork type="example" x:lang="">
1048&lt;x:link xmlns:x="http://purl.org/net/xml2rfc/ext"
1049    rel="next"
1050    title="Part2"
1051    basename="draft-foobar-protocol-p2-latest"/></artwork>
1052  </figure>
1053</section>
1054
1055<section title="&lt;lt> element" anchor="ext.element.lt">
1056  <iref item="Extension Elements" subitem="lt" primary="true"/>
1057  <iref item="lt Extension Element" primary="true"/>
1058  <x:anchor-alias value="lt"/>
1059  <t>
1060    Used for grouping multiple &lt;t&gt; elements into a single list item.
1061  </t>
1062</section>
1063
1064<section title="&lt;note> element" anchor="ext.element.note">
1065  <iref item="Extension Elements" subitem="note" primary="true"/>
1066  <iref item="note Extension Element" primary="true"/>
1067  <x:anchor-alias value="note"/>
1068  <t>
1069    Can be used to add a note, usually indented by a few characters.
1070    It should contain one or more &lt;t> child elements.
1071  </t>
1072</section>
1073
1074<section title="&lt;parse-xml> element" anchor="ext.element.parse-xml">
1075  <iref item="Extension Elements" subitem="parse-xml" primary="true"/>
1076  <iref item="parse-xml Extension Element" primary="true"/>
1077  <x:anchor-alias value="parse-xml"/>
1078  <t>
1079    This element instructs the processor to parse the contents as XML and
1080    to warn when there's a problem (requires either MSXML or Saxon8 or newer).
1081  </t>
1082</section>
1083
1084<section title="&lt;prose> element" anchor="ext.element.prose">
1085  <iref item="Extension Elements" subitem="prose" primary="true"/>
1086  <iref item="prose Extension Element" primary="true"/>
1087  <x:anchor-alias value="prose"/>
1088  <t>
1089    This element can be used inside &lt;reference> to add plain text (before
1090    the date, when present).
1091  </t>
1092  <t>
1093    <em>See also &lt;refcontent&gt; (<xref target="v3.refcontent"/>).</em>
1094  </t>
1095</section>
1096
1097<section title="&lt;q> element" anchor="ext.element.q">
1098  <iref item="Extension Elements" subitem="q" primary="true"/>
1099  <iref item="q Extension Element" primary="true"/>
1100  <x:anchor-alias value="q"/>
1101  <t>
1102    This element is like the &lt;q&gt; element defined in <xref target="HTML5" x:sec="4.5.7" x:rel="text-level-semantics.html#the-q-element"/>.
1103  </t>
1104</section>
1105
1106<section title="&lt;ref> element" anchor="ext.element.ref">
1107  <iref item="Extension Elements" subitem="ref" primary="true"/>
1108  <iref item="ref Extension Element" primary="true"/>
1109  <x:anchor-alias value="ref"/>
1110  <t>
1111    This element is a simplified variant of the &lt;xref> element, in that
1112    no "target" attribute needs to be specified, instead the text contents
1113    acts as identifier.  That in itself wouldn't be terribly useful,
1114    but together with the &lt;<x:ref>anchor-alias</x:ref>>, it allows
1115    referring to other parts of the document with minimal additional markup.
1116  </t>
1117  <t>
1118    For instance, given an alias definition such as
1119  </t>
1120  <figure>
1121    <artwork type="example" x:lang="">
1122&lt;section title="Test" anchor="test">
1123  &lt;x:anchor-alias value="alias1"/>
1124  &lt;x:anchor-alias value="alias 2"/>
1125  ...
1126&lt;/section></artwork>
1127  </figure>
1128  <t>
1129    the following simple references
1130  </t>
1131  <figure>
1132    <artwork type="example" x:lang="">
1133&lt;x:ref>test&lt;/x:ref>
1134&lt;x:ref>alias1&lt;/x:ref>
1135&lt;x:ref>alias 2&lt;/x:ref></artwork>
1136  </figure>
1137  <t>
1138    are equivalent to...:
1139  </t>
1140  <figure>
1141    <artwork type="example" x:lang="">
1142&lt;xref target="test">test&lt;/xref>
1143&lt;xref target="test">alias1&lt;/xref>
1144&lt;xref target="test">alias 2&lt;/xref></artwork>
1145  </figure>
1146</section>
1147
1148<section title="&lt;source> element" anchor="ext.element.source">
1149  <iref item="Extension Elements" subitem="source" primary="true"/>
1150  <iref item="source Extension Element" primary="true"/>
1151  <x:anchor-alias value="source"/>
1152  <t>
1153    Can be used to enhance a &lt;reference> with information about the
1154    location for the XML source. This can be used by the &lt;xref>
1155    processing code to automatically extract the target section number.
1156  </t>
1157  <figure>
1158    <preamble>
1159      For example:
1160    </preamble>
1161    <artwork type="example">
1162...
1163&lt;xref target="RFC2616" x:fmt="of" x:rel="#PUT" />
1164...
1165
1166&lt;reference target="RFC2616"/>
1167  ...
1168  &lt;x:source href="rfc2616.xml"/>
1169  ...
1170    </artwork>
1171  </figure>
1172</section>
1173
1174<section title="&lt;sup> element" anchor="ext.element.sup">
1175  <iref item="Extension Elements" subitem="sup" primary="true"/>
1176  <iref item="sup Extension Element" primary="true"/>
1177  <x:anchor-alias value="sup"/>
1178  <t>
1179    This element is like the &lt;sup&gt; element in <xref target="HTML5" x:sec="4.5.16" x:rel="text-level-semantics.html#the-sub-and-sup-elements"/>.
1180  </t>
1181  <t>
1182    Note: the down conversion to RFC2629 format replaces
1183    "x<x:sup>y</x:sup>" by "x^y".
1184  </t>
1185  <t>
1186    <em>See also &lt;sup&gt; (<xref target="v3.sup"/>).</em>
1187  </t>
1188</section>
1189
1190<section title="Extensions to Xml2rfc &lt;artwork&gt; element" anchor="ext-rfc2629.artwork">
1191<t>
1192  Sometimes, artwork occurs inside lists. To get it indent properly in xml2rfc's
1193  text output, it needs to be indented in the source. This is sub-optimal, as
1194  this whitespace will also appear in the HTML output, where it's already
1195  indented due to HTML's semantics.
1196  As a workaround, a "x:indent-with" attribute can be specified, containing
1197  a string that will be prepended to each line when <tt>clean-for-DTD.xslt</tt>
1198  is run (see <xref target="clean-for-dtd"/>).
1199</t>
1200<t>
1201  Furthermore, documents can contain code that might need to be marked as "code
1202  component" (<eref target="http://www.ietf.org/iesg/statement/copyright.html"/>).
1203  This can be done using "x:is-code-component".
1204</t>
1205<t>
1206  Finally, when allowing pretty-printing of code (see "html-pretty-print" in
1207  <xref target="extension.pis"/>, the "x:lang" attribute can used to explicitly
1208  opt into pretty-printing (the value is currently unused and ought to be set
1209  to an empty string).
1210</t>
1211</section>
1212
1213<section title="Extensions to Xml2rfc &lt;iref&gt; element" anchor="ext-rfc2629.iref">
1214<t>
1215  The extension attribute below is allowed on the standard &lt;iref&gt; element:
1216  <list style="symbols">
1217    <t>x:for-anchor specifies that the &lt;iref&gt; will also be automatically
1218    inserted whenever the specified anchor is cross-referenced -- this may
1219    save entering lots of &lt;iref&gt; instances. As a special case, a value of
1220    "" (empty string) refers to the anchor attribute of the closest ancestor.</t>
1221  </list>
1222</t>
1223</section>
1224
1225<section title="Extensions to Xml2rfc &lt;list&gt; element" anchor="ext-rfc2629.list">
1226<t>
1227  The extension attribute below is allowed on the standard &lt;list&gt; element:
1228  <list style="symbols">
1229    <t>x:indent specifies the amount of indentation for list items in hanging
1230    lists. This can be useful when the output format, such as XSL-FO, does not
1231    support automatical formatting. The value takes an XSL-FO width, such as "5em".
1232    The default is <em>length of longest label in characters</em> times
1233    <em>0.8em</em>.</t>
1234  </list>
1235</t>
1236<t>
1237  Also, the &lt;list&gt; element can take &lt;x:<x:ref>lt</x:ref>&gt; child elements instead of
1238  &lt;t&gt;, allowing to insert multiple paragraphs into a single list item.
1239</t>
1240</section>
1241
1242<section title="Extensions to Xml2rfc &lt;rfc&gt; element" anchor="ext-rfc2629.rfc">
1243<t>
1244  The extension attributes below are allowed on the standard &lt;rfc&gt; element:
1245  <list style="symbols">
1246    <t>grddl:transformation can be used to reference a GRDDL transform.</t>
1247    <t>x:maturity-level can be used to specify the IETF Standards Track
1248    Maturity Level of "proposed", "draft" or "internet" (see <xref target="RFC2026" x:fmt="of" x:sec="4.1"/>).</t>
1249  </list>
1250</t>
1251</section>
1252
1253<section title="Extensions to Xml2rfc &lt;section&gt; element" anchor="ext-rfc2629.section">
1254<t>
1255  The extension attribute below is allowed on the standard &lt;list&gt; element:
1256  <list style="symbols">
1257    <t>x:fixed-section-number can be used to specify a fixed section number.
1258    This can be useful when formatting historic documents that used a different
1259    numbering style.</t>
1260  </list>
1261</t>
1262</section>
1263
1264<section title="Extensions to Xml2rfc &lt;xref&gt; element" anchor="ext-rfc2629.xref">
1265<t>
1266  Three extension attributes are allowed on the standard &lt;xref&gt; element:
1267  <list style="numbers">
1268    <t>x:sec can be specified to point to a specific section of the referenced document,</t>
1269    <t>x:rel may specify a relative reference to use when linking into the referenced document (if linking by section number is not available),</t>
1270    <t>x:fmt defines the text format to be used.</t>
1271  </list>
1272</t>
1273<t>
1274  The following formats are defined for the x:fmt attribute:
1275  <list style="hanging">
1276    <t hangText=", (Comma)">
1277      [<em>reference</em>], Section <em>sec</em>
1278    </t>
1279    <t hangText="()">
1280      [<em>reference</em>] (Section <em>sec</em>)
1281    </t>
1282    <t hangText="of">
1283      Section <em>sec</em> of [<em>reference</em>]
1284    </t>
1285    <t hangText="number">
1286      <em>sec</em>
1287    </t>
1288    <t hangText="none">
1289      No output (can be used to have xrefs to references without
1290      having them rendered as such)
1291    </t>
1292    <t hangText="sec">
1293      Section <em>sec</em>
1294    </t>
1295  </list>
1296</t>
1297<t>
1298  These extensions are currently only supported for &lt;xref&gt; elements without
1299  child nodes.
1300</t>
1301<t>
1302  If the processor knows how to reference the target section, it will generate
1303  a link directly to the target section, such as in <xref target="RFC2119" x:fmt="," x:sec="5"/>.
1304</t>
1305</section>
1306
1307</section>
1308
1309<section title="Experimental Support for XML2RFCv3 Vocabulary" anchor="v3">
1310<t>
1311  <tt>rfc2629.xslt</tt> experimentally supports some
1312  elements from the "V3" vocabulary, defined in
1313  <xref target="XML2RFCV3"/>. <em>This support is experimental, as
1314  the "v3" vocabulary is still being developed.</em>
1315</t>
1316
1317<section title="aside Element" anchor="v3.aside">
1318  <iref item="V3 Extension Elements" subitem="aside" primary="true"/>
1319  <iref item="aside V3 Extension Element" primary="true"/>
1320<t>
1321  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.aside"/>.
1322</t>
1323</section>
1324
1325<section title="bcp14 Element" anchor="v3.bcp14">
1326  <iref item="V3 Extension Elements" subitem="bcp14" primary="true"/>
1327  <iref item="bcp14 V3 Extension Element" primary="true"/>
1328<t>
1329  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.bcp14"/>.
1330</t>
1331</section>
1332
1333<section title="blockquote Element" anchor="v3.blockquote">
1334  <iref item="V3 Extension Elements" subitem="blockquote" primary="true"/>
1335  <iref item="blockquote V3 Extension Element" primary="true"/>
1336<t>
1337  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.blockquote"/>.
1338</t>
1339</section>
1340
1341<section title="boilerplate Element" anchor="v3.boilerplate">
1342  <iref item="V3 Extension Elements" subitem="boilerplate" primary="true"/>
1343  <iref item="boilerplate V3 Extension Element" primary="true"/>
1344<t>
1345  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.blockquote"/>.
1346</t>
1347</section>
1348
1349<section title="displayreference Element" anchor="v3.displayreference">
1350  <iref item="V3 Extension Elements" subitem="displayreference" primary="true"/>
1351  <iref item="displayreference V3 Extension Element" primary="true"/>
1352<t>
1353  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.displayreference"/>.
1354</t>
1355</section>
1356
1357<section title="dd Element" anchor="v3.dd">
1358  <iref item="V3 Extension Elements" subitem="dd" primary="true"/>
1359  <iref item="dd V3 Extension Element" primary="true"/>
1360<t>
1361  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.dd"/>.
1362</t>
1363</section>
1364
1365<section title="dl Element" anchor="v3.dl">
1366  <iref item="V3 Extension Elements" subitem="dl" primary="true"/>
1367  <iref item="dl V3 Extension Element" primary="true"/>
1368<t>
1369  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.dl"/>.
1370</t>
1371</section>
1372
1373<section title="dt Element" anchor="v3.dt">
1374  <iref item="V3 Extension Elements" subitem="dt" primary="true"/>
1375  <iref item="dt V3 Extension Element" primary="true"/>
1376<t>
1377  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.dt"/>.
1378</t>
1379</section>
1380
1381<section title="em Element" anchor="v3.em">
1382  <iref item="V3 Extension Elements" subitem="em" primary="true"/>
1383  <iref item="em V3 Extension Element" primary="true"/>
1384<t>
1385  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.em"/>.
1386</t>
1387</section>
1388
1389<section title="li Element" anchor="v3.li">
1390  <iref item="V3 Extension Elements" subitem="li" primary="true"/>
1391  <iref item="li V3 Extension Element" primary="true"/>
1392<t>
1393  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.li"/>.
1394</t>
1395</section>
1396
1397<section title="name Element" anchor="v3.name">
1398  <iref item="V3 Extension Elements" subitem="name" primary="true"/>
1399  <iref item="name V3 Extension Element" primary="true"/>
1400<t>
1401  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.name"/>.
1402  <em>Currently only supported inside &lt;references&gt; and &lt;section&gt;</em>.
1403</t>
1404</section>
1405
1406<section title="ol Element" anchor="v3.ol">
1407  <iref item="V3 Extension Elements" subitem="ol" primary="true"/>
1408  <iref item="ol V3 Extension Element" primary="true"/>
1409<t>
1410  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.ol"/>.
1411</t>
1412</section>
1413
1414<section title="postalLine Element" anchor="v3.postalLine">
1415  <iref item="V3 Extension Elements" subitem="postalLine" primary="true"/>
1416  <iref item="postalLine V3 Extension Element" primary="true"/>
1417<t>
1418  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.postalLine"/>.
1419</t>
1420</section>
1421
1422<section title="refcontent Element" anchor="v3.refcontent">
1423  <iref item="V3 Extension Elements" subitem="refcontent" primary="true"/>
1424  <iref item="refcontent V3 Extension Element" primary="true"/>
1425<t>
1426  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.refcontent"/>.
1427</t>
1428</section>
1429
1430<section title="sourcecode Element" anchor="v3.sourcecode">
1431  <iref item="V3 Extension Elements" subitem="sourcecode" primary="true"/>
1432  <iref item="sourcecode V3 Extension Element" primary="true"/>
1433<t>
1434  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.sourcecode"/>.
1435</t>
1436</section>
1437
1438<section title="Extensions to reference Element" anchor="v3.reference">
1439  <iref item="V3 Extension Elements" subitem="reference" primary="true"/>
1440  <iref item="reference V3 Extension Element" primary="true"/>
1441<t>
1442  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.reference"/>.
1443</t>
1444
1445<section title="quoteTitle attribute" anchor="v3.reference.quoteTitle">
1446<t>
1447  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.reference.attribute.quoteTitle"/>.
1448</t>
1449</section>
1450</section>
1451
1452<section title="Extensions to section Element" anchor="v3.section">
1453  <iref item="V3 Extension Elements" subitem="section" primary="true"/>
1454  <iref item="section V3 Extension Element" primary="true"/>
1455<t>
1456  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.section"/>.
1457</t>
1458
1459<section title="numbered attribute" anchor="v3.section.numbered">
1460<t>
1461  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.section.attribute.numbered"/>.
1462</t>
1463</section>
1464
1465<section title="removeInRFC attribute" anchor="v3.section.removeInRFC">
1466<t>
1467  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.section.attribute.removeInRFC"/>.
1468</t>
1469</section>
1470</section>
1471
1472<section title="strong Element" anchor="v3.strong">
1473  <iref item="V3 Extension Elements" subitem="strong" primary="true"/>
1474  <iref item="strong V3 Extension Element" primary="true"/>
1475<t>
1476  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.strong"/>.
1477</t>
1478</section>
1479
1480<section title="sub Element" anchor="v3.sub">
1481  <iref item="V3 Extension Elements" subitem="sub" primary="true"/>
1482  <iref item="sub V3 Extension Element" primary="true"/>
1483<t>
1484  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.sub"/>.
1485</t>
1486</section>
1487
1488<section title="sup Element" anchor="v3.sup">
1489  <iref item="V3 Extension Elements" subitem="sup" primary="true"/>
1490  <iref item="sup V3 Extension Element" primary="true"/>
1491<t>
1492  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.sup"/>.
1493</t>
1494</section>
1495
1496<section title="svg Element" anchor="v3.svg">
1497  <iref item="V3 Extension Elements" subitem="svg" primary="true"/>
1498  <iref item="svg V3 Extension Element" primary="true"/>
1499<t>
1500  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.svg"/>.
1501</t>
1502</section>
1503
1504<section title="tt Element" anchor="v3.tt">
1505  <iref item="V3 Extension Elements" subitem="tt" primary="true"/>
1506  <iref item="tt V3 Extension Element" primary="true"/>
1507<t>
1508  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.tt"/>.
1509</t>
1510</section>
1511
1512<section title="ul Element" anchor="v3.ul">
1513  <iref item="V3 Extension Elements" subitem="ul" primary="true"/>
1514  <iref item="ul V3 Extension Element" primary="true"/>
1515<t>
1516  See <xref target="XML2RFCV3" x:fmt="of" x:rel="#element.ul"/>.
1517</t>
1518</section>
1519
1520</section>
1521
1522<section title="Utilities" anchor="utilities">
1523
1524<section title="Checking References" anchor="checking-references">
1525<t>
1526  <tt>check-references.xslt</tt> can be used to check
1527  all references to RFC- and ID-series IETF publications and to W3C publications (note
1528  this script requires local copies of
1529  <eref target="ftp://ftp.isi.edu/in-notes/rfc-index.xml"/> and
1530  <eref target="http://www.w3.org/2002/01/tr-automation/tr.rdf"/> and
1531  will use the XML status information provided at <eref target="http://tools.ietf.org/"/>).
1532</t>
1533<t>
1534  If the document is supposed to be published on the IETF standards track,
1535  the desired level can be specified using the parameter <tt>intended-level</tt>
1536  as 'proposed', 'draft' or 'internet'. Alternatively, it can be specified
1537  inside the document using the attribute x:maturity-level on the &lt;rfc> element
1538  (see <xref target="ext-rfc2629.rfc"/>).
1539</t>
1540<t>
1541  <x:h>Note:</x:h> Downward references should be
1542  annotated using the &lt;annotate> element, containing an &lt;xref> to
1543  <xref target="BCP97"/>.
1544</t>
1545<t>
1546  When an XSLT 2.0 processor is used, links in the document can be checked as well
1547  using the <tt>link-check</tt> parameter ('yes' or 'no').
1548  Note that this only works for http links to documents of type text/*.
1549</t>
1550<figure>
1551<preamble>
1552For instance, as of 2008-07-12, the script produces for <eref target="http://greenbytes.de/tech/webdav/rfc2518.xml"/>:
1553</preamble>
1554<artwork type="example">
1555> saxon rfc2518.xml check-references.xslt intended-status=PROPOSED \
1556  link-check=yes
1557
1558Normative References:
1559ISO-11578: not checked
1560ISO-639: not checked
1561ISO-8601: not checked
1562REC-xml-19980210: [FirstEdition] obsoleted by REC-xml-20001006
1563REC-xml-names-19990114: [FirstEdition] obsoleted by
1564 REC-xml-names-20060816
1565RFC1766: [PROPOSED STANDARD] obsoleted by RFC3066 RFC3282
1566RFC2068: [PROPOSED STANDARD] obsoleted by RFC2616
1567RFC2069: [PROPOSED STANDARD] obsoleted by RFC2617
1568RFC2119: [BEST CURRENT PRACTICE] (-> BCP0014) ok
1569RFC2141: [PROPOSED STANDARD] ok
1570RFC2277: [BEST CURRENT PRACTICE] (-> BCP0018) ok
1571RFC2396: [DRAFT STANDARD] obsoleted by RFC3986
1572RFC2279: [DRAFT STANDARD] obsoleted by RFC3629
1573
1574Informational References:
1575REC-PICS-labels-961031: [REC] ok
1576RFC1807: [INFORMATIONAL] ok
1577RFC2026: [BEST CURRENT PRACTICE] (-> BCP0009) ok
1578RFC2291: [INFORMATIONAL] ok
1579RFC2376: [INFORMATIONAL] obsoleted by RFC3023
1580RFC2413: [INFORMATIONAL] obsoleted by RFC5013
1581USMARC: not checked
1582WF: not checked
1583
1584Link Targets
1585&lt;http://www.w3.org/TR/1998/REC-xml-19980210>: ok
1586&lt;http://www.w3.org/TR/1999/REC-xml-names-19990114>: ok
1587&lt;http://www.dlib.org/dlib/july96/lagoze/07lagoze.html>: ok
1588&lt;http://www.w3.org/pub/WWW/TR/REC-PICS-labels-961031.html>: ok
1589</artwork></figure>
1590<t>
1591  Recognized formats in the &lt;seriesInfo> element are:
1592  <list style="symbols">
1593    <t>for RFCs, the name attribute must be "RFC", and the value attribute must
1594    be the number of the RFC,</t>
1595    <t>for Internet Drafs, the name attribute must be "ID" or "Internet-Draft", and the value attribute must
1596    be the file name of the draft (including the two-digit running number, but excluding a file extension),</t>
1597    <t>for W3C documents, the name attribute must be "W3C", must start with "W3C&#160;", or
1598    must start with "World Wide Web Consortium&#160;", and the value attribute
1599    must be the "shorthand" name of the specification, such as "REC-xml-19980210".</t>
1600  </list>
1601</t>
1602<x:note>
1603<t>
1604  <x:h>Note:</x:h> this stylesheet will need network access to check links and
1605  status of Internet Drafts. When running a Java-based XSLT engine, you may have
1606  to supply Java system properties specifying the HTTP proxy to be used, such
1607  as "-Dhttp.proxyHost=hostname -Dhttp.proxyPort=80".
1608</t>
1609</x:note>
1610
1611</section>
1612
1613<section title="Generating Graphs from References">
1614<t>
1615  <tt>gen-reference-graph.xslt</tt> generates a graph
1616  of RFC dependencies, using the same base data as in <tt>check-references.xslt</tt>
1617  (see <xref target="checking-references"/>). Its output is a "dot" file,
1618  to be processed by GraphViz (see <eref target="http://www.graphviz.org/"/>).
1619</t>
1620<figure>
1621<preamble>
1622The picture below shows the RFC dependencies in RFC2629.
1623</preamble>
1624<artwork src="rfc2629xslt-fig2.png" type="image/png">
1625(PNG output obtained from GraphViz)
1626</artwork>
1627</figure>
1628</section>
1629
1630<section title="Producing reference entries for books">
1631<t>
1632  <tt>amazon-asin.xslt</tt> uses the Amazon web services
1633  to generate a &lt;reference> element for a given ASIN (ISBN).
1634</t>
1635<figure>
1636<preamble>For instance:</preamble>
1637<artwork type="example" x:lang="">
1638&lt;?xml version="1.0" encoding="utf-8"?>
1639&lt;references>
1640 &lt;reference target="urn:isbn:0134516591">
1641   &lt;front>
1642     &lt;title>Simple Book, The: An Introduction to Internet Management,
1643               Revised Second Edition&lt;/title>
1644     &lt;author surname="Rose"
1645                fullname="Marshall T. Rose" initials="M. T. ">
1646       &lt;organization/>
1647     &lt;/author>
1648     &lt;author surname="Marshall"
1649                fullname="Rose T. Marshall" initials="R. T.">
1650       &lt;organization/>
1651     &lt;/author>
1652     &lt;date year="1996" month="March"/>
1653   &lt;/front>
1654   &lt;seriesInfo name="Prentice Hall" value=""/>
1655 &lt;/reference>
1656&lt;/references>
1657</artwork></figure>
1658<t>
1659  Note that the resulting XML usually requires checking, in this case Amazon's
1660  database is playing tricks with Marshall's name...
1661</t>
1662</section>
1663
1664<section title="Down-converting to RFC2629bis DTD" anchor="clean-for-dtd">
1665<t>
1666  <tt>clean-for-DTD.xslt</tt> can be used to down-convert
1667  some extensions to a format that is supported by the base xml2rfc
1668  distribution.  Note that these extensions are experimental (feedback
1669  appreciated).
1670</t>
1671<t>
1672  The following mappings are done:
1673  <list style="symbols">
1674    <t>
1675      &lt;iref> elements inside &lt;artwork> elements are moved in front
1676      of the enclosing &lt;figure> element.
1677    </t>
1678    <t>
1679      &lt;xref> elements inside &lt;artwork> are expanded just like in
1680      regular text (that is, the markup is stripped, but the element
1681      is replaced by the applicable replacement text).
1682    </t>
1683    <t>
1684      &lt;x:<x:ref>anchor-alias</x:ref>> elements get stripped.
1685    </t>
1686    <t>
1687      &lt;x:<x:ref>bcp14</x:ref>> elements get stripped.
1688    </t>
1689    <t>
1690      &lt;x:<x:ref>bb</x:ref>>, &lt;x:<x:ref>bc</x:ref>> and &lt;x:<x:ref>bt</x:ref>> elements get stripped.
1691    </t>
1692    <t>
1693      &lt;x:<x:ref>blockquote</x:ref>> elements get converted to
1694      indented text (through a &lt;list> element).
1695    </t>
1696    <t>
1697      &lt;x:<x:ref>dfn</x:ref>> elements get stripped.
1698    </t>
1699    <t>
1700      &lt;x:<x:ref>h</x:ref>> elements get stripped.
1701    </t>
1702    <t>
1703      &lt;x:<x:ref>link</x:ref>> elements get stripped.
1704    </t>
1705    <t>
1706      &lt;x:<x:ref>lt</x:ref>> elements get collapsed into a single &lt;lt>
1707      element with added &lt;vspace> added to simulate paragraph breaks.
1708    </t>
1709    <t>
1710      &lt;x:<x:ref>note</x:ref>> elements get converted to
1711      indented text (through a &lt;list> element).
1712    </t>
1713    <t>
1714      &lt;x:<x:ref>q</x:ref>> elements get stripped, with apostrophes
1715      added around the text.
1716    </t>
1717    <t>
1718      &lt;x:<x:ref>prose</x:ref>> elements are transformed into
1719      &lt;seriesInfo> elements (which is an abuse of the element and only
1720      a workaround until xml2rfc gets a matching extension).
1721    </t>
1722    <t>
1723      &lt;x:<x:ref>ref</x:ref>> elements get replaced by &lt;xref>
1724      elements, targetting either the anchor or another anchor with
1725      matching &lt;x:<x:ref>anchor-alias</x:ref>> child element.
1726    </t>
1727  </list>
1728</t>
1729</section>
1730
1731<section title="Extracting artwork" anchor="extract-artwork">
1732<t>
1733  With <tt>extract-artwork.xslt</tt>, artwork elements
1734  named through the "name" attribute can be extracted. This can be used
1735  to automatically check their syntax (for instance, when ABNFs appear
1736  within a figure element).
1737</t>
1738<figure><preamble>For instance:</preamble>
1739<artwork type="example">saxon rfc3986.xml extract-artwork.xslt name=uri.abnf
1740</artwork>
1741</figure>
1742<t>
1743  In addition, artwork of a specific type can be extracted, such as with:
1744</t>
1745<figure>
1746<artwork type="example">saxon rfc3986.xml extract-artwork.xslt type=abnf
1747</artwork>
1748</figure>
1749<t>
1750  When extracting by type, artwork elements with a specified name can be
1751  excluded; this can be handy when the document uses some kind of schema
1752  language, and an appendix contains the collected schema, repeating definitions
1753  from earlier on. Example:
1754</t>
1755<figure><artwork type="example">saxon rfc3986.xml extract-artwork.xslt type=abnf except-name=clschm
1756</artwork></figure>
1757</section>
1758
1759<section title="GRRDL" anchor="grddl">
1760<t>
1761  <tt>rfc2629grddl.xslt</tt> extracts RDF
1762  information. This is experimental work-in-progress. See
1763  <eref target="http://www.w3.org/TR/grddl/"/> for more information.
1764</t>
1765</section>
1766
1767<section title="HTML Live Refresh" anchor="html.live.refresh">
1768<t>
1769  <em>Experimental</em>
1770</t>
1771<t>
1772  The "HTML Live Refresh" mode allows to run a text editor and a browser
1773  side-by-side, with the browser auto-updating every few seconds, displaying
1774  the updated HTML, and automatically navigating to the part of the page that
1775  changed last.
1776</t>
1777<t anchor="html.live.refresh.requirements">
1778  The requirements for this mode are:
1779  <list style="numbers">
1780    <t>
1781      A browser that supports the <tt>DOMParser</tt>
1782      and <tt>XSLTProcessor</tt> APIs.
1783    </t>
1784    <t>
1785      The ability to reload the source code and the XSLT code from within
1786      Javascript; in some browsers this is forbidden for "file:" URIs due to
1787      perceived security problems.
1788    </t>
1789  </list>
1790</t>
1791<t>
1792  This feature is currently tested with:
1793  <list style="numbers">
1794    <t>Mozilla Firefox, and</t>
1795    <t>Google Chome (where, to be able to reload from the local filesystem, Chrome
1796    needs to be started with the command line option <tt>--allow-file-access-from-files</tt>).</t>
1797  </list>
1798</t>
1799<t>
1800  Use of this feature requires the inclusion of a processing instruction that
1801  holds the name of the XML source, such as:
1802</t>
1803<figure><artwork type="example" x:lang="">
1804&lt;?rfc-ext refresh-from="draft-foo-bar-00.xml"?>
1805</artwork></figure>
1806<t>
1807  The optional parameters <tt>refresh-interval</tt>
1808  and <tt>refresh-xslt</tt> support changing the
1809  refresh interval (in seconds, defaulting to 10), and the name of the XSLT
1810  file to use (defaulting to "rfc2629.xslt").
1811</t>
1812<figure>
1813<preamble>
1814  To test this feature, start with a minimal source file like this:
1815</preamble>
1816<artwork type="example" x:lang="">
1817&lt;?xml-stylesheet type='text/xsl' href='rfc2629.xslt'?>
1818&lt;?rfc-ext refresh-from="draft-foo-bar-00.xml"?>
1819&lt;rfc docName="draft-foo-bar-00" ipr="trust200902">
1820  &lt;front>
1821    &lt;title>Title Goes Here&lt;/title>
1822    &lt;abstract>
1823      &lt;t>Abstract&lt;/t>
1824    &lt;/abstract>
1825  &lt;/front>
1826&lt;/rfc></artwork>
1827<postamble>
1828...open it in both text editor and browser, start editing and of course
1829ocasionally save.
1830</postamble>
1831</figure>
1832</section>
1833
1834<section title="Refreshing included material in the XML source" anchor="refreshing.inclusions">
1835<t>
1836  There are many methods for automatic inclusion of material in the XML source,
1837  such as the "include" processing instruction<iref item="include PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="include"/>
1838  (see <xref target="supported.pis"/>), external entities (<xref target="examples.internalsubset"/>), or XInclude.
1839  In general, those share a common problem: the XML source file isn't
1840  self-contained, which makes it harder to submit it as Internet Draft.
1841</t>
1842<t>
1843  The tool <tt>refresh-inclusions.sh</tt> does in-place replacement: it
1844  scans the source file for inclusion directives (expressed as XML
1845  processing instructions), and refreshes the included text with data
1846  from an external file. It will not modify the source file unless included
1847  material did actually change. When it does modify the source file, it
1848  will copy the original source to a backup file.
1849</t>
1850<t>
1851  <tt>refresh-inclusions.sh</tt> can include both plain text (<tt>BEGINESCAPEDINC</tt>/<tt>ENDESCAPEDINC</tt>) and
1852  XML (<tt>BEGININC</tt>/<tt>ENDINC</tt>). The figure below was inserted
1853  using:
1854</t>
1855<figure><artwork type="example" x:lang="">
1856&lt;?BEGINESCAPEDINC refresh-inclusions.sh ?>
1857...
1858&lt;?ENDSCAPEDINC refresh-inclusions.sh ?>
1859</artwork>
1860<postamble>(note that the SP character at the end of the directive is significant)</postamble>
1861</figure>
1862<figure>
1863<preamble><tt>refresh-inclusions.sh</tt>:</preamble>
1864<artwork name="refresh-inclusions.sh" x:lang="">
1865<?BEGINESCAPEDINC refresh-inclusions.sh ?>
1866#!/bin/sh
1867# Refresh file inclusions based on XML processing instructions
1868#
1869# Copyright (c) 2006-2016, Julian Reschke (julian.reschke@greenbytes.de)
1870# All rights reserved.
1871#
1872# Redistribution and use in source and binary forms, with or without
1873# modification, are permitted provided that the following conditions are met:
1874#
1875# * Redistributions of source code must retain the above copyright notice,
1876#   this list of conditions and the following disclaimer.
1877# * Redistributions in binary form must reproduce the above copyright notice,
1878#   this list of conditions and the following disclaimer in the documentation
1879#   and/or other materials provided with the distribution.
1880# * Neither the name of Julian Reschke nor the names of its contributors
1881#   may be used to endorse or promote products derived from this software
1882#   without specific prior written permission.
1883#
1884# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
1885# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1886# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1887# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
1888# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1889# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1890# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1891# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1892# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1893# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1894# POSSIBILITY OF SUCH DAMAGE.
1895
1896expand() {
1897
1898  # remember whether we started with CRLF (assumes that we have dos2unix)
1899  CRLF=$(dos2unix -ic "$1" 2>/dev/null | tr -d ' ')
1900 
1901  cat "$1" | awk '
1902
1903  function filecontents(filename) {
1904    while (getline &lt; filename > 0) {
1905      fc[filename] = fc[filename] $0 "\n"
1906    }
1907    return fc[filename]
1908  }
1909
1910  BEGIN {
1911    includefile = "";
1912    includeescapedfile = "";
1913  }
1914 
1915  # start include (verbatim mode)
1916  /&lt;\?BEGININC .* \?>$/ {
1917    print
1918    keyword = "&lt;?BEGININC "
1919    extract = match($0, /&lt;\?BEGININC .* \?>$/)
1920    includefile = substr($0, RSTART + length(keyword),
1921                    RLENGTH - 3 - length(keyword))
1922    output = filecontents(includefile)
1923    printf("%s", output)
1924  }
1925 
1926  # start include (escape-for-XML mode)
1927  /&lt;\?BEGINESCAPEDINC .* \?>$/ {
1928    print
1929    keyword = "&lt;?BEGINESCAPEDINC "
1930    extract = match($0, /&lt;\?BEGINESCAPEDINC .* \?>$/)
1931    includeescapedfile = substr($0, RSTART + length(keyword),
1932                           RLENGTH - 3 - length(keyword))
1933    output = filecontents(includeescapedfile)
1934    # escape ampersand, less-than, and greater-than
1935    # when part of a CDATA end marker
1936    gsub(/&amp;/, "\\&amp;amp;", output)
1937    gsub(/&lt;/, "\\&amp;lt;", output)
1938    gsub(/]]&gt;/, "]]\\&amp;gt;", output)
1939    printf("%s", output)
1940  }
1941
1942  # end include (verbatim mode)
1943  /^&lt;\?ENDINC .* \?>/ {
1944    if ($2 != includefile) {
1945      printf ("unexpected ENDINC, got %s but expected %s\n", $2,
1946        includefile) >> "/dev/stderr"
1947    }
1948    includefile = "";
1949  }
1950 
1951  # end include (escape-for-XML mode)
1952  /^&lt;\?ENDESCAPEDINC .* \?>/ {
1953    if ($2 != includeescapedfile) {
1954      printf ("unexpected ENDESCAPEDINC, got %s but expected %s\n", $2,
1955        includeescapedfile) >> "/dev/stderr"
1956    }
1957    includeescapedfile = "";
1958  }
1959
1960  #default
1961  {
1962    if (includefile == "" &amp;&amp; includeescapedfile == "") {
1963      print
1964    }
1965  }
1966 
1967  END {
1968    if (includefile != "") {
1969      printf ("missing ENDINC for %s\n",
1970        includefile) >> "/dev/stderr"
1971    }
1972    if (includeescapedfile != "") {
1973      printf ("missing ENDESCAPEDINC for %s\n",
1974        includeescapedfile) >> "/dev/stderr"
1975    }
1976  }
1977 
1978  ' > $$
1979 
1980  # restore CRLF if needed
1981  if [ -n "$CRLF" ]; then
1982    FNN=$(echo "$1" | tr -d ' ')
1983    [ "$FNN" = "$CRLF" ] &amp;&amp; unix2dos -q $$
1984  fi
1985 
1986  # check for changes
1987  cmp -s "$1" $$ || (
1988    cp -v "$1" "$1".ri.bak
1989    cp $$ "$1"
1990    echo "$1" updated )
1991 
1992  rm -f $$
1993}
1994
1995[ $# -ne 0 ] || ( echo "refresh-inclusions.sh file..." >&amp;2 ; exit 2 )
1996
1997for i in $*
1998do
1999  expand $i
2000done
2001<?ENDESCAPEDINC refresh-inclusions.sh ?>
2002</artwork></figure>
2003</section>
2004
2005</section>
2006
2007 
2008
2009</middle>
2010
2011<back>
2012<references title="Informative References">
2013
2014<reference anchor='RFC2026'>
2015  <front>
2016    <title abbrev='Internet Standards Process'>The Internet Standards Process -- Revision 3</title>
2017    <author initials='S.' surname='Bradner' fullname='Scott O. Bradner'>
2018      <organization>Harvard University</organization>
2019      <address>
2020        <email>sob@harvard.edu</email>
2021      </address>
2022    </author>
2023    <date year='1996' month='October' />
2024  </front>
2025  <seriesInfo name='BCP' value='9' />
2026  <seriesInfo name='RFC' value='2026' />
2027</reference>
2028
2029<reference anchor="RFC2045">
2030  <front>
2031  <title abbrev="Internet Message Bodies">Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies</title>
2032  <author initials="N." surname="Freed" fullname="Ned Freed">
2033  <organization>Innosoft International, Inc.</organization>
2034  </author>
2035  <author initials="N.S." surname="Borenstein" fullname="Nathaniel S. Borenstein">
2036  <organization>First Virtual Holdings</organization>
2037  </author>
2038  <date month="November" year="1996"/>
2039  </front>
2040  <seriesInfo name="RFC" value="2045"/>
2041</reference>
2042
2043<reference anchor="RFC2119">
2044  <front>
2045    <title abbrev="RFC Key Words">Key words for use in RFCs to Indicate Requirement Levels</title>
2046    <author initials="S." surname="Bradner" fullname="Scott Bradner">
2047      <organization>Harvard University</organization>
2048      <address>
2049        <email>sob@harvard.edu</email>
2050      </address>
2051    </author>
2052    <date month="March" year="1997"/>
2053  </front>
2054  <seriesInfo name="BCP" value="14"/>
2055  <seriesInfo name="RFC" value="2119"/>
2056</reference>
2057
2058<reference anchor="RFC2616">
2059  <front>
2060  <title abbrev="HTTP/1.1">Hypertext Transfer Protocol -- HTTP/1.1</title>
2061  <author initials="R.T." surname="Fielding" fullname="Roy T. Fielding">
2062  <organization>University of California, Irvine, Information and Computer Science</organization>
2063  <address>
2064  <phone>+1 949 824 1715</phone>
2065  <email>fielding@ics.uci.edu</email></address></author>
2066  <author initials="J." surname="Gettys" fullname="James Gettys">
2067  <organization>World Wide Web Consortium, MIT Laboratory for Computer Science</organization>
2068  <address>
2069  <phone/>
2070  <facsimile>+1 617 258 8682</facsimile>
2071  <email>jg@w3.org</email></address></author>
2072  <author initials="J.C." surname="Mogul" fullname="Jeffrey C. Mogul">
2073  <organization>Compaq Computer Corporation, Western Research Laboratory</organization>
2074  <address>
2075  <phone/>
2076  <email>mogul@wrl.dec.com</email></address></author>
2077  <author initials="H.F." surname="Nielsen" fullname="Henrik Frystyk Nielsen">
2078  <organization>World Wide Web Consortium, MIT Laboratory for Computer Science</organization>
2079  <address>
2080  <phone/>
2081  <facsimile>+1 617 258 8682</facsimile>
2082  <email>frystyk@w3.org</email></address></author>
2083  <author initials="L." surname="Masinter" fullname="Larry Masinter">
2084  <organization>Xerox Corporation</organization>
2085  <address>
2086  <phone/>
2087  <email>masinter@parc.xerox.com</email></address></author>
2088  <author initials="P.J." surname="Leach" fullname="Paul J. Leach">
2089  <organization>Microsoft Corporation</organization>
2090  <address>
2091  <phone/>
2092  <email>paulle@microsoft.com</email></address></author>
2093  <author initials="T." surname="Berners-Lee" fullname="Tim Berners-Lee">
2094  <organization>World Wide Web Consortium, MIT Laboratory for Computer Science</organization>
2095  <address>
2096  <phone>+1 617 258 8682</phone>
2097  <facsimile/>
2098  <email>timbl@w3.org</email></address></author>
2099  <date month="June" year="1999"/>
2100  </front>
2101  <seriesInfo name="RFC" value="2616"/>
2102</reference>
2103
2104<reference anchor='RFC2629'>
2105  <front>
2106    <title>Writing I-Ds and RFCs using XML</title>
2107    <author initials='M.T.' surname='Rose' fullname='Marshall T. Rose'>
2108      <organization>Invisible Worlds, Inc.</organization>
2109      <address>
2110        <phone>+1 415 695 3975</phone>
2111        <email>mrose@not.invisible.net</email>
2112        <uri>http://invisible.net/</uri>
2113      </address>
2114    </author>
2115    <date month='June' year='1999' />
2116  </front>
2117  <seriesInfo name='RFC' value='2629' />
2118</reference>
2119
2120<reference anchor='RFC2648'>
2121  <front>
2122    <title>A URN Namespace for IETF Documents</title>
2123    <author initials='R.' surname='Moats' fullname='Ryan Moats'>
2124      <organization>AT&amp;T</organization>
2125      <address>
2126      <email>jayhawk@att.com</email></address>
2127    </author>
2128    <date month='August' year='1999' />
2129  </front>
2130  <seriesInfo name='RFC' value='2648' />
2131</reference>
2132
2133<reference anchor='RFC2731'>
2134  <front>
2135    <title>Encoding Dublin Core Metadata in HTML</title>
2136    <author initials='J.A.' surname='Kunze' fullname='John A. Kunze'>
2137      <organization>University of California, San Francisco,  Center for Knowledge Management</organization>
2138      <address>
2139        <facsimile>+1 415 476 4653</facsimile>
2140        <email>jak@ckm.ucsf.edu</email>
2141      </address>
2142    </author>
2143    <date month='December' year='1999' />
2144  </front>
2145  <seriesInfo name='RFC' value='2731' />
2146</reference>
2147
2148<reference anchor='DC-HTML' target="http://dublincore.org/documents/2008/08/04/dc-html/">
2149  <front>
2150    <title>Expressing Dublin Core metadata using HTML/XHTML meta and link elements</title>
2151    <author initials='P.' surname='Johnston' fullname='Pete Johnston'>
2152      <organization>Eduserv Foundation</organization>
2153      <address>
2154        <email>pete.johnston@eduserv.org.uk</email>
2155      </address>
2156    </author>
2157    <author initials='A.' surname='Powell' fullname='Andy Powell'>
2158      <organization>Eduserv Foundation</organization>
2159      <address>
2160        <email>andy.powell@eduserv.org.uk</email>
2161      </address>
2162    </author>
2163    <date month='August' year='2008' />
2164  </front>
2165  <seriesInfo name='Dublin Core Metadata Initiative' value='' />
2166</reference>
2167
2168<reference anchor="RFC5234">
2169  <front>
2170    <title abbrev="ABNF for Syntax Specifications">Augmented BNF for Syntax Specifications: ABNF</title>
2171    <author initials="D." surname="Crocker" fullname="Dave Crocker" role="editor">
2172      <organization>Brandenburg InternetWorking</organization>
2173      <address>
2174      <phone>+1.408.246.8253</phone>
2175      <email>dcrocker@bbiw.net</email></address> 
2176    </author>
2177    <author initials="P." surname="Overell" fullname="Paul Overell">
2178      <organization>THUS plc.</organization>
2179      <address>
2180      <email>paul.overell@thus.net</email></address>
2181    </author>
2182    <date month="January" year="2008"/>
2183  </front>
2184  <seriesInfo name="STD" value="68"/>
2185  <seriesInfo name="RFC" value="5234"/>
2186</reference>
2187
2188<reference anchor='HTML5'
2189           target='http://www.w3.org/TR/2014/REC-html5-20141028/'>
2190  <front>
2191    <title>HTML5</title>
2192    <author fullname='Ian Hickson' surname='Hickson' initials='I.'/>
2193    <author fullname='Robin Berjon' surname='Berjon' initials='R.'/>
2194    <author fullname='Steve Faulkner' surname='Faulkner' initials='S.'/>
2195    <author fullname='Travis Leithead' surname='Leithead' initials='T.'/>
2196    <author fullname='Erika Doyle Navara' surname='Doyle Navara' initials='E.'/>
2197    <author fullname='Edward O&apos;Connor' surname='O&apos;Connor' initials='E.'/>
2198    <author fullname='Silvia Pfeiffer' surname='Pfeiffer' initials='S.'/>
2199    <date year='2014' month='October' day='28'/>
2200  </front>
2201  <seriesInfo name='W3C Recommendation' value='REC-html5-20141028'/>
2202  <annotation>
2203    Latest version available at
2204    <eref target='http://www.w3.org/TR/html5/'/>.
2205  </annotation>
2206</reference>
2207
2208<reference anchor='XHTML2'
2209           target='http://www.w3.org/TR/2010/NOTE-xhtml2-20101216'>
2210  <front>
2211    <title>XHTML(tm) 2.0</title>
2212    <author fullname='Mark Birbeck' surname='Birbeck' initials='M.'/>
2213    <author fullname='Markus Gylling' surname='Gylling' initials='M.'/>
2214    <author fullname='Shane McCarron' surname='McCarron' initials='S.'/>
2215    <author fullname='Steven Pemberton' surname='Pemberton' initials='S.'/>
2216    <author fullname='Jonny Axelsson' surname='Axelsson' initials='J.'/>
2217    <author fullname='Micah Dubinko' surname='Dubinko' initials='M.'/>
2218    <author fullname='Beth Epperson' surname='Epperson' initials='B.'/>
2219    <author fullname='Masayasu Ishikawa' surname='Ishikawa' initials='M.'/>
2220    <author fullname='Ann Navarro' surname='Navarro' initials='A.'/>
2221    <date year='2010' month='December' day='16'/>
2222  </front>
2223  <seriesInfo name='W3C Group Note' value='NOTE-xhtml2-20101216'/>
2224  <annotation>
2225    Latest version available at
2226    <eref target='http://www.w3.org/TR/xhtml2'/>.
2227  </annotation>
2228</reference>
2229
2230<reference anchor='XSL-FO'
2231           target='http://www.w3.org/TR/2006/REC-xsl11-20061205/'>
2232  <front>
2233    <title>Extensible Stylesheet Language (XSL) Version 1.1</title>
2234    <author fullname='Anders Berglund' surname='Berglund' initials='A.'/>
2235    <date year='2006' month='December' day='05'/>
2236  </front>
2237  <seriesInfo name='W3C Recommendation' value='REC-xsl11-20061205'/>
2238  <annotation>
2239    Latest version available at
2240    <eref target='http://www.w3.org/TR/xsl11/'/>.
2241  </annotation>
2242</reference>
2243
2244<reference anchor="RNC" target="http://www.oasis-open.org/committees/relax-ng/compact-20021121.html">
2245  <front>
2246    <title>RELAX NG Compact Syntax</title>
2247    <author initials="J." surname="Clark" fullname="James Clark">
2248      <organization/>
2249      <address>
2250        <email>jjc@jclark.com</email>
2251      </address>
2252    </author>
2253    <date month="Nov" day="21" year="2002" />
2254  </front>
2255  <seriesInfo name="OASIS" value=""/>
2256</reference>
2257
2258<reference anchor='BCP97'>
2259  <front>
2260    <title>Handling Normative References to Standards-Track Documents</title>
2261    <author initials='J.' surname='Klensin' fullname='J. Klensin'>
2262      <organization />
2263      <address>
2264        <email>klensin+ietf@jck.com</email>
2265      </address>
2266    </author>
2267    <author initials='S.' surname='Hartman' fullname='S. Hartman'>
2268      <organization>MIT</organization>
2269      <address>
2270        <email>hartmans-ietf@mit.edu</email>
2271      </address>
2272    </author>
2273    <date year='2007' month='June' />
2274  </front>
2275  <seriesInfo name='BCP' value='97' />
2276  <seriesInfo name='RFC' value='4897' />
2277</reference>
2278
2279<reference anchor='XML'
2280           target='http://www.w3.org/TR/2008/REC-xml-20081126/'>
2281  <front>
2282    <title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title>
2283    <author fullname='Tim Bray' surname='Bray' initials='T.'/>
2284    <author fullname='Jean Paoli' surname='Paoli' initials='J.'/>
2285    <author fullname='Michael Sperberg-McQueen' surname='Sperberg-McQueen' initials='M.'/>
2286    <author fullname='Eve Maler' surname='Maler' initials='E.'/>
2287    <author fullname='Francois Yergeau' surname='Yergeau' initials='F.'/>
2288    <date year='2008' month='November' day='26'/>
2289  </front>
2290  <seriesInfo name='W3C Recommendation' value='REC-xml-20081126'/>
2291  <annotation>
2292    Latest version available at
2293    <eref target='http://www.w3.org/TR/xml'/>.
2294  </annotation>
2295</reference>
2296
2297<reference anchor="RFC7230">
2298  <front>
2299    <title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
2300    <author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor">
2301      <organization abbrev="Adobe">Adobe Systems Incorporated</organization>
2302      <address><email>fielding@gbiv.com</email></address>
2303    </author>
2304    <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor">
2305      <organization abbrev="greenbytes">greenbytes GmbH</organization>
2306      <address><email>julian.reschke@greenbytes.de</email></address>
2307    </author>
2308    <date month="June" year="2014"/>
2309  </front>
2310  <seriesInfo name="RFC" value="7230"/>
2311</reference>
2312
2313<reference anchor="RFC7749">
2314  <front>
2315    <title>The "xml2rfc" Version 2 Vocabulary</title>
2316    <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke"/>
2317    <date year="2016" month="February"/>
2318  </front>
2319  <seriesInfo name="RFC" value="7749"/>
2320  <x:source href="rfc7749.xml" basename="rfc7749"/>
2321</reference>
2322
2323<reference anchor="XML2RFCV3">
2324  <front>
2325    <title>The "xml2rfc" version 3 Vocabulary</title>
2326    <author initials="P." surname="Hoffman" fullname="Paul Hoffman"/>
2327    <date month="February" year="2016"/>
2328  </front>
2329  <seriesInfo name="Internet-Draft" value="draft-iab-xml2rfc-03"/>
2330  <x:source href="draft-iab-xml2rfc-03.xml"/>
2331</reference>
2332
2333</references>
2334
2335  <section title="RELAX NG Compact Schema" anchor="grammar">
2336  <iref item="Grammar" primary="true"/>
2337  <iref item="Schema" primary="true"/>
2338  <iref item="RELAX NG Compact Schema" primary="true"/>
2339  <t>
2340    The RelaxNG schema (<xref target="RNC"/>) below can be used to validate
2341    input documents (for instance, with <eref target="http://www.thaiopensource.com/relaxng/jing.html">Jing</eref>).
2342  </t>
2343  <t>
2344    <em>Note that this is work in progress, and doesn't yet cover all
2345    extensions completely.</em>
2346  </t>
2347  <figure>
2348    <artwork type="application/relax-ng-compact-syntax" name="rfc2629-ext.rnc" x:extraction-note="# Automatically extracted from rfc2629xslt.xml. DO NOT EDIT!&#10;">
2349<em># WORK IN PROGRESS! PLEASE REPORT PROBLEMS TO THE AUTHOR.</em>
2350
2351<em># Define our extension namespace</em>
2352namespace x = "http://purl.org/net/xml2rfc/ext"
2353
2354<em># Define GRDDL namespace</em>
2355namespace grddl = "http://www.w3.org/2003/g/data-view#"
2356
2357<em># Define RDF namespace</em>
2358namespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
2359
2360<em># Define SVG namespace</em>
2361namespace svg = "http://www.w3.org/2000/svg"
2362
2363<em># Define XInclude namespace</em>
2364namespace xi = "http://www.w3.org/2001/XInclude"
2365
2366<em># Include rfc2629bis RNC grammar</em>
2367include "rfc2629.rnc" {
2368 
2369  <em># Redefine &lt;annotation> to allow more markup</em>
2370  annotation =
2371    element annotation {
2372      attlist.annotation,
2373      (TEXT
2374        | xref
2375        | eref
2376        | iref
2377        | cref
2378        | spanx
2379        <strong>| <x:ref>v3_tt</x:ref></strong>
2380        )*
2381    }
2382
2383  <em># Redefine &lt;artwork> to allow markup</em>
2384  artwork =
2385    element artwork {
2386      attlist.artwork,
2387      ( <strong><x:ref>v3_svg</x:ref> |
2388        </strong>(TEXT
2389          <strong>| eref</strong> 
2390          <strong>| iref</strong> 
2391          <strong>| spanx</strong> 
2392          <strong>| xref</strong>
2393          <strong>| <x:ref>v3_em</x:ref></strong>
2394          <strong>| <x:ref>v3_strong</x:ref></strong>
2395          <strong>| <x:ref>x_abnf-char-sequence</x:ref></strong>
2396          <strong>| <x:ref>x_bb</x:ref></strong>
2397          <strong>| <x:ref>x_bc</x:ref></strong>
2398          <strong>| <x:ref>x_bcp14</x:ref></strong>
2399          <strong>| <x:ref>x_bt</x:ref></strong>
2400          <strong>| <x:ref>x_highlight</x:ref></strong>
2401          <strong>| <x:ref>x_length-of</x:ref></strong>
2402          <strong>| <x:ref>x_parse-xml</x:ref></strong>
2403          <strong>| <x:ref>x_ref</x:ref></strong>
2404          <strong>| <x:ref>x_span</x:ref></strong>
2405          <strong>| <x:ref>x_x</x:ref></strong>)*
2406        )
2407    }
2408
2409  <em># Redefine &lt;back> to allow displayreference</em>
2410  back =
2411    element back {
2412      attlist.back,
2413      <strong><x:ref>v3_displayreference</x:ref>*</strong>,
2414      references*,
2415      section*
2416    }
2417
2418  <em># Redefine &lt;c> to allow our extension elements</em>
2419  c =
2420    element c {
2421      attlist.c,
2422      (TEXT
2423        | xref
2424        | eref
2425        | iref
2426        | cref
2427        | spanx
2428        <strong>| <x:ref>v3_em</x:ref></strong>
2429        <strong>| <x:ref>v3_strong</x:ref></strong>
2430        <strong>| <x:ref>v3_tt</x:ref></strong>
2431        <strong>| <x:ref>x_ref</x:ref></strong>)*
2432    }
2433
2434  <em># Redefine &lt;cref> to allow more child elements</em>
2435  cref =
2436    element cref {
2437      attlist.cref,
2438      (TEXT
2439        | eref
2440        | xref)*
2441    }
2442
2443  <em># Redefine &lt;figure> to allow more child elements</em>
2444  figure =
2445    element figure {
2446      attlist.cref,
2447      iref*,
2448      preamble?,
2449      ( artwork | <strong><x:ref>v3_sourcecode</x:ref></strong>),
2450      postamble?
2451    }
2452
2453  <em># Redefine &lt;front> to allow boilerplate</em>
2454  front =
2455    element front {
2456      attlist.front,
2457      title,
2458      author+,
2459      date,
2460      area*,
2461      workgroup*,
2462      keyword*,
2463      abstract?,
2464      <strong><x:ref>v3_boilerplate</x:ref>?,</strong>
2465      note*
2466    }
2467 
2468  <em># Redefine &lt;list> element to allow &lt;x:<x:ref>lt</x:ref>> child elements</em>
2469  \list =
2470    element list {
2471      attlist.list,
2472      (t+ <strong>| <x:ref>x_lt</x:ref>+</strong>)
2473    }   
2474   
2475  <em># Redefine &lt;preamble> to allow our extension elements</em>
2476  preamble =
2477    element preamble {
2478      attlist.preamble,
2479      (TEXT
2480        | xref
2481        | eref
2482        | iref
2483        | cref
2484        | spanx
2485        <strong>| <x:ref>v3_em</x:ref></strong>
2486        <strong>| <x:ref>v3_strong</x:ref></strong>
2487        <strong>| <x:ref>v3_tt</x:ref></strong>
2488        <strong>| <x:ref>x_anchor-alias</x:ref></strong>
2489        <strong>| <x:ref>x_bcp14</x:ref></strong>)*
2490  }
2491
2492  <em># Redefine &lt;postal> to allow &lt;postalLine></em>
2493  postal =
2494    element postal {
2495      (
2496        (city
2497          | code
2498          | country
2499          | region
2500          | street)*
2501        <strong>| <x:ref>v3_postalLine</x:ref></strong>+)
2502    }
2503
2504  <em># Redefine &lt;postamble> to allow our extension elements</em>
2505  postamble =
2506    element postamble {
2507      attlist.postamble,
2508      (TEXT
2509        | xref
2510        | eref
2511        | iref
2512        | cref
2513        | spanx
2514        <strong>| <x:ref>v3_em</x:ref></strong>
2515        <strong>| <x:ref>v3_strong</x:ref></strong>
2516        <strong>| <x:ref>v3_tt</x:ref></strong>
2517        <strong>| <x:ref>x_bcp14</x:ref></strong>)*
2518    }
2519
2520  <em># Redefine &lt;reference> to allow our extension elements</em>
2521  reference =
2522    element reference {
2523      attlist.reference,
2524      front,
2525      seriesInfo*,
2526      <strong><x:ref>x_prose</x:ref>?</strong>,
2527      <strong><x:ref>v3_refcontent</x:ref>?</strong>,
2528      format*,
2529      annotation*,
2530      <strong><x:ref>x_source</x:ref>?</strong>
2531    }
2532
2533  <em># Redefine &lt;references> to allow our &lt;name&gt;</em>
2534  references =
2535    element references {
2536      attribute title { text }?,
2537      <strong><x:ref>v3_name</x:ref>?</strong>,
2538      (reference
2539       | <x:ref>xi_include</x:ref>)+
2540    }
2541
2542  <em># Redefine &lt;rfc> to allow our extension elements</em>
2543  rfc =
2544    element rfc {
2545      attlist.rfc,
2546      <strong><x:ref>x_link</x:ref>*,</strong>
2547      <strong><x:ref>x_feedback</x:ref>?,</strong>
2548      <strong><x:ref>x_assign-section-number</x:ref>*,</strong>
2549      front,
2550      middle,
2551      back?
2552    }
2553
2554  <em># Redefine &lt;section> to allow our extension elements</em>
2555  section =
2556    element section {
2557      attlist.x_section,
2558      (t
2559       | figure
2560       | texttable
2561       | iref
2562       | section
2563       <strong>| <x:ref>v3_aside</x:ref></strong>
2564       <strong>| <x:ref>v3_blockquote</x:ref></strong>
2565       <strong>| <x:ref>v3_dl</x:ref></strong>
2566       <strong>| <x:ref>v3_name</x:ref></strong>
2567       <strong>| <x:ref>v3_ol</x:ref></strong>
2568       <strong>| <x:ref>v3_sourcecode</x:ref></strong>
2569       <strong>| <x:ref>v3_ul</x:ref></strong>
2570       <strong>| <x:ref>x_anchor-alias</x:ref></strong>
2571       <strong>| <x:ref>x_blockquote</x:ref></strong>
2572       <strong>| <x:ref>x_include-author</x:ref></strong>
2573       <strong>| <x:ref>x_note</x:ref></strong>
2574       <strong>| <x:ref>rdf_Description</x:ref></strong>)*
2575    }
2576
2577  <em># Redefine &lt;spanx> to allow some markup</em>
2578  spanx =
2579    element spanx {
2580      attlist.spanx,
2581      (TEXT
2582        <strong>| iref</strong>
2583        <strong>| xref</strong>
2584        <strong>| <x:ref>x_ref</x:ref></strong>)*
2585    }
2586
2587  <em># Redefine &lt;t> to allow our extension elements</em>
2588  t =
2589    element t {
2590      attlist.t,
2591      (TEXT
2592       | \list
2593       | figure
2594       | xref
2595       | eref
2596       | iref
2597       | cref
2598       | spanx
2599       | vspace
2600       <strong>| <x:ref>v3_bcp14</x:ref></strong>
2601       <strong>| <x:ref>v3_em</x:ref></strong>
2602       <strong>| <x:ref>v3_strong</x:ref></strong>
2603       <strong>| <x:ref>v3_sub</x:ref></strong>
2604       <strong>| <x:ref>v3_sup</x:ref></strong>
2605       <strong>| <x:ref>v3_tt</x:ref></strong>
2606       <strong>| <x:ref>x_abnf-char-sequence</x:ref></strong>
2607       <strong>| <x:ref>x_anchor-alias</x:ref></strong>
2608       <strong>| <x:ref>x_bcp14</x:ref></strong>
2609       <strong>| <x:ref>x_dfn</x:ref></strong>
2610       <strong>| <x:ref>x_h</x:ref></strong>
2611       <strong>| <x:ref>x_q</x:ref></strong>
2612       <strong>| <x:ref>x_ref</x:ref></strong>
2613       <strong>| <x:ref>x_span</x:ref></strong>
2614       <strong>| <x:ref>x_sup</x:ref></strong>)*
2615    }
2616}
2617
2618<em># Allow extension attributes on &lt;artwork> (<xref target="ext-rfc2629.artwork"/>)</em>
2619attlist.artwork &amp;=
2620  attribute x:indent-with { ATEXT }?,
2621  attribute x:lang { "" }?,
2622  attribute x:is-code-component { "no" | "yes" }?
2623
2624<em># Allow anchor and x:annotation attributes on &lt;author></em>
2625attlist.author &amp;=
2626  attribute anchor { xsd:ID }?,
2627  attribute x:annotation { ATEXT }?
2628 
2629<em># Extend attribute set for &lt;c> (see <xref target="ext-rfc2629.iref"/>)</em>
2630attlist.c &amp;=
2631  attribute anchor { xsd:ID }?
2632
2633<em># Extend attribute set for &lt;iref> (see <xref target="ext-rfc2629.iref"/>)</em>
2634attlist.iref &amp;=
2635  attribute x:for-anchor { ATEXT }?
2636
2637<em># Extend attribute set for &lt;list> (see <xref target="ext-rfc2629.list"/>)</em>
2638attlist.list &amp;=
2639  attribute x:indent { ATEXT }?
2640
2641<em># Extend attribute set for &lt;preamble></em>
2642attlist.preamble &amp;=
2643  attribute anchor { xsd:ID }?
2644
2645<em># Extend attribute set for &lt;reference></em>
2646attlist.reference &amp;=
2647  attribute quoteTitle { "false" | "true" }? # see <xref target="v3.reference.quoteTitle"/>
2648
2649<em># Extend attribute set for &lt;rfc></em>
2650attlist.rfc &amp;=
2651  attribute grddl:transformation { ATEXT }?,
2652  attribute x:maturity-level { "proposed" | "draft" | "internet" }?
2653
2654<em># Extend/Relax attribute set for &lt;section> (see <xref target="ext-rfc2629.section"/>)</em>
2655attlist.x_section &amp;=
2656  attribute anchor { xsd:ID }?,
2657  attribute title { ATEXT }?,
2658  attribute toc { "include" | "exclude" | "default" }?,
2659  attribute numbered { "false" | "true" }?, # see <xref target="v3.section.numbered"/>
2660  attribute removeInRFC { "false" | "true" }?, # see <xref target="v3.section.removeInRFC"/>
2661  attribute x:fixed-section-number { ATEXT }?
2662
2663<em># Allow anchor attribute on &lt;spanx></em>
2664attlist.spanx &amp;=
2665  attribute anchor { xsd:ID }?
2666
2667<em># Allow x:quotes attribute on &lt;title></em>
2668attlist.title &amp;=
2669  attribute x:quotes { "true" | "false" }?
2670
2671<em># Allow annotation attribute on &lt;uri></em>
2672attlist.uri &amp;=
2673  attribute x:annotation { ATEXT }?
2674
2675<em># Extend attribute set for &lt;xref> (see <xref target="ext-rfc2629.xref"/>)</em>
2676attlist.xref &amp;=
2677  attribute x:fmt  { "()" | "," | "of" | "number" | "sec" |
2678                     "none" }?,
2679  attribute x:rel  { ATEXT }?,
2680  attribute x:sec  { ATEXT }?
2681
2682<em anchor="v3_aside"><iref item="aside V3 Extension Element"/><iref item="V3 Extension Elements" subitem="aside"
2683/># Side Note (see <xref target="v3.aside"/>)</em>
2684<x:ref>v3_aside</x:ref> =
2685  element aside {
2686    attribute anchor { xsd:ID }?,
2687    t+
2688  }
2689
2690<em anchor="v3_bcp14"><iref item="bcp14 V3 Extension Element"/><iref item="V3 Extension Elements" subitem="bcp14"
2691/># BCP14/RFC2119 keywords (see <xref target="v3.bcp14"/>)</em>
2692<x:ref>v3_bcp14</x:ref> =
2693  element bcp14 {
2694    "MAY"
2695    | "MUST"
2696    | "MUST NOT"
2697    | "NOT RECOMMENDED"
2698    | "OPTIONAL"
2699    | "RECOMMENDED"
2700    | "REQUIRED"
2701    | "SHALL"
2702    | "SHALL NOT"
2703    | "SHOULD"
2704    | "SHOULD NOT"
2705  }
2706
2707<em anchor="v3_blockquote"><iref item="blockquote V3 Extension Element"/><iref item="V3 Extension Elements" subitem="blockquote"
2708/># Blockquote (see <xref target="v3.blockquote"/>)</em>
2709<x:ref>v3_blockquote</x:ref> =
2710  element blockquote {
2711    attribute anchor { xsd:ID }?,
2712    attribute cite { URI }?,
2713    t+
2714  }
2715
2716<em anchor="v3_boilerplate"><iref item="boilerplate V3 Extension Element"/><iref item="V3 Extension Elements" subitem="boilerplate"
2717/># Boilerplate (see <xref target="v3.blockquote"/>)</em>
2718<x:ref>v3_boilerplate</x:ref> =
2719  element boilerplate {
2720    section+
2721  }
2722
2723<em anchor="v3_displayreference"><iref item="displayreference V3 Extension Element"/><iref item="V3 Extension Elements" subitem="displayreference"
2724/># Mapping of reference names to display names (see <xref target="v3.displayreference"/>)</em>
2725<x:ref>v3_displayreference</x:ref> =
2726  element displayreference {
2727    attribute target { xsd:IDREF },
2728    attribute to { ATEXT }
2729  }
2730
2731<em anchor="v3_dd"><iref item="dd V3 Extension Element"/><iref item="V3 Extension Elements" subitem="dd"
2732/># Definition List Description Element (see <xref target="v3.dd"/>)</em>
2733<x:ref>v3_dd</x:ref> =
2734  element dd {
2735    (t
2736      | <x:ref>v3_dl</x:ref>)+ |
2737    (TEXT
2738      | cref
2739      | eref
2740      | iref
2741      | xref
2742      | <x:ref>v3_em</x:ref>
2743      | <x:ref>v3_tt</x:ref>
2744      | <x:ref>v3_strong</x:ref>)*
2745  }
2746
2747<em anchor="v3_dl"><iref item="dl V3 Extension Element"/><iref item="V3 Extension Elements" subitem="dl"
2748/># Definition List (see <xref target="v3.dl"/>)</em>
2749<x:ref>v3_dl</x:ref> =
2750  element dl {
2751       attribute spacing { "normal" | "compact" }?,
2752       attribute hanging { "false" | "true" }?,
2753       (<x:ref>v3_dt</x:ref>, <x:ref>v3_dd</x:ref>)+
2754  }
2755
2756<em anchor="v3_dt"><iref item="dt V3 Extension Element"/><iref item="V3 Extension Elements" subitem="dt"
2757/># Definition List Description Term (see <xref target="v3.dt"/>)</em>
2758<x:ref>v3_dt</x:ref> =
2759  element dt {
2760    attribute anchor { xsd:ID }?,
2761    (TEXT
2762      | cref
2763      | eref
2764      | iref
2765      | xref
2766      | <x:ref>v3_em</x:ref>
2767      | <x:ref>v3_tt</x:ref>
2768      | <x:ref>v3_strong</x:ref>)*
2769  }
2770
2771<em anchor="v3_em"><iref item="em V3 Extension Element"/><iref item="V3 Extension Elements" subitem="em"
2772/># Emphasized Text (see <xref target="v3.em"/>)</em>
2773<x:ref>v3_em</x:ref> =
2774  element em {
2775    (TEXT
2776      | xref
2777      | <x:ref>v3_strong</x:ref>
2778      | <x:ref>x_ref</x:ref>)*
2779  }
2780
2781<em anchor="v3_li"><iref item="li V3 Extension Element"/><iref item="V3 Extension Elements" subitem="li"
2782/># Definition List (see <xref target="v3.li"/>)</em>
2783<x:ref>v3_li</x:ref> =
2784  element li {
2785    attribute anchor { xsd:ID }?,
2786    ((<x:ref>v3_dl</x:ref> | <x:ref>v3_ol</x:ref>  | t | <x:ref>v3_ul</x:ref> )+
2787      |
2788    (TEXT
2789      | cref
2790      | eref
2791      | iref
2792      | xref
2793      | <x:ref>v3_em</x:ref>
2794      | <x:ref>v3_strong</x:ref>
2795      | <x:ref>v3_sub</x:ref>
2796      | <x:ref>v3_sup</x:ref>
2797      | <x:ref>v3_tt</x:ref>
2798      | <x:ref>x_ref</x:ref>)*
2799    )
2800  }
2801
2802<em anchor="v3_name"><iref item="name V3 Extension Element"/><iref item="V3 Extension Elements" subitem="name"
2803/># Section/Figure/Table Name (see <xref target="v3.name"/>)</em>
2804<x:ref>v3_name</x:ref> =
2805  element name {
2806    (TEXT
2807      | <x:ref>v3_tt</x:ref>
2808      | xref)*
2809  }
2810
2811<em anchor="v3_ol"><iref item="ol V3 Extension Element"/><iref item="V3 Extension Elements" subitem="ol"
2812/># Ordered List (see <xref target="v3.ol"/>)</em>
2813<x:ref>v3_ol</x:ref> =
2814  element ol {
2815    attribute anchor { xsd:ID }?,
2816    attribute start { TEXT }?,
2817    <x:ref>v3_li</x:ref>+
2818  }
2819
2820<em anchor="v3_postalLine"><iref item="postalLine V3 Extension Element"/><iref item="V3 Extension Elements" subitem="postalLine"
2821/># Line in postal address (see <xref target="v3.postalLine"/>)</em>
2822<x:ref>v3_postalLine</x:ref> =
2823  element postalLine {
2824    TEXT
2825  }
2826
2827<em anchor="v3_refcontent"><iref item="refcontent V3 Extension Element"/><iref item="V3 Extension Elements" subitem="refcontent"
2828/># additional content for references (see <xref target="v3.refcontent"/>)</em>
2829<x:ref>v3_refcontent</x:ref> =
2830  element refcontent {
2831    (TEXT
2832      | <x:ref>v3_em</x:ref>)*
2833  }
2834
2835<em anchor="v3_sourcecode"><iref item="sourcecode V3 Extension Element"/><iref item="V3 Extension Elements" subitem="sourcecode"
2836/># Source Code (see <xref target="v3.sourcecode"/>)</em>
2837<x:ref>v3_sourcecode</x:ref> =
2838  element sourcecode {
2839    attribute anchor { xsd:ID }?,
2840    attribute x:lang { "" }?,
2841    TEXT
2842  }
2843
2844<em anchor="v3_strong"><iref item="strong V3 Extension Element"/><iref item="V3 Extension Elements" subitem="strong"
2845/># Emphasized Text (see <xref target="v3.strong"/>)</em>
2846<x:ref>v3_strong</x:ref> =
2847  element strong {
2848    (TEXT
2849      | xref
2850      | <x:ref>v3_em</x:ref>
2851      | <x:ref>x_ref</x:ref>)*
2852  }
2853
2854<em anchor="v3_sub"><iref item="sub V3 Extension Element"/><iref item="V3 Extension Elements" subitem="sub"
2855/># Subscript (see <xref target="v3.sub"/>)</em>
2856<x:ref>v3_sub</x:ref> =
2857  element sub {
2858    (TEXT)*
2859  }
2860
2861<em anchor="v3_sup"><iref item="sup V3 Extension Element"/><iref item="V3 Extension Elements" subitem="sup"
2862/># Superscript (see <xref target="v3.sup"/>)</em>
2863<x:ref>v3_sup</x:ref> =
2864  element sup {
2865    (TEXT)*
2866  }
2867
2868<em anchor="v3_tt"><iref item="tt V3 Extension Element"/><iref item="V3 Extension Elements" subitem="tt"
2869/># Monospaced Text (see <xref target="v3.tt"/>)</em>
2870<x:ref>v3_tt</x:ref> =
2871  element tt {
2872    (TEXT
2873      | xref
2874      | <x:ref>v3_em</x:ref>
2875      | <x:ref>x_ref</x:ref>)*
2876  }
2877
2878<em anchor="v3_ul"><iref item="ul V3 Extension Element"/><iref item="V3 Extension Elements" subitem="ul"
2879/># Unordered List (see <xref target="v3.ul"/>)</em>
2880<x:ref>v3_ul</x:ref> =
2881  element ul {
2882    attribute anchor { xsd:ID }?,
2883    attribute empty { TEXT }?,
2884    <x:ref>v3_li</x:ref>+
2885  }
2886
2887<em anchor="v3_svg"><iref item="svg V3 Extension Element"/><iref item="V3 Extension Elements" subitem="svg"
2888/># SVG (see <xref target="v3.svg"/>)</em>
2889<x:ref>v3_svg</x:ref> =
2890  element svg:svg {
2891    (attribute * { text }
2892        | text
2893        | anySVGElement)*
2894  }
2895
2896 anySVGElement =
2897    element svg:* {
2898       (attribute * { text }
2899        | text
2900        | anySVGElement)*
2901    }
2902     
2903<em anchor="x_abnf-char-sequence"><iref item="abnf-char-sequence Extension Element"/><iref item="Extension Elements" subitem="abnf-char-sequence"
2904/># Conversion to ABNF char sequence (see <xref target="ext.element.abnf-char-sequence"/>)</em>
2905<x:ref>x_abnf-char-sequence</x:ref> =
2906  element x:abnf-char-sequence {
2907    TEXT
2908  }
2909
2910<em anchor="x_anchor-alias"><iref item="anchor-alias Extension Element"/><iref item="Extension Elements" subitem="anchor-alias"
2911/># Aliasing of anchors (see <xref target="ext.element.anchor-alias"/>)</em>
2912<x:ref>x_anchor-alias</x:ref> =
2913  element x:anchor-alias {
2914    attribute value { TEXT },
2915    empty
2916  }
2917
2918<em anchor="x_feedback"><iref item="feedback Extension Element"/><iref item="Extension Elements" subitem="feedback"
2919/># Supply feedback links (see <xref target="ext.element.feedback"/>)</em>
2920<x:ref>x_feedback</x:ref> =
2921  element x:feedback {
2922    attribute template { TEXT },
2923    empty
2924  }
2925
2926<em anchor="x_include-author"><iref item="include-author Extension Element"/><iref item="Extension Elements" subitem="include-author"
2927/># Including Author information
2928# (experimental)</em>
2929<x:ref>x_include-author</x:ref> =
2930  element x:include-author {
2931    attribute target { xsd:IDREF }
2932  }
2933
2934<em anchor="x_assign-section-number"><iref item="assign-section-number Extension Element"/><iref item="Extension Elements" subitem="assign-section-number"
2935/># Setting section numbers for internally generated sections
2936# (experimental)</em>
2937<x:ref>x_assign-section-number</x:ref> =
2938  element x:assign-section-number {
2939    attribute builtin-target { "authors" },
2940    attribute number { TEXT },
2941    empty
2942  }
2943
2944<em anchor="x_bb"><iref item="bb Extension Element"/><iref item="Extension Elements" subitem="bb"
2945/># Bottom line of box drawing (see <xref target="ext.element.bb"/>)</em>
2946<x:ref>x_bb</x:ref> =
2947  element x:bb {
2948    (TEXT
2949      | iref
2950      | xref
2951      | <x:ref>x_bb</x:ref>
2952      | <x:ref>x_bc</x:ref>
2953      | <x:ref>x_bt</x:ref>
2954      | <x:ref>x_ref</x:ref>)*
2955  }
2956
2957<em anchor="x_bc"><iref item="bc Extension Element"/><iref item="Extension Elements" subitem="bc"
2958/># Center line of box drawing (see <xref target="ext.element.bc"/>)</em>
2959<x:ref>x_bc</x:ref> =
2960  element x:bc {
2961    (TEXT
2962      | iref
2963      | spanx
2964      | xref
2965      | <x:ref>x_bb</x:ref>
2966      | <x:ref>x_bc</x:ref>
2967      | <x:ref>x_bt</x:ref>
2968      | <x:ref>x_ref</x:ref>)*
2969  }
2970
2971<em anchor="x_bcp14"><iref item="bcp14 Extension Element"/><iref item="Extension Elements" subitem="bcp14"
2972/># BCP14/RFC2119 keywords (see <xref target="ext.element.bcp14"/>)</em>
2973<x:ref>x_bcp14</x:ref> =
2974  element x:bcp14 {
2975    "MAY"
2976    | "MUST"
2977    | "MUST NOT"
2978    | "NOT RECOMMENDED"
2979    | "OPTIONAL"
2980    | "RECOMMENDED"
2981    | "REQUIRED"
2982    | "SHALL"
2983    | "SHALL NOT"
2984    | "SHOULD"
2985    | "SHOULD NOT"
2986  }
2987 
2988<em anchor="x_blockquote"><iref item="blockquote Extension Element"/><iref item="Extension Elements" subitem="blockquote"
2989/># Blockquote (see <xref target="ext.element.blockquote"/>)</em>
2990<x:ref>x_blockquote</x:ref> =
2991  element x:blockquote {
2992    attribute anchor { xsd:ID }?,
2993    attribute cite { URI }?,
2994    t+
2995  }
2996
2997<em anchor="x_bt"><iref item="bt Extension Element"/><iref item="Extension Elements" subitem="bt"
2998/># Top line of box drawing (see <xref target="ext.element.bt"/>)</em>
2999<x:ref>x_bt</x:ref> =
3000  element x:bt {
3001    (TEXT
3002      | iref
3003      | xref
3004      | <x:ref>x_bb</x:ref>
3005      | <x:ref>x_bc</x:ref>
3006      | <x:ref>x_bt</x:ref>
3007      | <x:ref>x_ref</x:ref>)*
3008  }
3009
3010<em anchor="x_dfn"><iref item="dfn Extension Element"/><iref item="Extension Elements" subitem="dfn"
3011/># Definition (see <xref target="ext.element.dfn"/>)</em>
3012<x:ref>x_dfn</x:ref> =
3013  element x:dfn {
3014    attribute anchor { xsd:ID }?,
3015    (TEXT
3016      | iref)*
3017  }
3018 
3019<em anchor="x_h"><iref item="h Extension Element"/><iref item="Extension Elements" subitem="h"
3020/># Heading (see <xref target="ext.element.h"/>)</em>
3021<x:ref>x_h</x:ref> =
3022  element x:h {
3023    TEXT
3024  }
3025
3026<em anchor="x_highlight"><iref item="highlight Extension Element"/><iref item="Extension Elements" subitem="highlight"
3027/># Heading (see <xref target="ext.element.highlight"/>)</em>
3028<x:ref>x_highlight</x:ref> =
3029  element x:highlight {
3030    TEXT
3031  }
3032
3033<em anchor="x_length-of"><iref item="length-of Extension Element"/><iref item="Extension Elements" subitem="length-of"
3034/># Length Measurement (see <xref target="ext.element.length-of"/>)</em>
3035<x:ref>x_length-of</x:ref> =
3036  element x:length-of {
3037    attribute indented { NUMBER }?,
3038    attribute target { xsd:IDREF },
3039    empty
3040  }
3041
3042<em anchor="x_link"><iref item="link Extension Element"/><iref item="Extension Elements" subitem="link"
3043/># Link (see <xref target="ext.element.link"/>)</em>
3044<x:ref>x_link</x:ref> =
3045  element x:link {
3046    attribute basename { URI }?,
3047    attribute href { URI }?,
3048    attribute title { TEXT }?,
3049    attribute rel { TEXT },
3050    empty
3051  }
3052 
3053<em anchor="x_lt"><iref item="lt Extension Element"/><iref item="Extension Elements" subitem="lt"
3054/># Extended list item (see <xref target="ext.element.lt"/>)</em>
3055<x:ref>x_lt</x:ref> =
3056  element x:lt {
3057    attribute anchor { xsd:ID }?,
3058    attribute hangText { TEXT }?,
3059    t+
3060  }
3061
3062<em anchor="x_note"><iref item="note Extension Element"/><iref item="Extension Elements" subitem="note"
3063/># Note (see <xref target="ext.element.note"/>)</em>
3064<x:ref>x_note</x:ref> =
3065  element x:note {
3066    attribute anchor { xsd:ID }?,
3067    t+
3068  }
3069
3070<em anchor="x_parse-xml"><iref item="parse-xml Extension Element"/><iref item="Extension Elements" subitem="parse-xml"
3071/># Signal XML content (see <xref target="ext.element.parse-xml"/>)</em>
3072<x:ref>x_parse-xml</x:ref> =
3073  element x:parse-xml {
3074    (TEXT
3075      | xref)*
3076  }
3077
3078<em anchor="x_prose"><iref item="prose Extension Element"/><iref item="Extension Elements" subitem="prose"
3079/># Inline prose in a reference (see <xref target="ext.element.prose"/>)</em>
3080<x:ref>x_prose</x:ref> =
3081  element x:prose {
3082    TEXT
3083  }
3084
3085<em anchor="x_q"><iref item="q Extension Element"/><iref item="Extension Elements" subitem="q"
3086/># Inline quote (see <xref target="ext.element.q"/>)</em>
3087<x:ref>x_q</x:ref> =
3088  element x:q {
3089    TEXT
3090  }
3091
3092<em anchor="x_ref"><iref item="ref Extension Element"/><iref item="Extension Elements" subitem="ref"
3093/># Anchor reference (see <xref target="ext.element.ref"/>)</em> 
3094<x:ref>x_ref</x:ref> =
3095  element x:ref {
3096    attribute anchor { xsd:ID }?,
3097    TEXT
3098  }
3099
3100<em anchor="x_source"><iref item="source Extension Element"/><iref item="Extension Elements" subitem="source"
3101/># source information (see <xref target="ext.element.source"/>)</em> 
3102<x:ref>x_source</x:ref> =
3103  element x:source {
3104    attribute basename { ATEXT }?,
3105    attribute href { URI },
3106    empty
3107  }
3108
3109<em anchor="x_sup"><iref item="sup Extension Element"/><iref item="Extension Elements" subitem="sup"
3110/># superscript (see <xref target="ext.element.sup"/>)</em>
3111<x:ref>x_sup</x:ref> =
3112  element x:sup {
3113    TEXT
3114  }
3115
3116<em anchor="x_span"><iref item="span Extension Element"/><iref item="Extension Elements" subitem="span"
3117/># Inline Span <!--(see <xref target="ext.element.span"/>)--></em>
3118<x:ref>x_span</x:ref> =
3119  element x:span {
3120    attribute anchor { xsd:ID }?,
3121    attribute x:lang { "" }?,
3122    (TEXT
3123      | <x:ref>x_parse-xml</x:ref>)*
3124  }
3125
3126<em anchor="x_x"><iref item="x Extension Element"/><iref item="Extension Elements" subitem="x"
3127/># Nop (for alignment in source)</em>
3128<x:ref>x_x</x:ref> =
3129  element x:x {
3130    empty
3131  }
3132
3133<em anchor="xi_include"><iref item="xi:include Extension Element"/><iref item="XInclude Extension Elements" subitem="include"
3134/># XInclude</em>
3135<x:ref>xi_include</x:ref> =
3136  element xi:include {
3137    attribute href { text },
3138    empty
3139  }
3140
3141<em anchor="rdf_Description"><iref item="rdf:Description Extension Element"/><iref item="Extension Elements" subitem="rdf:Description"
3142/># Embed RDF statements </em>
3143<x:ref>rdf_Description</x:ref> =
3144  element rdf:Description {
3145    rdf_content
3146  }
3147 
3148rdf_content =
3149  ( TEXT | element * { rdf_content })*
3150</artwork></figure>
3151  </section>
3152 
3153  <section title="Implementation Notes">
3154 
3155  <section title="Recognized type attributes for &lt;artwork> element" anchor="artwork.types">
3156  <t>
3157    Specific values in the &lt;artwork> element's "type" attribute are
3158    recognized and cause a different visual style to be used:
3159  </t>
3160  <texttable>
3161    <ttcol>Type</ttcol>
3162    <ttcol>Comment</ttcol>
3163   
3164    <c>abnf</c><c>ABNF as per <xref target="RFC5234"/></c>
3165    <c>abnf2045</c><c>ABNF as per <xref target="RFC2045"/></c>
3166    <c>abnf2616</c><c>ABNF as per <xref target="RFC2616" x:fmt="," x:sec="2.1" /></c>
3167    <c>abnf7230</c><c>ABNF as per <xref target="RFC7230" x:fmt="," x:sec="1.2" /></c>
3168    <c>application/relax-ng-compact-syntax</c><c>Relax NG Compact Syntax as per <xref target="RNC"/></c>
3169    <c>application/xml-dtd</c><c>XML DTD</c>
3170    <c>code</c><c>monospaced text (with outline)</c>
3171    <c>drawing</c><c>drawing (with outline)</c>
3172    <c>example</c><c>monospaced text (with outline)</c>
3173    <c>inline</c><c>monospaced text (no outline)</c>
3174    <c>message/http; msgtype="request"</c><c>HTTP message, as per <xref target="RFC2616" x:fmt="," x:sec="19.1" /></c>
3175    <c>message/http; msgtype="response"</c><c>HTTP message, as per <xref target="RFC2616" x:fmt="," x:sec="19.1" /></c>
3176  </texttable>
3177  </section>
3178 
3179  </section>
3180 
3181  <section title="Examples" anchor="examples">
3182
3183  <section title="Using the 'Internal Subset'" anchor="examples.internalsubset">
3184  <t>
3185    The prolog of the XML document can both be used to refer to an external
3186    DTD, and also to define internal entities (<xref target="XML" x:fmt="of" x:sec="2.8" x:rel="#sec-prolog-dtd"/>):
3187  </t>
3188  <figure><artwork type="example" x:lang="">
3189&lt;?xml version="1.0"?>
3190&lt;?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
3191
3192&lt;!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
3193
3194  &lt;!-- <em>use "&amp;MAY;" for a BCP 14 "MAY", see <xref target="ext.element.bcp14"/></em> -->
3195  &lt;!ENTITY MAY
3196  "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'>MAY&lt;/bcp14>">
3197
3198  &lt;!-- <em>re-declare "&amp;nbsp;" as code point 160 (non-breaking space)</em> -->
3199  &lt;!-- <em>you may need this for UAs that do not read external DTDs</em> -->
3200  &lt;!ENTITY nbsp
3201  "&amp;#160;">
3202
3203  &lt;!-- <em>allow later RFC2616 reference using "&amp;rfc2616;"</em> -->
3204  &lt;!-- <em>the data will be fetched from xml.resource.org</em> -->
3205  &lt;!ENTITY rfc2616 SYSTEM
3206  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2616.xml">
3207
3208  &lt;!-- <em>allow a custom reference using "&amp;mydraft;"</em> -->
3209  &lt;!-- <em>the data will be fetched from the same location as the
3210       source file</em> -->
3211  &lt;!ENTITY mydraft SYSTEM "reference.mydraft.xml">
3212]>
3213</artwork>
3214<postamble>
3215  Note: including entities from a remote site will not work in Firefox,
3216  see <eref target="https://bugzilla.mozilla.org/show_bug.cgi?id=22942"/>.</postamble>
3217</figure>
3218 
3219  </section>
3220
3221  <section title="Customization" anchor="examples.customizing">
3222  <t>
3223    The XSLT code can be customized by creating a custom XSLT file that
3224    uses &lt;xsl:import> to include the original code, and just overrides
3225    particular rules.
3226  </t>
3227  <figure>
3228  <preamble>For instance, the code below overrides several attributes in
3229  <tt>rfc2629toFO.xslt</tt>, changing the color, spacing and font family for
3230  headers.</preamble>
3231  <artwork type="example" x:lang="">
3232&lt;xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3233               version="1.0">
3234
3235  &lt;xsl:import href="rfc2629toFO.xslt"/>
3236 
3237  &lt;xsl:attribute-set name="h1">
3238    &lt;xsl:attribute name="color">darkblue&lt;/xsl:attribute>
3239    &lt;xsl:attribute name="font-family">sans-serif&lt;/xsl:attribute>
3240    &lt;xsl:attribute name="space-before">24pt&lt;/xsl:attribute>
3241  &lt;/xsl:attribute-set>
3242 
3243  &lt;xsl:attribute-set name="h2">
3244    &lt;xsl:attribute name="color">darkblue&lt;/xsl:attribute>
3245    &lt;xsl:attribute name="font-family">sans-serif&lt;/xsl:attribute>
3246    &lt;xsl:attribute name="space-before">18pt&lt;/xsl:attribute>
3247    &lt;xsl:attribute name="space-after">3pt&lt;/xsl:attribute>
3248  &lt;/xsl:attribute-set>
3249 
3250  &lt;xsl:attribute-set name="h3">
3251    &lt;xsl:attribute name="color">darkblue&lt;/xsl:attribute>
3252    &lt;xsl:attribute name="font-family">sans-serif&lt;/xsl:attribute>
3253    &lt;xsl:attribute name="space-before">16pt&lt;/xsl:attribute>
3254    &lt;xsl:attribute name="space-after">2pt&lt;/xsl:attribute>
3255  &lt;/xsl:attribute-set>
3256
3257&lt;/xsl:transform>
3258</artwork></figure>
3259<x:note>
3260  <t>
3261    <x:h>Note:</x:h> the name for the attribute sets may change in the future
3262    as more working is done with respect to customizability. In any case,
3263    overriding the settings in a separate file will be easier to maintain.
3264    Please contact the author if you find yourself trying to override style
3265    definitions that currently do not use attribute sets.
3266  </t>
3267  <t>
3268    <x:h>Note:</x:h> the CSS style information used in <tt>rfc2629.xslt</tt>
3269    can be overriden in a similar (but less granular) way: just overwrite the
3270    template called "insertCss". As for XSL-FO, the class names may change in
3271    future.
3272  </t>
3273</x:note>
3274</section>
3275</section>
3276
3277<section title="Producing the IETF 'Boilerplate'" anchor="boilerplate">
3278<t>
3279  Various attributes of the <tt>&lt;rfc&gt;</tt>
3280  element plus some child elements of <tt>&lt;front&gt;</tt>
3281  affect the automatically generated parts of the front page, such as the
3282  tabular information at the beginning, the "Status Of This Memo", and the
3283  "Copyright Notice".
3284</t>
3285<t>
3286  When submitting an Internet Draft, this "boilerplate" is checked
3287  by "Idnits" (<eref target="http://tools.ietf.org/tools/idnits/"/>) for
3288  compliance with the current Intellectual Property rules, and thus
3289  it is important to set the correct values.
3290</t>
3291<t>
3292  Furthermore, the RFC Production Center uses RFC2629-based tools to
3293  generate the final RFC text, so the more accurate the supplied information
3294  is, the less additional work is left, and the risk for errors in producing
3295  the final (and immutable!) document is reduced.
3296</t>
3297<x:note>
3298  <t>
3299    <x:h>Note:</x:h> this only applies to the case when IETF documents are
3300    produced. The "private" processing instruction <iref item="private PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="private"/>
3301    allows to switch off most of the autogeneration logic.
3302  </t>
3303</x:note>
3304<t anchor="boiler.plate.attributes">
3305  <x:anchor-alias value="attribute-ipr"/>
3306  <x:anchor-alias value="attribute-ipr-current"/>
3307  <x:anchor-alias value="attribute-ipr-trust200902"/>
3308  <x:anchor-alias value="attribute-ipr-noModificationTrust200902"/>
3309  <x:anchor-alias value="attribute-ipr-noDerivativesTrust200902"/>
3310  <x:anchor-alias value="attribute-ipr-pre5378Trust200902"/>
3311  <x:anchor-alias value="attribute-ipr-historic"/>
3312  <x:anchor-alias value="attribute-ipr-200811"/>
3313  <x:anchor-alias value="attribute-ipr-3978"/>
3314  <x:anchor-alias value="attribute-ipr-3667"/>
3315  <x:anchor-alias value="attribute-ipr-2026"/>
3316  <x:anchor-alias value="attribute-category"/>
3317  <x:anchor-alias value="attribute-submissiontype"/>
3318  <x:anchor-alias value="attribute-consensus"/>
3319  The individual attributes on the <tt>&lt;rfc&gt;</tt> element are
3320  discussed in detail in <xref target="RFC7749" x:rel="#front.page"/>.
3321</t>
3322
3323</section>
3324
3325  <section title="License" anchor="license">
3326  <t>
3327Copyright (c) 2006-2016, Julian Reschke (julian.reschke@greenbytes.de)
3328  </t>
3329  <t>
3330All rights reserved.
3331  </t>
3332  <t>
3333Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
3334  <list style="symbols">
3335    <t>Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.</t>
3336    <t>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.</t>
3337    <t>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.</t>
3338  </list>
3339  </t>
3340  <t>
3341THIS 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.
3342  </t>
3343  </section>
3344</back>
3345</rfc>
Note: See TracBrowser for help on using the repository browser.