source: rfc2629xslt/rfc2629xslt.xml

Last change on this file was 2762, checked in by julian.reschke@…, 11 months ago

update specs and rfc2629.xslt

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/xml
File size: 177.5 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="RFC 7749 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="RFC7749 through XSLT">Transforming RFC7749-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>https://greenbytes.de/tech/webdav/</uri>
30                </address>
31        </author>
32     
33    <date/>
34
35    <keyword>RFC2629</keyword>
36    <keyword>RFC7749</keyword>
37    <keyword>xml2rfc</keyword>
38    <keyword>XSLT</keyword>
39    <keyword>XSL-FO</keyword>
40    <keyword>PDF</keyword>
41    <keyword>GRDDL</keyword>
42    <keyword>epub</keyword>
43    <keyword>Dublin Core</keyword>
44        </front>
45
46        <middle>
47
48<section title="Introduction" anchor="introduction">
49<t>
50  This document describes a set of XSLT transformations that can be used to
51  transform "XML2RFC" XML (<xref target="RFC7749"/>, updating <xref target="RFC2629"/>) to various
52  output formats, such as HTML and PDF. The main topics are 
53  <list style="symbols">
54    <t>compliance to the xml2rfc XML element set (<xref target="supported.elements"/>),</t>
55    <t>support for xml2rfc processing instructions (<xref target="processing.instructions"/>),</t>
56    <t>the names of anchor elements generated in HTML and PDF output (<xref target="anchors"/>),</t>
57    <t>various XSLT engines that can be used (<xref target="xslt.engines"/>),</t>
58    <t>outputting HTML (<xref target="output.html"/>) and XHTML (<xref target="output.xhtml"/>),</t>
59    <t>outputting CHM (Compiled Microsoft Help, <xref target="output.chm"/>),</t>
60    <t>outputting PDF (<xref target="output.pdf"/>),</t>
61    <t>outputting ePub (<xref target="output.epub"/>),</t>
62    <t>extensions to the xml2rfc vocabulary (<xref target="extensions"/>),</t>
63    <t>selected extensions from the proposed xml2rfc V3 vocabulary (<xref target="v3"/>),</t>
64    <t>various utilities (<xref target="utilities"/>).</t>
65  </list>
66</t>
67<t>
68  The full distribution is available at <eref target="https://greenbytes.de/tech/webdav/rfc2629xslt.zip"/>.
69  A mirror of the non-public source repository can be found at <eref target="https://github.com/reschke/xml2rfc"/>;
70  this is also a good place for reporting issues.
71</t>
72<aside>
73  <t>
74    <em>Note:</em> RFC 2629 was the initial specification of the XML vocabulary; that's why the "2629"
75    lives on in various parts, such as filenames.
76  </t>
77</aside>
78</section>
79
80<section title="Supported RFC7749 elements" anchor="supported.elements">
81<t>
82  <tt>rfc2629.xslt</tt> supports both all grammar elements defined in
83  <xref target="RFC7749"/>, plus a subset of the new elements defined
84  in <xref target="RFC7991bis"/>.
85</t>
86<section title="Extension elements">
87<t>
88  <tt>rfc2629.xslt</tt> supports two kind of extension
89  elements, using different XML namespaces.
90</t>
91<t>
92  The first set contains (hopefully) generally useful extensions, see
93  <xref target="extensions"/>.
94</t>
95<t>
96  The second set is used for change and issue tracking and currently is not
97  documented here. Please email the author in case
98  you're interested in using these extensions.
99</t>
100</section>
101</section>
102
103<section title="Processing Instructions" anchor="processing.instructions">
104<t>
105  All PIs can be set as XSLT parameter as well, overriding any value that
106  is found in the source file to be transformed.
107</t>
108<figure>
109<preamble>Using processing instructions:</preamble>
110<artwork type="example" x:lang="">
111&lt;?rfc toc="yes"?>
112&lt;?rfc-ext support-rfc2731="no"?>
113</artwork>
114</figure>
115<figure>
116<preamble>Using XSLT parameters (Saxon):</preamble>
117<artwork type="example">
118java -cp saxon.jar com.icl.saxon.StyleSheet source.xml rfc2629.xslt \
119  xml2rfc-toc=yes xml2rfc-ext-support-rfc2731=no > result.html
120</artwork></figure>
121<figure>
122<preamble>Using XSLT parameters (xsltproc):</preamble>
123<artwork type="example">
124xsltproc --param xml2rfc-toc '"yes"' \
125   --param xml2rfc-ext-support-rfc2731 '"no"' \
126   rfc2629.xslt source.xml > result.html
127</artwork>
128<postamble>(note the required quoting of string parameters)<iref item="xsltproc" subitem="passing parameters"/></postamble>
129</figure>
130
131<section title="Supported xml2rfc-compatible PIs" anchor="supported.pis">
132<texttable>
133  <ttcol>PI target</ttcol>
134  <ttcol>PI pseudo-attribute</ttcol>
135  <ttcol>XSLT parameter name</ttcol>
136  <ttcol>default</ttcol>
137  <ttcol>comment</ttcol>
138
139  <c>rfc</c>
140  <c>authorship<iref item="authorship PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="authorship"/></c>
141  <c>xml2rfc-authorship<iref item="xml2rfc-authorship parameter"/> <iref item="Parameters" subitem="xml2rfc-authorship"/></c>
142  <c>"yes"</c>
143  <c>when set to "no", the "Authors" section is suppressed</c>
144
145  <c>rfc</c>
146  <c>background<iref item="background PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="background"/></c>
147  <c>xml2rfc-background<iref item="xml2rfc-background parameter"/> <iref item="Parameters" subitem="xml2rfc-background"/></c>
148  <c>(not set)</c>
149  <c/>
150 
151  <c>rfc</c>
152  <c>compact<iref item="compact PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="compact"/></c>
153  <c>xml2rfc-compact<iref item="xml2rfc-editing parameter"/> <iref item="Parameters" subitem="xml2rfc-compact"/></c>
154  <c>"no"</c>
155  <c>only applies to HTML output method when printing</c>
156
157  <c>rfc</c>
158  <c>comments<iref item="comments PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="comments"/></c>
159  <c>xml2rfc-comments<iref item="xml2rfc-comments parameter"/> <iref item="Parameters" subitem="xml2rfc-comments"/></c>
160  <c>"no" ("yes" for v3 documents)</c>
161  <c/>
162
163  <c>rfc</c>
164  <c>docmapping<iref item="docmapping PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="docmapping"/></c>
165  <c/>
166  <c>"yes"</c>
167  <c>This is the default for rfc2629.xslt anyway, and it can not be changed</c>
168
169  <c>rfc</c>
170  <c>editing<iref item="editing PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="editing"/></c>
171  <c>xml2rfc-editing<iref item="xml2rfc-editing parameter"/> <iref item="Parameters" subitem="xml2rfc-editing"/></c>
172  <c>"no"</c>
173  <c/>
174 
175  <c>rfc</c>
176  <c>footer<iref item="footer PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="footer"/></c>
177  <c>xml2rfc-footer<iref item="xml2rfc-footer parameter"/> <iref item="Parameters" subitem="xml2rfc-footer"/></c>
178  <c>(not set)</c>
179  <c/>
180 
181  <c>rfc</c>
182  <c>header<iref item="header PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="header"/></c>
183  <c>xml2rfc-header<iref item="xml2rfc-header parameter"/> <iref item="Parameters" subitem="xml2rfc-header"/></c>
184  <c>(not set)</c>
185  <c/>
186
187  <c>rfc</c>
188  <c>include<iref item="include PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="include"/></c>
189  <c/>
190  <c/>
191  <c>only partly supported, use external entities instead (see <xref target="examples.internalsubset"/>) or other tools (<xref target="refreshing.inclusions"/>) instead</c>
192
193  <c>rfc</c>
194  <c>inline<iref item="inline PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="inline"/></c>
195  <c>xml2rfc-inline<iref item="xml2rfc-inline parameter"/> <iref item="Parameters" subitem="xml2rfc-inline"/></c>
196  <c>"no" ("yes" for v3 documents)</c>
197  <c/>
198
199  <c>rfc</c>
200  <c>iprnotified<iref item="iprnotified PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="iprnotified"/></c>
201  <c>xml2rfc-iprnotified<iref item="xml2rfc-iprnotified parameter"/> <iref item="Parameters" subitem="xml2rfc-iprnotified"/></c>
202  <c>"no"</c>
203  <c/>
204
205  <c>rfc</c>
206  <c>linkmailto<iref item="linkmailto PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="linkmailto"/></c>
207  <c>xml2rfc-linkmailto<iref item="xml2rfc-linkmailto parameter"/> <iref item="Parameters" subitem="xml2rfc-linkmailto"/></c>
208  <c>"yes"</c>
209  <c/>
210 
211  <c>rfc</c>
212  <c>multiple-initials<iref item="multiple-initials PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="multiple-initials"/></c>
213  <c>xml2rfc-multiple-initials<iref item="xml2rfc-multiple-initials parameter"/> <iref item="Parameters" subitem="xml2rfc-multiple-initials"/></c>
214  <c>"no"</c>
215  <c>determines whether the processor will attempt to truncate multiple initials to a single one; can be set globally (affecting the front page) but also as child element of &lt;reference&gt;</c>
216
217  <c>rfc</c>
218  <c>private<iref item="private PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="private"/></c>
219  <c>xml2rfc-private<iref item="xml2rfc-private parameter"/> <iref item="Parameters" subitem="xml2rfc-private"/></c>
220  <c>(not set)</c>
221  <c/>
222 
223  <c>rfc</c>
224  <c>refparent<iref item="refparent PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="refparent"/></c>
225  <c>xml2rfc-private<iref item="xml2rfc-refparent parameter"/> <iref item="Parameters" subitem="xml2rfc-refparent"/></c>
226  <c>"References"</c>
227  <c>Title for References sections when automatically inserted</c>
228
229  <c>rfc</c>
230  <c>rfcedstyle<iref item="rfcedstyle PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="rfcedstyle"/></c>
231  <c>xml2rfc-rfcedstyle<iref item="xml2rfc-rfcedstyle parameter"/> <iref item="Parameters" subitem="xml2rfc-rfcedstyle"/></c>
232  <c>(not set)</c>
233  <c>(limited support)</c>
234
235  <c>rfc</c>
236  <c>sortrefs<iref item="sortrefs PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="sortrefs"/></c>
237  <c>xml2rfc-sortrefs<iref item="xml2rfc-sortrefs parameter"/> <iref item="Parameters" subitem="xml2rfc-sortrefs"/></c>
238  <c>"no"</c>
239  <c/>
240 
241  <c>rfc</c>
242  <c>symrefs<iref item="symrefs PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="symrefs"/></c>
243  <c>xml2rfc-symrefs<iref item="xml2rfc-symrefs parameter"/> <iref item="Parameters" subitem="xml2rfc-symrefs"/></c>
244  <c>"yes"</c>
245  <c>The default has changed from "no" to "yes" as of June 6, 2007 and xml2rfc 1.33pre4.</c>
246 
247  <c>rfc</c>
248  <c>toc<iref item="toc PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="toc"/></c>
249  <c>xml2rfc-toc<iref item="xml2rfc-toc parameter"/> <iref item="Parameters" subitem="xml2rfc-toc"/></c>
250  <c>"no" ("yes" for documents specifying "3" as vocabulary version)</c>
251  <c/>
252 
253  <c>rfc</c>
254  <c>tocdepth<iref item="tocdepth PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="tocdepth"/></c>
255  <c>xml2rfc-tocdepth<iref item="xml2rfc-tocdepth parameter"/> <iref item="Parameters" subitem="xml2rfc-tocdepth"/></c>
256  <c>99</c>
257  <c/>
258
259  <c>rfc</c>
260  <c>topblock<iref item="topblock PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="topblock"/></c>
261  <c>xml2rfc-topblock<iref item="xml2rfc-topblock parameter"/> <iref item="Parameters" subitem="xml2rfc-topblock"/></c>
262  <c>"yes"</c>
263  <c/>
264
265</texttable>
266</section>
267
268<section title="Unsupported xml2rfc-compatible PIs" anchor="unsupported.pis">
269<texttable>
270  <ttcol>PI target</ttcol>
271  <ttcol>PI pseudo-attribute</ttcol>
272  <ttcol>comment</ttcol>
273
274  <c>rfc</c>
275  <c>needLines<iref item="needLines PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="needLines"/></c>
276  <c/>
277
278  <c>rfc</c>
279  <c>slides<iref item="slides PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="slides"/></c>
280  <c/>
281
282  <c>rfc</c>
283  <c>strict<iref item="strict PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="strict"/></c>
284  <c/>
285
286  <c>rfc</c>
287  <c>subcompact<iref item="subcompact PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="subcompact"/></c>
288  <c/>
289
290  <c>rfc</c>
291  <c>tocindent<iref item="tocindent PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="tocindent"/></c>
292  <c>(defaults to "yes")</c>
293
294 <c>rfc</c>
295  <c>tocompact<iref item="tocompact PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="tocompact"/></c>
296  <c/>
297
298</texttable>
299</section>
300
301<section title="Extension PIs" anchor="extension.pis">
302  <section title="abort-on - Log Level" anchor="xml2rfc-ext-abort-on">
303    <iref item="abort-on PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="abort-on"/>
304    <iref item="xml2rfc-ext-abort-on parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-abort-on"/>
305
306    <dl newline="true">
307      <dt>PI target</dt>
308      <dd>rfc-ext</dd>
309      <dt>PI pseudo-attribute</dt>
310      <dd>abort-on</dd>
311      <dt>XSLT parameter name</dt>
312      <dd>xml2rfc-ext-abort-on</dd>
313      <dt>default</dt>
314      <dd>"OFF"</dd>
315    </dl>
316    <t>
317      Controls at which log level a message causes the XSLT to be aborted (one of "OFF", "FATAL", "ERROR", "WARNING", "INFO", "DEBUG", "TRACE").
318    </t>
319  </section>
320
321  <section title="allow-markup-in-artwork - Allow certain XML elements inside &lt;artwork> and &lt;sourcecode>" anchor="xml2rfc-ext-allow-markup-in-artwork">
322    <iref item="allow-markup-in-artwork PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="allow-markup-in-artwork"/>
323    <iref item="xml2rfc-ext-allow-markup-in-artwork parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-allow-markup-in-artwork"/>
324
325    <dl newline="true">
326      <dt>PI target</dt>
327      <dd>rfc-ext</dd>
328      <dt>PI pseudo-attribute</dt>
329      <dd>allow-markup-in-artwork</dd>
330      <dt>XSLT parameter name</dt>
331      <dd>xml2rfc-ext-allow-markup-in-artwork</dd>
332      <dt>default</dt>
333      <dd>"no"</dd>
334    </dl>
335    <t>
336      Enables support for specific elements inside &lt;artwork> and &lt;sourcecode> elements (using this extension
337      makes the document incompatible to the RFC7749 grammar; see description of
338      conversion XSLT in <xref target="clean-for-dtd"/>).
339    </t>
340  </section>
341
342  <section title="authors-section - Placement of 'Authors' Section" anchor="xml2rfc-ext-authors-section">
343    <iref item="authors-section PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="authors-section"/>
344    <iref item="xml2rfc-ext-authors-section parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-authors-section"/>
345
346    <dl newline="true">
347      <dt>PI target</dt>
348      <dd>rfc-ext</dd>
349      <dt>PI pseudo-attribute</dt>
350      <dd>authors-section</dd>
351      <dt>XSLT parameter name</dt>
352      <dd>xml2rfc-ext-authors-section</dd>
353      <dt>default</dt>
354      <dd>"end"</dd>
355    </dl>
356    <t>
357      When "before-appendices", place the authors section between references
358      and appendices (this ordering was used a long time ago).
359    </t>
360  </section>
361
362  <section title="css-contents - CSS Contents" anchor="xml2rfc-ext-css-contents">
363    <iref item="css-contents PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="css-contents"/>
364    <iref item="xml2rfc-ext-css-contents parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-css-contents"/>
365
366    <dl newline="true">
367      <dt>PI target</dt>
368      <dd>rfc-ext</dd>
369      <dt>PI pseudo-attribute</dt>
370      <dd>css-contents</dd>
371      <dt>XSLT parameter name</dt>
372      <dd>xml2rfc-ext-css-contents</dd>
373      <dt>default</dt>
374      <dd>none</dd>
375    </dl>
376    <t>
377      CSS content to use instead of the built-in (experimental).
378    </t>
379  </section>
380
381  <section title="css-resource - Custom CSS Resource" anchor="xml2rfc-ext-css-resource">
382    <iref item="css-resource PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="css-resource"/>
383    <iref item="xml2rfc-ext-css-resource parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-css-resource"/>
384
385    <dl newline="true">
386      <dt>PI target</dt>
387      <dd>rfc-ext</dd>
388      <dt>PI pseudo-attribute</dt>
389      <dd>css-resource</dd>
390      <dt>XSLT parameter name</dt>
391      <dd>xml2rfc-ext-css-resource</dd>
392      <dt>default</dt>
393      <dd>none</dd>
394    </dl>
395    <t>
396      Name of CSS resource (URI or relate reference) to use instead of the built-in (experimental).
397    </t>
398  </section>
399
400  <section title="dark-mode - Switch for Enabling 'Dark Mode' Support" anchor="xml2rfc-ext-dark-mode">
401    <iref item="dark-mode PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="dark-mode"/>
402    <iref item="xml2rfc-ext-dark-mode parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-dark-mode"/>
403
404    <dl newline="true">
405      <dt>PI target</dt>
406      <dd>rfc-ext</dd>
407      <dt>PI pseudo-attribute</dt>
408      <dd>dark-mode</dd>
409      <dt>XSLT parameter name</dt>
410      <dd>xml2rfc-ext-dark-mode</dd>
411      <dt>default</dt>
412      <dd>"no"</dd>
413    </dl>
414    <t>
415      Set to 'auto' to enable "dark mode" CSS support.
416    </t>
417  </section>
418
419  <section title="diff-uri - URI Template for Internet Draft Diff Links" anchor="xml2rfc-ext-diff-uri">
420    <iref item="diff-uri PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="diff-uri"/>
421    <iref item="xml2rfc-ext-diff-uri parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-diff-uri"/>
422
423    <dl newline="true">
424      <dt>PI target</dt>
425      <dd>rfc-ext</dd>
426      <dt>PI pseudo-attribute</dt>
427      <dd>diff-uri</dd>
428      <dt>XSLT parameter name</dt>
429      <dd>xml2rfc-ext-diff-uri</dd>
430      <dt>default</dt>
431      <dd>"https://www.ietf.org/rfcdiff?url2={internet-draft}"</dd>
432    </dl>
433    <t>
434      URI template for Internet Draft Diff links.
435    </t>
436  </section>
437
438  <section title="doi-uri - URI Template for DOI Links" anchor="xml2rfc-ext-doi-uri">
439    <iref item="doi-uri PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="doi-uri"/>
440    <iref item="xml2rfc-ext-doi-uri parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-doi-uri"/>
441
442    <dl newline="true">
443      <dt>PI target</dt>
444      <dd>rfc-ext</dd>
445      <dt>PI pseudo-attribute</dt>
446      <dd>doi-uri</dd>
447      <dt>XSLT parameter name</dt>
448      <dd>xml2rfc-ext-doi-uri</dd>
449      <dt>default</dt>
450      <dd>"https://dx.doi.org/{doi}"</dd>
451    </dl>
452    <t>
453      URI template for DOIs links.
454    </t>
455  </section>
456
457  <section title="duplex - Support Duplex Printing" anchor="xml2rfc-ext-duplex">
458    <iref item="duplex PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="duplex"/>
459    <iref item="xml2rfc-ext-duplex parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-duplex"/>
460
461    <dl newline="true">
462      <dt>PI target</dt>
463      <dd>rfc-ext</dd>
464      <dt>PI pseudo-attribute</dt>
465      <dd>duplex</dd>
466      <dt>XSLT parameter name</dt>
467      <dd>xml2rfc-ext-duplex</dd>
468      <dt>default</dt>
469      <dd>"no"</dd>
470    </dl>
471    <t>
472      When set to "yes", format printed output for doublesided printing.
473    </t>
474  </section>
475
476  <section title="errata - Embed Errata Information" anchor="xml2rfc-ext-errata">
477    <iref item="errata PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="errata"/>
478    <iref item="xml2rfc-ext-errata parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-errata"/>
479
480    <dl newline="true">
481      <dt>PI target</dt>
482      <dd>rfc-ext</dd>
483      <dt>PI pseudo-attribute</dt>
484      <dd>errata</dd>
485      <dt>XSLT parameter name</dt>
486      <dd>xml2rfc-ext-errata</dd>
487      <dt>default</dt>
488      <dd>none</dd>
489    </dl>
490    <t>
491      Can be used to specify an errata file; output will link to individual errata when possible. See <xref target="rfc-editor.errata"/>.
492    </t>
493  </section>
494
495  <section title="html-pretty-print - Switch for Enabling Pretty Printing of Code" anchor="xml2rfc-ext-html-pretty-print">
496    <iref item="html-pretty-print PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="html-pretty-print"/>
497    <iref item="xml2rfc-ext-html-pretty-print parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-html-pretty-print"/>
498
499    <dl newline="true">
500      <dt>PI target</dt>
501      <dd>rfc-ext</dd>
502      <dt>PI pseudo-attribute</dt>
503      <dd>html-pretty-print</dd>
504      <dt>XSLT parameter name</dt>
505      <dd>xml2rfc-ext-html-pretty-print</dd>
506      <dt>default</dt>
507      <dd>none</dd>
508    </dl>
509    <t>
510      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:
511      "prettyprint https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"
512    </t>
513  </section>
514
515  <section title="include-generator - Switch for Disabling Generator Information in Output" anchor="xml2rfc-ext-include-generator">
516    <iref item="include-generator PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="include-generator"/>
517    <iref item="xml2rfc-ext-include-generator parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-include-generator"/>
518
519    <dl newline="true">
520      <dt>PI target</dt>
521      <dd>rfc-ext</dd>
522      <dt>PI pseudo-attribute</dt>
523      <dd>include-generator</dd>
524      <dt>XSLT parameter name</dt>
525      <dd>xml2rfc-ext-include-generator</dd>
526      <dt>default</dt>
527      <dd>"yes"</dd>
528    </dl>
529    <t>
530      Set to 'no' in order to disable inclusion of generator version information.
531    </t>
532  </section>
533
534  <section title="include-index - Switch for Disabling Index Generation" anchor="xml2rfc-ext-include-index">
535    <iref item="include-index PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="include-index"/>
536    <iref item="xml2rfc-ext-include-index parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-include-index"/>
537
538    <dl newline="true">
539      <dt>PI target</dt>
540      <dd>rfc-ext</dd>
541      <dt>PI pseudo-attribute</dt>
542      <dd>include-index</dd>
543      <dt>XSLT parameter name</dt>
544      <dd>xml2rfc-ext-include-index</dd>
545      <dt>default</dt>
546      <dd>"yes"</dd>
547    </dl>
548    <t>
549      When set to "no", no index will be generated.
550    </t>
551  </section>
552
553  <section title="include-references-in-index - Generate Index Entries for References" anchor="xml2rfc-ext-include-references-in-index">
554    <iref item="include-references-in-index PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="include-references-in-index"/>
555    <iref item="xml2rfc-ext-include-references-in-index parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-include-references-in-index"/>
556
557    <dl newline="true">
558      <dt>PI target</dt>
559      <dd>rfc-ext</dd>
560      <dt>PI pseudo-attribute</dt>
561      <dd>include-references-in-index</dd>
562      <dt>XSLT parameter name</dt>
563      <dd>xml2rfc-ext-include-references-in-index</dd>
564      <dt>default</dt>
565      <dd>"no"</dd>
566    </dl>
567    <t>
568      When set to "yes", index entries are generated for all references.
569    </t>
570  </section>
571
572  <section title="insert-metadata - Dynamic Metadata Insertion in HTML" anchor="xml2rfc-ext-insert-metadata">
573    <iref item="insert-metadata PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="insert-metadata"/>
574    <iref item="xml2rfc-ext-insert-metadata parameter"/><iref item="Parameters" subitem="xml2rfc-ext-insert-metadata"/>
575
576    <dl newline="true">
577      <dt>PI target</dt>
578      <dd>rfc-ext</dd>
579      <dt>PI pseudo-attribute</dt>
580      <dd>insert-metadata</dd>
581      <dt>XSLT parameter name</dt>
582      <dd>xml2rfc-ext-insert-metadata</dd>
583      <dt>default</dt>
584      <dd>"yes"</dd>
585    </dl>
586    <t>
587      When set to "yes", include JS code that fetches current RFC/Internet-Draft metadata and
588      inserts it into the front page (standards track, obsoletion, updates, errata, freshness of draft...).
589    </t>
590  </section>
591
592  <section title="internet-draft-base-uri - base URI for RFC reference files" anchor="xml2rfc-ext-internet-draft-reference-base-uri">
593    <iref item="internet-draft-reference-base-uri PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="internet-draft-reference-base-uri"/>
594    <iref item="xml2rfc-ext-rfc-reference-base-uri"/> <iref item="Parameters" subitem="xml2rfc-ext-rfc-reference-base-uri"/>
595
596    <dl newline="true">
597      <dt>PI target</dt>
598      <dd>rfc-ext</dd>
599      <dt>PI pseudo-attribute</dt>
600      <dd>internet-draft-reference-base-uri</dd>
601      <dt>XSLT parameter name</dt>
602      <dd>xml2rfc-ext-internet-draft-reference-base-uri</dd>
603      <dt>default</dt>
604      <dd>"https://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/"</dd>
605    </dl>
606    <t>
607      Base URI for Internet-Draft referennces included using the "include" processing instruction.
608    </t>
609  </section>
610
611  <section title="internet-draft-uri - URI Template for Interned Drafts" anchor="xml2rfc-ext-internet-draft-uri">
612    <iref item="internet-draft-uri PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="internet-draft-uri"/>
613    <iref item="xml2rfc-ext-internet-draft-uri parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-internet-draft-uri"/>
614
615    <dl newline="true">
616      <dt>PI target</dt>
617      <dd>rfc-ext</dd>
618      <dt>PI pseudo-attribute</dt>
619      <dd>internet-draft-uri</dd>
620      <dt>XSLT parameter name</dt>
621      <dd>xml2rfc-ext-internet-draft-uri</dd>
622      <dt>default</dt>
623      <dd>"https://tools.ietf.org/html/{internet-draft}"</dd>
624    </dl>
625    <t>
626      URI template for Internet-Draft links (can be set locally inside the &lt;reference> element as well to override the default).
627    </t>
628  </section>
629
630  <section title="justification - Text Justification" anchor="xml2rfc-ext-justification">
631    <iref item="justification PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="justification"/>
632    <iref item="xml2rfc-ext-justification parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-justification"/>
633
634    <dl newline="true">
635      <dt>PI target</dt>
636      <dd>rfc-ext</dd>
637      <dt>PI pseudo-attribute</dt>
638      <dd>justification</dd>
639      <dt>XSLT parameter name</dt>
640      <dd>xml2rfc-ext-justification</dd>
641      <dt>default</dt>
642      <dd>"never"</dd>
643    </dl>
644    <t>
645      "never": never emit justified text, "always": always emit justified text, "print": only emit justified text for print media.
646    </t>
647  </section>
648
649  <section title="isbn-uri - URI Template for ISBNs" anchor="xml2rfc-ext-isbn-uri">
650    <iref item="isbn-uri PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="isbn-uri"/>
651    <iref item="xml2rfc-ext-isbn-uri parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-isbn-uri"/>
652
653    <dl newline="true">
654      <dt>PI target</dt>
655      <dd>rfc-ext</dd>
656      <dt>PI pseudo-attribute</dt>
657      <dd>isbn-uri</dd>
658      <dt>XSLT parameter name</dt>
659      <dd>xml2rfc-ext-isbn-uri</dd>
660      <dt>default</dt>
661      <dd>"https://www.worldcat.org/search?q=isbn:{isbn}"</dd>
662    </dl>
663    <t>
664      URI template for ISBN lookup.
665    </t>
666  </section>
667
668  <section title="log-level - Log Level" anchor="xml2rfc-ext-log-level">
669    <iref item="log-level PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="log-level"/>
670    <iref item="xml2rfc-ext-log-level parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-log-level"/>
671
672    <dl newline="true">
673      <dt>PI target</dt>
674      <dd>rfc-ext</dd>
675      <dt>PI pseudo-attribute</dt>
676      <dd>log-level</dd>
677      <dt>XSLT parameter name</dt>
678      <dd>xml2rfc-ext-log-level</dd>
679      <dt>default</dt>
680      <dd>"WARNING"</dd>
681    </dl>
682    <t>
683      Logging level, one of "OFF", "FATAL", "ERROR", "WARNING", "INFO", "DEBUG", "TRACE".
684    </t>
685  </section>
686
687  <section title="maxwidth - Maximal Text Width in HTML" anchor="xml2rfc-ext-maxwidth">
688    <iref item="maxwidth PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="maxwidth"/>
689    <iref item="xml2rfc-ext-maxwidth parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-maxwidth"/>
690
691    <dl newline="true">
692      <dt>PI target</dt>
693      <dd>rfc-ext</dd>
694      <dt>PI pseudo-attribute</dt>
695      <dd>maxwidth</dd>
696      <dt>XSLT parameter name</dt>
697      <dd>xml2rfc-ext-maxwidth</dd>
698      <dt>default</dt>
699      <dd>1000</dd>
700    </dl>
701    <t>
702      For HTML output: maximal text width in CSS pixels.
703    </t>
704  </section>
705
706  <section title="parse-xml-in-artwork - Parse and Check XML in artwork" anchor="xml2rfc-ext-parse-xml-in-artwork">
707    <iref item="parse-xml-in-artwork PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="parse-xml-in-artwork"/>
708    <iref item="xml2rfc-ext-parse-xml-in-artwork parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-parse-xml-in-artwork"/>
709
710    <dl newline="true">
711      <dt>PI target</dt>
712      <dd>rfc-ext</dd>
713      <dt>PI pseudo-attribute</dt>
714      <dd>parse-xml-in-artwork</dd>
715      <dt>XSLT parameter name</dt>
716      <dd>xml2rfc-ext-parse-xml-in-artwork</dd>
717      <dt>default</dt>
718      <dd>"no"</dd>
719    </dl>
720    <t>
721      May be used to enable parsing of XML content in figures (MSXML only).
722    </t>
723  </section>
724
725  <section title="rfc-errata-uri - URI Template for RFC Errata" anchor="xml2rfc-ext-rfc-errata-uri">
726    <iref item="rfc-errata-uri PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="rfc-errata-uri"/>
727    <iref item="xml2rfc-ext-rfc-errata-uri parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-rfc-erratam-uri"/>
728
729    <dl newline="true">
730      <dt>PI target</dt>
731      <dd>rfc-ext</dd>
732      <dt>PI pseudo-attribute</dt>
733      <dd>rfc-errata-uri</dd>
734      <dt>XSLT parameter name</dt>
735      <dd>xml2rfc-ext-rfc-errata-uri</dd>
736      <dt>default</dt>
737      <dd>"https://www.rfc-editor.org/errata/rfc{rfc}"</dd>
738    </dl>
739    <t>
740      URI template for all RFC Errata for a given RFC ("rfc" is the RFC number).
741    </t>
742  </section>
743
744  <section title="rfc-erratum-uri - URI Template for a specific RFC Erratum" anchor="xml2rfc-ext-rfc-erratum-uri">
745    <iref item="rfc-erratum-uri PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="rfc-erratum-uri"/>
746    <iref item="xml2rfc-ext-rfc-erratum-uri parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-rfc-erratum-uri"/>
747
748    <dl newline="true">
749      <dt>PI target</dt>
750      <dd>rfc-ext</dd>
751      <dt>PI pseudo-attribute</dt>
752      <dd>rfc-erratum-uri</dd>
753      <dt>XSLT parameter name</dt>
754      <dd>xml2rfc-ext-rfc-erratum-uri</dd>
755      <dt>default</dt>
756      <dd>"https://www.rfc-editor.org/errata/eid{eid}"</dd>
757    </dl>
758    <t>
759      URI template for a specific RFC erratum ("eid" is the "errata id").
760    </t>
761  </section>
762
763  <section title="rfc-reference--base-uri - base URI for RFC reference files" anchor="xml2rfc-ext-rfc-reference-base-uri">
764    <iref item="rfc-reference-base-uri PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="rfc-reference-base-uri"/>
765    <iref item="xml2rfc-ext-rfc-reference-base-uri"/> <iref item="Parameters" subitem="xml2rfc-ext-rfc-reference-base-uri"/>
766
767    <dl newline="true">
768      <dt>PI target</dt>
769      <dd>rfc-ext</dd>
770      <dt>PI pseudo-attribute</dt>
771      <dd>rfc-reference-base-uri</dd>
772      <dt>XSLT parameter name</dt>
773      <dd>xml2rfc-ext-rfc-reference-base-uri</dd>
774      <dt>default</dt>
775      <dd>"https://www.rfc-editor.org/refs/bibxml/"</dd>
776    </dl>
777    <t>
778      Base URI for RFC referennces included using the "include" processing instruction.
779    </t>
780  </section>
781
782  <section title="rfc-uri - URI Template for HTML Version of RFCs" anchor="xml2rfc-ext-rfc-uri">
783    <iref item="rfc-uri PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="rfc-uri"/>
784    <iref item="xml2rfc-ext-rfc-uri parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-rfc-uri"/>
785
786    <dl newline="true">
787      <dt>PI target</dt>
788      <dd>rfc-ext</dd>
789      <dt>PI pseudo-attribute</dt>
790      <dd>rfc-uri</dd>
791      <dt>XSLT parameter name</dt>
792      <dd>xml2rfc-ext-rfc-uri</dd>
793      <dt>default</dt>
794      <dd>"https://www.rfc-editor.org/rfc/rfc{rfc}.html" (previously "https://tools.ietf.org/html/rfc{rfc}")</dd>
795    </dl>
796    <t>
797      URI Template for HTML Version of RFCs.
798    </t>
799  </section>
800
801  <section title="sec-no-trailing-dots - Disable Trailing Dots in Section Numbers" anchor="xml2rfc-ext-sec-no-trailing-dots">
802    <iref item="sec-no-trailing-dots PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="sec-no-trailing-dots"/>
803    <iref item="xml2rfc-ext-sec-no-trailing-dots parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-sec-no-trailing-dots"/>
804
805    <dl newline="true">
806      <dt>PI target</dt>
807      <dd>rfc-ext</dd>
808      <dt>PI pseudo-attribute</dt>
809      <dd>sec-no-trailing-dots</dd>
810      <dt>XSLT parameter name</dt>
811      <dd>xml2rfc-ext-sec-no-trailing-dots</dd>
812      <dt>default</dt>
813      <dd>none</dd>
814    </dl>
815    <t>
816      When set to "no", do not add trailing dots to section numbers (this was the preference in the distant past).
817    </t>
818  </section>
819
820  <section title="support-rfc2731 - Support RFC 2731 Metadata" anchor="xml2rfc-ext-support-rfc2731">
821    <iref item="support-rfc2731 PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="support-rfc2731"/>
822    <iref item="xml2rfc-ext-support-rfc2731 parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-support-rfc2731"/>
823
824    <dl newline="true">
825      <dt>PI target</dt>
826      <dd>rfc-ext</dd>
827      <dt>PI pseudo-attribute</dt>
828      <dd>support-rfc2731</dd>
829      <dt>XSLT parameter name</dt>
830      <dd>xml2rfc-ext-support-rfc2731</dd>
831      <dt>default</dt>
832      <dd>"yes"</dd>
833    </dl>
834    <t>
835      Decides whether the HTML transformation should generate META tags according <xref target="rfc2731.properties"/>.
836    </t>
837  </section>
838
839  <section title="ucd-file - Filename of Unicode Database" anchor="xml2rfc-ext-ucd-file">
840    <iref item="ucd-file PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="ucd-file"/>
841    <iref item="xml2rfc-ext-ucd-file parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-ucd-file"/>
842
843    <dl newline="true">
844      <dt>PI target</dt>
845      <dd>rfc-ext</dd>
846      <dt>PI pseudo-attribute</dt>
847      <dd>ucd-file</dd>
848      <dt>XSLT parameter name</dt>
849      <dd>xml2rfc-ext-ucd-file</dd>
850      <dt>default</dt>
851      <dd>none</dd>
852    </dl>
853    <t>
854      Specifies an external resource containing Unicode character database information, as described in <xref target="ext.element.u-map"/>.
855    </t>
856  </section>
857
858  <section title="xml2rfc-backend - Select xml2rfc Target Version" anchor="xml2rfc-ext-xml2rfc-backend">
859    <iref item="xml2rfc-backend PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="xml2rfc-backend"/>
860    <iref item="xml2rfc-ext-xml2rfc-backend parameter"/><iref item="Parameters" subitem="xml2rfc-ext-xml2rfc-backend"/>
861   
862    <dl newline="true">
863      <dt>PI target</dt>
864      <dd>rfc-ext</dd>
865      <dt>PI pseudo-attribute</dt>
866      <dd>xml2rfc-backend</dd>
867      <dt>XSLT parameter name</dt>
868      <dd>xml2rfc-ext-xml2rfc-backend</dd>
869      <dt>default</dt>
870      <dd>based on document date</dd>
871    </dl>
872    <t>Used in <tt>clean-for-DTD.xslt</tt> (see <xref target="clean-for-dtd"/>).</t>
873  </section>
874
875  <section title="xref-with-text-generate - Default Handling of &lt;xref> with Text Content" anchor="xml2rfc-ext-xref-with-text-generate">
876    <iref item="xref-with-text-generate PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="xref-with-text-generate"/>
877    <iref item="xml2rfc-ext-xref-with-text-generate parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-xref-with-text-generate"/>
878
879    <dl newline="true">
880      <dt>PI target</dt>
881      <dd>rfc-ext</dd>
882      <dt>PI pseudo-attribute</dt>
883      <dd>xref-with-text-generate</dd>
884      <dt>XSLT parameter name</dt>
885      <dd>xml2rfc-ext-xref-with-text-generate</dd>
886      <dt>default</dt>
887      <dd>"text"</dd>
888    </dl>
889    <t>
890      Determines whether &lt;xref> with text content generates additional text as in traditional text output ("text"), or just generates a link around the text ("nothing"). Note that the default might change in the future in order to achieve compatibility with other formatters.
891    </t>
892  </section>
893
894</section>
895
896</section>
897
898<section title="Anchors" anchor="anchors">
899<t>
900  The transformation automatically generates anchors that are supposed to
901  be stable and predictable and that can be used to identify specific
902  parts of the document. Anchors are generated both in HTML and XSL-FO
903  content (but the latter will only be used for PDF output when the XSL-FO
904  engine supports producing PDF anchors).
905</t>
906<texttable>
907<preamble>The following anchors get auto-generated:</preamble>
908<ttcol>Anchor name</ttcol><ttcol>Description</ttcol>
909
910  <c>rfc.abstract <iref item="rfc.abstract anchor"/><iref item="Anchors" subitem="rfc.abstract"/></c><c>Abstract</c>
911  <c>rfc.authors <iref item="rfc.authors anchor"/><iref item="Anchors" subitem="rfc.authors"/></c><c>Authors section</c>
912  <c>rfc.copyright <iref item="rfc.copyright anchor"/><iref item="Anchors" subitem="rfc.copyright"/></c><c>Copyright section</c>
913  <c>rfc.copyrightnotice <iref item="rfc.copyrightnotice anchor"/><iref item="Anchors" subitem="rfc.copyrightnotice"/></c><c>Copyright notice</c>
914  <c>rfc.figure.<em>n</em> <iref item="rfc.figure.n anchor"/><iref item="Anchors" subitem="rfc.figure.n"/></c><c>Figures (titled)</c>
915  <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>
916  <c>rfc.index <iref item="rfc.index anchor"/><iref item="Anchors" subitem="rfc.index"/></c><c>Index</c>
917  <c>rfc.ipr <iref item="rfc.ipr anchor"/><iref item="Anchors" subitem="rfc.ipr"/></c><c>Intellectual Property</c>
918  <c>rfc.iref.<em>n</em> <iref item="rfc.iref.n anchor"/><iref item="Anchors" subitem="rfc.iref.n"/></c><c>Internal references</c>
919  <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>
920  <c>rfc.references <iref item="rfc.references anchor"/><iref item="Anchors" subitem="rfc.references"/></c><c>References</c>
921  <c>rfc.references.<em>n</em> <iref item="rfc.references.n anchor"/><iref item="Anchors" subitem="rfc.references"/></c><c>Additional references</c>
922  <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>
923  <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>
924  <c>rfc.status <iref item="rfc.status anchor"/><iref item="Anchors" subitem="rfc.status"/></c><c>Status of memo</c>
925  <c>rfc.table.<em>n</em> <iref item="rfc.figure.n anchor"/><iref item="Anchors" subitem="rfc.figure.n"/></c><c>Tables (titled)</c>
926  <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>
927  <c>rfc.toc <iref item="rfc.toc anchor"/><iref item="Anchors" subitem="rfc.toc"/></c><c>Table of contents</c>
928  <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>
929
930</texttable>
931</section>
932
933<section title="Supported XSLT engines" anchor="xslt.engines">
934<t>
935  The transformation requires a non-standard extension function (see <eref target="http://www.exslt.org/exsl/functions/node-set/index.html">
936  exsl:node-set</eref>)
937  which is however widely available. XSLT processors that do not support this
938  extension (or a functional equivalent, such as msxsl:node-set) currently are not supported.
939</t>
940<t anchor="exsl-date-time">
941  Input documents do not always specify the date completely. In this case, the
942  transformation attempts to let the XSLT engine to compute the system date,
943  using either scripting in Microsoft's XSLT engine, or
944  the  <eref target="http://www.exslt.org/date/functions/date-time/">
945  exsl:date-time</eref> extension function.
946</t>
947<section title="Standalone Engines">
948<t>
949  The following XSLT engines are believed to work well:
950  <list style="symbols">
951    <t>Windows: <iref item="MSXML3"/><iref item="MSXML4"/>MSXML3 and MSXML4 (<eref target="http://msdn.microsoft.com/xml"/>;
952      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>
953    <t>Java: <iref item="Saxon"/>Saxon (<eref target="http://saxon.sourceforge.net/"/>)</t>
954    <t>Java: <iref item="Xalan"/>Xalan (<eref target="http://xml.apache.org/xalan-j/"/>)</t>
955    <t>C/C++: <iref item="xsltproc"/>xsltproc (libxslt) (<eref target="http://xmlsoft.org/XSLT/"/>, make sure that you
956    have a current version, also: does not support inclusion of "https" resources -- <eref target="https://bugzilla.gnome.org/show_bug.cgi?id=791491"/>)</t>
957  </list>
958</t>
959</section>
960
961<section title="In-Browser Engines" anchor="xslt.engines.browser">
962<t>
963  The following browsers seem to work fine:
964  <list style="symbols">
965    <x:lt>
966      <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>
967    </x:lt>
968    <x:lt>
969      <t anchor="firefox3"><iref item="Mozilla"/><iref item="Firefox" subitem="3.*"/>Firefox 3.0 and newer</t>
970      <t>
971        <list style="symbols">
972          <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>
973          <t>There seems to be a new problem in Firefox 4 where it occasionally
974          does the initial rendering with the wrong width (people who can reproduce
975          this problem please comment on <eref target="https://bugzilla.mozilla.org/show_bug.cgi?id=640390"/>.
976          </t>
977          <t>Date computation is available in Firefox starting with Firefox 6 (see <eref target="https://bugzilla.mozilla.org/show_bug.cgi?id=603159"/>)</t>
978        </list>
979      </t>
980    </x:lt>
981    <x:lt>
982      <t><iref item="Safari"/><iref item="Safari" subitem="3.*"/>Safari 3 (starting with version 3.0.4)</t>
983      <t>
984        <list style="symbols">
985          <t>Date computation not available (see <eref target="https://bugs.webkit.org/show_bug.cgi?id=4079"/>)</t>
986        </list>
987      </t>
988    </x:lt>
989    <x:lt>
990      <t><iref item="Google Chrome"/>Google Chrome</t>
991      <t>
992        <list style="symbols">
993          <t>Date computation not available (see <eref target="https://bugs.chromium.org/p/chromium/issues/detail?id=1006210"/>)</t>
994        </list>
995      </t>
996    </x:lt>
997  </list>
998</t>
999<t>
1000  Note that browsers in general do not load external DTDs nor external entities (see, for instance,
1001  <eref target="https://bugzilla.mozilla.org/show_bug.cgi?id=22942">Mozilla Bug 22942</eref>) thus entities
1002  like &amp;nbsp; need to be declared in the internal subset (<xref target="examples.internalsubset"/>).
1003</t>
1004<t>
1005  The following browsers are known not to work properly:
1006  <list style="symbols">
1007    <x:lt>
1008      <t anchor="firefox12"><iref item="Mozilla"/><iref item="Firefox" subitem="1.*/2.*"/>Firefox 1.*/2.*: (missing extension function - see change request at Mozilla BugZilla
1009      <eref target="http://bugzilla.mozilla.org/show_bug.cgi?id=193678">193678</eref>)</t>
1010    </x:lt>
1011    <x:lt>
1012      <t anchor="opera"><iref item="Opera"/>Opera 9.21: execution fails, potentially
1013      to a somewhat complex XPath expression (reported to Opera as bug 245725).</t>
1014    </x:lt>
1015    <x:lt>
1016      <t>Opera 9.5 and 9.6:
1017      transformation appears to work, but CSS isn't getting applied (reported to Opera as bug 337388 on 2008-06-12).</t>
1018    </x:lt>
1019    <x:lt>
1020      <t anchor="safari"><iref item="Safari"/>Safari 2.* supports client-side XSLT as of MacOS X 10.4,
1021      but misses required extension functions. A problem
1022      with stylesheets producing non-ASCII output (such as NBSP characters)
1023      has been fixed as of OSX 10.4.4. Both
1024      problems have been reported through Apple's bug tracking system, see
1025      <eref target="http://drakken.dbc.mtview.ca.us/pipermail/xml2rfc/2005-May/002073.html"/> and
1026      <eref target="http://bugs.webkit.org/show_bug.cgi?id=4079"/>.
1027      </t>
1028    </x:lt>
1029  </list>
1030</t>
1031</section>
1032
1033</section>
1034
1035<section title="Transforming to HTML" anchor="output.html">
1036<t>
1037  Transformation to HTML can be done inside the browser if it supports
1038  XSLT. To enable this, add the following processing instruction to
1039  the start of the source file:
1040</t>
1041<iref item="xml-stylesheet PI"/>
1042<figure><artwork type="example" x:lang="">
1043  &lt;?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
1044</artwork></figure>
1045<t>
1046  (and ensure that <tt>rfc2629.xslt</tt> is present).
1047</t>
1048
1049<section title="HTML compliance">
1050<t>
1051  The transformation result is supposed to conform to HTML5 <xref target="HTML5"/>.
1052  This can be checked using the W3C's online
1053  validator at <eref target="http://validator.w3.org" /><iref item="HTML compliance"/>.
1054</t>
1055<t>
1056  XSLT 1.0 is not capable to directly emit the HTML doctype declaration, thus
1057  uses the SYSTEM ID "about:legacy-compat" instead
1058  (see <xref target="HTML5" x:sec="8.1.1" x:rel="syntax.html#the-doctype"/>).
1059</t>
1060<t>
1061  When not run in a browser, the doctype declaration can be adjusted using
1062  a small script, such as with:
1063</t>
1064<figure><artwork type="example">
1065saxon test.xml rfc2629.xslt | awk -f html5doctype.awk
1066</artwork></figure>
1067<t>
1068  with
1069</t>
1070<figure><artwork x:lang="" name="html5doctype.awk" type="code">
1071<?BEGINESCAPEDINC html5doctype.awk ?>
1072#!/usr/bin/awk -f
1073
1074# waitfordoctype:
1075# 0: wait for line starting with DOCTYPE and eat empty lines
1076# 1: wait for line starting with &lt;html
1077# 2: afterwards
1078
1079BEGIN {
1080  waitfordoctype = 0;
1081}
1082
1083/&lt;!DOCTYPE .*/ {
1084  if (waitfordoctype == 0) {
1085    waitfordoctype = 1
1086  }
1087}
1088
1089/&lt;html.*/ {
1090  if (waitfordoctype == 1) {
1091    waitfordoctype = 2
1092    printf("&lt;!DOCTYPE html>\n")
1093  }
1094  else {
1095    print
1096  }
1097}
1098
1099{
1100  if (waitfordoctype == 0 &amp;&amp; $0 != "") {
1101    print
1102  }
1103  else if (waitfordoctype == 2) {
1104    print
1105  }
1106}
1107<?ENDESCAPEDINC html5doctype.awk ?>
1108</artwork></figure>
1109</section>
1110
1111<section title="Standard HTML LINK elements" anchor="html.link">
1112<t>
1113  LINK elements exist since HTML 2.0. They can be used to embed content-independant
1114  links inside the document. Unfortunately, only few user agents
1115  support this element. Firefox users may want to check the
1116  <eref target="https://addons.mozilla.org/firefox/2933/">Link Widgets</eref>
1117  extension.
1118</t>
1119<texttable>
1120<preamble>The following LINK elements are produced:</preamble>
1121
1122  <ttcol>LINK type</ttcol>
1123  <ttcol>description</ttcol>
1124 
1125  <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>
1126  <c>appendic<iref item="appendix HTML LINK element"/><iref item="HTML LINK elements" subitem="appendix"/></c><c>pointer to all top-level appendics</c>
1127  <c>author<iref item="author HTML LINK element"/><iref item="HTML LINK elements" subitem="author"/></c><c>pointer to "authors" section</c>
1128  <c>chapter<iref item="chapter HTML LINK element"/><iref item="HTML LINK elements" subitem="chapter"/></c><c>pointer to all top-level sections</c>
1129  <c>contents<iref item="contents HTML LINK element"/><iref item="HTML LINK elements" subitem="contents"/></c><c>pointer to table of contents</c>
1130  <c>copyright<iref item="copyright HTML LINK element"/><iref item="HTML LINK elements" subitem="copyright"/></c><c>pointer to copyright statement</c>
1131  <c>index<iref item="index HTML LINK element"/><iref item="HTML LINK elements" subitem="index"/></c><c>pointer to index</c>
1132
1133</texttable>
1134<figure>
1135<preamble>
1136The figure below shows how Mozilla Firefox 1.0 displays the Site Navigation Bar
1137for rfc2396.xml.
1138</preamble>
1139<artwork src="rfc2629xslt-fig1.png" height="235" width="509" type="image/png">
1140(LINK elements displayed in Mozilla Firefox for RFC2396.xml)
1141</artwork>
1142</figure>
1143
1144</section>
1145
1146
1147<section title="Standard HTML metadata">
1148<texttable>
1149<preamble>The following standard HTML META elements are produced:</preamble>
1150
1151  <ttcol>META name</ttcol>
1152  <ttcol>description</ttcol>
1153 
1154  <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>
1155  <c>keywords<iref item="keywords HTML META element"/><iref item="HTML META elements" subitem="keywords"/></c><c>from keyword elements in front section</c>
1156
1157</texttable>
1158</section>
1159
1160
1161<section title="Dublin Core (RFC2731) metadata" anchor="rfc2731.properties">
1162<t>
1163  Unless turned off using the "rfc-ext support-rfc2731" processing
1164  instruction, the transformation will generate metadata according to
1165  <xref target="RFC2731"/> and <xref target="DC-HTML"/>.
1166</t>
1167<texttable>
1168<preamble>The following DCMI properties are produced:</preamble>
1169
1170  <ttcol>META name</ttcol>
1171  <ttcol>description</ttcol>
1172 
1173  <c>DC.Creator<iref item="Creator DCMI property"/><iref item="DCMI properties" subitem="Creator"/></c><c>from author information in front section</c>
1174  <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>
1175  <c>DC.Description.Abstract<iref item="Description.Abstract DCMI property"/><iref item="DCMI properties" subitem="Description.Abstract"/></c><c>from abstract</c>
1176  <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>
1177  <c>DC.isPartOf<iref item="isPartOf DCMI property"/><iref item="DCMI properties" subitem="isPartOf"/></c><c>RFC ISSN (for RFCs)</c>
1178  <c>DC.Relation.Replaces<iref item="Relation.Replaces DCMI property"/><iref item="DCMI properties" subitem="Relation.Replaces"/></c><c>from "obsoletes" attribute</c>
1179
1180</texttable>
1181</section>
1182
1183<section title="Insertion of Live RFC Meta Data" anchor="rfc-editor.meta-data">
1184  <iref item="insert-metadata PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="insert-metadata"/>
1185  <iref item="xml2rfc-ext-insert-metadata parameter"/> <iref item="Parameters" subitem="xml2rfc-ext-insert-metadata"/>
1186<t>
1187  RFCs are immutable; once published, they do not change anymore. What
1188  <em>does</em> change though is their status, their relation to subsequent
1189  RFCs (such as when they are updated), and errata.
1190</t>
1191<t>
1192  <tt>rfc2629toXHTML.xslt</tt> by default inserts code that will pull the relevant
1193  information from <eref target="https://tools.ietf.org"/>. This can be disabled
1194  by specifying the parameter "xml2rfc-ext-insert-metadata=no" (or
1195  by inserting the equivalent processing instruction into the source code).
1196</t>
1197<t>
1198  An example for the generated information can be seen at <eref target="https://greenbytes.de/tech/webdav/rfc2616.html#rfc.meta"/>.
1199</t>
1200<aside>
1201  <t>
1202    <strong>Note:</strong> the status information really should be available from
1203    the RFC Editor, right now it only exists only in HTML form (such as
1204    in <eref target="https://www.rfc-editor.org/info/rfc2616"/>. Furthermore,
1205    the service provided by <eref target="https://tools.ietf.org"/> is
1206    considered experimental, so this feature might be changed or removed
1207    without prior notice.
1208  </t>
1209  <t>
1210    ...and no, we currently can't obtain the exact list of errata, just a flag
1211    indicating whether errata exist. 
1212  </t>
1213</aside>
1214</section>
1215
1216<section title="Insertion of RFC Errata Links" anchor="rfc-editor.errata">
1217  <iref item="errata PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="errata"/>
1218  <iref item="xml2rfc-ext-errata"/> <iref item="Parameters" subitem="xml2rfc-ext-errata"/>
1219<t>
1220  Unfortunately, the RFC Editor does not provide errata information in a
1221  well-defined machine readable format. What's available is "regular"
1222  HTML (and that could be the worst currently in use in standards bodies...).
1223</t>
1224<t>
1225  <tt>parse-errata.xslt</tt> attempts to parse useful information out of these
1226  pages.
1227</t>
1228<t>
1229  It can be run like that (requires an XSLT2 processor):
1230</t>
1231<figure><artwork type="example">
1232# get the raw html and strip form feed characters
1233curl -s https://www.rfc-editor.org/errata_search.php?rfc=2616 \
1234  | tr -d '\f' > rfc2616.rawerrata
1235# regexps are your friend
1236saxon97he parse-errata.xslt parse-errata.xslt doc=2616 > rfc2616.errata
1237</artwork></figure>
1238<t>
1239  The code tries to make sense of the HTML, in particular it tries to
1240  detect what RFC sections each erratum applies to.
1241  The resulting XML format is work-in-progress and just contains the
1242  information that will be useful in subsequent formatting of the RFC.
1243</t>
1244<t>
1245  When <em>formatting</em> the RFC for HTML output, the errata file can
1246  be passed as stylesheet parameter ("xml2rfc-ext-errata"). The output
1247  will include errata links at the beginnings of the section they apply
1248  to, or at the beginning of Section 1 when the location is unknown.
1249</t>
1250<t>
1251  For the sake of embedding, three types of errata are relevant; their
1252  type is indicated with a symbol:
1253</t>
1254<ul>
1255  <li>"held for update": reviewed and decided to be "held for document update" (these are mostly editorial); "scissors" symbol.</li>
1256  <li>"submitted": submitted, but not reviewed; "letter" symbol.</li>
1257  <li>"verified": reviewed and found to be correct; "checkmark" symbol.</li>
1258</ul>
1259<t>
1260  To recap: the errata information is passed into the transformation as
1261  additional parameter. The errata information will <em>not</em> be
1262  automatically retrieved from the RFC Editor web site.
1263</t>
1264<t>
1265  Finally, here's an example for inserted errata links: <eref target="https://greenbytes.de/tech/webdav/rfc7230.html#transfer.codings"/>.
1266</t>
1267</section>
1268</section>
1269
1270<section title="Transforming to XHTML" anchor="output.xhtml">
1271<t>
1272  Transforming to XHTML requires slightly different XSLT output options and
1273  is implemented by the derived transformation script <tt>rfc2629toXHTML.xslt</tt>.
1274</t>
1275</section>
1276
1277<section title="Transforming to CHM (Microsoft Compiled Help)" anchor="output.chm">
1278<t>
1279  <iref item="CHM format"/>
1280  <iref item="Microsoft Help"/>
1281  To generate a CHM file using Microsoft's HTML Help Compiler (hhc), three
1282  files are required in addition to the HTML file.
1283  <list style="numbers">
1284    <t>hhc - table of contents file (HTML)</t>
1285    <t>hhk - index file (HTML)</t>
1286    <t>hhp - project file (plain text)</t>
1287  </list>
1288</t>
1289<t>
1290  The three files are generated with three specific transformations, each
1291  requiring the additional XSLT parameter "basename" to specify the filename
1292  prefix.
1293</t>
1294<figure>
1295<preamble>Example:</preamble>
1296<artwork type="example">
1297saxon rfc2616.xml rfc2629toHhp.xslt basename=rfc2616  > rfc2616.hhp
1298saxon rfc2616.xml rfc2629toHhc.xslt basename=rfc2616  > rfc2616.hhc
1299saxon rfc2616.xml rfc2629toHhk.xslt basename=rfc2616  > rfc2616.hhk
1300hhc rfc2616.hhp
1301</artwork>
1302</figure>
1303</section>
1304
1305<section title="Transforming to PDF" anchor="output.pdf">
1306
1307<section title="Via XSL-FO" anchor="output.pdf.fop">
1308<t>
1309  Transformation to XSL-FO <xref target="XSL-FO"/> format is available through
1310  <tt>rfc2629toFO.xslt</tt> (which includes <tt>rfc2629.xslt</tt>, so keep both in the
1311  same folder).
1312</t>
1313<t>
1314  Compared to HTML user agents, XSL-FO engines unfortunately either come
1315  as open source (for instance, <iref item="Apache FOP"/>Apache FOP) or
1316  feature-complete (for instance, <iref item="AntennaHouse XSL Formatter"/>
1317  AntennaHouse XSL Formatter), but not both at the same time.
1318</t>
1319<t>
1320  As Apache FOP needs special workarounds (index generation), and
1321  some popular extensions aren't standardized yet, the translation produces
1322  a generic output (hopefully) conforming to <xref target="XSL-FO"/>.
1323  Specific backends (<tt>xsl11toFop.xslt</tt>,
1324  <tt>xsl11toXep.xslt</tt>, <tt>xsl11toAn.xslt</tt>)
1325  then provide post-processing for the individual processors.
1326</t>
1327<x:note>
1328  <t>
1329    <x:h>Note:</x:h>
1330    the output is currently targeted at Apache FOP 1.1.
1331  </t>
1332</x:note>
1333
1334<!-- outdated <section title="Extension feature matrix">
1335<texttable>
1336  <ttcol/>
1337  <ttcol align="center" width="20%">PDF anchors</ttcol>
1338  <ttcol align="center" width="20%">PDF bookmarks</ttcol>
1339  <ttcol align="center" width="20%">PDF document information</ttcol>
1340  <ttcol align="center" width="20%">Index cleanup</ttcol>
1341 
1342  <c><eref target="http://www.w3.org/TR/2003/WD-xsl11-20031217/">XSL 1.1 WD</eref></c>
1343  <c>no, but can be auto-generated from "id" attributes</c> 
1344  <c><eref target="http://www.w3.org/TR/2003/WD-xsl11-20031217/#d0e12873">yes</eref></c>
1345  <c>no, but uses XEP output extensions</c>
1346  <c><eref target="http://www.w3.org/TR/2003/WD-xsl11-20031217/#d0e12534">yes</eref></c>
1347
1348  <c><eref target="http://www.antennahouse.com/">Antenna House XSL formatter</eref></c>
1349  <c>no</c>
1350  <c><eref target="http://www.antennahouse.com/XSL20/axf-extension.htm">yes</eref> (from XSL 1.1 bookmarks)</c>
1351  <c><eref target="http://www.antennahouse.com/XSL20/axf-extension.htm">yes</eref> (from XEP document info)</c>
1352  <c><eref target="http://www.antennahouse.com/XSL20/axf-extension.htm">yes</eref> (just page duplicate elimination, from XSL 1.1 page index)</c>
1353
1354  <c><eref target="http://xml.apache.org/fop/">Apache FOP</eref></c>
1355  <c><eref target="http://xml.apache.org/fop/extensions.html#named-destinations">yes</eref></c>
1356  <c><eref target="http://xml.apache.org/fop/extensions.html#bookmarks">yes</eref> (from XSL 1.1 bookmarks)</c>
1357  <c><eref target="http://xmlgraphics.apache.org/fop/0.95/metadata.html#xmp-in-fo">yes</eref></c>
1358  <c>no</c>
1359
1360  <c><eref target="http://xep.xattic.com/">RenderX XEP</eref></c>
1361  <c>no</c>
1362  <c><eref target="http://xep.xattic.com/xep/spec.html">yes</eref> (from XSL 1.1 bookmarks)</c>
1363  <c><eref target="http://xep.xattic.com/xep/spec.html">yes</eref></c>
1364  <c><eref target="http://xep.xattic.com/xep/spec.html">yes</eref> (from XSL 1.1 page index)</c>
1365
1366</texttable>
1367</section>-->
1368
1369<section title="Example: producing output for Apache FOP">
1370<figure>
1371<preamble>Example:</preamble>
1372<artwork type="example">
1373saxon rfc2616.xml rfc2629toFo.xslt > tmp.fo
1374saxon tmp.fo xsl11toFop.xslt > rfc2629.fo
1375</artwork>
1376</figure>
1377</section>
1378</section>
1379
1380<section title="Via HTML" anchor="output.pdf.html">
1381<t>
1382  PDF output can also be produced directly from (X)HTML. One simple approach
1383  is to rely on the browser's printing function, and to use a printer driver
1384  that produces PDF. Depending on the brower's CSS capabilities, the output
1385  will behave properly with respect to table breaks etc.
1386</t>
1387<t>
1388  Alternatives are tools which can produce PDF directly from (X)HTML input,
1389  based on the CSS printing information.
1390  For instance: "PrinceXML" (<eref target="http://www.princexml.com/"/>) and
1391  "WeasyPrint" (<eref target="https://weasyprint.org/"/>).
1392</t>
1393<figure>
1394  <preamble>
1395    For instance, PDF output can be produced with:
1396  </preamble>
1397  <artwork type="example">
1398saxon input.xml rfc2629.xslt > output.html
1399weasyprint output.html output.pdf</artwork>
1400</figure>
1401</section>
1402
1403</section>
1404
1405<section title="Transforming to ePub" anchor="output.epub">
1406<t>
1407  Experimental transformation to ePub format is available through a set
1408  of stylesheets, and the Unix Shell script
1409  <tt>mkepub.sh</tt> (which requires that "zip" and either
1410  "saxon" or "xsltproc" are installed).
1411</t>
1412<figure>
1413  <preamble>
1414    For instance, an epub version of rfc2616.xml can be generated like this:
1415  </preamble>
1416  <artwork type="example">
1417mkepub.sh rfc2616.xml
1418</artwork>
1419</figure>
1420</section>
1421
1422<section title="Generic Extensions" anchor="extensions">
1423<t>
1424  This section documents extensions implemented in
1425  <tt>rfc2629.xslt</tt>, using the extension
1426  namespace "http://purl.org/net/xml2rfc/ext".
1427</t>
1428
1429<section title="&lt;abnf-char-sequence> element" anchor="ext.element.abnf-char-sequence">
1430  <iref item="Extension Elements" subitem="abnf-char-sequence" primary="true"/>
1431  <iref item="abnf-char-sequence Extension Element" primary="true"/>
1432  <x:anchor-alias value="abnf-char-sequence"/>
1433  <t>
1434    Converts the contained quoted string into a hex-encoded character
1435    sequence, for use in case-sensitive ABNF productions.
1436  </t>
1437  <t>
1438    For instance, "&lt;x:abnf-char-sequence>"HTTP"&lt;/x:abnf-char-sequence>"
1439    gets converted to "<x:abnf-char-sequence>"HTTP"</x:abnf-char-sequence>".
1440  </t>
1441</section>
1442
1443<section title="&lt;anchor-alias> element" anchor="ext.element.anchor-alias">
1444  <iref item="Extension Elements" subitem="anchor-alias" primary="true"/>
1445  <iref item="anchor-alias Extension Element" primary="true"/>
1446  <x:anchor-alias value="anchor-alias"/>
1447  <t>
1448    Using its "value" attribute, this element allows the definition of an
1449    internal link target alias for the enclosing element. This alias can
1450    then be used with the &lt;<x:ref>ref</x:ref>> element for intra-document
1451    references.
1452  </t>
1453  <t>
1454    Note that the anchor alias is not subject to the naming constraints that
1455    apply to anchor elements (which are <eref target="http://www.w3.org/TR/REC-xml/#NT-Name">XML
1456    names</eref>).
1457  </t>
1458</section>
1459
1460<section title="&lt;bb> element" anchor="ext.element.bb">
1461  <iref item="Extension Elements" subitem="bb" primary="true"/>
1462  <iref item="bb Extension Element" primary="true"/>
1463  <x:anchor-alias value="bb"/>
1464  <t>
1465    Marking up a string as &lt;bb> indicates that it represents the bottom
1466    line of a box drawing, replacing the "+" and "-" characters accordingly.
1467  </t>
1468</section>
1469
1470<section title="&lt;bc> element" anchor="ext.element.bc">
1471  <iref item="Extension Elements" subitem="bc" primary="true"/>
1472  <iref item="bc Extension Element" primary="true"/>
1473  <x:anchor-alias value="bc"/>
1474  <t>
1475    Marking up a string as &lt;bc> indicates that it represents a center
1476    line of a box drawing, replacing the "|" character accordingly.
1477  </t>
1478</section>
1479
1480<section title="&lt;bcp14> element" anchor="ext.element.bcp14">
1481  <iref item="Extension Elements" subitem="bcp14" primary="true"/>
1482  <iref item="bcp14 Extension Element" primary="true"/>
1483  <x:anchor-alias value="bcp14"/>
1484  <t>
1485    This element marks the content as being one of the normative keywords
1486    defined in <xref target="RFC2119"/>.
1487  </t>
1488  <figure>
1489    <preamble>
1490      The DOCTYPE definition below allows using these keywords using XML
1491      entity expansion: such as in "...server &amp;MUST; accept...".
1492    </preamble>
1493    <artwork type="example" x:lang="">
1494&lt;!DOCTYPE rfc [
1495 &lt;!ENTITY MAY "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
1496   >MAY&lt;/bcp14>">
1497 &lt;!ENTITY MUST "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
1498   >MUST&lt;/bcp14>">
1499 &lt;!ENTITY MUST-NOT "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
1500   >MUST NOT&lt;/bcp14>">
1501 &lt;!ENTITY OPTIONAL "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
1502   >OPTIONAL&lt;/bcp14>">
1503 &lt;!ENTITY RECOMMENDED "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
1504   >RECOMMENDED&lt;/bcp14>">
1505 &lt;!ENTITY REQUIRED "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
1506   >REQUIRED&lt;/bcp14>">
1507 &lt;!ENTITY SHALL "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
1508   >SHALL&lt;/bcp14>">
1509 &lt;!ENTITY SHALL-NOT "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
1510   >SHALL NOT&lt;/bcp14>">
1511 &lt;!ENTITY SHOULD "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
1512   >SHOULD&lt;/bcp14>">
1513 &lt;!ENTITY SHOULD-NOT "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
1514   >SHOULD NOT&lt;/bcp14>">]></artwork>
1515  </figure>
1516</section>
1517
1518<section title="&lt;blockquote> element" anchor="ext.element.blockquote">
1519  <iref item="Extension Elements" subitem="blockquote" primary="true"/>
1520  <iref item="blockquote Extension Element" primary="true"/>
1521  <x:anchor-alias value="blockquote"/>
1522  <t>
1523    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"/>
1524    (note this is a block-level element!). It should contain one or more
1525    &lt;t> child elements.
1526  </t>
1527</section>
1528
1529<section title="&lt;bt> element" anchor="ext.element.bt">
1530  <iref item="Extension Elements" subitem="bt" primary="true"/>
1531  <iref item="bt Extension Element" primary="true"/>
1532  <x:anchor-alias value="bt"/>
1533  <t>
1534    Marking up a string as &lt;bt> indicates that it represents the top
1535    line of a box drawing, replacing the "+" and "-" characters accordingly.
1536  </t>
1537</section>
1538
1539<section title="&lt;c> element" anchor="ext.element.c">
1540  <iref item="Extension Elements" subitem="c" primary="true"/>
1541  <iref item="c Extension Element" primary="true"/>
1542  <x:anchor-alias value="c"/>
1543  <t>
1544    Contains mapping information for a single Unicode code points.
1545    Attributes are "c" (the actual character), "n" (the code point), and
1546    "d" (the name/description).
1547  </t>
1548  <t>
1549    For instance:
1550  </t>
1551<figure>
1552    <artwork type="example" x:lang="">
1553&lt;x:u-map>
1554  &lt;x:c n="8364" c="&amp;#8364;" d="EURO SIGN"/>
1555&lt;x:u-map>
1556</artwork></figure>
1557  <t>
1558    (The format is deliberately terse so that the size of a mapping file
1559    containing the whole Unicode character database is minimized).
1560  </t>
1561</section>
1562
1563<section title="&lt;contributor> element" anchor="ext.element.contributor">
1564  <iref item="Extension Elements" subitem="contributor" primary="true"/>
1565  <iref item="contributor Extension Element" primary="true"/>
1566  <x:anchor-alias value="contributor"/>
1567  <t>
1568    This element can be used to include a contributor's contact information in
1569    place where a paragraph (&lt;t>) would be allowed otherwise.
1570  </t>
1571  <t>
1572    See <xref target="v3.contact"/> for a standard alternative.
1573  </t>
1574</section>
1575
1576<section title="&lt;dfn> element" anchor="ext.element.dfn">
1577  <iref item="Extension Elements" subitem="dfn" primary="true"/>
1578  <iref item="dfn Extension Element" primary="true"/>
1579  <x:anchor-alias value="dfn"/>
1580  <t>
1581    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"/>.
1582  </t>
1583</section>
1584
1585<section title="&lt;feedback> element" anchor="ext.element.feedback">
1586  <iref item="Extension Elements" subitem="feedback" primary="true"/>
1587  <iref item="feedback Extension Element" primary="true"/>
1588  <x:anchor-alias value="feedback"/>
1589  <t>
1590    This elements allows declaring a feedback link for document reviewers.
1591    The template string takes the form of a URI template, such as:
1592  </t>
1593  <figure>
1594    <artwork type="example" x:lang="">
1595&lt;x:feedback template="mailto:ietf-http-wg@w3.org?subject={docname},%20%22{section}%22&amp;amp;body=&amp;lt;{ref}&amp;gt;:"/>
1596</artwork></figure>
1597  <t>
1598    where "docname" is substituted by the document name, "section" is substituted
1599    by section title (number and name), and "ref" is substituted by a URI pointing
1600    to the section being referenced.
1601  </t>
1602</section>
1603
1604<section title="&lt;h> element" anchor="ext.element.h">
1605  <iref item="Extension Elements" subitem="h" primary="true"/>
1606  <iref item="h Extension Element" primary="true"/>
1607  <x:anchor-alias value="h"/>
1608  <t>
1609    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"/>.
1610  </t>
1611</section>
1612
1613<section title="&lt;highlight> element" anchor="ext.element.highlight">
1614  <iref item="Extension Elements" subitem="highlight" primary="true"/>
1615  <iref item="highlight Extension Element" primary="true"/>
1616  <x:anchor-alias value="highlight"/>
1617  <t>
1618    Used to highlight text passages, currently only allowed in &lt;artwork>.
1619  </t>
1620  <t>
1621    <x:h>Note:</x:h> this is stripped when generating input for xml2rfc,
1622    so please use with care.
1623  </t>
1624</section>
1625
1626<section title="&lt;length-of> element" anchor="ext.element.length-of">
1627  <iref item="Extension Elements" subitem="length-of" primary="true"/>
1628  <iref item="length-of Extension Element" primary="true"/>
1629  <x:anchor-alias value="length-of"/>
1630  <t>
1631    This element can be used to insert the length of another formatted
1632    section (in decimal).
1633  </t>
1634  <figure>
1635    <preamble>Example: computing the Content-Length header value</preamble>
1636    <artwork type="example" x:lang="">
1637&lt;artwork>
1638...
1639Content-Length: &lt;x:length-of target="req"/>
1640 
1641&lt;x:span anchor="req">123456789
1642&lt;x:span>&lt;artwork/>
1643</artwork>
1644  </figure>
1645  <t>
1646    The lenght computation counts line ends as two characters (CRLF).
1647  </t>
1648  <t>
1649    Note that indentation characters in artwork <em>will</em> be
1650    counted. The "indented" attribute allows to specify the amount of
1651    indentation to be substracted from the computed length.
1652  </t>
1653</section>
1654
1655<section title="&lt;link> element" anchor="ext.element.link">
1656  <iref item="Extension Elements" subitem="link" primary="true"/>
1657  <iref item="link Extension Element" primary="true"/>
1658  <x:anchor-alias value="link"/>
1659  <t>
1660    This element can be added as a top-level child element below
1661    &lt;rfc> to indicate additional link information. It's currently
1662    used only when generating HTML output, in which case an HTML
1663    <eref target="http://www.w3.org/TR/html4/struct/links.html#edef-LINK">&lt;link></eref> element with identical attributes gets generated.
1664  </t>
1665  <figure>
1666    <preamble>Example: generating HTML link element</preamble>
1667    <artwork type="example" x:lang="">
1668&lt;x:link xmlns:x="http://purl.org/net/xml2rfc/ext"
1669    rel="Bookmark"
1670    title="IETF WEBDAV Working Group"
1671    href="http://ftp.ics.uci.edu/pub/ietf/webdav/"/></artwork>
1672  </figure>
1673  <t>
1674    If the attribute "basename" is present, it is used to compute the
1675    target href based on the output format being generated (this is handy
1676    for "next"/"prev" links in a series of documents. In this case, the href
1677    attribute is not required.
1678  </t>
1679  <figure>
1680    <preamble>For instance:</preamble>
1681    <artwork type="example" x:lang="">
1682&lt;x:link xmlns:x="http://purl.org/net/xml2rfc/ext"
1683    rel="next"
1684    title="Part2"
1685    basename="draft-foobar-protocol-p2-latest"/></artwork>
1686  </figure>
1687</section>
1688
1689<section title="&lt;lt> element" anchor="ext.element.lt">
1690  <iref item="Extension Elements" subitem="lt" primary="true"/>
1691  <iref item="lt Extension Element" primary="true"/>
1692  <x:anchor-alias value="lt"/>
1693  <t>
1694    Used for grouping multiple &lt;t&gt; elements into a single list item.
1695  </t>
1696</section>
1697
1698<section title="&lt;note> element" anchor="ext.element.note">
1699  <iref item="Extension Elements" subitem="note" primary="true"/>
1700  <iref item="note Extension Element" primary="true"/>
1701  <x:anchor-alias value="note"/>
1702  <t>
1703    Can be used to add a note, usually indented by a few characters.
1704    It should contain one or more &lt;t> child elements.
1705  </t>
1706</section>
1707
1708<section title="&lt;parse-xml> element" anchor="ext.element.parse-xml">
1709  <iref item="Extension Elements" subitem="parse-xml" primary="true"/>
1710  <iref item="parse-xml Extension Element" primary="true"/>
1711  <x:anchor-alias value="parse-xml"/>
1712  <t>
1713    This element instructs the processor to parse the contents as XML and
1714    to warn when there's a problem (requires either MSXML or Saxon8 or newer).
1715  </t>
1716</section>
1717
1718<section title="&lt;prose> element" anchor="ext.element.prose">
1719  <iref item="Extension Elements" subitem="prose" primary="true"/>
1720  <iref item="prose Extension Element" primary="true"/>
1721  <x:anchor-alias value="prose"/>
1722  <t>
1723    This element can be used inside &lt;reference> to add plain text (before
1724    the date, when present).
1725  </t>
1726  <t>
1727    <em>See also &lt;refcontent&gt; (<xref target="v3.refcontent"/>).</em>
1728  </t>
1729</section>
1730
1731<section title="&lt;q> element" anchor="ext.element.q">
1732  <iref item="Extension Elements" subitem="q" primary="true"/>
1733  <iref item="q Extension Element" primary="true"/>
1734  <x:anchor-alias value="q"/>
1735  <t>
1736    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"/>.
1737  </t>
1738</section>
1739
1740<section title="&lt;ref> element" anchor="ext.element.ref">
1741  <iref item="Extension Elements" subitem="ref" primary="true"/>
1742  <iref item="ref Extension Element" primary="true"/>
1743  <x:anchor-alias value="ref"/>
1744  <t>
1745    This element is a simplified variant of the &lt;xref> element, in that
1746    no "target" attribute needs to be specified, instead the text contents
1747    acts as identifier.  That in itself wouldn't be terribly useful,
1748    but together with the &lt;<x:ref>anchor-alias</x:ref>>, it allows
1749    referring to other parts of the document with minimal additional markup.
1750  </t>
1751  <t>
1752    For instance, given an alias definition such as
1753  </t>
1754  <figure>
1755    <artwork type="example" x:lang="">
1756&lt;section title="Test" anchor="test">
1757  &lt;x:anchor-alias value="alias1"/>
1758  &lt;x:anchor-alias value="alias 2"/>
1759  ...
1760&lt;/section></artwork>
1761  </figure>
1762  <t>
1763    the following simple references
1764  </t>
1765  <figure>
1766    <artwork type="example" x:lang="">
1767&lt;x:ref>test&lt;/x:ref>
1768&lt;x:ref>alias1&lt;/x:ref>
1769&lt;x:ref>alias 2&lt;/x:ref></artwork>
1770  </figure>
1771  <t>
1772    are equivalent to...:
1773  </t>
1774  <figure>
1775    <artwork type="example" x:lang="">
1776&lt;xref target="test">test&lt;/xref>
1777&lt;xref target="test">alias1&lt;/xref>
1778&lt;xref target="test">alias 2&lt;/xref></artwork>
1779  </figure>
1780</section>
1781
1782<section title="&lt;source> element" anchor="ext.element.source">
1783  <iref item="Extension Elements" subitem="source" primary="true"/>
1784  <iref item="source Extension Element" primary="true"/>
1785  <x:anchor-alias value="source"/>
1786  <t>
1787    Can be used to enhance a &lt;reference> with information about the
1788    location for the XML source. This can be used by the &lt;xref>
1789    processing code to automatically extract the target section number
1790    (see <xref target="ext-rfc2629.xref"/>).
1791  </t>
1792  <figure>
1793    <preamble>
1794      For example:
1795    </preamble>
1796    <artwork type="example">
1797...
1798&lt;xref target="RFC2616" x:fmt="of" x:rel="#PUT" />
1799...
1800
1801&lt;reference target="RFC2616"/>
1802  ...
1803  &lt;x:source href="rfc2616.xml"/>
1804  ...
1805    </artwork>
1806  </figure>
1807</section>
1808
1809<section title="&lt;sup> element" anchor="ext.element.sup">
1810  <iref item="Extension Elements" subitem="sup" primary="true"/>
1811  <iref item="sup Extension Element" primary="true"/>
1812  <x:anchor-alias value="sup"/>
1813  <t>
1814    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"/>.
1815  </t>
1816  <t>
1817    Note: the down conversion to RFC7749 format replaces
1818    "x<x:sup>y</x:sup>" by "x^y".
1819  </t>
1820  <t>
1821    <em>See also &lt;sup&gt; (<xref target="v3.sup"/>).</em>
1822  </t>
1823</section>
1824
1825<section title="&lt;u-map> element" anchor="ext.element.u-map">
1826  <iref item="Extension Elements" subitem="u-map" primary="true"/>
1827  <iref item="u-map Extension Element" primary="true"/>
1828  <x:anchor-alias value="u-map"/>
1829  <t>
1830    Needed for the lookup of Unicode character database information; this
1831    element can either appear in-band in the source document, or off-band
1832    as specified using the xml2rfc-ext-ucd-file parameter/PI.
1833  </t>
1834  <t>
1835    Contains multiple &lt;x:c> elements (see <xref target="ext.element.c"/>).
1836  </t>
1837  <t>
1838    The utility XSLT <tt>convert-ucd.xslt</tt> can be used to create
1839    a mapping file based on the Unicode XML database format, as available
1840    from <eref target="https://unicode.org/ucd/#UCDinXML"/>.
1841  </t>
1842</section>
1843
1844<section title="Extensions to &lt;artwork&gt; element" anchor="ext-rfc2629.artwork">
1845<t>
1846  Sometimes, artwork occurs inside lists. To get it indent properly in xml2rfc's
1847  text output, it needs to be indented in the source. This is sub-optimal, as
1848  this whitespace will also appear in the HTML output, where it's already
1849  indented due to HTML's semantics.
1850  As a workaround, a "x:indent-with" attribute can be specified, containing
1851  a string that will be prepended to each line when <tt>clean-for-DTD.xslt</tt>
1852  is run (see <xref target="clean-for-dtd"/>).
1853</t>
1854<t>
1855  Furthermore, documents can contain code that might need to be marked as "code
1856  component" (<eref target="http://www.ietf.org/iesg/statement/copyright.html"/>).
1857  This can be done using "x:is-code-component".
1858</t>
1859<t>
1860  Finally, when allowing pretty-printing of code (see "html-pretty-print" in
1861  <xref target="extension.pis"/>, the "x:lang" attribute can used to explicitly
1862  opt into pretty-printing. If the pretty printer can figure out the code
1863  type without assistance, an empty value will be sufficient. Otherwise,
1864  the language can be specified in the attribute (such as "html"), which
1865  will in turn be coded into the CSS class as "lang-" concatenated with the
1866  language name.
1867</t>
1868</section>
1869
1870<section title="Extensions to &lt;date&gt; element" anchor="ext-rfc2629.date">
1871<t>
1872  The attribute "x:include-day" ("true", "false") can be used to control whether the day-of-month
1873  should be included in the output. This can be used to adjust the rendering
1874  of dates for April-1st-RFCs to the desired special format, including the "1".
1875</t>
1876<t>
1877  In particular: on the front page, the attribute defaults to "true", <em>unless</em>
1878  when generating RFCs. The output format also varies depending on RFC-ness: it's
1879  "day month year" for RFCs, but "month day, year" otherwise. In references, the
1880  attribute defaults to "false", and when set to true, the day is just inserted
1881  in front of the month.
1882</t>
1883<t>
1884  Furthermore, this implementation supports the extension discussed in
1885  in <xref target="V3IMPNOTES" x:fmt="of" x:sec="4.1.3.2"/>: in absence
1886  of any attributes, a "vague" date can be given as text content (this also
1887  applies to the case where &lt;date&gt; appears below a &lt;reference&gt;
1888  element).
1889</t>
1890</section>
1891
1892<section title="Extensions to &lt;eref&gt; element" anchor="ext-rfc2629.eref">
1893<t>
1894  For v3 documents, angle brackets will only be produced if the attribute
1895  "brackets" is set to "angle".
1896</t>
1897</section>
1898
1899<section title="Extensions to &lt;iref&gt; element" anchor="ext-rfc2629.iref">
1900<t>
1901  The extension attribute below is allowed on the standard &lt;iref&gt; element:
1902  <list style="symbols">
1903    <t>x:for-anchor specifies that the &lt;iref&gt; will also be automatically
1904    inserted whenever the specified anchor is cross-referenced -- this may
1905    save entering lots of &lt;iref&gt; instances. As a special case, a value of
1906    "" (empty string) refers to the anchor attribute of the closest ancestor.</t>
1907  </list>
1908</t>
1909</section>
1910
1911<section title="Extensions to &lt;list&gt; element" anchor="ext-rfc2629.list">
1912<t>
1913  The extension attribute below is allowed on the standard &lt;list&gt; element:
1914  <list style="symbols">
1915    <t>x:indent specifies the amount of indentation for list items in hanging
1916    lists. This can be useful when the output format, such as XSL-FO, does not
1917    support automatical formatting. The value takes an XSL-FO width, such as "5em".
1918    The default is <em>length of longest label in characters</em> times
1919    <em>0.8em</em>.</t>
1920  </list>
1921</t>
1922<t>
1923  Also, the &lt;list&gt; element can take &lt;x:<x:ref>lt</x:ref>&gt; child elements instead of
1924  &lt;t&gt;, allowing to insert multiple paragraphs into a single list item.
1925</t>
1926</section>
1927
1928<section title="Extensions to &lt;rfc&gt; element" anchor="ext-rfc2629.rfc">
1929<t>
1930  The extension attributes below are allowed on the standard &lt;rfc&gt; element:
1931  <list style="symbols">
1932    <t>grddl:transformation can be used to reference a GRDDL transform.</t>
1933    <t>x:maturity-level can be used to specify the IETF Standards Track
1934    Maturity Level of "proposed", "draft" or "internet" (see <xref target="RFC2026" x:fmt="of" x:sec="4.1"/>).</t>
1935  </list>
1936</t>
1937</section>
1938
1939<section title="Extensions to &lt;section&gt; element" anchor="ext-rfc2629.section">
1940<t>
1941  The extension attribute below is allowed on the standard &lt;list&gt; element:
1942  <list style="symbols">
1943    <t>x:fixed-section-number can be used to specify a fixed section number.
1944    This can be useful when formatting historic documents that used a different
1945    numbering style.</t>
1946  </list>
1947</t>
1948</section>
1949
1950<section title="Extensions to &lt;xref&gt; element" anchor="ext-rfc2629.xref">
1951<t>
1952  Three extension attributes are allowed on the standard &lt;xref&gt; element:
1953  <list style="numbers">
1954    <t>x:sec can be specified to point to a specific section of the referenced document,</t>
1955    <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>
1956    <t>x:fmt defines the text format to be used.</t>
1957  </list>
1958</t>
1959<t>
1960  The following formats are defined for the x:fmt attribute:
1961</t>
1962<dl>
1963  <dt>
1964    <tt>,</tt> (Comma)
1965  </dt>
1966  <dd>
1967      [<em>reference</em>], Section <em>sec</em>
1968  </dd>
1969  <dt>
1970    <tt>()</tt>
1971  </dt>
1972  <dd>
1973    [<em>reference</em>] (Section <em>sec</em>)
1974  </dd>
1975  <dt>
1976    <tt>of</tt>
1977  </dt>
1978  <dd>
1979    Section <em>sec</em> of [<em>reference</em>]
1980  </dd>
1981  <dt>
1982    <tt>number</tt>
1983  </dt>
1984  <dd>
1985    <em>sec</em>
1986  </dd>
1987  <dt>
1988    <tt>none</tt>
1989  </dt>
1990  <dd>
1991    No output (can be used to have xrefs to references without
1992    having them rendered as such)
1993  </dd>
1994  <dt>
1995    <tt>sec</tt>
1996  </dt>
1997  <dd>
1998    Section <em>sec</em>
1999  </dd>
2000</dl>
2001<t>
2002  These extensions are currently only supported for &lt;xref&gt; elements without
2003  child nodes.
2004</t>
2005<t>
2006  If the processor knows how to reference the target section, it will generate
2007  a link directly to the target section, such as in <xref target="RFC2119" x:fmt="," x:sec="5"/>.
2008</t>
2009</section>
2010
2011</section>
2012
2013<section title="Experimental Support for RFC7991bis Vocabulary" anchor="v3">
2014<t>
2015  <tt>rfc2629.xslt</tt> experimentally supports some
2016  elements from the "V3" vocabulary, defined in
2017  <xref target="RFC7991bis"/>. <em>This support is experimental, as
2018  the "v3" vocabulary is still being developed.</em>
2019</t>
2020
2021<section title="artset Element" anchor="v3.artset">
2022  <iref item="V3 Extension Elements" subitem="artset" primary="true"/>
2023  <iref item="artset V3 Extension Element" primary="true"/>
2024<t>
2025  See <xref target="V3IMPNOTES" x:fmt="of" x:sec="3.1.1"/>.
2026</t>
2027</section>
2028
2029<section title="aside Element" anchor="v3.aside">
2030  <iref item="V3 Extension Elements" subitem="aside" primary="true"/>
2031  <iref item="aside V3 Extension Element" primary="true"/>
2032<t>
2033  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.aside"/>.
2034</t>
2035</section>
2036
2037<section title="bcp14 Element" anchor="v3.bcp14">
2038  <iref item="V3 Extension Elements" subitem="bcp14" primary="true"/>
2039  <iref item="bcp14 V3 Extension Element" primary="true"/>
2040<t>
2041  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.bcp14"/>.
2042</t>
2043</section>
2044
2045<section title="blockquote Element" anchor="v3.blockquote">
2046  <iref item="V3 Extension Elements" subitem="blockquote" primary="true"/>
2047  <iref item="blockquote V3 Extension Element" primary="true"/>
2048<t>
2049  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.blockquote"/>.
2050</t>
2051</section>
2052
2053<section title="boilerplate Element" anchor="v3.boilerplate">
2054  <iref item="V3 Extension Elements" subitem="boilerplate" primary="true"/>
2055  <iref item="boilerplate V3 Extension Element" primary="true"/>
2056<t>
2057  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.blockquote"/>.
2058</t>
2059</section>
2060
2061<section title="br Element" anchor="v3.br">
2062  <iref item="V3 Extension Elements" subitem="br" primary="true"/>
2063  <iref item="br V3 Extension Element" primary="true"/>
2064<t>
2065  <cref>TBD.</cref>
2066</t>
2067</section>
2068
2069<section title="cityarea Element" anchor="v3.cityarea">
2070  <iref item="V3 Extension Elements" subitem="cityarea" primary="true"/>
2071  <iref item="cityarea V3 Extension Element" primary="true"/>
2072<t>
2073  See <xref target="V3IMPNOTES" x:fmt="of" x:sec="4.2.7"/>.
2074</t>
2075</section>
2076
2077<section title="contact Element" anchor="v3.contact">
2078  <iref item="V3 Extension Elements" subitem="contact" primary="true"/>
2079  <iref item="contact V3 Extension Element" primary="true"/>
2080<t>
2081  Can be used to embed contact information in a layout <em>similar</em>
2082  to the one used for authors; mainly for use in a "Contributors" section.
2083</t>
2084<t>
2085  When used in phrase content, only the name or the organization (absent a name)
2086  will be displayed.
2087</t>
2088</section>
2089
2090<section title="displayreference Element" anchor="v3.displayreference">
2091  <iref item="V3 Extension Elements" subitem="displayreference" primary="true"/>
2092  <iref item="displayreference V3 Extension Element" primary="true"/>
2093<t>
2094  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.displayreference"/>.
2095</t>
2096</section>
2097
2098<section title="dd Element" anchor="v3.dd">
2099  <iref item="V3 Extension Elements" subitem="dd" primary="true"/>
2100  <iref item="dd V3 Extension Element" primary="true"/>
2101<t>
2102  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.dd"/>.
2103</t>
2104</section>
2105
2106<section title="dl Element" anchor="v3.dl">
2107  <iref item="V3 Extension Elements" subitem="dl" primary="true"/>
2108  <iref item="dl V3 Extension Element" primary="true"/>
2109<t>
2110  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.dl"/>.
2111</t>
2112</section>
2113
2114<section title="dt Element" anchor="v3.dt">
2115  <iref item="V3 Extension Elements" subitem="dt" primary="true"/>
2116  <iref item="dt V3 Extension Element" primary="true"/>
2117<t>
2118  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.dt"/>.
2119</t>
2120</section>
2121
2122<section title="em Element" anchor="v3.em">
2123  <iref item="V3 Extension Elements" subitem="em" primary="true"/>
2124  <iref item="em V3 Extension Element" primary="true"/>
2125<t>
2126  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.em"/>.
2127</t>
2128</section>
2129
2130<section title="extaddr Element" anchor="v3.extaddr">
2131  <iref item="V3 Extension Elements" subitem="extaddr" primary="true"/>
2132  <iref item="extaddr V3 Extension Element" primary="true"/>
2133<t>
2134  See <xref target="V3IMPNOTES" x:fmt="of" x:sec="4.2.7"/>.
2135</t>
2136</section>
2137
2138<section title="li Element" anchor="v3.li">
2139  <iref item="V3 Extension Elements" subitem="li" primary="true"/>
2140  <iref item="li V3 Extension Element" primary="true"/>
2141<t>
2142  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.li"/>.
2143</t>
2144</section>
2145
2146<section title="link Element" anchor="v3.link">
2147  <iref item="V3 Extension Elements" subitem="link" primary="true"/>
2148  <iref item="link V3 Extension Element" primary="true"/>
2149<t>
2150  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.link"/>.
2151</t>
2152</section>
2153
2154<section title="name Element" anchor="v3.name">
2155  <iref item="V3 Extension Elements" subitem="name" primary="true"/>
2156  <iref item="name V3 Extension Element" primary="true"/>
2157<t>
2158  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.name"/>.
2159  <em>Currently only supported inside &lt;references&gt; and &lt;section&gt;</em>.
2160</t>
2161</section>
2162
2163<section title="ol Element" anchor="v3.ol">
2164  <iref item="V3 Extension Elements" subitem="ol" primary="true"/>
2165  <iref item="ol V3 Extension Element" primary="true"/>
2166<t>
2167  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.ol"/>.
2168</t>
2169</section>
2170
2171<section title="pobox Element" anchor="v3.pobox">
2172  <iref item="V3 Extension Elements" subitem="pobox" primary="true"/>
2173  <iref item="pobox V3 Extension Element" primary="true"/>
2174<t>
2175  See <xref target="V3IMPNOTES" x:fmt="of" x:sec="4.2.7"/>.
2176</t>
2177</section>
2178
2179<section title="postalLine Element" anchor="v3.postalLine">
2180  <iref item="V3 Extension Elements" subitem="postalLine" primary="true"/>
2181  <iref item="postalLine V3 Extension Element" primary="true"/>
2182<t>
2183  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.postalLine"/>.
2184</t>
2185</section>
2186
2187<section title="refcontent Element" anchor="v3.refcontent">
2188  <iref item="V3 Extension Elements" subitem="refcontent" primary="true"/>
2189  <iref item="refcontent V3 Extension Element" primary="true"/>
2190<t>
2191  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.refcontent"/>.
2192</t>
2193</section>
2194
2195<section title="Extensions to reference Element" anchor="v3.reference">
2196  <iref item="V3 Extension Elements" subitem="reference" primary="true"/>
2197  <iref item="reference V3 Extension Element" primary="true"/>
2198<t>
2199  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.reference"/>.
2200</t>
2201
2202<section title="quoteTitle attribute" anchor="v3.reference.quoteTitle">
2203<t>
2204  See <xref target="RFC7991bis-01" x:fmt="of" x:rel="#element.reference.attribute.quoteTitle"/>.
2205</t>
2206</section>
2207</section>
2208
2209<section title="referencegroup Element" anchor="v3.referencegroup">
2210  <iref item="V3 Extension Elements" subitem="referencegroup" primary="true"/>
2211  <iref item="referencegroup V3 Extension Element" primary="true"/>
2212<t>
2213  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.referencegroup"/>.
2214</t>
2215</section>
2216
2217<section title="relref Element" anchor="v3.relref">
2218  <iref item="V3 Extension Elements" subitem="relref" primary="true"/>
2219  <iref item="relref V3 Extension Element" primary="true"/>
2220<t>
2221  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.relref"/>.
2222</t>
2223<t>
2224  <em>EXPERIMENTAL, might be removed again - see <eref target="https://github.com/rfc-format/draft-iab-xml2rfc-v3-bis/issues/26"/>.</em>
2225</t>
2226</section>
2227
2228<section title="Extensions to section Element" anchor="v3.section">
2229  <iref item="V3 Extension Elements" subitem="section" primary="true"/>
2230  <iref item="section V3 Extension Element" primary="true"/>
2231<t>
2232  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.section"/>.
2233</t>
2234
2235<section title="numbered attribute" anchor="v3.section.numbered">
2236<t>
2237  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.section.attribute.numbered"/>.
2238</t>
2239</section>
2240
2241<section title="removeInRFC attribute" anchor="v3.section.removeInRFC">
2242<t>
2243  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.section.attribute.removeInRFC"/>.
2244</t>
2245</section>
2246</section>
2247
2248<section title="sortingcode Element" anchor="v3.sortingcode">
2249  <iref item="V3 Extension Elements" subitem="sortingcode" primary="true"/>
2250  <iref item="sortingcode V3 Extension Element" primary="true"/>
2251<t>
2252  See <xref target="V3IMPNOTES" x:fmt="of" x:sec="4.2.7"/>.
2253</t>
2254</section>
2255
2256<section title="sourcecode Element" anchor="v3.sourcecode">
2257  <iref item="V3 Extension Elements" subitem="sourcecode" primary="true"/>
2258  <iref item="sourcecode V3 Extension Element" primary="true"/>
2259<t>
2260  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.sourcecode"/>.
2261</t>
2262</section>
2263
2264<section title="strong Element" anchor="v3.strong">
2265  <iref item="V3 Extension Elements" subitem="strong" primary="true"/>
2266  <iref item="strong V3 Extension Element" primary="true"/>
2267<t>
2268  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.strong"/>.
2269</t>
2270</section>
2271
2272<section title="sub Element" anchor="v3.sub">
2273  <iref item="V3 Extension Elements" subitem="sub" primary="true"/>
2274  <iref item="sub V3 Extension Element" primary="true"/>
2275<t>
2276  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.sub"/>.
2277</t>
2278</section>
2279
2280<section title="sup Element" anchor="v3.sup">
2281  <iref item="V3 Extension Elements" subitem="sup" primary="true"/>
2282  <iref item="sup V3 Extension Element" primary="true"/>
2283<t>
2284  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.sup"/>.
2285</t>
2286</section>
2287
2288<section title="svg Element" anchor="v3.svg">
2289  <iref item="V3 Extension Elements" subitem="svg" primary="true"/>
2290  <iref item="svg V3 Extension Element" primary="true"/>
2291<t>
2292  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.svg"/>.
2293</t>
2294</section>
2295
2296<section title="table Element" anchor="v3.table">
2297  <iref item="V3 Extension Elements" subitem="table" primary="true"/>
2298  <iref item="table V3 Extension Element" primary="true"/>
2299<t>
2300  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.table"/>.
2301</t>
2302</section>
2303
2304<section title="tbody Element" anchor="v3.tbody">
2305  <iref item="V3 Extension Elements" subitem="tbody" primary="true"/>
2306  <iref item="tbody V3 Extension Element" primary="true"/>
2307<t>
2308  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.tbody"/>.
2309</t>
2310</section>
2311
2312<section title="td Element" anchor="v3.td">
2313  <iref item="V3 Extension Elements" subitem="td" primary="true"/>
2314  <iref item="td V3 Extension Element" primary="true"/>
2315<t>
2316  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.td"/>.
2317</t>
2318</section>
2319
2320<section title="tfoot Element" anchor="v3.tfoot">
2321  <iref item="V3 Extension Elements" subitem="tfoot" primary="true"/>
2322  <iref item="tfoot V3 Extension Element" primary="true"/>
2323<t>
2324  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.tfoot"/>.
2325</t>
2326</section>
2327
2328<section title="th Element" anchor="v3.th">
2329  <iref item="V3 Extension Elements" subitem="th" primary="true"/>
2330  <iref item="th V3 Extension Element" primary="true"/>
2331<t>
2332  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.th"/>.
2333</t>
2334</section>
2335
2336<section title="thead Element" anchor="v3.thead">
2337  <iref item="V3 Extension Elements" subitem="thead" primary="true"/>
2338  <iref item="thead V3 Extension Element" primary="true"/>
2339<t>
2340  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.thead"/>.
2341</t>
2342</section>
2343
2344<section title="tr Element" anchor="v3.tr">
2345  <iref item="V3 Extension Elements" subitem="tr" primary="true"/>
2346  <iref item="tr V3 Extension Element" primary="true"/>
2347<t>
2348  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.tr"/>.
2349</t>
2350</section>
2351
2352<section title="tt Element" anchor="v3.tt">
2353  <iref item="V3 Extension Elements" subitem="tt" primary="true"/>
2354  <iref item="tt V3 Extension Element" primary="true"/>
2355<t>
2356  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.tt"/>.
2357</t>
2358</section>
2359
2360<section title="u Element" anchor="v3.u">
2361  <iref item="V3 Extension Elements" subitem="u" primary="true"/>
2362  <iref item="u V3 Extension Element" primary="true"/>
2363<t>
2364  See <xref target="V3IMPNOTES" x:fmt="of" x:sec="A.1"/>.
2365</t>
2366<t>
2367  Note that in this implementation, this element needs mapping information
2368  in two cases:
2369</t>
2370<ol>
2371  <li>When in XSLT 1.0: to compute the Unicode code point of a given character
2372  (when non-ASCII),</li>
2373  <li>In any case: to lookup the Unicode name of a character.</li>
2374</ol>
2375<t>
2376  The mapping information can be supplied inline using the &lt;x:u-map>
2377  element, or in an external file. See <xref target="ext.element.u-map"/>
2378  for details.
2379</t>
2380</section>
2381
2382<section title="ul Element" anchor="v3.ul">
2383  <iref item="V3 Extension Elements" subitem="ul" primary="true"/>
2384  <iref item="ul V3 Extension Element" primary="true"/>
2385<t>
2386  See <xref target="RFC7991bis" x:fmt="of" x:rel="#element.ul"/>.
2387</t>
2388</section>
2389
2390<section title="Extensions to xref Element" anchor="v3.xref">
2391  <iref item="V3 Extension Elements" subitem="xref" primary="true"/>
2392  <iref item="xref V3 Extension Element" primary="true"/>
2393
2394<section title="relative attribute" anchor="v3.xref.relative">
2395<t>
2396  See <xref target="ext-rfc2629.xref"/>, "x:rel" attribute.
2397</t>
2398</section>
2399
2400<section title="section attribute" anchor="v3.xref.section">
2401<t>
2402  See <xref target="ext-rfc2629.xref"/>, "x:sec" attribute.
2403</t>
2404</section>
2405
2406<section title="sectionFormat attribute" anchor="v3.xref.sectionFormat">
2407<t>
2408  See <xref target="ext-rfc2629.xref"/>, "x:fmt" attribute, where
2409  "bare" maps to "sec", "comma" maps to ",", "of" maps to "of", and "parens"
2410  maps to "()".
2411</t>
2412</section>
2413</section>
2414
2415<section title="xi:include Element" anchor="v3.xi-include">
2416  <iref item="V3 Extension Elements" subitem="xi:include" primary="true"/>
2417  <iref item="xi:include V3 Extension Element" primary="true"/>
2418<t>
2419  See <xref target="RFC7991bis" x:fmt="of" x:rel="#includingexternal"/>.
2420</t>
2421<t>
2422  <em>EXPERIMENTAL and INCOMPLETE - only supported as a child element of &lt;references>, and only supporting parse type "XML".</em>
2423</t>
2424</section>
2425
2426</section>
2427
2428<section title="Utilities" anchor="utilities">
2429
2430<section title="Checking References" anchor="checking-references">
2431<t>
2432  <tt>check-references.xslt</tt> can be used to check
2433  all references to RFC- and ID-series IETF publications and to W3C publications (note
2434  this script requires local copies of
2435  <eref target="ftp://ftp.isi.edu/in-notes/rfc-index.xml"/> and
2436  <eref target="http://www.w3.org/2002/01/tr-automation/tr.rdf"/> and
2437  will use the XML status information provided at <eref target="http://tools.ietf.org/"/>).
2438</t>
2439<t>
2440  If the document is supposed to be published on the IETF standards track,
2441  the desired level can be specified using the parameter <tt>intended-level</tt>
2442  as 'proposed', 'draft' or 'internet'. Alternatively, it can be specified
2443  inside the document using the attribute x:maturity-level on the &lt;rfc> element
2444  (see <xref target="ext-rfc2629.rfc"/>).
2445</t>
2446<t>
2447  <x:h>Note:</x:h> Downward references should be
2448  annotated using the &lt;annotate> element, containing an &lt;xref> to
2449  <xref target="BCP97"/>.
2450</t>
2451<t>
2452  When an XSLT 2.0 processor is used, links in the document can be checked as well
2453  using the <tt>link-check</tt> parameter ('yes' or 'no').
2454  Note that this only works for http links to documents of type text/*.
2455</t>
2456<figure>
2457<preamble>
2458For instance, as of 2008-07-12, the script produces for <eref target="https://greenbytes.de/tech/webdav/rfc2518.xml"/>:
2459</preamble>
2460<artwork type="example">
2461> saxon rfc2518.xml check-references.xslt intended-status=PROPOSED \
2462  link-check=yes
2463
2464Normative References:
2465ISO-11578: not checked
2466ISO-639: not checked
2467ISO-8601: not checked
2468REC-xml-19980210: [FirstEdition] obsoleted by REC-xml-20001006
2469REC-xml-names-19990114: [FirstEdition] obsoleted by
2470 REC-xml-names-20060816
2471RFC1766: [PROPOSED STANDARD] obsoleted by RFC3066 RFC3282
2472RFC2068: [PROPOSED STANDARD] obsoleted by RFC2616
2473RFC2069: [PROPOSED STANDARD] obsoleted by RFC2617
2474RFC2119: [BEST CURRENT PRACTICE] (-> BCP0014) ok
2475RFC2141: [PROPOSED STANDARD] ok
2476RFC2277: [BEST CURRENT PRACTICE] (-> BCP0018) ok
2477RFC2396: [DRAFT STANDARD] obsoleted by RFC3986
2478RFC2279: [DRAFT STANDARD] obsoleted by RFC3629
2479
2480Informational References:
2481REC-PICS-labels-961031: [REC] ok
2482RFC1807: [INFORMATIONAL] ok
2483RFC2026: [BEST CURRENT PRACTICE] (-> BCP0009) ok
2484RFC2291: [INFORMATIONAL] ok
2485RFC2376: [INFORMATIONAL] obsoleted by RFC3023
2486RFC2413: [INFORMATIONAL] obsoleted by RFC5013
2487USMARC: not checked
2488WF: not checked
2489
2490Link Targets
2491&lt;http://www.w3.org/TR/1998/REC-xml-19980210>: ok
2492&lt;http://www.w3.org/TR/1999/REC-xml-names-19990114>: ok
2493&lt;http://www.dlib.org/dlib/july96/lagoze/07lagoze.html>: ok
2494&lt;http://www.w3.org/pub/WWW/TR/REC-PICS-labels-961031.html>: ok
2495</artwork></figure>
2496<t>
2497  Recognized formats in the &lt;seriesInfo> element are:
2498  <list style="symbols">
2499    <t>for RFCs, the name attribute must be "RFC", and the value attribute must
2500    be the number of the RFC,</t>
2501    <t>for Internet Drafs, the name attribute must be "ID" or "Internet-Draft", and the value attribute must
2502    be the file name of the draft (including the two-digit running number, but excluding a file extension),</t>
2503    <t>for W3C documents, the name attribute must be "W3C", must start with "W3C&#160;", or
2504    must start with "World Wide Web Consortium&#160;", and the value attribute
2505    must be the "shorthand" name of the specification, such as "REC-xml-19980210".</t>
2506  </list>
2507</t>
2508<x:note>
2509<t>
2510  <x:h>Note:</x:h> this stylesheet will need network access to check links and
2511  status of Internet Drafts. When running a Java-based XSLT engine, you may have
2512  to supply Java system properties specifying the HTTP proxy to be used, such
2513  as "-Dhttp.proxyHost=hostname -Dhttp.proxyPort=80".
2514</t>
2515</x:note>
2516
2517</section>
2518
2519<section title="Generating Graphs from References">
2520<t>
2521  <tt>gen-reference-graph.xslt</tt> generates a graph
2522  of RFC dependencies, using the same base data as in <tt>check-references.xslt</tt>
2523  (see <xref target="checking-references"/>). Its output is a "dot" file,
2524  to be processed by GraphViz (see <eref target="http://www.graphviz.org/"/>).
2525</t>
2526<figure>
2527<preamble>
2528The picture below shows the RFC dependencies in RFC2629.
2529</preamble>
2530<artwork src="rfc2629xslt-fig2.png" type="image/png">
2531(PNG output obtained from GraphViz)
2532</artwork>
2533</figure>
2534</section>
2535
2536<section title="Producing reference entries for books">
2537<t>
2538  <tt>amazon-asin.xslt</tt> uses the Amazon web services
2539  to generate a &lt;reference> element for a given ASIN (ISBN).
2540</t>
2541<figure>
2542<preamble>For instance:</preamble>
2543<artwork type="example" x:lang="">
2544&lt;?xml version="1.0" encoding="utf-8"?>
2545&lt;references>
2546 &lt;reference target="urn:isbn:0134516591">
2547   &lt;front>
2548     &lt;title>Simple Book, The: An Introduction to Internet Management,
2549               Revised Second Edition&lt;/title>
2550     &lt;author surname="Rose"
2551                fullname="Marshall T. Rose" initials="M. T. ">
2552       &lt;organization/>
2553     &lt;/author>
2554     &lt;author surname="Marshall"
2555                fullname="Rose T. Marshall" initials="R. T.">
2556       &lt;organization/>
2557     &lt;/author>
2558     &lt;date year="1996" month="March"/>
2559   &lt;/front>
2560   &lt;seriesInfo name="Prentice Hall" value=""/>
2561 &lt;/reference>
2562&lt;/references>
2563</artwork></figure>
2564<t>
2565  Note that the resulting XML usually requires checking, in this case Amazon's
2566  database is playing tricks with Marshall's name...
2567</t>
2568</section>
2569
2570<section title="Down-converting to RFC 7749 Grammar" anchor="clean-for-dtd">
2571<t>
2572  <tt>clean-for-DTD.xslt</tt> can be used to down-convert
2573  some extensions to a format that is supported by the existing xml2rfc
2574  formatters, mainly for the purpose of generating plain-text output.
2575  Note that these extensions are experimental (feedback
2576  appreciated).
2577</t>
2578<t>
2579  The following mappings are done:
2580  <list style="symbols">
2581    <t>
2582      &lt;iref> elements inside &lt;artwork> elements are moved in front
2583      of the enclosing &lt;figure> element.
2584    </t>
2585    <t>
2586      &lt;xref> elements inside &lt;artwork> are expanded just like in
2587      regular text (that is, the markup is stripped, but the element
2588      is replaced by the applicable replacement text).
2589    </t>
2590    <t>
2591      &lt;x:<x:ref>anchor-alias</x:ref>> elements get stripped.
2592    </t>
2593    <t>
2594      &lt;x:<x:ref>bcp14</x:ref>> elements get stripped.
2595    </t>
2596    <t>
2597      &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.
2598    </t>
2599    <t>
2600      &lt;x:<x:ref>blockquote</x:ref>> elements get converted to
2601      indented text (through a &lt;list> element).
2602    </t>
2603    <t>
2604      &lt;x:<x:ref>dfn</x:ref>> elements get stripped.
2605    </t>
2606    <t>
2607      &lt;x:<x:ref>h</x:ref>> elements get stripped.
2608    </t>
2609    <t>
2610      &lt;x:<x:ref>link</x:ref>> elements get stripped.
2611    </t>
2612    <t>
2613      &lt;x:<x:ref>lt</x:ref>> elements get collapsed into a single &lt;lt>
2614      element with added &lt;vspace> added to simulate paragraph breaks.
2615    </t>
2616    <t>
2617      &lt;x:<x:ref>note</x:ref>> elements get converted to
2618      indented text (through a &lt;list> element).
2619    </t>
2620    <t>
2621      &lt;x:<x:ref>q</x:ref>> elements get stripped, with apostrophes
2622      added around the text.
2623    </t>
2624    <t>
2625      &lt;x:<x:ref>prose</x:ref>> elements are transformed into
2626      &lt;seriesInfo> elements (which is an abuse of the element and only
2627      a workaround until xml2rfc gets a matching extension).
2628    </t>
2629    <t>
2630      &lt;x:<x:ref>ref</x:ref>> elements get replaced by &lt;xref>
2631      elements, targetting either the anchor or another anchor with
2632      matching &lt;x:<x:ref>anchor-alias</x:ref>> child element.
2633    </t>
2634  </list>
2635</t>
2636<aside>
2637  <t>
2638    <strong>Note:</strong> the above list is known to be incomplete and needs work.
2639    For instance, most of the extensions described in <xref target="v3"/>
2640    get some mapping as well.
2641  </t>
2642</aside>
2643<t>
2644  As the output formatters evolve to support the V3 format (proposed in
2645  <xref target="RFC7991bis"/>), <tt>clean-for-DTD.xslt</tt> will start taking
2646  advantage of these changes. Right now, it supports three modes,
2647  one of which being used for the historic TCL processor, and the other ones being used with
2648  <tt>xml2rfc 2.5.2</tt> and <tt>xml2rfc 2.6.0</tt> (see <eref target="https://pypi.python.org/pypi/xml2rfc/">https://pypi.python.org/pypi/xml2rfc/</eref>).
2649</t>
2650<t>
2651  The modes can be selected using the <tt>xml2rfc-ext-xml2rfc-backend</tt>
2652  parameter or the <tt>rfc-ext/xml2rfc-backend</tt> processing instruction.
2653  The default mode is "201610" for documents with a publication date between January and May 2017,
2654  "201706" for documents newer than May 2017, and "201510" otherwise:
2655</t>
2656<dl>
2657  <dt><em>201510</em></dt>
2658  <dd>For <tt>xml2rfc.tcl</tt> and versions of the Python formatter before version 2.5.2.</dd>
2659  <dt><em>201610</em></dt>
2660  <dd>Maps the V3 extension for unnumbered section numbers to something the 2.5.2 version of the Python formatter understands (but note <eref target="https://trac.tools.ietf.org/tools/xml2rfc/trac/ticket/313">https://trac.tools.ietf.org/tools/xml2rfc/trac/ticket/313</eref>).</dd>
2661  <dt><em>201706</em></dt>
2662  <dd>Copies the V3 extension for unnumbered section numbers to the output.</dd>
2663</dl>
2664</section>
2665
2666<section title="Extracting artwork" anchor="extract-artwork">
2667<t>
2668  With <tt>extract-artwork.xslt</tt>, artwork elements
2669  named through the "name" attribute can be extracted. This can be used
2670  to automatically check their syntax (for instance, when ABNFs appear
2671  within a figure element).
2672</t>
2673<figure><preamble>For instance:</preamble>
2674<artwork type="example">saxon rfc3986.xml extract-artwork.xslt name=uri.abnf
2675</artwork>
2676</figure>
2677<t>
2678  In addition, artwork of a specific type can be extracted, such as with:
2679</t>
2680<figure>
2681<artwork type="example">saxon rfc3986.xml extract-artwork.xslt type=abnf
2682</artwork>
2683</figure>
2684<t>
2685  When extracting by type, artwork elements with a specified name can be
2686  excluded; this can be handy when the document uses some kind of schema
2687  language, and an appendix contains the collected schema, repeating definitions
2688  from earlier on. Example:
2689</t>
2690<figure><artwork type="example">saxon rfc3986.xml extract-artwork.xslt type=abnf except-name=clschm
2691</artwork></figure>
2692</section>
2693
2694<section title="GRRDL" anchor="grddl">
2695<t>
2696  <tt>rfc2629grddl.xslt</tt> extracts RDF
2697  information. This is experimental work-in-progress. See
2698  <eref target="http://www.w3.org/TR/grddl/"/> for more information.
2699</t>
2700</section>
2701
2702<section title="HTML Live Refresh" anchor="html.live.refresh">
2703<t>
2704  <em>Experimental</em>
2705</t>
2706<t>
2707  The "HTML Live Refresh" mode allows to run a text editor and a browser
2708  side-by-side, with the browser auto-updating every few seconds, displaying
2709  the updated HTML, and automatically navigating to the part of the page that
2710  changed last.
2711</t>
2712<t anchor="html.live.refresh.requirements">
2713  The requirements for this mode are:
2714</t>
2715<ol>
2716  <li>
2717    A browser that supports the <tt>DOMParser</tt>
2718    and <tt>XSLTProcessor</tt> APIs.
2719  </li>
2720  <li>
2721    The ability to reload the source code and the XSLT code from within
2722    Javascript; in some browsers this is forbidden for "file:" URIs due to
2723    perceived security problems.
2724  </li>
2725</ol>
2726<t>
2727  This feature is currently tested with:
2728</t>
2729<ol>
2730  <li>Mozilla Firefox (where, to be able to reload from the local filesystem, Firefox
2731  needs to be configured with <tt>security.fileuri.strict_origin_policy</tt> set to
2732  <tt>false</tt> in <tt>about:config</tt>, see
2733  <eref target="https://developer.mozilla.org/en-US/docs/Archive/Misc_top_level/Same-origin_policy_for_file:_URIs">Mozilla documentation</eref>), and</li>
2734  <li>Google Chome (where, to be able to reload from the local filesystem, Chrome
2735  needs to be started with the command line option <tt>--allow-file-access-from-files</tt>).</li>
2736</ol> 
2737<t>
2738  Use of this feature requires the inclusion of a processing instruction that
2739  holds the name of the XML source, such as:
2740</t>
2741<figure><artwork type="example" x:lang="">
2742&lt;?rfc-ext refresh-from="draft-foo-bar-00.xml"?>
2743</artwork></figure>
2744<t>
2745  The optional parameters <tt>refresh-interval</tt>
2746  and <tt>refresh-xslt</tt> support changing the
2747  refresh interval (in seconds, defaulting to 10), and the name of the XSLT
2748  file to use (defaulting to "rfc2629.xslt").
2749</t>
2750<figure>
2751<preamble>
2752  To test this feature, start with a minimal source file like this:
2753</preamble>
2754<artwork type="example" x:lang="">
2755&lt;?xml-stylesheet type='text/xsl' href='rfc2629.xslt'?>
2756&lt;?rfc-ext refresh-from="draft-foo-bar-00.xml"?>
2757&lt;rfc docName="draft-foo-bar-00" ipr="trust200902">
2758  &lt;front>
2759    &lt;title>Title Goes Here&lt;/title>
2760    &lt;abstract>
2761      &lt;t>Abstract&lt;/t>
2762    &lt;/abstract>
2763  &lt;/front>
2764&lt;/rfc></artwork>
2765<postamble>
2766...open it in both text editor and browser, start editing and of course
2767ocasionally save. And don't forget to put <tt>rfc2629.xslt</tt> into the same
2768folder.
2769</postamble>
2770</figure>
2771</section>
2772
2773<section title="Refreshing included material in the XML source" anchor="refreshing.inclusions">
2774<t>
2775  There are many methods for automatic inclusion of material in the XML source,
2776  such as the "include" processing instruction<iref item="include PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="include"/>
2777  (see <xref target="supported.pis"/>), external entities (<xref target="examples.internalsubset"/>), or XInclude.
2778  In general, those share a common problem: the XML source file isn't
2779  self-contained, which makes it harder to submit it as Internet Draft.
2780</t>
2781<t>
2782  The tool <tt>refresh-inclusions.sh</tt> does in-place replacement: it
2783  scans the source file for inclusion directives (expressed as XML
2784  processing instructions), and refreshes the included text with data
2785  from an external file. It will not modify the source file unless included
2786  material did actually change. When it does modify the source file, it
2787  will copy the original source to a backup file.
2788</t>
2789<t>
2790  <tt>refresh-inclusions.sh</tt> can include both plain text (<tt>BEGINESCAPEDINC</tt>/<tt>ENDESCAPEDINC</tt>) and
2791  XML (<tt>BEGININC</tt>/<tt>ENDINC</tt>). The figure below was inserted
2792  using:
2793</t>
2794<figure><artwork type="example" x:lang="">
2795&lt;?BEGINESCAPEDINC refresh-inclusions.sh ?>
2796...
2797&lt;?ENDSCAPEDINC refresh-inclusions.sh ?>
2798</artwork>
2799<postamble>(note that the SP character at the end of the directive is significant)</postamble>
2800</figure>
2801<figure>
2802<preamble><tt>refresh-inclusions.sh</tt>:</preamble>
2803<artwork name="refresh-inclusions.sh" x:lang="">
2804<?BEGINESCAPEDINC refresh-inclusions.sh ?>
2805#!/bin/sh
2806# Refresh file inclusions based on XML processing instructions
2807#
2808# Copyright (c) 2006-2016, Julian Reschke (julian.reschke@greenbytes.de)
2809# All rights reserved.
2810#
2811# Redistribution and use in source and binary forms, with or without
2812# modification, are permitted provided that the following conditions are met:
2813#
2814# * Redistributions of source code must retain the above copyright notice,
2815#   this list of conditions and the following disclaimer.
2816# * Redistributions in binary form must reproduce the above copyright notice,
2817#   this list of conditions and the following disclaimer in the documentation
2818#   and/or other materials provided with the distribution.
2819# * Neither the name of Julian Reschke nor the names of its contributors
2820#   may be used to endorse or promote products derived from this software
2821#   without specific prior written permission.
2822#
2823# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
2824# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2825# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2826# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
2827# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2828# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2829# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2830# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2831# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2832# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2833# POSSIBILITY OF SUCH DAMAGE.
2834
2835expand() {
2836
2837  # remember whether we started with CRLF (assumes that we have dos2unix)
2838  CRLF=$(dos2unix -ic "$1" 2>/dev/null | tr -d ' ')
2839 
2840  cat "$1" | awk '
2841
2842  function filecontents(filename) {
2843    while (getline &lt; filename > 0) {
2844      fc[filename] = fc[filename] $0 "\n"
2845    }
2846    return fc[filename]
2847  }
2848
2849  BEGIN {
2850    includefile = "";
2851    includeescapedfile = "";
2852  }
2853 
2854  # start include (verbatim mode)
2855  /&lt;\?BEGININC .* \?>$/ {
2856    print
2857    keyword = "&lt;?BEGININC "
2858    extract = match($0, /&lt;\?BEGININC .* \?>$/)
2859    includefile = substr($0, RSTART + length(keyword),
2860                    RLENGTH - 3 - length(keyword))
2861    output = filecontents(includefile)
2862    printf("%s", output)
2863  }
2864 
2865  # start include (escape-for-XML mode)
2866  /&lt;\?BEGINESCAPEDINC .* \?>$/ {
2867    print
2868    keyword = "&lt;?BEGINESCAPEDINC "
2869    extract = match($0, /&lt;\?BEGINESCAPEDINC .* \?>$/)
2870    includeescapedfile = substr($0, RSTART + length(keyword),
2871                           RLENGTH - 3 - length(keyword))
2872    output = filecontents(includeescapedfile)
2873    # escape ampersand, less-than, and greater-than
2874    # when part of a CDATA end marker
2875    gsub(/&amp;/, "\\&amp;amp;", output)
2876    gsub(/&lt;/, "\\&amp;lt;", output)
2877    gsub(/]]&gt;/, "]]\\&amp;gt;", output)
2878    printf("%s", output)
2879  }
2880
2881  # end include (verbatim mode)
2882  /^&lt;\?ENDINC .* \?>/ {
2883    if ($2 != includefile) {
2884      printf ("unexpected ENDINC, got %s but expected %s\n", $2,
2885        includefile) >> "/dev/stderr"
2886    }
2887    includefile = "";
2888  }
2889 
2890  # end include (escape-for-XML mode)
2891  /^&lt;\?ENDESCAPEDINC .* \?>/ {
2892    if ($2 != includeescapedfile) {
2893      printf ("unexpected ENDESCAPEDINC, got %s but expected %s\n", $2,
2894        includeescapedfile) >> "/dev/stderr"
2895    }
2896    includeescapedfile = "";
2897  }
2898
2899  #default
2900  {
2901    if (includefile == "" &amp;&amp; includeescapedfile == "") {
2902      print
2903    }
2904  }
2905 
2906  END {
2907    if (includefile != "") {
2908      printf ("missing ENDINC for %s\n",
2909        includefile) >> "/dev/stderr"
2910    }
2911    if (includeescapedfile != "") {
2912      printf ("missing ENDESCAPEDINC for %s\n",
2913        includeescapedfile) >> "/dev/stderr"
2914    }
2915  }
2916 
2917  ' > $$
2918 
2919  # restore CRLF if needed
2920  if [ -n "$CRLF" ]; then
2921    FNN=$(echo "$1" | tr -d ' ')
2922    [ "$FNN" = "$CRLF" ] &amp;&amp; unix2dos -q $$
2923  fi
2924 
2925  # check for changes
2926  cmp -s "$1" $$ || (
2927    cp -v "$1" "$1".ri.bak
2928    cp $$ "$1"
2929    echo "$1" updated )
2930 
2931  rm -f $$
2932}
2933
2934[ $# -ne 0 ] || ( echo "refresh-inclusions.sh file..." >&amp;2 ; exit 2 )
2935
2936for i in $*
2937do
2938  expand $i
2939done
2940<?ENDESCAPEDINC refresh-inclusions.sh ?>
2941</artwork></figure>
2942</section>
2943
2944</section>
2945
2946 
2947
2948</middle>
2949
2950<back>
2951<references title="Informative References">
2952
2953<reference anchor='RFC2026'>
2954  <front>
2955    <title abbrev='Internet Standards Process'>The Internet Standards Process -- Revision 3</title>
2956    <author initials='S.' surname='Bradner' fullname='Scott O. Bradner'>
2957      <organization>Harvard University</organization>
2958      <address>
2959        <email>sob@harvard.edu</email>
2960      </address>
2961    </author>
2962    <date year='1996' month='October' />
2963  </front>
2964  <seriesInfo name='BCP' value='9' />
2965  <seriesInfo name='RFC' value='2026' />
2966</reference>
2967
2968<reference anchor="RFC2045">
2969  <front>
2970  <title abbrev="Internet Message Bodies">Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies</title>
2971  <author initials="N." surname="Freed" fullname="Ned Freed">
2972  <organization>Innosoft International, Inc.</organization>
2973  </author>
2974  <author initials="N.S." surname="Borenstein" fullname="Nathaniel S. Borenstein">
2975  <organization>First Virtual Holdings</organization>
2976  </author>
2977  <date month="November" year="1996"/>
2978  </front>
2979  <seriesInfo name="RFC" value="2045"/>
2980</reference>
2981
2982<reference anchor="RFC2119">
2983  <front>
2984    <title abbrev="RFC Key Words">Key words for use in RFCs to Indicate Requirement Levels</title>
2985    <author initials="S." surname="Bradner" fullname="Scott Bradner">
2986      <organization>Harvard University</organization>
2987      <address>
2988        <email>sob@harvard.edu</email>
2989      </address>
2990    </author>
2991    <date month="March" year="1997"/>
2992  </front>
2993  <seriesInfo name="BCP" value="14"/>
2994  <seriesInfo name="RFC" value="2119"/>
2995</reference>
2996
2997<reference anchor="RFC2616">
2998  <front>
2999  <title abbrev="HTTP/1.1">Hypertext Transfer Protocol -- HTTP/1.1</title>
3000  <author initials="R.T." surname="Fielding" fullname="Roy T. Fielding">
3001  <organization>University of California, Irvine, Information and Computer Science</organization>
3002  <address>
3003  <phone>+1 949 824 1715</phone>
3004  <email>fielding@ics.uci.edu</email></address></author>
3005  <author initials="J." surname="Gettys" fullname="James Gettys">
3006  <organization>World Wide Web Consortium, MIT Laboratory for Computer Science</organization>
3007  <address>
3008  <phone/>
3009  <facsimile>+1 617 258 8682</facsimile>
3010  <email>jg@w3.org</email></address></author>
3011  <author initials="J.C." surname="Mogul" fullname="Jeffrey C. Mogul">
3012  <organization>Compaq Computer Corporation, Western Research Laboratory</organization>
3013  <address>
3014  <phone/>
3015  <email>mogul@wrl.dec.com</email></address></author>
3016  <author initials="H.F." surname="Nielsen" fullname="Henrik Frystyk Nielsen">
3017  <organization>World Wide Web Consortium, MIT Laboratory for Computer Science</organization>
3018  <address>
3019  <phone/>
3020  <facsimile>+1 617 258 8682</facsimile>
3021  <email>frystyk@w3.org</email></address></author>
3022  <author initials="L." surname="Masinter" fullname="Larry Masinter">
3023  <organization>Xerox Corporation</organization>
3024  <address>
3025  <phone/>
3026  <email>masinter@parc.xerox.com</email></address></author>
3027  <author initials="P.J." surname="Leach" fullname="Paul J. Leach">
3028  <organization>Microsoft Corporation</organization>
3029  <address>
3030  <phone/>
3031  <email>paulle@microsoft.com</email></address></author>
3032  <author initials="T." surname="Berners-Lee" fullname="Tim Berners-Lee">
3033  <organization>World Wide Web Consortium, MIT Laboratory for Computer Science</organization>
3034  <address>
3035  <phone>+1 617 258 8682</phone>
3036  <facsimile/>
3037  <email>timbl@w3.org</email></address></author>
3038  <date month="June" year="1999"/>
3039  </front>
3040  <seriesInfo name="RFC" value="2616"/>
3041</reference>
3042
3043<reference anchor='RFC2629'>
3044  <front>
3045    <title>Writing I-Ds and RFCs using XML</title>
3046    <author initials='M.T.' surname='Rose' fullname='Marshall T. Rose'>
3047      <organization>Invisible Worlds, Inc.</organization>
3048      <address>
3049        <phone>+1 415 695 3975</phone>
3050        <email>mrose@not.invisible.net</email>
3051        <uri>http://invisible.net/</uri>
3052      </address>
3053    </author>
3054    <date month='June' year='1999' />
3055  </front>
3056  <seriesInfo name='RFC' value='2629' />
3057</reference>
3058
3059<reference anchor='RFC2648'>
3060  <front>
3061    <title>A URN Namespace for IETF Documents</title>
3062    <author initials='R.' surname='Moats' fullname='Ryan Moats'>
3063      <organization>AT&amp;T</organization>
3064      <address>
3065      <email>jayhawk@att.com</email></address>
3066    </author>
3067    <date month='August' year='1999' />
3068  </front>
3069  <seriesInfo name='RFC' value='2648' />
3070</reference>
3071
3072<reference anchor='RFC2731'>
3073  <front>
3074    <title>Encoding Dublin Core Metadata in HTML</title>
3075    <author initials='J.A.' surname='Kunze' fullname='John A. Kunze'>
3076      <organization>University of California, San Francisco,  Center for Knowledge Management</organization>
3077      <address>
3078        <facsimile>+1 415 476 4653</facsimile>
3079        <email>jak@ckm.ucsf.edu</email>
3080      </address>
3081    </author>
3082    <date month='December' year='1999' />
3083  </front>
3084  <seriesInfo name='RFC' value='2731' />
3085</reference>
3086
3087<reference anchor='DC-HTML' target="http://dublincore.org/documents/2008/08/04/dc-html/">
3088  <front>
3089    <title>Expressing Dublin Core metadata using HTML/XHTML meta and link elements</title>
3090    <author initials='P.' surname='Johnston' fullname='Pete Johnston'>
3091      <organization>Eduserv Foundation</organization>
3092      <address>
3093        <email>pete.johnston@eduserv.org.uk</email>
3094      </address>
3095    </author>
3096    <author initials='A.' surname='Powell' fullname='Andy Powell'>
3097      <organization>Eduserv Foundation</organization>
3098      <address>
3099        <email>andy.powell@eduserv.org.uk</email>
3100      </address>
3101    </author>
3102    <date month='August' year='2008' />
3103  </front>
3104  <seriesInfo name='Dublin Core Metadata Initiative' value='' />
3105</reference>
3106
3107<reference anchor="RFC5234">
3108  <front>
3109    <title abbrev="ABNF for Syntax Specifications">Augmented BNF for Syntax Specifications: ABNF</title>
3110    <author initials="D." surname="Crocker" fullname="Dave Crocker" role="editor">
3111      <organization>Brandenburg InternetWorking</organization>
3112      <address>
3113      <phone>+1.408.246.8253</phone>
3114      <email>dcrocker@bbiw.net</email></address> 
3115    </author>
3116    <author initials="P." surname="Overell" fullname="Paul Overell">
3117      <organization>THUS plc.</organization>
3118      <address>
3119      <email>paul.overell@thus.net</email></address>
3120    </author>
3121    <date month="January" year="2008"/>
3122  </front>
3123  <seriesInfo name="STD" value="68"/>
3124  <seriesInfo name="RFC" value="5234"/>
3125</reference>
3126
3127<reference anchor='HTML5'
3128           target='http://www.w3.org/TR/2014/REC-html5-20141028/'>
3129  <front>
3130    <title>HTML5</title>
3131    <author fullname='Ian Hickson' surname='Hickson' initials='I.'/>
3132    <author fullname='Robin Berjon' surname='Berjon' initials='R.'/>
3133    <author fullname='Steve Faulkner' surname='Faulkner' initials='S.'/>
3134    <author fullname='Travis Leithead' surname='Leithead' initials='T.'/>
3135    <author fullname='Erika Doyle Navara' surname='Doyle Navara' initials='E.'/>
3136    <author fullname='Edward O&apos;Connor' surname='O&apos;Connor' initials='E.'/>
3137    <author fullname='Silvia Pfeiffer' surname='Pfeiffer' initials='S.'/>
3138    <date year='2014' month='October' day='28'/>
3139  </front>
3140  <seriesInfo name='W3C Recommendation' value='REC-html5-20141028'/>
3141  <annotation>
3142    Latest version available at
3143    <eref target='http://www.w3.org/TR/html5/'/>.
3144  </annotation>
3145</reference>
3146
3147<reference anchor='XHTML2'
3148           target='http://www.w3.org/TR/2010/NOTE-xhtml2-20101216'>
3149  <front>
3150    <title>XHTML(tm) 2.0</title>
3151    <author fullname='Mark Birbeck' surname='Birbeck' initials='M.'/>
3152    <author fullname='Markus Gylling' surname='Gylling' initials='M.'/>
3153    <author fullname='Shane McCarron' surname='McCarron' initials='S.'/>
3154    <author fullname='Steven Pemberton' surname='Pemberton' initials='S.'/>
3155    <author fullname='Jonny Axelsson' surname='Axelsson' initials='J.'/>
3156    <author fullname='Micah Dubinko' surname='Dubinko' initials='M.'/>
3157    <author fullname='Beth Epperson' surname='Epperson' initials='B.'/>
3158    <author fullname='Masayasu Ishikawa' surname='Ishikawa' initials='M.'/>
3159    <author fullname='Ann Navarro' surname='Navarro' initials='A.'/>
3160    <date year='2010' month='December' day='16'/>
3161  </front>
3162  <seriesInfo name='W3C Group Note' value='NOTE-xhtml2-20101216'/>
3163  <annotation>
3164    Latest version available at
3165    <eref target='http://www.w3.org/TR/xhtml2'/>.
3166  </annotation>
3167</reference>
3168
3169<reference anchor='XSL-FO'
3170           target='http://www.w3.org/TR/2006/REC-xsl11-20061205/'>
3171  <front>
3172    <title>Extensible Stylesheet Language (XSL) Version 1.1</title>
3173    <author fullname='Anders Berglund' surname='Berglund' initials='A.'/>
3174    <date year='2006' month='December' day='05'/>
3175  </front>
3176  <seriesInfo name='W3C Recommendation' value='REC-xsl11-20061205'/>
3177  <annotation>
3178    Latest version available at
3179    <eref target='http://www.w3.org/TR/xsl11/'/>.
3180  </annotation>
3181</reference>
3182
3183<reference anchor="RNC" target="http://www.oasis-open.org/committees/relax-ng/compact-20021121.html">
3184  <front>
3185    <title>RELAX NG Compact Syntax</title>
3186    <author initials="J." surname="Clark" fullname="James Clark">
3187      <organization/>
3188      <address>
3189        <email>jjc@jclark.com</email>
3190      </address>
3191    </author>
3192    <date month="Nov" day="21" year="2002" />
3193  </front>
3194  <seriesInfo name="OASIS" value=""/>
3195</reference>
3196
3197<reference anchor='BCP97'>
3198  <front>
3199    <title>Handling Normative References to Standards-Track Documents</title>
3200    <author initials='J.' surname='Klensin' fullname='J. Klensin'>
3201      <organization />
3202      <address>
3203        <email>klensin+ietf@jck.com</email>
3204      </address>
3205    </author>
3206    <author initials='S.' surname='Hartman' fullname='S. Hartman'>
3207      <organization>MIT</organization>
3208      <address>
3209        <email>hartmans-ietf@mit.edu</email>
3210      </address>
3211    </author>
3212    <date year='2007' month='June' />
3213  </front>
3214  <seriesInfo name='BCP' value='97' />
3215  <seriesInfo name='RFC' value='4897' />
3216</reference>
3217
3218<reference anchor='XML'
3219           target='http://www.w3.org/TR/2008/REC-xml-20081126/'>
3220  <front>
3221    <title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title>
3222    <author fullname='Tim Bray' surname='Bray' initials='T.'/>
3223    <author fullname='Jean Paoli' surname='Paoli' initials='J.'/>
3224    <author fullname='Michael Sperberg-McQueen' surname='Sperberg-McQueen' initials='M.'/>
3225    <author fullname='Eve Maler' surname='Maler' initials='E.'/>
3226    <author fullname='Francois Yergeau' surname='Yergeau' initials='F.'/>
3227    <date year='2008' month='November' day='26'/>
3228  </front>
3229  <seriesInfo name='W3C Recommendation' value='REC-xml-20081126'/>
3230  <annotation>
3231    Latest version available at
3232    <eref target='http://www.w3.org/TR/xml'/>.
3233  </annotation>
3234</reference>
3235
3236<reference anchor="RFC7230">
3237  <front>
3238    <title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
3239    <author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor">
3240      <organization abbrev="Adobe">Adobe Systems Incorporated</organization>
3241      <address><email>fielding@gbiv.com</email></address>
3242    </author>
3243    <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor">
3244      <organization abbrev="greenbytes">greenbytes GmbH</organization>
3245      <address><email>julian.reschke@greenbytes.de</email></address>
3246    </author>
3247    <date month="June" year="2014"/>
3248  </front>
3249  <seriesInfo name="RFC" value="7230"/>
3250</reference>
3251
3252<reference anchor="RFC7749">
3253  <x:source href="rfc7749.xml" basename="rfc7749"/>
3254</reference>
3255
3256<reference anchor="RFC7991bis-01">
3257  <x:source href="draft-iab-rfc7991bis-01.xml" basename="draft-iab-rfc7991bis-01"/>
3258</reference>
3259
3260<reference anchor="RFC7991bis">
3261  <x:source href="draft-iab-rfc7991bis-03.xml" basename="draft-iab-rfc7991bis-03"/>
3262</reference>
3263
3264<reference anchor='V3IMPNOTES'>
3265  <?rfc-ext internet-draft-uri="https://www.ietf.org/archive/id/{internet-draft}.html" ?>
3266  <front>
3267    <title>Implementation notes for RFC7991, "The 'xml2rfc' Version 3 Vocabulary"</title>
3268    <author initials='H' surname='Levkowetz' fullname='Henrik Levkowetz'/>
3269    <date month='December' day='15' year='2020' />
3270  </front>
3271  <seriesInfo name='Internet-Draft' value='draft-levkowetz-xml2rfc-v3-implementation-notes-12' />
3272</reference>
3273
3274</references>
3275
3276  <section title="RELAX NG Compact Schema" anchor="grammar">
3277  <iref item="Grammar" primary="true"/>
3278  <iref item="Schema" primary="true"/>
3279  <iref item="RELAX NG Compact Schema" primary="true"/>
3280  <t>
3281    The RelaxNG schema (<xref target="RNC"/>) below can be used to validate
3282    input documents (for instance, with <eref target="http://www.thaiopensource.com/relaxng/jing.html">Jing</eref>).
3283  </t>
3284  <t>
3285    <em>Note that this is work in progress, and doesn't yet cover all
3286    extensions completely.</em>
3287  </t>
3288  <figure>
3289    <artwork type="application/relax-ng-compact-syntax" name="rfc2629-ext.rnc" x:extraction-note="# Automatically extracted from rfc2629xslt.xml. DO NOT EDIT!&#10;">
3290<em># WORK IN PROGRESS! PLEASE REPORT PROBLEMS TO THE AUTHOR.</em>
3291
3292<em># Define our extension namespace</em>
3293namespace x = "http://purl.org/net/xml2rfc/ext"
3294
3295<em># Define GRDDL namespace</em>
3296namespace grddl = "http://www.w3.org/2003/g/data-view#"
3297
3298<em># Define RDF namespace</em>
3299namespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3300
3301<em># Define SVG namespace</em>
3302namespace svg = "http://www.w3.org/2000/svg"
3303
3304<em># Define XInclude namespace</em>
3305namespace xi = "http://www.w3.org/2001/XInclude"
3306
3307<em># Include rfc2629bis RNC grammar</em>
3308include "rfc2629.rnc" {
3309 
3310  <em># Redefine &lt;address> to allow multiple email addresses</em>
3311  address =
3312    element address {
3313      attlist.address,
3314      postal?,
3315      phone?,
3316      facsimile?,
3317      email*,
3318      uri?
3319  }
3320
3321  <em># Redefine &lt;annotation> to allow more markup</em>
3322  annotation =
3323    element annotation {
3324      attlist.annotation,
3325      (TEXT
3326        | xref
3327        | eref
3328        | iref
3329        | cref
3330        | spanx
3331        <strong>| <x:ref>v3_tt</x:ref></strong>
3332        )*
3333    }
3334
3335  <em># Redefine &lt;artwork> to allow markup</em>
3336  artwork =
3337    element artwork {
3338      attlist.artwork,
3339      attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
3340      ( <strong><x:ref>v3_svg</x:ref> |
3341        </strong>(TEXT
3342          <strong>| eref</strong>
3343          <strong>| iref</strong>
3344          <strong>| spanx</strong>
3345          <strong>| xref</strong>
3346          <strong>| <x:ref>v3_em</x:ref></strong>
3347          <strong>| <x:ref>v3_strong</x:ref></strong>
3348          <strong>| <x:ref>x_abnf-char-sequence</x:ref></strong>
3349          <strong>| <x:ref>x_bb</x:ref></strong>
3350          <strong>| <x:ref>x_bc</x:ref></strong>
3351          <strong>| <x:ref>x_bcp14</x:ref></strong>
3352          <strong>| <x:ref>x_bt</x:ref></strong>
3353          <strong>| <x:ref>x_highlight</x:ref></strong>
3354          <strong>| <x:ref>x_length-of</x:ref></strong>
3355          <strong>| <x:ref>x_parse-xml</x:ref></strong>
3356          <strong>| <x:ref>x_ref</x:ref></strong>
3357          <strong>| <x:ref>x_span</x:ref></strong>
3358          <strong>| <x:ref>x_x</x:ref></strong>)*
3359        )
3360    }
3361
3362  <em># Redefine &lt;back> to allow displayreference</em>
3363  back =
3364    element back {
3365      attlist.back,
3366      <strong><x:ref>v3_displayreference</x:ref>*</strong>,
3367      references*,
3368      section*
3369    }
3370
3371  <em># Redefine &lt;c> to allow our extension elements</em>
3372  c =
3373    element c {
3374      attlist.c,
3375      (TEXT
3376        | xref
3377        | eref
3378        | iref
3379        | cref
3380        | spanx
3381        <strong>| <x:ref>v3_em</x:ref></strong>
3382        <strong>| <x:ref>v3_strong</x:ref></strong>
3383        <strong>| <x:ref>v3_tt</x:ref></strong>
3384        <strong>| <x:ref>x_ref</x:ref></strong>)*
3385    }
3386
3387  <em># Redefine &lt;cref> to allow more child elements</em>
3388  cref =
3389    element cref {
3390      attlist.cref,
3391      (TEXT
3392        | eref
3393        | xref
3394        | <x:ref>x_ref</x:ref>)*
3395    }
3396
3397  <em># Redefine &lt;date> to allow text content (see <xref target="ext-rfc2629.date"/>)</em>
3398  date =
3399    element date {
3400      attlist.date,
3401      TEXT?
3402    }
3403
3404  <em># Redefine &lt;figure> to allow more child elements</em>
3405  figure =
3406    element figure {
3407      attlist.figure,
3408      attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
3409      <strong><x:ref>v3_name</x:ref>?</strong>,
3410      iref*,
3411      preamble?,
3412      (artwork
3413        | <strong><x:ref>v3_sourcecode</x:ref></strong>
3414        | <strong><x:ref>v3_artset</x:ref></strong>
3415      ),
3416      postamble?
3417    }
3418
3419  <em># Redefine &lt;front> to allow boilerplate</em>
3420  front =
3421    element front {
3422      attlist.front,
3423      title,
3424      <strong>seriesInfo</strong>*,
3425      author+,
3426      date?,
3427      area*,
3428      workgroup*,
3429      keyword*,
3430      abstract?,
3431      note*,
3432      <strong><x:ref>v3_boilerplate</x:ref>?</strong>
3433    }
3434 
3435  <em># Redefine &lt;list> element to allow &lt;x:<x:ref>lt</x:ref>> child elements</em>
3436  \list =
3437    element list {
3438      attlist.list,
3439      (t+ <strong>| <x:ref>x_lt</x:ref>+</strong>)
3440    }   
3441   
3442  <em># Redefine &lt;note> to allow &lt;name> and not require title attribute</em>
3443  note =
3444    element note {
3445      attlist.x_note,
3446      <x:ref>v3_name</x:ref>?,
3447      (<x:ref>v3_dl</x:ref>
3448        <strong>| <x:ref>v3_ol</x:ref></strong>
3449        | t
3450        <strong>| <x:ref>v3_ul</x:ref></strong>)+     
3451    }
3452
3453  <em># Redefine &lt;preamble> to allow our extension elements</em>
3454  preamble =
3455    element preamble {
3456      attlist.preamble,
3457      (TEXT
3458        | xref
3459        | eref
3460        | iref
3461        | cref
3462        | spanx
3463        <strong>| <x:ref>v3_em</x:ref></strong>
3464        <strong>| <x:ref>v3_strong</x:ref></strong>
3465        <strong>| <x:ref>v3_tt</x:ref></strong>
3466        <strong>| <x:ref>x_anchor-alias</x:ref></strong>
3467        <strong>| <x:ref>x_bcp14</x:ref></strong>)*
3468  }
3469
3470  <em># Redefine &lt;postal> to allow &lt;postalLine> and new detail elements</em>
3471  postal =
3472    element postal {
3473      (
3474        (city
3475          | code
3476          | country
3477          | <x:ref>v3_cityarea</x:ref>
3478          | <x:ref>v3_extaddr</x:ref>
3479          | <x:ref>v3_pobox</x:ref>
3480          | <x:ref>v3_sortingcode</x:ref>
3481          | region
3482          | street)*
3483          | (<x:ref>v3_postalLine</x:ref>+,
3484          country?
3485          ))
3486    }
3487
3488  <em># Redefine &lt;postamble> to allow our extension elements</em>
3489  postamble =
3490    element postamble {
3491      attlist.postamble,
3492      (TEXT
3493        | xref
3494        | eref
3495        | iref
3496        | cref
3497        | spanx
3498        <strong>| <x:ref>v3_em</x:ref></strong>
3499        <strong>| <x:ref>v3_strong</x:ref></strong>
3500        <strong>| <x:ref>v3_tt</x:ref></strong>
3501        <strong>| <x:ref>x_bcp14</x:ref></strong>)*
3502    }
3503
3504  <em># Redefine &lt;reference> to allow our extension elements</em>
3505  reference =
3506    element reference {
3507      attlist.reference,
3508      (
3509        (
3510          front,
3511          <strong><x:ref>v3_refcontent</x:ref>?</strong>,
3512          seriesInfo*,
3513          <strong><x:ref>x_prose</x:ref>?</strong>,
3514          <strong><x:ref>v3_refcontent</x:ref>?</strong>,
3515          format*,
3516          annotation*,
3517          <strong><x:ref>x_source</x:ref>?</strong>
3518        ) | (
3519          <strong><x:ref>v3_refcontent</x:ref>?</strong>,
3520          seriesInfo*,
3521          <strong><x:ref>x_prose</x:ref>?</strong>,
3522          <strong><x:ref>v3_refcontent</x:ref>?</strong>,
3523          format*,
3524          annotation*,
3525          <strong><x:ref>x_source</x:ref></strong>
3526        )
3527      )
3528    }
3529
3530  <em># Redefine &lt;references> to allow extension elements and attributes</em>
3531  references =
3532    element references {
3533      attribute title { text }?,
3534      attribute anchor { xsd:ID }?,
3535      attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
3536      <strong><x:ref>v3_name</x:ref>?</strong>,
3537      (references+ # (see <xref target="V3IMPNOTES" x:sec="3.1.16"/>)
3538       |
3539        (reference
3540         | <strong><x:ref>v3_referencegroup</x:ref></strong>
3541         | <x:ref>xi_include</x:ref>)+
3542       )
3543    }
3544
3545  <em># Redefine &lt;rfc> to allow our extension elements</em>
3546  rfc =
3547    element rfc {
3548      attribute xml:lang { text }?,
3549      attribute grddl:transformation { ATEXT }?,
3550      attribute x:maturity-level { "proposed" | "draft" | "internet" }?,
3551      attribute category { "std" | "bcp" | "info" | "exp" | "historic" }?,
3552      attribute consensus { "false" | "true" | "no" | "yes" }?,
3553      attribute docName { text }?,
3554      attribute indexInclude { "true" | "false" }?, # (see <xref target="RFC7991bis" x:rel="#element.rfc.attribute.indexInclude"/>)
3555      attribute ipr {
3556        "full2026"
3557        | "noDerivativeWorks2026"
3558        | "none"
3559        | "full3667"
3560        | "noModification3667"
3561        | "noDerivatives3667"
3562        | "full3978"
3563        | "noModification3978"
3564        | "noDerivatives3978"
3565        | "trust200811"
3566        | "noModificationTrust200811"
3567        | "noDerivativesTrust200811"
3568        | "trust200902"
3569        | "noModificationTrust200902"
3570        | "noDerivativesTrust200902"
3571        | "pre5378Trust200902"
3572      }?,
3573      attribute iprExtract { xsd:IDREF }?,
3574      attribute number { text }?,
3575      attribute obsoletes { text }?,
3576      attribute tocDepth { text }?, # (see <xref target="RFC7991bis" x:rel="#element.rfc.attribute.tocDepth"/>)
3577      attribute tocInclude { "true" | "false" }?, # (see <xref target="RFC7991bis" x:rel="#element.rfc.attribute.tocInclude"/>)
3578      attribute scripts { text }?, # (see <xref target="RFC7991bis" x:rel="#prepatts"/>)
3579      attribute seriesNo { text }?,
3580      attribute sortRefs { "true" | "false" }?, # (see <xref target="RFC7991bis" x:rel="#element.rfc.attribute.sortRefs"/>)
3581      attribute submissionType { "IETF" | "IAB" | "IRTF" | "independent" }?,
3582      attribute symRefs { "true" | "false" }?, # (see <xref target="RFC7991bis" x:rel="#element.rfc.attribute.symRefs"/>)
3583      attribute updates { text }?,
3584      attribute version { text }?, # (see <xref target="RFC7991bis" x:rel="#element.rfc.attribute.symRefs"/>)
3585      <strong><x:ref>v3_link</x:ref>*,</strong>
3586      <strong><x:ref>x_link</x:ref>*,</strong>
3587      <strong><x:ref>x_feedback</x:ref>?,</strong>
3588      <strong><x:ref>x_assign-section-number</x:ref>*,</strong>
3589      front,
3590      middle,
3591      back?
3592    }
3593
3594  <em># Redefine &lt;section> to allow new elements</em>
3595  section =
3596    element section {
3597      attlist.x_section,
3598      (t
3599       | artwork
3600       | figure
3601       | texttable
3602       | iref
3603       | section
3604       <strong>| <x:ref>v3_artset</x:ref></strong>
3605       <strong>| <x:ref>v3_aside</x:ref></strong>
3606       <strong>| <x:ref>v3_blockquote</x:ref></strong>
3607       <strong>| <x:ref>v3_contact</x:ref></strong>
3608       <strong>| <x:ref>v3_dl</x:ref></strong>
3609       <strong>| <x:ref>v3_name</x:ref></strong>
3610       <strong>| <x:ref>v3_ol</x:ref></strong>
3611       <strong>| <x:ref>v3_sourcecode</x:ref></strong>
3612       <strong>| <x:ref>v3_table</x:ref></strong>
3613       <strong>| <x:ref>v3_ul</x:ref></strong>
3614       <strong>| <x:ref>x_anchor-alias</x:ref></strong>
3615       <strong>| <x:ref>x_blockquote</x:ref></strong>
3616       <strong>| <x:ref>x_contributor</x:ref></strong>
3617       <strong>| <x:ref>x_include-author</x:ref></strong>
3618       <strong>| <x:ref>x_note</x:ref></strong>
3619       <strong>| <x:ref>x_u-map</x:ref></strong>
3620       <strong>| <x:ref>rdf_Description</x:ref></strong>)*
3621    }
3622
3623  <em># Redefine &lt;spanx> to allow some markup</em>
3624  spanx =
3625    element spanx {
3626      attlist.spanx,
3627      (TEXT
3628        <strong>| iref</strong>
3629        <strong>| xref</strong>
3630        <strong>| <x:ref>x_ref</x:ref></strong>)*
3631    }
3632
3633  <em># Redefine &lt;t> to allow our extension elements</em>
3634  t =
3635    element t {
3636      attlist.t,
3637      (TEXT
3638       | \list
3639       | figure
3640       | xref
3641       | eref
3642       | iref
3643       | cref
3644       | spanx
3645       | vspace
3646       <strong>| <x:ref>v3_bcp14</x:ref></strong>
3647       <strong>| <x:ref>v3_br</x:ref></strong>
3648       <strong>| <x:ref>v3_contact</x:ref></strong>
3649       <strong>| <x:ref>v3_em</x:ref></strong>
3650       <strong>| <x:ref>v3_relref</x:ref></strong>
3651       <strong>| <x:ref>v3_strong</x:ref></strong>
3652       <strong>| <x:ref>v3_sub</x:ref></strong>
3653       <strong>| <x:ref>v3_sup</x:ref></strong>
3654       <strong>| <x:ref>v3_tt</x:ref></strong>
3655       <strong>| <x:ref>v3_u</x:ref></strong>
3656       <strong>| <x:ref>x_abnf-char-sequence</x:ref></strong>
3657       <strong>| <x:ref>x_anchor-alias</x:ref></strong>
3658       <strong>| <x:ref>x_bcp14</x:ref></strong>
3659       <strong>| <x:ref>x_dfn</x:ref></strong>
3660       <strong>| <x:ref>x_h</x:ref></strong>
3661       <strong>| <x:ref>x_q</x:ref></strong>
3662       <strong>| <x:ref>x_ref</x:ref></strong>
3663       <strong>| <x:ref>x_span</x:ref></strong>
3664       <strong>| <x:ref>x_sup</x:ref></strong>)*
3665    }
3666
3667  <em># Redefine &lt;title> to allow &lt;br></em>
3668  title =
3669    element title {
3670      attlist.title,
3671      (TEXT
3672        <strong>| <x:ref>v3_br</x:ref></strong>)*
3673    }
3674
3675  <em># Redefine &lt;xref> to allow some markup</em>
3676  xref =
3677    element xref {
3678      attlist.xref,
3679      (TEXT
3680        <strong>| <x:ref>v3_em</x:ref></strong>
3681        <strong>| <x:ref>v3_strong</x:ref></strong>
3682        <strong>| <x:ref>v3_sub</x:ref></strong>
3683        <strong>| <x:ref>v3_sup</x:ref></strong>
3684        <strong>| <x:ref>v3_tt</x:ref></strong>)*
3685    }
3686}
3687
3688<em># Extend attribute set for &lt;abstract></em>
3689attlist.abstract &amp;=
3690  attribute anchor { xsd:ID }?, # (see <xref target="RFC7991bis" x:rel="#element.abstract.attribute.anchor"/>)
3691  attribute pn { text }? # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
3692
3693<em># Allow extension attributes on &lt;artwork> (<xref target="ext-rfc2629.artwork"/>)</em>
3694attlist.artwork &amp;=
3695  attribute anchor { xsd:ID }?,
3696  attribute originalSrc { text }?, # (see <xref target="RFC7991bis" x:rel="#prepatts"/>)
3697  attribute x:indent-with { ATEXT }?,
3698  attribute x:lang { "" }?,
3699  attribute x:is-code-component { "no" | "yes" }?
3700
3701<em># Allow anchor and x:annotation attributes on &lt;author></em>
3702attlist.author &amp;=
3703  attribute asciiFullname { ATEXT }?,
3704  attribute asciiInitials { ATEXT }?,
3705  attribute asciiSurname { ATEXT }?,
3706  attribute anchor { xsd:ID }?,
3707  attribute x:annotation { ATEXT }?
3708 
3709<em># Extend attribute set for &lt;c></em>
3710attlist.c &amp;=
3711  attribute anchor { xsd:ID }?
3712
3713<em># Extend attribute set for &lt;city></em>
3714attlist.city &amp;=
3715  attribute ascii { ATEXT }?
3716
3717<em># Extend attribute set for &lt;code></em>
3718attlist.code &amp;=
3719  attribute ascii { ATEXT }?
3720
3721<em># Extend attribute set for &lt;country></em>
3722attlist.country &amp;=
3723  attribute ascii { ATEXT }?
3724
3725<em># Extend attribute set for &lt;cref> (see <xref target="RFC7991bis" x:fmt="of" x:rel="#element.cref.attribute.display"/>)</em>
3726attlist.cref &amp;=
3727  attribute display { "false" | "true" }?
3728
3729<em># Extend attribute set for &lt;date> (see <xref target="ext-rfc2629.date"/>)</em>
3730attlist.date &amp;=
3731  attribute x:include-day { "false" | "true" }?
3732
3733<em># Extend attribute set for &lt;eref> (see <xref target="ext-rfc2629.eref"/>)</em>
3734attlist.eref &amp;=
3735  attribute brackets { "none" | "angle" }?
3736
3737<em># Extend attribute set for &lt;iref> (see <xref target="ext-rfc2629.iref"/>)</em>
3738attlist.iref &amp;=
3739  attribute x:for-anchor { ATEXT }?
3740
3741<em># Extend attribute set for &lt;list> (see <xref target="ext-rfc2629.list"/>)</em>
3742attlist.list &amp;=
3743  attribute x:indent { ATEXT }?
3744
3745<em># Extend/Relax attribute set for &lt;note></em>
3746attlist.x_note &amp;=
3747  attribute anchor { xsd:ID }?,
3748  attribute title { ATEXT }?,
3749  attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
3750  attribute removeInRFC { "false" | "true" }? # see <xref target="v3.section.removeInRFC"/>
3751
3752<em># Extend attribute set for &lt;preamble></em>
3753attlist.preamble &amp;=
3754  attribute anchor { xsd:ID }?
3755
3756<em># Extend attribute set for &lt;organization></em>
3757attlist.organization &amp;=
3758  attribute ascii { ATEXT }?,
3759  attribute showOnFrontPage { "false" | "true" }?
3760
3761<em># Extend attribute set for &lt;reference></em>
3762attlist.reference &amp;=
3763  attribute quoteTitle { "false" | "true" }?, # (see <xref target="v3.reference.quoteTitle"/>)
3764  attribute xml:base { text }? # (see <xref target="RFC7991bis" x:rel="#elements"/>)
3765
3766<em># Extend attribute set for &lt;references></em>
3767attlist.references &amp;=
3768  attribute pn { text }? # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
3769
3770<em># Extend attribute set for &lt;region></em>
3771attlist.region &amp;=
3772  attribute ascii { ATEXT }?
3773
3774<em># Extend/Relax attribute set for &lt;section> (see <xref target="ext-rfc2629.section"/>)</em>
3775attlist.x_section &amp;=
3776  attribute anchor { xsd:ID }?,
3777  attribute title { ATEXT }?,
3778  attribute toc { "include" | "exclude" | "default" }?,
3779  attribute numbered { "false" | "true" }?, # see <xref target="v3.section.numbered"/>
3780  attribute removeInRFC { "false" | "true" }?, # see <xref target="v3.section.removeInRFC"/>
3781  attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
3782  attribute x:fixed-section-number { ATEXT }?
3783
3784<em># Allow anchor attribute on &lt;spanx></em>
3785attlist.spanx &amp;=
3786  attribute anchor { xsd:ID }?
3787
3788<em># Extend attribute set for &lt;street></em>
3789attlist.street &amp;=
3790  attribute ascii { ATEXT }?
3791
3792<em># Extend attribute set for &lt;c> (see <xref target="ext-rfc2629.iref"/>)</em>
3793attlist.t &amp;=
3794  attribute indent { text }?,
3795  attribute keepWithNext { text }?,
3796  attribute keepWithPrevious { text }?,
3797  attribute pn { text }? # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
3798
3799<em># Extend attribute set for &lt;texttable></em>
3800attlist.texttable &amp;=
3801  attribute x:caption-side { ATEXT }?
3802
3803<em># Extend attribute set for &lt;title></em>
3804attlist.title &amp;=
3805  attribute ascii { ATEXT }?,
3806  attribute x:quotes { "true" | "false" }? # (deprecated, see <xref target="v3.reference.quoteTitle"/>)
3807
3808<em># Allow annotation attribute on &lt;uri></em>
3809attlist.uri &amp;=
3810  attribute x:annotation { ATEXT }?
3811
3812<em># Extend attribute set for &lt;xref> (see <xref target="ext-rfc2629.xref"/>)</em>
3813attlist.xref &amp;=
3814  attribute derivedContent { text }?, # (see <xref target="RFC7991bis" x:rel="#prepatts"/>)
3815  attribute x:fmt  { "()" | "," | "of" | "number" | "sec" |
3816                     "none" }?,
3817  attribute x:rel  { ATEXT }?,
3818  attribute x:sec  { ATEXT }?,
3819  attribute relative  { ATEXT }?,
3820  attribute section  { ATEXT }?,
3821  attribute sectionFormat  { "bare" | "comma" | "of" | "parens" }?
3822 
3823
3824<em anchor="v3_artset"><iref item="artset V3 Extension Element"/><iref item="V3 Extension Elements" subitem="artset"
3825/># Set of artwork (see <xref target="v3.artset"/>)</em>
3826<x:ref>v3_artset</x:ref> =
3827  element artset {
3828    attribute anchor { xsd:ID }?,
3829    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
3830    artwork+
3831  }
3832
3833<em anchor="v3_aside"><iref item="aside V3 Extension Element"/><iref item="V3 Extension Elements" subitem="aside"
3834/># Side Note (see <xref target="v3.aside"/>)</em>
3835<x:ref>v3_aside</x:ref> =
3836  element aside {
3837    attribute anchor { xsd:ID }?,
3838    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
3839    (artwork
3840      | figure
3841      | iref
3842      | t
3843      | <x:ref>v3_blockquote</x:ref>
3844      | <x:ref>v3_dl</x:ref>
3845      | <x:ref>v3_ol</x:ref>
3846      | <x:ref>v3_table</x:ref>
3847      | <x:ref>v3_ul</x:ref>)*
3848  }
3849
3850<em anchor="v3_bcp14"><iref item="bcp14 V3 Extension Element"/><iref item="V3 Extension Elements" subitem="bcp14"
3851/># BCP14/RFC2119 keywords (see <xref target="v3.bcp14"/>)</em>
3852<x:ref>v3_bcp14</x:ref> =
3853  element bcp14 {
3854    TEXT
3855  }
3856
3857<em anchor="v3_blockquote"><iref item="blockquote V3 Extension Element"/><iref item="V3 Extension Elements" subitem="blockquote"
3858/># Blockquote (see <xref target="v3.blockquote"/>)</em>
3859<x:ref>v3_blockquote</x:ref> =
3860  element blockquote {
3861    attribute anchor { xsd:ID }?,
3862    attribute cite { URI }?,
3863    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
3864    attribute quotedFrom { ATEXT }?,
3865    (
3866      (artwork
3867        | v3_dl
3868        | figure
3869        | v3_ol
3870        | v3_sourcecode
3871        | t
3872        | v3_ul)+
3873    |
3874      (TEXT
3875        | v3_bcp14
3876        | cref
3877        | v3_em
3878        | eref
3879        | iref
3880        | v3_strong
3881        | v3_sub
3882        | v3_sup
3883        | v3_tt
3884        | xref)+
3885    )
3886  }
3887
3888<em anchor="v3_boilerplate"><iref item="boilerplate V3 Extension Element"/><iref item="V3 Extension Elements" subitem="boilerplate"
3889/># Boilerplate (see <xref target="v3.blockquote"/>)</em>
3890<x:ref>v3_boilerplate</x:ref> =
3891  element boilerplate {
3892    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
3893    section+
3894  }
3895
3896<em anchor="v3_br"><iref item="em V3 Extension Element"/><iref item="V3 Extension Elements" subitem="br"
3897/># Forced Line Break (see <xref target="v3.br"/>)</em>
3898<x:ref>v3_br</x:ref> =
3899  element br {
3900    empty
3901  }
3902
3903<em anchor="v3_cityarea"><iref item="cityarea V3 Extension Element"/><iref item="V3 Extension Elements" subitem="cityarea"
3904/># (see <xref target="v3.cityarea"/>)</em>
3905<x:ref>v3_cityarea</x:ref> =
3906  element cityarea {
3907    attribute ascii { ATEXT }?,
3908    TEXT
3909  }
3910
3911<em anchor="v3_contact"><iref item="contact V3 Extension Element"/><iref item="V3 Extension Elements" subitem="contact"
3912/># (see <xref target="v3.contact"/>)</em>
3913<x:ref>v3_contact</x:ref> =
3914  element contact {
3915    attribute initials { text }?,
3916    attribute asciiInitials { text }?,
3917    attribute surname { text }?,
3918    attribute asciiSurname { text }?,
3919    attribute fullname { text }?,
3920    attribute asciiFullname { text }?,
3921    organization?,
3922    address?
3923  }
3924
3925<em anchor="v3_displayreference"><iref item="displayreference V3 Extension Element"/><iref item="V3 Extension Elements" subitem="displayreference"
3926/># Mapping of reference names to display names (see <xref target="v3.displayreference"/>)</em>
3927<x:ref>v3_displayreference</x:ref> =
3928  element displayreference {
3929    attribute target { xsd:IDREF },
3930    attribute to { ATEXT }
3931  }
3932
3933<em anchor="v3_dd"><iref item="dd V3 Extension Element"/><iref item="V3 Extension Elements" subitem="dd"
3934/># Definition List Description Element (see <xref target="v3.dd"/>)</em>
3935<x:ref>v3_dd</x:ref> =
3936  element dd {
3937    attribute anchor { xsd:ID }?,
3938    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
3939    ((<x:ref>v3_artset</x:ref>
3940      | artwork
3941      | figure
3942      | t
3943      | <x:ref>v3_aside</x:ref>
3944      | <x:ref>v3_dl</x:ref>
3945      | <x:ref>v3_ol</x:ref>
3946      | <x:ref>v3_table</x:ref>
3947      | <x:ref>v3_sourcecode</x:ref>
3948      | <x:ref>v3_ul</x:ref>)+ |
3949    (TEXT
3950      | cref
3951      | eref
3952      | iref
3953      | xref
3954      | <x:ref>v3_bcp14</x:ref>
3955      | <x:ref>v3_br</x:ref>
3956      | <x:ref>v3_em</x:ref>
3957      | <x:ref>v3_sub</x:ref>
3958      | <x:ref>v3_sup</x:ref>
3959      | <x:ref>v3_tt</x:ref>
3960      | <x:ref>v3_strong</x:ref>
3961      | <x:ref>v3_u</x:ref>
3962      | <x:ref>x_ref</x:ref>)*
3963    )
3964  }
3965
3966<em anchor="v3_dl"><iref item="dl V3 Extension Element"/><iref item="V3 Extension Elements" subitem="dl"
3967/># Definition List (see <xref target="v3.dl"/>)</em>
3968<x:ref>v3_dl</x:ref> =
3969  element dl {
3970    attribute anchor { xsd:ID }?, # (see <xref target="RFC7991bis" x:rel="#element.dl.attribute.anchor"/>)
3971    attribute indent { text }?,
3972    attribute newline { "false" | "true" }?,
3973    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
3974    attribute spacing { "normal" | "compact" }?,
3975    (<x:ref>v3_dt</x:ref>, <x:ref>v3_dd</x:ref>)+
3976  }
3977
3978<em anchor="v3_dt"><iref item="dt V3 Extension Element"/><iref item="V3 Extension Elements" subitem="dt"
3979/># Definition List Description Term (see <xref target="v3.dt"/>)</em>
3980<x:ref>v3_dt</x:ref> =
3981  element dt {
3982    attribute anchor { xsd:ID }?,
3983    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
3984    (TEXT
3985      | cref
3986      | eref
3987      | iref
3988      | xref
3989      | <x:ref>v3_em</x:ref>
3990      | <x:ref>v3_tt</x:ref>
3991      | <x:ref>v3_strong</x:ref>)*
3992  }
3993
3994<em anchor="v3_em"><iref item="em V3 Extension Element"/><iref item="V3 Extension Elements" subitem="em"
3995/># Emphasized Text (see <xref target="v3.em"/>)</em>
3996<x:ref>v3_em</x:ref> =
3997  element em {
3998    attribute anchor { xsd:ID }?,
3999    (TEXT
4000      | eref
4001      | iref
4002      | xref
4003      | <x:ref>v3_strong</x:ref>
4004      | <x:ref>x_ref</x:ref>)*
4005  }
4006
4007<em anchor="v3_extaddr"><iref item="extaddr V3 Extension Element"/><iref item="V3 Extension Elements" subitem="extaddr"
4008/># Extended Postal Address (see <xref target="v3.extaddr"/>)</em>
4009<x:ref>v3_extaddr</x:ref> =
4010  element extaddr {
4011    attribute ascii { ATEXT }?,
4012    TEXT
4013  }
4014
4015<em anchor="v3_li"><iref item="li V3 Extension Element"/><iref item="V3 Extension Elements" subitem="li"
4016/># Definition List (see <xref target="v3.li"/>)</em>
4017<x:ref>v3_li</x:ref> =
4018  element li {
4019    attribute anchor { xsd:ID }?,
4020    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
4021    ((<x:ref>v3_artset</x:ref>
4022      | artwork
4023      | figure
4024      | <x:ref>v3_blockquote</x:ref>
4025      | <x:ref>v3_dl</x:ref>
4026      | <x:ref>v3_ol</x:ref>
4027      | t
4028      | <x:ref>v3_table</x:ref>
4029      | <x:ref>v3_sourcecode</x:ref>
4030      | <x:ref>v3_ul</x:ref>
4031    )+
4032      |
4033    (TEXT
4034      | cref
4035      | eref
4036      | iref
4037      | xref
4038      | <x:ref>v3_bcp14</x:ref>
4039      | <x:ref>v3_em</x:ref>
4040      | <x:ref>v3_strong</x:ref>
4041      | <x:ref>v3_sub</x:ref>
4042      | <x:ref>v3_sup</x:ref>
4043      | <x:ref>v3_tt</x:ref>
4044      | <x:ref>v3_u</x:ref>
4045      | <x:ref>x_dfn</x:ref>
4046      | <x:ref>x_ref</x:ref>)*
4047    )
4048  }
4049
4050<em anchor="v3_link"><iref item="link V3 Extension Element"/><iref item="V3 Extension Elements" subitem="link"
4051/># Container for additional links (see <xref target="v3.link"/>)</em>
4052<x:ref>v3_link</x:ref> =
4053  element link {
4054    attribute href { text },
4055    attribute rel { text }?
4056  }
4057
4058<em anchor="v3_name"><iref item="name V3 Extension Element"/><iref item="V3 Extension Elements" subitem="name"
4059/># Section/Figure/Table Name (see <xref target="v3.name"/>)</em>
4060<x:ref>v3_name</x:ref> =
4061  element name {
4062    attribute slugifiedName { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
4063    (TEXT
4064      | cref
4065      | <x:ref>v3_br</x:ref>
4066      | <x:ref>v3_em</x:ref>
4067      | <x:ref>v3_sup</x:ref>
4068      | <x:ref>v3_tt</x:ref>
4069      | xref)*
4070  }
4071
4072<em anchor="v3_ol"><iref item="ol V3 Extension Element"/><iref item="V3 Extension Elements" subitem="ol"
4073/># Ordered List (see <xref target="v3.ol"/>)</em>
4074<x:ref>v3_ol</x:ref> =
4075  element ol {
4076    attribute anchor { xsd:ID }?,
4077    attribute indent { text }?,
4078    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
4079    attribute start { TEXT }?,
4080    attribute group { TEXT }?,
4081    attribute type { TEXT }?,
4082    <x:ref>v3_li</x:ref>+
4083  }
4084
4085<em anchor="v3_pobox"><iref item="extaddr V3 Extension Element"/><iref item="V3 Extension Elements" subitem="pobox"
4086/># Extended Postal Address (see <xref target="v3.pobox"/>)</em>
4087<x:ref>v3_pobox</x:ref> =
4088  element pobox {
4089    attribute ascii { ATEXT }?,
4090    TEXT
4091  }
4092
4093<em anchor="v3_postalLine"><iref item="postalLine V3 Extension Element"/><iref item="V3 Extension Elements" subitem="postalLine"
4094/># Line in postal address (see <xref target="v3.postalLine"/>)</em>
4095<x:ref>v3_postalLine</x:ref> =
4096  element postalLine {
4097    attribute ascii { TEXT }?,
4098    TEXT
4099  }
4100
4101<em anchor="v3_relref"><iref item="relref V3 Extension Element"/><iref item="V3 Extension Elements" subitem="relref"
4102/># EXPERIMENTAL DO NOT USE YET (see <xref target="v3.relref"/>)</em>
4103<x:ref>v3_relref</x:ref> =
4104  element relref {
4105    attribute derivedLink { text }?, # (see <xref target="RFC7991bis" x:rel="#prepatts"/>)
4106    attribute displayFormat { "of" | "comma" | "parens" | "bare" }?,
4107    attribute relative { text }?,
4108    attribute section { text },
4109    attribute target { xsd:IDREF },
4110    TEXT
4111  }
4112
4113<em anchor="v3_refcontent"><iref item="refcontent V3 Extension Element"/><iref item="V3 Extension Elements" subitem="refcontent"
4114/># additional content for references (see <xref target="v3.refcontent"/>)</em>
4115<x:ref>v3_refcontent</x:ref> =
4116  element refcontent {
4117    (TEXT
4118      | <x:ref>v3_em</x:ref>)*
4119  }
4120
4121<em anchor="v3_referencegroup"><iref item="referencegroup V3 Extension Element"/><iref item="V3 Extension Elements" subitem="referencegroup"
4122/># reference group (see <xref target="v3.referencegroup"/>)</em>
4123<x:ref>v3_referencegroup</x:ref> =
4124  element referencegroup {
4125    attribute anchor { xsd:ID },
4126    attribute target { URI }?,
4127    (reference
4128      | <x:ref>xi_include</x:ref>)+
4129  }
4130
4131<em anchor="v3_sortingcode"><iref item="sortingcode V3 Extension Element"/><iref item="V3 Extension Elements" subitem="sortingcode"
4132/># (see <xref target="v3.sortingcode"/>)</em>
4133<x:ref>v3_sortingcode</x:ref> =
4134  element sortingcode {
4135    attribute ascii { ATEXT }?,
4136    TEXT
4137  }
4138
4139<em anchor="v3_sourcecode"><iref item="sourcecode V3 Extension Element"/><iref item="V3 Extension Elements" subitem="sourcecode"
4140/># Source Code (see <xref target="v3.sourcecode"/>)</em>
4141<x:ref>v3_sourcecode</x:ref> =
4142  element sourcecode {
4143    attribute anchor { xsd:ID }?,
4144    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
4145    attribute markers { text }?, #(see <xref target="V3IMPNOTES" x:sec="3.1.22"/>)
4146    attribute name { text }?,
4147    attribute type { text }?,
4148    attribute x:lang { "" }?,
4149    (TEXT
4150      | iref
4151      | xref
4152      | <x:ref>x_ref</x:ref>)*
4153  }
4154
4155<em anchor="v3_strong"><iref item="strong V3 Extension Element"/><iref item="V3 Extension Elements" subitem="strong"
4156/># Emphasized Text (see <xref target="v3.strong"/>)</em>
4157<x:ref>v3_strong</x:ref> =
4158  element strong {
4159    attribute anchor { xsd:ID }?,
4160    (TEXT
4161      | xref
4162      | <x:ref>v3_em</x:ref>
4163      | <x:ref>x_ref</x:ref>)*
4164  }
4165
4166<em anchor="v3_sub"><iref item="sub V3 Extension Element"/><iref item="V3 Extension Elements" subitem="sub"
4167/># Subscript (see <xref target="v3.sub"/>)</em>
4168<x:ref>v3_sub</x:ref> =
4169  element sub {
4170    (TEXT
4171      | <x:ref>v3_sup</x:ref>)*
4172  }
4173
4174<em anchor="v3_sup"><iref item="sup V3 Extension Element"/><iref item="V3 Extension Elements" subitem="sup"
4175/># Superscript (see <xref target="v3.sup"/>)</em>
4176<x:ref>v3_sup</x:ref> =
4177  element sup {
4178    (TEXT
4179      | <x:ref>v3_sub</x:ref>)*
4180  }
4181
4182<em anchor="v3_table"><iref item="table V3 Extension Element"/><iref item="V3 Extension Elements" subitem="table"
4183/># Table (see <xref target="v3.table"/>)</em>
4184<x:ref>v3_table</x:ref> =
4185  element table {
4186    attribute anchor { xsd:ID }?,
4187    attribute align { "left" | "center" | "right" }?,
4188    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
4189    <x:ref>v3_name</x:ref>?,
4190    iref*,
4191    <x:ref>v3_thead</x:ref>?,
4192    <x:ref>v3_tbody</x:ref>+,
4193    <x:ref>v3_tfoot</x:ref>?
4194  }
4195
4196<em anchor="v3_tbody"><iref item="tbody V3 Extension Element"/><iref item="V3 Extension Elements" subitem="tbody"
4197/># Table Body (see <xref target="v3.tbody"/>)</em>
4198<x:ref>v3_tbody</x:ref> =
4199  element tbody {
4200    attribute anchor { xsd:ID }?,
4201    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
4202    <x:ref>v3_tr</x:ref>+
4203  }
4204
4205<em anchor="v3_td"><iref item="td V3 Extension Element"/><iref item="V3 Extension Elements" subitem="td"
4206/># Table Contents Cell (see <xref target="v3.td"/>)</em>
4207<x:ref>v3_td</x:ref> =
4208  element td {
4209    attribute anchor { xsd:ID }?,
4210    attribute align { "left" | "center" | "right" }?,
4211    attribute colspan { text }?,
4212    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
4213    attribute rowspan { text }?,
4214    ( (t
4215       | <x:ref>v3_dl</x:ref>
4216       | <x:ref>v3_ol</x:ref>
4217       | <x:ref>v3_sourcecode</x:ref>
4218       | <x:ref>v3_ul</x:ref>
4219      )+
4220      | (TEXT
4221         | <x:ref>v3_bcp14</x:ref>
4222         | <x:ref>v3_br</x:ref>
4223         | cref
4224         | <x:ref>v3_em</x:ref>
4225         | eref
4226         | <x:ref>v3_strong</x:ref>
4227         | <x:ref>v3_sub</x:ref>
4228         | <x:ref>v3_sup</x:ref>
4229         | <x:ref>v3_tt</x:ref>
4230         | xref)*
4231    )
4232  }
4233
4234<em anchor="v3_tfoot"><iref item="tfoot V3 Extension Element"/><iref item="V3 Extension Elements" subitem="tfoot"
4235/># Table Footer (see <xref target="v3.tfoot"/>)</em>
4236<x:ref>v3_tfoot</x:ref> =
4237  element tfoot {
4238    attribute anchor { xsd:ID }?,
4239    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
4240    <x:ref>v3_tr</x:ref>
4241  }
4242
4243<em anchor="v3_th"><iref item="th V3 Extension Element"/><iref item="V3 Extension Elements" subitem="th"
4244/># Table Header Cell (see <xref target="v3.th"/>)</em>
4245<x:ref>v3_th</x:ref> =
4246  element th {
4247    attribute anchor { xsd:ID }?,
4248    attribute align { "left" | "center" | "right" }?,
4249    attribute colspan { text }?,
4250    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
4251    attribute rowspan { text }?,
4252    ( (t
4253       | <x:ref>v3_dl</x:ref>
4254       | <x:ref>v3_ol</x:ref>
4255       | <x:ref>v3_sourcecode</x:ref>
4256       | <x:ref>v3_ul</x:ref>
4257      )+
4258      | (TEXT
4259         | <x:ref>v3_bcp14</x:ref>
4260         | cref
4261         | <x:ref>v3_em</x:ref>
4262         | eref
4263         | <x:ref>v3_strong</x:ref>
4264         | <x:ref>v3_sub</x:ref>
4265         | <x:ref>v3_sup</x:ref>
4266         | <x:ref>v3_tt</x:ref>
4267         | xref)*
4268    )
4269  }
4270
4271<em anchor="v3_thead"><iref item="thead V3 Extension Element"/><iref item="V3 Extension Elements" subitem="thead"
4272/># Table Head (see <xref target="v3.thead"/>)</em>
4273<x:ref>v3_thead</x:ref> =
4274  element thead {
4275    attribute anchor { xsd:ID }?,
4276    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
4277    <x:ref>v3_tr</x:ref>+
4278  }
4279
4280<em anchor="v3_tr"><iref item="tre V3 Extension Element"/><iref item="V3 Extension Elements" subitem="tr"
4281/># Table Row (see <xref target="v3.tr"/>)</em>
4282<x:ref>v3_tr</x:ref> =
4283  element tr {
4284    attribute anchor { xsd:ID }?,
4285    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
4286    (
4287      <x:ref>v3_td</x:ref>
4288      | <x:ref>v3_th</x:ref>
4289    )+
4290  }
4291
4292<em anchor="v3_tt"><iref item="tt V3 Extension Element"/><iref item="V3 Extension Elements" subitem="tt"
4293/># Monospaced Text (see <xref target="v3.tt"/>)</em>
4294<x:ref>v3_tt</x:ref> =
4295  element tt {
4296    (TEXT
4297      | xref
4298      | <x:ref>v3_em</x:ref>
4299      | <x:ref>x_ref</x:ref>)*
4300  }
4301
4302<em anchor="v3_u"><iref item="u V3 Extension Element"/><iref item="V3 Extension Elements" subitem="u"
4303/># Non-ASCII characters (see <xref target="v3.u"/>)</em>
4304<x:ref>v3_u</x:ref> =
4305  element u {
4306    attribute ascii { text }?,
4307    attribute format { text }?,
4308    TEXT
4309  }
4310
4311<em anchor="v3_ul"><iref item="ul V3 Extension Element"/><iref item="V3 Extension Elements" subitem="ul"
4312/># Unordered List (see <xref target="v3.ul"/>)</em>
4313<x:ref>v3_ul</x:ref> =
4314  element ul {
4315    attribute anchor { xsd:ID }?,
4316    attribute bare { "false" | "true" }?, # but see <eref target="https://trac.tools.ietf.org/tools/xml2rfc/trac/ticket/547"/>
4317    attribute indent { text }?,
4318    attribute empty { "false" | "true" }?,
4319    attribute pn { text }?, # (see <xref target="RFC7991bis" x:rel="#anchorsandids"/>)
4320    <x:ref>v3_li</x:ref>+
4321  }
4322
4323<em anchor="v3_svg"><iref item="svg V3 Extension Element"/><iref item="V3 Extension Elements" subitem="svg"
4324/># SVG (see <xref target="v3.svg"/>)</em>
4325<x:ref>v3_svg</x:ref> =
4326  element svg:svg {
4327    (attribute * { text }
4328        | text
4329        | anySVGElement)*
4330  }
4331
4332 anySVGElement =
4333    element svg:* {
4334       (attribute * { text }
4335        | text
4336        | anySVGElement)*
4337    }
4338     
4339<em anchor="x_abnf-char-sequence"><iref item="abnf-char-sequence Extension Element"/><iref item="Extension Elements" subitem="abnf-char-sequence"
4340/># Conversion to ABNF char sequence (see <xref target="ext.element.abnf-char-sequence"/>)</em>
4341<x:ref>x_abnf-char-sequence</x:ref> =
4342  element x:abnf-char-sequence {
4343    TEXT
4344  }
4345
4346<em anchor="x_anchor-alias"><iref item="anchor-alias Extension Element"/><iref item="Extension Elements" subitem="anchor-alias"
4347/># Aliasing of anchors (see <xref target="ext.element.anchor-alias"/>)</em>
4348<x:ref>x_anchor-alias</x:ref> =
4349  element x:anchor-alias {
4350    attribute value { TEXT },
4351    empty
4352  }
4353
4354<em anchor="x_contributor"><iref item="contributor Extension Element"/><iref item="Extension Elements" subitem="contributor"
4355/># Contributor information (see <xref target="ext.element.contributor"/>)
4356# (experimental)</em>
4357<x:ref>x_contributor</x:ref> =
4358  element x:contributor {
4359    attlist.author,
4360    organization?,
4361    address?
4362  }
4363
4364<em anchor="x_feedback"><iref item="feedback Extension Element"/><iref item="Extension Elements" subitem="feedback"
4365/># Supply feedback links (see <xref target="ext.element.feedback"/>)</em>
4366<x:ref>x_feedback</x:ref> =
4367  element x:feedback {
4368    attribute template { TEXT },
4369    empty
4370  }
4371
4372<em anchor="x_include-author"><iref item="include-author Extension Element"/><iref item="Extension Elements" subitem="include-author"
4373/># Including Author information
4374# (experimental)</em>
4375<x:ref>x_include-author</x:ref> =
4376  element x:include-author {
4377    attribute target { xsd:IDREF }
4378  }
4379
4380<em anchor="x_assign-section-number"><iref item="assign-section-number Extension Element"/><iref item="Extension Elements" subitem="assign-section-number"
4381/># Setting section numbers for internally generated sections
4382# (experimental)</em>
4383<x:ref>x_assign-section-number</x:ref> =
4384  element x:assign-section-number {
4385    attribute builtin-target { "authors" },
4386    attribute number { TEXT },
4387    empty
4388  }
4389
4390<em anchor="x_bb"><iref item="bb Extension Element"/><iref item="Extension Elements" subitem="bb"
4391/># Bottom line of box drawing (see <xref target="ext.element.bb"/>)</em>
4392<x:ref>x_bb</x:ref> =
4393  element x:bb {
4394    (TEXT
4395      | iref
4396      | xref
4397      | <x:ref>x_bb</x:ref>
4398      | <x:ref>x_bc</x:ref>
4399      | <x:ref>x_bt</x:ref>
4400      | <x:ref>x_ref</x:ref>)*
4401  }
4402
4403<em anchor="x_bc"><iref item="bc Extension Element"/><iref item="Extension Elements" subitem="bc"
4404/># Center line of box drawing (see <xref target="ext.element.bc"/>)</em>
4405<x:ref>x_bc</x:ref> =
4406  element x:bc {
4407    (TEXT
4408      | iref
4409      | spanx
4410      | xref
4411      | <x:ref>x_bb</x:ref>
4412      | <x:ref>x_bc</x:ref>
4413      | <x:ref>x_bt</x:ref>
4414      | <x:ref>x_ref</x:ref>)*
4415  }
4416
4417<em anchor="x_bcp14"><iref item="bcp14 Extension Element"/><iref item="Extension Elements" subitem="bcp14"
4418/># BCP14/RFC2119 keywords (see <xref target="ext.element.bcp14"/>)</em>
4419<x:ref>x_bcp14</x:ref> =
4420  element x:bcp14 {
4421    TEXT
4422  }
4423 
4424<em anchor="x_blockquote"><iref item="blockquote Extension Element"/><iref item="Extension Elements" subitem="blockquote"
4425/># Blockquote (see <xref target="ext.element.blockquote"/>)</em>
4426<x:ref>x_blockquote</x:ref> =
4427  element x:blockquote {
4428    attribute anchor { xsd:ID }?,
4429    attribute cite { URI }?,
4430    t+
4431  }
4432
4433<em anchor="x_bt"><iref item="bt Extension Element"/><iref item="Extension Elements" subitem="bt"
4434/># Top line of box drawing (see <xref target="ext.element.bt"/>)</em>
4435<x:ref>x_bt</x:ref> =
4436  element x:bt {
4437    (TEXT
4438      | iref
4439      | xref
4440      | <x:ref>x_bb</x:ref>
4441      | <x:ref>x_bc</x:ref>
4442      | <x:ref>x_bt</x:ref>
4443      | <x:ref>x_ref</x:ref>)*
4444  }
4445
4446<em anchor="x_c"><iref item="c Extension Element"/><iref item="Extension Elements" subitem="c"
4447/># Unicode character map entry (see <xref target="ext.element.c"/>)</em>
4448<x:ref>x_c</x:ref> =
4449  element x:c {
4450    attribute c { TEXT },
4451    attribute d { TEXT }?,
4452    attribute n { TEXT }
4453  }
4454
4455<em anchor="x_defines"><iref item="defines Extension Element"/><iref item="Extension Elements" subitem="defines"
4456/># declaration of definition in external reference<!-- (see <xref target="ext.element.sup"/>)--></em>
4457<x:ref>x_defines</x:ref> =
4458  element x:defines {
4459    TEXT
4460  }
4461
4462<em anchor="x_dfn"><iref item="dfn Extension Element"/><iref item="Extension Elements" subitem="dfn"
4463/># Definition (see <xref target="ext.element.dfn"/>)</em>
4464<x:ref>x_dfn</x:ref> =
4465  element x:dfn {
4466    attribute anchor { xsd:ID }?,
4467    (TEXT
4468      | iref)*
4469  }
4470 
4471<em anchor="x_h"><iref item="h Extension Element"/><iref item="Extension Elements" subitem="h"
4472/># Heading (see <xref target="ext.element.h"/>)</em>
4473<x:ref>x_h</x:ref> =
4474  element x:h {
4475    TEXT
4476  }
4477
4478<em anchor="x_has"><iref item="has Extension Element"/><iref item="Extension Elements" subitem="has"
4479/># declaration of anchor in external reference<!-- (see <xref target="ext.element.sup"/>)--></em>
4480<x:ref>x_has</x:ref> =
4481  element x:has {
4482    attribute anchor { xsd:ID }?
4483  }
4484
4485<em anchor="x_highlight"><iref item="highlight Extension Element"/><iref item="Extension Elements" subitem="highlight"
4486/># Heading (see <xref target="ext.element.highlight"/>)</em>
4487<x:ref>x_highlight</x:ref> =
4488  element x:highlight {
4489    TEXT
4490  }
4491
4492<em anchor="x_length-of"><iref item="length-of Extension Element"/><iref item="Extension Elements" subitem="length-of"
4493/># Length Measurement (see <xref target="ext.element.length-of"/>)</em>
4494<x:ref>x_length-of</x:ref> =
4495  element x:length-of {
4496    attribute indented { NUMBER }?,
4497    attribute target { xsd:IDREF },
4498    empty
4499  }
4500
4501<em anchor="x_link"><iref item="link Extension Element"/><iref item="Extension Elements" subitem="link"
4502/># Link (see <xref target="ext.element.link"/>)</em>
4503<x:ref>x_link</x:ref> =
4504  element x:link {
4505    attribute basename { URI }?,
4506    attribute href { URI }?,
4507    attribute title { TEXT }?,
4508    attribute rel { TEXT },
4509    empty
4510  }
4511 
4512<em anchor="x_lt"><iref item="lt Extension Element"/><iref item="Extension Elements" subitem="lt"
4513/># Extended list item (see <xref target="ext.element.lt"/>)</em>
4514<x:ref>x_lt</x:ref> =
4515  element x:lt {
4516    attribute anchor { xsd:ID }?,
4517    attribute hangText { TEXT }?,
4518    t+
4519  }
4520
4521<em anchor="x_note"><iref item="note Extension Element"/><iref item="Extension Elements" subitem="note"
4522/># Note (see <xref target="ext.element.note"/>)</em>
4523<x:ref>x_note</x:ref> =
4524  element x:note {
4525    attribute anchor { xsd:ID }?,
4526    t+
4527  }
4528
4529<em anchor="x_parse-xml"><iref item="parse-xml Extension Element"/><iref item="Extension Elements" subitem="parse-xml"
4530/># Signal XML content (see <xref target="ext.element.parse-xml"/>)</em>
4531<x:ref>x_parse-xml</x:ref> =
4532  element x:parse-xml {
4533    (TEXT
4534      | xref)*
4535  }
4536
4537<em anchor="x_prose"><iref item="prose Extension Element"/><iref item="Extension Elements" subitem="prose"
4538/># Inline prose in a reference (see <xref target="ext.element.prose"/>)</em>
4539<x:ref>x_prose</x:ref> =
4540  element x:prose {
4541    TEXT
4542  }
4543
4544<em anchor="x_q"><iref item="q Extension Element"/><iref item="Extension Elements" subitem="q"
4545/># Inline quote (see <xref target="ext.element.q"/>)</em>
4546<x:ref>x_q</x:ref> =
4547  element x:q {
4548    TEXT
4549  }
4550
4551<em anchor="x_ref"><iref item="ref Extension Element"/><iref item="Extension Elements" subitem="ref"
4552/># Anchor reference (see <xref target="ext.element.ref"/>)</em> 
4553<x:ref>x_ref</x:ref> =
4554  element x:ref {
4555    attribute anchor { xsd:ID }?,
4556    TEXT
4557  }
4558
4559<em anchor="x_source"><iref item="source Extension Element"/><iref item="Extension Elements" subitem="source"
4560/># source information (see <xref target="ext.element.source"/>)</em> 
4561<x:ref>x_source</x:ref> =
4562  element x:source {
4563    attribute basename { ATEXT }?,
4564    attribute href { URI },
4565    <x:ref>x_defines</x:ref>*,
4566    <x:ref>x_has</x:ref>*
4567  }
4568
4569<em anchor="x_sup"><iref item="sup Extension Element"/><iref item="Extension Elements" subitem="sup"
4570/># superscript (see <xref target="ext.element.sup"/>)</em>
4571<x:ref>x_sup</x:ref> =
4572  element x:sup {
4573    TEXT
4574  }
4575
4576<em anchor="x_span"><iref item="span Extension Element"/><iref item="Extension Elements" subitem="span"
4577/># Inline Span <!--(see <xref target="ext.element.span"/>)--></em>
4578<x:ref>x_span</x:ref> =
4579  element x:span {
4580    attribute anchor { xsd:ID }?,
4581    attribute x:lang { "" }?,
4582    (TEXT
4583      | <x:ref>x_parse-xml</x:ref>)*
4584  }
4585
4586<em anchor="x_u-map"><iref item="u-map Extension Element"/><iref item="Extension Elements" subitem="u-map"
4587/># Unicode character map (see <xref target="ext.element.u-map"/>)</em>
4588<x:ref>x_u-map</x:ref> =
4589  element x:u-map {
4590    <x:ref>x_c</x:ref>*
4591  }
4592
4593<em anchor="x_x"><iref item="x Extension Element"/><iref item="Extension Elements" subitem="x"
4594/># Nop (for alignment in source)</em>
4595<x:ref>x_x</x:ref> =
4596  element x:x {
4597    empty
4598  }
4599
4600<em anchor="xi_include"><iref item="xi:include Extension Element"/><iref item="XInclude Extension Elements" subitem="include"
4601/># XInclude (see <xref target="v3.xi-include"/>)</em>
4602<x:ref>xi_include</x:ref> =
4603  element xi:include {
4604    attribute href { text },
4605    empty
4606  }
4607
4608<em anchor="rdf_Description"><iref item="rdf:Description Extension Element"/><iref item="Extension Elements" subitem="rdf:Description"
4609/># Embed RDF statements </em>
4610<x:ref>rdf_Description</x:ref> =
4611  element rdf:Description {
4612    rdf_content
4613  }
4614 
4615rdf_content =
4616  ( TEXT | element * { rdf_content })*
4617</artwork></figure>
4618  </section>
4619 
4620  <section title="Implementation Notes">
4621 
4622  <section title="Recognized type attributes for &lt;artwork> element" anchor="artwork.types">
4623  <t>
4624    Specific values in the &lt;artwork> element's "type" attribute are
4625    recognized and cause a different visual style to be used:
4626  </t>
4627  <texttable>
4628    <ttcol>Type</ttcol>
4629    <ttcol>Comment</ttcol>
4630   
4631    <c>abnf</c><c>ABNF as per <xref target="RFC5234"/></c>
4632    <c>abnf2045</c><c>ABNF as per <xref target="RFC2045"/></c>
4633    <c>abnf2616</c><c>ABNF as per <xref target="RFC2616" x:fmt="," x:sec="2.1" /></c>
4634    <c>abnf7230</c><c>ABNF as per <xref target="RFC7230" x:fmt="," x:sec="1.2" /></c>
4635    <c>application/relax-ng-compact-syntax</c><c>Relax NG Compact Syntax as per <xref target="RNC"/></c>
4636    <c>application/xml-dtd</c><c>XML DTD</c>
4637    <c>code</c><c>monospaced text (with outline)</c>
4638    <c>drawing</c><c>drawing (with outline)</c>
4639    <c>example</c><c>monospaced text (with outline)</c>
4640    <c>image/*</c><c>images (to be used with "src" attribute)</c>
4641    <c>inline</c><c>monospaced text (no outline)</c>
4642    <c>message/http; msgtype="request"</c><c>HTTP message, as per <xref target="RFC7230" x:fmt="," x:sec="8.3.1" /></c>
4643    <c>message/http; msgtype="response"</c><c>HTTP message, as per <xref target="RFC7230" x:fmt="," x:sec="8.3.1" /></c>
4644    <c>pdu</c><c>pdu (with outline)</c>
4645    <c>svg and image/svg+xml</c><c>SVG</c>
4646  </texttable>
4647  </section>
4648 
4649  </section>
4650 
4651  <section title="Examples" anchor="examples">
4652
4653  <section title="Using the 'Internal Subset'" anchor="examples.internalsubset">
4654  <t>
4655    The prolog of the XML document can both be used to refer to an external
4656    DTD, and also to define internal entities (<xref target="XML" x:fmt="of" x:sec="2.8" x:rel="#sec-prolog-dtd"/>):
4657  </t>
4658  <figure><artwork type="example" x:lang="">
4659&lt;?xml version="1.0"?>
4660&lt;?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
4661
4662&lt;!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
4663
4664  &lt;!-- <em>use "&amp;MAY;" for a BCP 14 "MAY", see <xref target="ext.element.bcp14"/></em> -->
4665  &lt;!ENTITY MAY
4666  "&lt;bcp14 xmlns='http://purl.org/net/xml2rfc/ext'>MAY&lt;/bcp14>">
4667
4668  &lt;!-- <em>re-declare "&amp;nbsp;" as code point 160 (non-breaking space)</em> -->
4669  &lt;!-- <em>you may need this for UAs that do not read external DTDs</em> -->
4670  &lt;!ENTITY nbsp
4671  "&amp;#160;">
4672
4673  &lt;!-- <em>allow later RFC2616 reference using "&amp;rfc2616;"</em> -->
4674  &lt;!-- <em>the data will be fetched from xml.resource.org</em> -->
4675  &lt;!ENTITY rfc2616 SYSTEM
4676  "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2616.xml">
4677
4678  &lt;!-- <em>allow a custom reference using "&amp;mydraft;"</em> -->
4679  &lt;!-- <em>the data will be fetched from the same location as the
4680       source file</em> -->
4681  &lt;!ENTITY mydraft SYSTEM "reference.mydraft.xml">
4682]>
4683</artwork>
4684<postamble>
4685  Note: including entities from a remote site will not work in browsers due
4686  to the Same-Origin policy.</postamble>
4687</figure>
4688 
4689  </section>
4690
4691  <section title="Customization" anchor="examples.customizing">
4692  <t>
4693    The XSLT code can be customized by creating a custom XSLT file that
4694    uses &lt;xsl:import> to include the original code, and just overrides
4695    particular rules.
4696  </t>
4697  <figure>
4698  <preamble>For instance, the code below overrides several attributes in
4699  <tt>rfc2629toFO.xslt</tt>, changing the color, spacing and font family for
4700  headers.</preamble>
4701  <artwork type="example" x:lang="">
4702&lt;xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4703               version="1.0">
4704
4705  &lt;xsl:import href="rfc2629toFO.xslt"/>
4706 
4707  &lt;xsl:attribute-set name="h1">
4708    &lt;xsl:attribute name="color">darkblue&lt;/xsl:attribute>
4709    &lt;xsl:attribute name="font-family">sans-serif&lt;/xsl:attribute>
4710    &lt;xsl:attribute name="space-before">24pt&lt;/xsl:attribute>
4711  &lt;/xsl:attribute-set>
4712 
4713  &lt;xsl:attribute-set name="h2">
4714    &lt;xsl:attribute name="color">darkblue&lt;/xsl:attribute>
4715    &lt;xsl:attribute name="font-family">sans-serif&lt;/xsl:attribute>
4716    &lt;xsl:attribute name="space-before">18pt&lt;/xsl:attribute>
4717    &lt;xsl:attribute name="space-after">3pt&lt;/xsl:attribute>
4718  &lt;/xsl:attribute-set>
4719 
4720  &lt;xsl:attribute-set name="h3">
4721    &lt;xsl:attribute name="color">darkblue&lt;/xsl:attribute>
4722    &lt;xsl:attribute name="font-family">sans-serif&lt;/xsl:attribute>
4723    &lt;xsl:attribute name="space-before">16pt&lt;/xsl:attribute>
4724    &lt;xsl:attribute name="space-after">2pt&lt;/xsl:attribute>
4725  &lt;/xsl:attribute-set>
4726
4727&lt;/xsl:transform>
4728</artwork></figure>
4729<x:note>
4730  <t>
4731    <x:h>Note:</x:h> the name for the attribute sets may change in the future
4732    as more working is done with respect to customizability. In any case,
4733    overriding the settings in a separate file will be easier to maintain.
4734    Please contact the author if you find yourself trying to override style
4735    definitions that currently do not use attribute sets.
4736  </t>
4737  <t>
4738    <x:h>Note:</x:h> the CSS style information used in <tt>rfc2629.xslt</tt>
4739    can be overriden in a similar (but less granular) way: just overwrite the
4740    template called "insertCss". As for XSL-FO, the class names may change in
4741    future.
4742  </t>
4743</x:note>
4744</section>
4745</section>
4746
4747<section title="Producing the IETF 'Boilerplate'" anchor="boilerplate">
4748<t>
4749  Various attributes of the <tt>&lt;rfc&gt;</tt>
4750  element plus some child elements of <tt>&lt;front&gt;</tt>
4751  affect the automatically generated parts of the front page, such as the
4752  tabular information at the beginning, the "Status Of This Memo", and the
4753  "Copyright Notice".
4754</t>
4755<t>
4756  When submitting an Internet Draft, this "boilerplate" is checked
4757  by "Idnits" (<eref target="http://tools.ietf.org/tools/idnits/"/>) for
4758  compliance with the current Intellectual Property rules, and thus
4759  it is important to set the correct values.
4760</t>
4761<t>
4762  Furthermore, the RFC Production Center uses RFC7749-based tools to
4763  generate the final RFC text, so the more accurate the supplied information
4764  is, the less additional work is left, and the risk for errors in producing
4765  the final (and immutable!) document is reduced.
4766</t>
4767<x:note>
4768  <t>
4769    <x:h>Note:</x:h> this only applies to the case when IETF documents are
4770    produced. The "private" processing instruction <iref item="private PI pseudo-attribute"/><iref item="Processing Instruction pseudo attributes" subitem="private"/>
4771    allows to switch off most of the autogeneration logic.
4772  </t>
4773</x:note>
4774<t anchor="boiler.plate.attributes">
4775  <x:anchor-alias value="attribute-ipr"/>
4776  <x:anchor-alias value="attribute-ipr-current"/>
4777  <x:anchor-alias value="attribute-ipr-trust200902"/>
4778  <x:anchor-alias value="attribute-ipr-noModificationTrust200902"/>
4779  <x:anchor-alias value="attribute-ipr-noDerivativesTrust200902"/>
4780  <x:anchor-alias value="attribute-ipr-pre5378Trust200902"/>
4781  <x:anchor-alias value="attribute-ipr-historic"/>
4782  <x:anchor-alias value="attribute-ipr-200811"/>
4783  <x:anchor-alias value="attribute-ipr-3978"/>
4784  <x:anchor-alias value="attribute-ipr-3667"/>
4785  <x:anchor-alias value="attribute-ipr-2026"/>
4786  <x:anchor-alias value="attribute-category"/>
4787  <x:anchor-alias value="attribute-submissiontype"/>
4788  <x:anchor-alias value="attribute-consensus"/>
4789  The individual attributes on the <tt>&lt;rfc&gt;</tt> element are
4790  discussed in detail in <xref target="RFC7749" x:rel="#front.page"/>.
4791</t>
4792
4793</section>
4794
4795  <section title="License" anchor="license">
4796  <t>
4797Copyright (c) 2006-2019, Julian Reschke (julian.reschke@greenbytes.de)
4798  </t>
4799  <t>
4800All rights reserved.
4801  </t>
4802  <t>
4803Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4804  <list style="symbols">
4805    <t>Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.</t>
4806    <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>
4807    <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>
4808  </list>
4809  </t>
4810  <t>
4811THIS 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.
4812  </t>
4813  </section>
4814</back>
4815</rfc>
Note: See TracBrowser for help on using the repository browser.