Transforming RFC2629-formatted XML through XSLTgreenbytes GmbHHafenweg 16MuensterNW48155Germany+49 251 2807760julian.reschke@greenbytes.dehttp://greenbytes.de/tech/webdav/RFC2629xml2rfcXSLThCardXSL-FOPDFGRDDLepubDublin Core
This document describes a set of XSLT transformations that can be used to
transform RFC2629-compliant XML (see ) to various
output formats, such as HTML and PDF. The main topics are
compliance to the xml2rfc XML element set (),support for xml2rfc processing instructions (),the names of anchor elements generated in HTML and PDF output (),various XSLT engines that can be used (),outputting HTML () and XHTML (),outputting CHM (Compiled Microsoft Help, ),outputting PDF (),extensions to the xml2rfc vocabulary ().various utilities ().
The full distribution is available at .
rfc2629.xslt supports both all RFC2629 grammar elements and the extensions
implemented in xml2rfc 1.36.
rfc2629.xslt supports two kind of extension
elements, using different XML namespaces.
The first set contains (hopefully) generally useful extensions, see
.
The second set is used for change and issue tracking and currently is not
documented here. Please email the author in case
you're interested in using these extensions.
All PIs can be set as XSLT parameter as well, overriding any value that
is found in the source file to be transformed.
Using processing instructions:
<?rfc toc="yes"?>
<?rfc-ext support-rfc2731="no"?>
Using XSLT parameters (Saxon):
java -cp saxon.jar com.icl.saxon.StyleSheet source.xml rfc2629.xslt \
xml2rfc-toc=yes xml2rfc-ext-support-rfc2731=no > result.html
Using XSLT parameters (xsltproc):
xsltproc --param xml2rfc-toc '"yes"' \
--param xml2rfc-ext-support-rfc2731 '"no"' \
rfc2629.xslt source.xml > result.html
(note the required quoting of string parameters)PI targetPI pseudo-attributeXSLT parameter namedefaultcommentrfcbackgroundxml2rfc-background(not set)rfccompactxml2rfc-compact"no"only applies to HTML output method when printingrfccommentsxml2rfc-comments(not set)rfceditingxml2rfc-editing"no"rfcfooterxml2rfc-footer(not set)rfcheaderxml2rfc-header(not set)rfcinlinexml2rfc-inline(not set)rfciprnotifiedxml2rfc-iprnotified"no"rfclinkmailtoxml2rfc-linkmailto"yes"rfcprivatexml2rfc-private(not set)rfcrefparentxml2rfc-private"References"Title for References sections when automatically insertedrfcrfcedstylexml2rfc-rfcedstyle(not set)(limited support)rfcsortrefsxml2rfc-sortrefs"no"rfcsymrefsxml2rfc-symrefs"yes"The default has changed from "no" to "yes" as of June 6, 2007 and xml2rfc 1.33pre4.rfctocxml2rfc-toc"no"rfctocdepthxml2rfc-tocdepth99rfctopblockxml2rfc-topblock"yes"PI targetPI pseudo-attributecommentrfcincludeincompatible with XML/XSLT processing model, please use external entities insteadrfcneedLinesrfcslidesrfcstrictrfcsubcompactrfctocindent(defaults to "yes")rfctocompactPI targetPI pseudo-attributeXSLT parameter namedefaultdescriptionrfc-extallow-markup-in-artworkxml2rfc-allow-markup-in-artwork"no"Enables support for specific elements inside abstract elements (using this extension
makes the document incompatible to the RFC2629bis DTD; see description of
conversion XSLT in ).rfc-extauthors-sectionxml2rfc-ext-authors-sectionWhen "end", place the authors section at the end (just before the
copyright statements). This seems to be the preferred order in the
newest RFCs.rfc-extduplexxml2rfc-ext-duplexnoWhen set to "yes", format the PDF output for doublesided printing.rfc-extinclude-references-in-indexxml2rfc-ext-include-references-in-indexWhen set to "yes", index entries are generated for all references.rfc-extjustificationxml2rfc-ext-justification"never""never": never emit justified text, "always": always emit justified text, "print": only emit justified text for print media.rfc-extparse-xml-in-artworkxml2rfc-parse-xml-in-artwork"no"May be used to enable parsing of XML content in figures (MSXML only).rfc-extsupport-rfc2731xml2rfc-ext-support-rfc2731"yes"Decides whether the HTML transformation should generate META tags according .rfc-extsec-no-trailing-dotsxml2rfc-ext-sec-no-trailing-dotsWhen set to "yes", add trailing dots to section numbers. This seems to be the preferred format in the
newest RFCs.
The transformation automatically generates anchors that are supposed to
be stable and predictable and that can be used to identify specific
parts of the document. Anchors are generated both in HTML and XSL-FO
content (but the latter will only be used for PDF output when the XSL-FO
engine supports producing PDF anchors).
The following anchors get auto-generated:Anchor nameDescriptionrfc.abstract Abstractrfc.authors Authors sectionrfc.copyright Copyright sectionrfc.copyrightnotice Copyright noticerfc.figure.nFigures (titled)rfc.figure.u.nFigures (untitled)rfc.index Indexrfc.ipr Intellectual Propertyrfc.iref.nInternal referencesrfc.note.nNotes (from front section)rfc.references Referencesrfc.references.nAdditional referencesrfc.section.nSection nrfc.section.n.p.mSection n, paragraph mrfc.status Status of memorfc.table.nTables (titled)rfc.table.u.nTables (untitled)rfc.toc Table of contentsrfc.xref.name.nReferences to reference n to name
The transformation requires a non-standard extension function (see
exsl:node-set)
which is however widely available. XSLT processors that do not support this
extension (or a functional equivalent) currently are not supported.
The following XSLT engines are believed to work well:
Windows: MSXML3 and MSXML4 (;
command line processor "msxsl" is available from Microsoft Download Center)Java: Saxon ()Java: Xalan ()C/C++: xsltproc (libxslt) (, make sure that you
have a current version)
The following browsers seem to work fine:
Internet Explorer 5.5 (Windows version, if MSXML3 is installed)Internet Explorer 6 and newerFirefox 3.0 and newerBe aware that XSLT execution can be suppressed using NoScriptFirefox does not load external DTDs nor external entities,
see Mozilla Bug 22942, thus entities
like need to be declared in the internal subset ()There seems to be a new problem in Firefox 4 where it occasionally
does the initial rendering with the wrong width (people who can reproduce
this problem please comment on .
Safari 3 (starting with version 3.0.4)Google ChromeOpera (starting with version 10)
The following browsers are known not to work properly:
Firefox 1.*/2.*: (missing extension function - see change request at Mozilla BugZilla
193678)Opera 9.21: execution fails, potentially
to a somewhat complex XPath expression (reported to Opera as bug 245725).Opera 9.5 and 9.6:
transformation appears to work, but CSS isn't getting applied (reported to Opera as bug 337388 on 2008-06-12).Safari 2.* supports client-side XSLT as of MacOS X 10.4,
but misses required extension functions. A problem
with stylesheets producing non-ASCII output (such as NBSP characters)
has been fixed as of OSX 10.4.4. Both
problems have been reported through Apple's bug tracking system, see
and
.
Transformation to HTML can be done inside the browser if it supports
XSLT. To enable this, add the following processing instruction to
the start of the source file:
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
(and ensure that rfc2629.xslt is present).
The transformation result is supposed to conform to the HTML 4.01 strict
DTD . This can be checked using the W3C's online
validator at .
LINK elements exist since HTML 2.0. They can be used to embed content-independant
links inside the document. Unfortunately, only few user agents
support this element. Firefox users may want to check the
Link Widgets
extension.
The following LINK elements are produced:LINK typedescriptionalternatefor RFCs, a link to the authorative ASCII version on the IETF web siteappendicpointer to all top-level appendicsauthorpointer to "authors" sectionchapterpointer to all top-level sectionscontentspointer to table of contentscopyrightpointer to copyright statementindexpointer to index
The figure below shows how Mozilla Firefox 1.0 displays the Site Navigation Bar
for rfc2396.xml.
(LINK elements displayed in Mozilla Firefox for RFC2396.xml)
The following standard HTML META elements are produced:META namedescriptiongeneratorfrom XSLT engine version and stylesheet versionkeywordsfrom keyword elements in front section
Unless turned off using the "rfc-ext support-rfc2731" processing
instruction, the transformation will generate metadata according to
and .
The following DCMI properties are produced:META namedescriptionDC.Creatorfrom author information in front sectionDC.Date.Issuedfrom date information in front sectionDC.Description.Abstractfrom abstractDC.Identifierdocument URN from "docName" attributeDC.isPartOfRFC ISSN (for RFCs)DC.Relation.Replacesfrom "obsoletes" attribute
The generated author information is formatted in hCard
format.
Transforming to XHTML requires slightly different XSLT output options and
is implemented by the derived transformation script rfc2629toXHTML.xslt.
Note: Microsoft Internet Explorer does not support XHTML.
Therefore it usually makes more sense to generate plain old HTML.
To generate a CHM file using Microsoft's HTML Help Compiler (hhc), three
files are required in addition to the HTML file.
hhc - table of contents file (HTML)hhk - index file (HTML)hhp - project file (plain text)
The three files are generated with three specific transformations, each
requiring the additional XSLT parameter "basename" to specify the filename
prefix.
Example:
saxon rfc2616.xml rfc2629toHhp.xslt basename=rfc2616 > rfc2616.hhp
saxon rfc2616.xml rfc2629toHhc.xslt basename=rfc2616 > rfc2616.hhc
saxon rfc2616.xml rfc2629toHhk.xslt basename=rfc2616 > rfc2616.hhk
hhc rfc2616.hhp
Transformation to XSL-FO format is available through
rfc2629toFO.xslt (which includes rfc2629.xslt, so keep both in the
same folder).
Compared to HTML user agents, XSL-FO engines unfortunately either come
as open source (for instance, Apache FOP) or
feature-complete (for instance,
AntennaHouse XSL Formatter), but not both at the same time.
As Apache FOP needs special workarounds (index generation), and
some popular extensions aren't standardized yet, the translation produces
a generic output (hopefully) conforming to .
Specific backends (xsl11toFop.xslt,
xsl11toXep.xslt, xsl11toAn.xslt)
then provide post-processing for the individual processors.
Note:
the output is currently targeted at Apache FOP 1.0.
PDF anchorsPDF bookmarksPDF document informationIndex cleanupXSL 1.1 WDno, but can be auto-generated from "id" attributesyesno, but uses XEP output extensionsyesAntenna House XSL formatternoyes (from XSL 1.1 bookmarks)yes (from XEP document info)yes (just page duplicate elimination, from XSL 1.1 page index)Apache FOPyesyes (from XSL 1.1 bookmarks)yesnoRenderX XEPnoyes (from XSL 1.1 bookmarks)yesyes (from XSL 1.1 page index)Example:
saxon rfc2616.xml rfc2629toFo.xslt > tmp.fo
saxon tmp.fo xsl11toFop.xslt > rfc2629.fo
PDF output can also be produced directly from (X)HTML. One simple approach
is to rely on the browser's printing function, and to use a printer driver
that produces PDF. Depending on the brower's CSS capabilities, the output
will behave properly with respect to table breaks etc.
An alternative is PrinceXML (see ),
which can produce PDF directly from (X)HTML input, based on the CSS printing
information.
For instance, PDF output with text justification turned on can be
produced with:
saxon input.xml rfc2629toXHTML.xslt xml2rfc-ext-justification=print \
> output.xhtml
prince output.xhtml output.pdf
Experimental transformation to ePub format is available through a set
of stylesheets, and the Unix Shell script
mkepub.sh (which requires that "zip" and either
"saxon" or "xsltproc" are installed).
For instance, an epub version of rfc2616.xml can be generated like this:
mkepub.sh rfc2616.xml
This section documents extensions implemented in
rfc2629.xslt, using the extension
namespace "http://purl.org/net/xml2rfc/ext".
Converts the contained quoted string into a hex-encoded character
sequence, for use in case-sensitive ABNF productions.
For instance, "<x:abnf-char-sequence>"HTTP"</x:abnf-char-sequence>"
gets converted to ""HTTP"".
Using its "value" attribute, this element allows the definition of an
internal link target alias for the enclosing element. This alias can
then be used with the <ref> element for intra-document
references.
Note that the anchor alias is not subject to the naming constraints that
apply to anchor elements (which are XML
names).
This element marks the content as being one of the normative keywords
defined in .
The DOCTYPE definition below allows using these keywords using XML
entity expansion: such as in "...server &MUST; accept...".
<!DOCTYPE rfc [
<!ENTITY MAY "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
>MAY</bcp14>">
<!ENTITY MUST "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
>MUST</bcp14>">
<!ENTITY MUST-NOT "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
>MUST NOT</bcp14>">
<!ENTITY OPTIONAL "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
>OPTIONAL</bcp14>">
<!ENTITY RECOMMENDED "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
>RECOMMENDED</bcp14>">
<!ENTITY REQUIRED "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
>REQUIRED</bcp14>">
<!ENTITY SHALL "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
>SHALL</bcp14>">
<!ENTITY SHALL-NOT "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
>SHALL NOT</bcp14>">
<!ENTITY SHOULD "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
>SHOULD</bcp14>">
<!ENTITY SHOULD-NOT "<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'
>SHOULD NOT</bcp14>">]>
Marking up a string as <bb> indicates that it represents the bottom
line of a box drawing, replacing the "+" and "-" characters accordingly.
Marking up a string as <bc> indicates that it represents a center
line of a box drawing, replacing the "|" character accordingly.
This element is like the "blockquote" element in
(note this is a block-level element!). It should contain one or more
<t> child elements.
Can be used to include boilerplate (status, copyright, ...) into the
front or back section. <section> elements within <x:boilerplate>
appear as unnumbered sections in the output.
This element currently can not be "down-translated" for use
in xml2rfc!
Marking up a string as <bt> indicates that it represents the top
line of a box drawing, replacing the "+" and "-" characters accordingly.
This element is like the "dfn" element in .
This element is like the "h" element in .
Used to highlight text passages, currently only allowed in <artwork>.
Note: this is stripped when generating input for xml2rfc,
so please use with care.
This element can be used to insert the length of another formatted
section (in decimal).
Example: computing the Content-Length header value
<artwork>
...
Content-Length: <x:length-of target="req"/>
<x:span anchor="req">123456789
<x:span><artwork/>
The lenght computation counts line ends as two characters (CRLF).
Note that indentation characters in artwork will be
counted. The "indented" attribute allows to specify the amount of
indentation to be substracted from the computed length.
This element can be added as a top-level child element below
<rfc> to indicate additional link information. It's currently
used only when generating HTML output, in which case an HTML
<link> element with identical attributes gets generated.
Example: generating HTML link element
<x:link xmlns="http://purl.org/net/xml2rfc/ext"
rel="Bookmark"
title="IETF WEBDAV Working Group"
href="http://ftp.ics.uci.edu/pub/ietf/webdav/"/>
Used for grouping multiple <t> elements into a single list item.
Can be used to add a note, usually indented by a few characters.
It should contain one or more <t> child elements.
This element instructs the processor to parse the contents as XML and
to warn when there's a problem (requires either MSXML or Saxon8 or newer).
This element can be used inside <reference> to add plain text (before
the date, when present).
This element is like the "q" element in .
This element is a simplified variant of the <xref> element, in that
no "target" attribute needs to be specified, instead the text contents
acts as identifier. That in itself wouldn't be terribly useful,
but together with the <anchor-alias>, it allows
referring to other parts of the document with minimal additional markup.
For instance, given an alias definition such as
<section title="Test" anchor="test">
<x:anchor-alias value="alias1"/>
<x:anchor-alias value="alias 2"/>
...
</section>
the following simple references
<x:ref>test</x:ref>
<x:ref>alias1</x:ref>
<x:ref>alias 2</x:ref>
are equivalent to...:
<xref target="test">test</xref>
<xref target="test">alias1</xref>
<xref target="test">alias 2</xref>
Can be used to enhance a <reference> with information about the
location for the XML source. This can be used by the <xref>
processing code to automatically extract the target section number.
For example:
...
<xref target="RFC2616" x:fmt="of" x:rel="#PUT" />
...
<reference target="RFC2616"/>
...
<x:source href="rfc2616.xml"/>
...
This element is like the "sup" element in .
Note: the down conversion to RFC2629 format replaces
"xy" by "x^y".
Sometimes, artwork occurs inside lists. To get it indent properly in xml2rfc's
text output, it needs to be indented in the source. This is sub-optimal, as
this whitespace will also appear in the HTML output, where it's already
indented due to HTML's semantics.
As a workaround, a "x:indent-with" attribute can be specified, containing
a string that will be prepended to each line when clean-for-DTD.xslt
is run (see ).
The extension attribute below is allowed on the standard <iref> element:
x:for-anchor specifies that the <iref> will also be automatically
inserted whenever the specified anchor is cross-referenced -- this may
save entering lots of <iref> instances. As a special case, a value of
"" (empty string) refers to the anchor attribute of the closest ancestor.
The extension attribute below is allowed on the standard <list> element:
x:indent specifies the amount of indentation for list items in hanging
lists. This can be useful when the output format, such as XSL-FO, does not
support automatical formatting. The value takes an XSL-FO width, such as "5em".
The default is length of longest label in characters times
0.8em.
Also, the <list> element can take <x:lt> child elements instead of
<t>, allowing to insert multiple paragraphs into a single list item.
The extension attributes below are allowed on the standard <rfc> element:
grddl:transformation can be used to reference a GRDDL transform.x:maturiy-level can be used to specify the IETF Standards Track
Maturity Level of "proposed", "draft" or "internet" (see ).
The extension attribute below is allowed on the standard <list> element:
x:fixed-section-number can be used to specify a fixed section number.
This can be useful when formatting historic documents that used a different
numbering style.
Three extension attributes are allowed on the standard <xref> element:
x:sec can be specified to point to a specific section of the referenced document,x:rel may specify a relative reference to use when linking into the referenced document (if linking by section number is not available),x:fmt defines the text format to be used.
The following formats are defined for the x:fmt attribute:
[reference], Section sec
[reference] (Section sec)
Like the default format, but without brackets.
Section sec of [reference]
sec
No output (can be used to have xrefs to references without
having them rendered as such)
Section sec
These extensions are currently only supported for <xref> elements without
child nodes.
If the processor knows how to reference the target section, it will generate
a link directly to the target section, such as in .
check-references.xslt can be used to check
all references to RFC- and ID-series IETF publications and to W3C publications (note
this script requires local copies of
and
and
will use the XML status information provided at ).
If the document is supposed to be published on the IETF standards track,
the desired level can be specified using the parameter intended-level
as 'proposed', 'draft' or 'internet'. Alternatively, it can be specified
inside the document using the attribute x:maturity-level on the <rfc> element.
Note: Downward references should be
annotated using the <annotate> element, containing an <xref> to
.
When an XSLT 2.0 processor is used, links in the document can be checked as well
using the link-check paramerer ('yes' or 'no').
Note that this only works for http links to documents of type text/*.
For instance, as of 2008-07-12, the script produces for :
> saxon rfc2518.xml check-references.xslt intended-status=PROPOSED \
link-check=yes
Normative References:
ISO-11578: not checked
ISO-639: not checked
ISO-8601: not checked
REC-xml-19980210: [FirstEdition] obsoleted by REC-xml-20001006
REC-xml-names-19990114: [FirstEdition] obsoleted by
REC-xml-names-20060816
RFC1766: [PROPOSED STANDARD] obsoleted by RFC3066 RFC3282
RFC2068: [PROPOSED STANDARD] obsoleted by RFC2616
RFC2069: [PROPOSED STANDARD] obsoleted by RFC2617
RFC2119: [BEST CURRENT PRACTICE] (-> BCP0014) ok
RFC2141: [PROPOSED STANDARD] ok
RFC2277: [BEST CURRENT PRACTICE] (-> BCP0018) ok
RFC2396: [DRAFT STANDARD] obsoleted by RFC3986
RFC2279: [DRAFT STANDARD] obsoleted by RFC3629
Informational References:
REC-PICS-labels-961031: [REC] ok
RFC1807: [INFORMATIONAL] ok
RFC2026: [BEST CURRENT PRACTICE] (-> BCP0009) ok
RFC2291: [INFORMATIONAL] ok
RFC2376: [INFORMATIONAL] obsoleted by RFC3023
RFC2413: [INFORMATIONAL] obsoleted by RFC5013
USMARC: not checked
WF: not checked
Link Targets
<http://www.w3.org/TR/1998/REC-xml-19980210>: ok
<http://www.w3.org/TR/1999/REC-xml-names-19990114>: ok
<http://www.dlib.org/dlib/july96/lagoze/07lagoze.html>: ok
<http://www.w3.org/pub/WWW/TR/REC-PICS-labels-961031.html>: ok
Recognized formats in the <seriesInfo> element are:
for RFCs, the name attribute must be "RFC", and the value attribute must
be the number of the RFC,for Internet Drafs, the name attribute must be "ID" or "Internet-Draft", and the value attribute must
be the file name of the draft (including the two-digit running number, but excluding a file extension),for W3C documents, the name attribute must be "W3C", must start with "W3C ", or
must start with "World Wide Web Consortium ", and the value attribute
must be the "shorthand" name of the specification, such as "REC-xml-19980210".Note: this stylesheet will need network access to check links and
status of Internet Drafts. When running a Java-based XSLT engine, you may have
to supply Java system properties specifying the HTTP proxy to be used, such
as "-Dhttp.proxyHost=hostname -Dhttp.proxyPort=80".
gen-reference-graph.xslt generates a graph
of RFC dependencies, using the same base data as in check-references.xslt
(see ). Its output is a "dot" file,
to be processed by GraphViz (see ).
The picture below shows the RFC dependencies in RFC2629.
(PNG output obtained from GraphViz)
amazon-asin.xslt uses the Amazon web services
to generate a <reference> element for a given ASIN (ISBN).
For instance:
<?xml version="1.0" encoding="utf-8"?>
<references>
<reference target="urn:isbn:0134516591">
<front>
<title>Simple Book, The: An Introduction to Internet Management,
Revised Second Edition</title>
<author surname="Rose"
fullname="Marshall T. Rose" initials="M. T. ">
<organization/>
</author>
<author surname="Marshall"
fullname="Rose T. Marshall" initials="R. T.">
<organization/>
</author>
<date year="1996" month="March"/>
</front>
<seriesInfo name="Prentice Hall" value=""/>
</reference>
</references>
Note that the resulting XML usually requires checking, in this case Amazon's
database is playing tricks with Marshall's name...
clean-for-DTD.xslt can be used to down-convert
some extensions to a format that is supported by the base xml2rfc
distribution. Note that these extensions are experimental (feedback
appreciated).
The following mappings are done:
<iref> elements inside <artwork> elements are moved in front
of the enclosing <figure> element.
<xref> elements inside <artwork> are expanded just like in
regular text (that is, the markup is stripped, but the element
is replaced by the applicable replacement text).
<x:anchor-alias> elements get stripped.
<x:bcp14> elements get stripped.
<x:bb>, <x:bc> and <x:bt> elements get stripped.
<x:blockquote> elements get converted to
indented text (through a <list> element).
<x:dfn> elements get stripped.
<x:h> elements get stripped.
<x:link> elements get stripped.
<x:lt> elements get collapsed into a single <lt>
element with added <vspace> added to simulate paragraph breaks.
<x:note> elements get converted to
indented text (through a <list> element).
<x:q> elements get stripped, with apostrophes
added around the text.
<x:prose> elements are transformed into
<seriesInfo> elements (which is an abuse of the element and only
a workaround until xml2rfc gets a matching extension).
<x:ref> elements get replaced by <xref>
elements, targetting either the anchor or another anchor with
matching <x:anchor-alias> child element.
With extract-artwork.xslt, artwork elements
named through the "name" attribute can be extracted. This can be used
to automatically check their syntax (for instance, when ABNFs appear
within a figure element).
For instance:saxon rfc3986.xml extract-artwork.xslt name=uri.abnf
In addition, artwork of a specific type can be extracted, such as with:
saxon rfc3986.xml extract-artwork.xslt type=abnf
When extracting by type, artwork elements with a specified name can be
excluded; this can be handy when the document uses some kind of schema
language, and an appendix contains the collected schema, repeating definitions
from earlier on. Example:
saxon rfc3986.xml extract-artwork.xslt type=abnf except-name=clschm
rfc2629grddl.xslt extracts RDF
information. This is experimental work-in-progress. See
for more information.
The Internet Standards Process -- Revision 3Harvard Universitysob@harvard.eduKey words for use in RFCs to Indicate Requirement LevelsHarvard Universitysob@harvard.eduHypertext Transfer Protocol -- HTTP/1.1University of California, Irvine, Information and Computer ScienceIrvineCA92697-3425US+1 949 824 1715fielding@ics.uci.eduWorld Wide Web Consortium, MIT Laboratory for Computer Science545 Technology SquareCambridgeMA02139US+1 617 258 8682jg@w3.orgCompaq Computer Corporation, Western Research Laboratory250 University AvenuePalo AltoCA94301USmogul@wrl.dec.comWorld Wide Web Consortium, MIT Laboratory for Computer Science545 Technology SquareCambridgeMA02139US+1 617 258 8682frystyk@w3.orgXerox Corporation3333 Coyote Hill RoadPalo AltoCA94034USmasinter@parc.xerox.comMicrosoft Corporation1 Microsoft WayRedmondWA98052USpaulle@microsoft.comWorld Wide Web Consortium, MIT Laboratory for Computer Science545 Technology SquareCambridgeMA02139US+1 617 258 8682timbl@w3.orgWriting I-Ds and RFCs using XMLInvisible Worlds, Inc.660 York StreetSan FranciscoCA94110US+1 415 695 3975mrose@not.invisible.nethttp://invisible.net/A URN Namespace for IETF DocumentsAT&T15621 Drexel CircleOmahaNE68135-2358USjayhawk@att.comEncoding Dublin Core Metadata in HTMLUniversity of California, San Francisco, Center for Knowledge Management530 Parnassus AveBox 0840San FranciscoCA94143-0840US+1 415 476 4653jak@ckm.ucsf.eduExpressing Dublin Core metadata using HTML/XHTML meta and link elementsEduserv Foundationpete.johnston@eduserv.org.ukEduserv Foundationandy.powell@eduserv.org.ukAugmented BNF for Syntax Specifications: ABNFBrandenburg InternetWorking675 Spruce Dr.SunnyvaleCA94086US+1.408.246.8253dcrocker@bbiw.netTHUS plc.1/2 Berkeley Square99 Berkely StreetGlasgowG3 7HRUKpaul.overell@thus.netRFC Streams, Headers, and BoilerplatesHTML 4.01 SpecificationW3Cdsr@w3.orgW3CW3CXHTML™ 2.0Opera Softwarex-port.netWebsenseW3CApplied Testing and TechnologyWebGeek, Inc.CWIExtensible Stylesheet Language (XSL) Version 1.1IBMalrb@us.ibm.comRELAX NG Compact Syntaxjjc@jclark.comHandling Normative References to Standards-Track Documentsklensin+ietf@jck.comMIThartmans-ietf@mit.eduExtensible Markup Language (XML) 1.0 (Fifth Edition)Textuality and Netscapetbray@textuality.comMicrosoftjeanpa@microsoft.comW3Ccmsmcq@w3.orgSun Microsystemseve.maler@east.sun.com
The RelaxNG schema () below can be used to validate
input documents (for instance, with Jing).
Note that this is work in progress, and doesn't yet cover all
extensions completely.# WORK IN PROGRESS! PLEASE REPORT PROBLEMS TO THE AUTHOR.# Define our extension namespace
namespace x = "http://purl.org/net/xml2rfc/ext"
# Define GRDDL namespace
namespace grddl = "http://www.w3.org/2003/g/data-view#"
# Define RDF namespace
namespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
# Include rfc2629bis RNC grammar
include "rfc2629.rnc" {
# Redefine <artwork> to allow markup
artwork =
element artwork {
attlist.artwork,
(TEXT
| eref| iref| spanx| xref| x_abnf-char-sequence| x_bb| x_bc| x_bcp14| x_bt| x_highlight| x_length-of| x_parse-xml| x_ref| x_span| x_x)*
}
# Redefine <back> to allow boilerplate
back =
element back {
attlist.back,
references*,
section*,
x_boilerplate?
}
# Redefine <c> to allow our extension elements
c =
element c {
attlist.c,
(TEXT
| xref
| eref
| iref
| cref
| spanx
| x_ref)*
}
# Redefine <cref> to allow more child elements
cref =
element cref {
attlist.cref,
(TEXT
| eref
| xref)*
}
# Redefine <front> to allow boilerplate
front =
element front {
attlist.front,
title,
author+,
date,
area*,
workgroup*,
keyword*,
x_boilerplate?,
abstract?,
note*
}
# Redefine <list> element to allow <x:lt> child elements
\list =
element list {
attlist.list,
(t+ | x_lt+)
}
# Redefine <preamble> to allow our extension elements
preamble =
element preamble {
attlist.preamble,
(TEXT
| xref
| eref
| iref
| cref
| spanx
| x_anchor-alias)*
}
# Redefine <postamble> to allow our extension elements
postamble =
element postamble {
attlist.postamble,
(TEXT
| xref
| eref
| iref
| cref
| spanx
| x_bcp14)*
}
# Redefine <reference> to allow our extension elements
reference =
element reference {
attlist.reference,
front,
seriesInfo*,
x_prose?
format*,
annotation*,
x_source?
}
# Redefine <rfc> to allow our extension elements
rfc =
element rfc {
attlist.rfc,
x_link*,x_assign-section-number*,
front,
middle,
back?
}
# Redefine <section> to allow our extension elements
section =
element section {
attlist.section,
(t
| figure
| texttable
| iref
| section
| x_anchor-alias| x_blockquote| x_include-author| x_note| rdf_Description)*
}
# Redefine <spanx> to allow some markup
spanx =
element spanx {
attlist.spanx,
(TEXT
| iref| xref| x_ref)*
}
# Redefine <t> to allow our extension elements
t =
element t {
attlist.t,
(TEXT
| \list
| figure
| xref
| eref
| iref
| cref
| spanx
| vspace
| x_abnf-char-sequence| x_anchor-alias| x_bcp14| x_dfn| x_h| x_q| x_ref| x_sup)*
}
}
# Allow x:indent-with attribute on <artwork>
attlist.artwork &=
attribute x:indent-with { ATEXT }?
# Allow anchor and x:annotation attributes on <author>
attlist.author &=
attribute anchor { xsd:ID }?,
attribute x:annotation { ATEXT }?
# Extend attribute set for <iref> (see )
attlist.iref &=
attribute x:for-anchor { ATEXT }?
# Extend attribute set for <list> (see )
attlist.list &=
attribute x:indent { ATEXT }?
# Extend attribute set for <preamble>
attlist.preamble &=
attribute anchor { xsd:ID }?
# Extend attribute set for <rfc>
attlist.rfc &=
attribute grddl:transformation { ATEXT }?,
attribute x:maturity-level { "proposed" | "draft" | "internet" }?
# Extend attribute set for <section> (see )
attlist.section &=
attribute x:fixed-section-number { ATEXT }?
# Allow anchor attribute on <spanx>
attlist.spanx &=
attribute anchor { xsd:ID }?
# Allow x:quotes attribute on <title>
attlist.title &=
attribute x:quotes { "true" | "false" }?
# Allow annotation attribute on <uri>
attlist.uri &=
attribute x:annotation { ATEXT }?
# Extend attribute set for <xref> (see )
attlist.xref &=
attribute x:fmt { "()" | "," | "anchor" | "of" | "number" | "sec" |
"none" }?,
attribute x:rel { ATEXT }?,
attribute x:sec { ATEXT }?
# Conversion to ABNF char sequence (see )x_abnf-char-sequence =
element x:abnf-char-sequence {
TEXT
}
# Aliasing of anchors (see )x_anchor-alias =
element x:anchor-alias {
attribute value { TEXT },
empty
}
# Including Author information
# (experimental)x_include-author =
element x:include-author {
attribute target { xsd:IDREF }
}
# Setting section numbers for internally generated sections
# (experimental)x_assign-section-number =
element x:assign-section-number {
attribute builtin-target { "authors" },
attribute number { TEXT },
empty
}
# Bottom line of box drawing (see )x_bb =
element x:bb {
(TEXT
| iref
| xref
| x_bb
| x_bc
| x_bt
| x_ref)*
}
# Center line of box drawing (see )x_bc =
element x:bc {
(TEXT
| iref
| spanx
| xref
| x_bb
| x_bc
| x_bt
| x_ref)*
}
# BCP14/RFC2119 keywords (see )x_bcp14 =
element x:bcp14 {
"MAY"
| "MUST"
| "MUST NOT"
| "NOT RECOMMENDED"
| "OPTIONAL"
| "RECOMMENDED"
| "REQUIRED"
| "SHALL"
| "SHALL NOT"
| "SHOULD"
| "SHOULD NOT"
}
# Blockquote (see )x_blockquote =
element x:blockquote {
attribute cite { URI }?,
t+
}
# Boilerplate (see ) x_boilerplate =
element x:boilerplate {
section+
}
# Top line of box drawing (see )x_bt =
element x:bt {
(TEXT
| iref
| xref
| x_bb
| x_bc
| x_bt
| x_ref)*
}
# Definition (see )x_dfn =
element x:dfn {
attribute anchor { xsd:ID }?,
(TEXT
| iref)*
}
# Heading (see )x_h =
element x:h {
TEXT
}
# Heading (see )x_highlight =
element x:highlight {
TEXT
}
# Length Measurement (see )x_length-of =
element x:length-of {
attribute indented { NUMBER }?,
attribute target { xsd:IDREF },
empty
}
# Link (see )x_link =
element x:link {
attribute href { URI },
attribute title { TEXT }?,
attribute rel { TEXT },
empty
}
# Extended list item (see )x_lt =
element x:lt {
attribute anchor { xsd:ID }?,
attribute hangText { TEXT }?,
t+
}
# Note (see )x_note =
element x:note {
t+
}
# Signal XML content (see )x_parse-xml =
element x:parse-xml {
(TEXT
| xref)*
}
# Inline prose in a reference (see )x_prose =
element x:prose {
TEXT
}
# Inline quote (see )x_q =
element x:q {
TEXT
}
# Anchor reference (see )x_ref =
element x:ref {
attribute anchor { xsd:ID }?,
TEXT
}
# source information (see )x_source =
element x:source {
attribute basename { ATEXT }?,
attribute href { URI },
empty
}
# superscript (see )x_sup =
element x:sup {
TEXT
}
# Inline Span x_span =
element x:span {
attribute anchor { xsd:ID }?,
(TEXT
| x_parse-xml)*
}
# Nop (for alignment in source)x_x =
element x:x {
empty
}
# Embed RDF statements rdf_Description =
element rdf:Description {
rdf_content
}
rdf_content =
( TEXT | element * { rdf_content })*
Specific values in the <artwork> element's "type" attribute are
recognized and cause a different visual style to be used:
Media TypeCommentabnfABNF as per abnf2616ABNF as per application/relax-ng-compact-syntaxRelax NG Compact Syntax as per application/xml-dtdXML DTDmessage/http; msgtype="request"HTTP message, as per message/http; msgtype="response"HTTP message, as per
The prolog of the XML document can both be used to refer to an external
DTD, and also to define internal entities ():
<?xml version="1.0"?>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- use "&MAY;" for a BCP 14 "MAY", see -->
<!ENTITY MAY
"<bcp14 xmlns='http://purl.org/net/xml2rfc/ext'>MAY</bcp14>">
<!-- re-declare " " as code point 160 (non-breaking space) -->
<!-- you may need this for UAs that do not read external DTDs -->
<!ENTITY nbsp
" ">
<!-- allow later RFC2616 reference using "&rfc2616;" -->
<!-- the data will be fetched from xml.resource.org -->
<!ENTITY rfc2616 PUBLIC
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.2616.xml">
<!-- allow a custom reference using "&mydraft;" -->
<!-- the data will be fetched from the same location as the
source file -->
<!ENTITY mydraft PUBLIC "reference.mydraft.xml">
]>
Note: including entities from a remote site will not work in Firefox,
see .
The XSLT code can be customized by creating a custom XSLT file that
uses <xsl:import> to include the original code, and just overrides
particular rules.
For instance, the code below overrides several attributes in
rfc2629toFO.xslt, changing the color, spacing and font family for
headers.
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:import href="rfc2629toFO.xslt"/>
<xsl:attribute-set name="h1">
<xsl:attribute name="color">darkblue</xsl:attribute>
<xsl:attribute name="font-family">sans-serif</xsl:attribute>
<xsl:attribute name="space-before">24pt</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="h2">
<xsl:attribute name="color">darkblue</xsl:attribute>
<xsl:attribute name="font-family">sans-serif</xsl:attribute>
<xsl:attribute name="space-before">18pt</xsl:attribute>
<xsl:attribute name="space-after">3pt</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="h3">
<xsl:attribute name="color">darkblue</xsl:attribute>
<xsl:attribute name="font-family">sans-serif</xsl:attribute>
<xsl:attribute name="space-before">16pt</xsl:attribute>
<xsl:attribute name="space-after">2pt</xsl:attribute>
</xsl:attribute-set>
</xsl:transform>
Note: the name for the attribute sets may change in the future
as more working is done with respect to customizability. In any case,
overriding the settings in a separate file will be easier to maintain.
Please contact the author if you find yourself trying to override style
definitions that currently do not use attribute sets.
Note: the CSS style information used in rfc2629.xslt
can be overriden in a similar (but less granular) way: just overwrite the
template called "insertCss". As for XSL-FO, the class names may change in
future.
Various attributes of the <rfc>
element plus some child elements of <front>
affect the automatically generated parts of the front page, such as the
tabular information at the beginning, the "Status Of This Memo", and the
"Copyright Notice".
When submitting an Internet Draft, this "boilerplate" is checked
by "Idnits" () for
compliance with the current Intellectual Property rules, and thus
it is important to set the correct values.
Furthermore, the RFC Production Center uses RFC2629-based tools to
generate the final RFC text, so the more accurate the supplied information
is, the less additional work is left, and the risk for errors in producing
the final (and immutable!) document is reduced.
Note: this only applies to the case when IETF documents are
produced. The "private" processing instruction
allows to switch off most of the autogeneration logic.
As of the time of this writing, this attribute value can take a long list of values. As
frequently, this is not the result of a grand plan, but simply for historic
reasons. Of these values, only a few are currently in use; all others are
supported by the various tools for backwards compatibility with old source
files.
Note: some variations of the boilerplate are selected based
on the document's date; therefore it is important to specify the "year",
"month" and "day" attributes of the <date> element
when archiving the XML source of an Internet Draft on the day of submission.
Disclaimer: THIS ONLY PROVIDES IMPLEMENTATION INFORMATION. IF YOU NEED
LEGAL ADVICE, PLEASE CONTACT A LAWYER.
For further information, refer to .
Finally, for the current "Status Of This Memo" text, the submissionType attribute
determines whether a statement about "Code Components" is inserted (this is the
case for the value "IETF", which also happens to be the default). Other values,
such as "independent", suppress this part of the text.
The name for these values refers to the "TLP" ("IETF TRUST Legal Provisions Relating
to IETF Documents"), on effect February 15, 2009 (see ).
Updates to this document were published on September 12, 2009 (TLP 3.0, )
and on December 28, 2009 (TLP 4.0, ),
modifying the license for code components.
The actual text is located in Section 6 ("Text To Be Included in IETF Documents")
of these documents.
The tools will automatically produce the "right" text depending on the
document's date information (see above):
TLPURIstarting with publication date3.02009-11-014.02010-04-01
This should be the default, unless one of the more specific '*trust200902'
values is a better fit. It produces the text in Sections 6.a and 6.b of
the TLP.
This produces the additional text from Section 6.c.i of the TLP:
This document may not be modified, and derivative works of it may
not be created, except to format it for publication as an RFC or
to translate it into languages other than English.
Note: this clause is incompatible with RFCs to be published
on the Standards Track.
This produces the additional text from Section 6.c.ii of the TLP:
This document may not be modified, and derivative works of it may
not be created, and it may not be published except as an Internet-Draft.
Note: this clause is incompatible with RFCs to be published
on the Standards Track.
This produces the additional text from Section 6.c.iii of the TLP, frequently
called the "pre-5378 escape clause":
This document may contain material from IETF Documents or IETF Contributions published or
made publicly available before November 10, 2008. The person(s) controlling the copyright in
some of this material may not have granted the IETF Trust the right to allow modifications of such
material outside the IETF Standards Process. Without obtaining an adequate license from the
person(s) controlling the copyright in such materials, this document may not be modified outside
the IETF Standards Process, and derivative works of it may not be created outside the IETF
Standards Process, except to format it for publication as an RFC or to translate it into languages
other than English.
See Section 4 of
for further information about when to use this value.
Note: this text appears under "Copyright Notice", unless the
document was published before November 2009, in which case it appears
under "Status Of This Memo".
The attribute values "trust200811",
"noModificationTrust200811" and
"noDerivativesTrust200811"
are similar to their "trust200902" counterparts, except that they use text
specified in .
The attribute values "full3978",
"noModification3978" and
"noDerivatives3978"
are similar to their counterparts above, except that they use text
specified in RFC 3978 (March 2005).
The attribute values "full3667",
"noModification3667" and
"noDerivatives3667"
are similar to their counterparts above, except that they use text
specified in RFC 3667 (February 2004).
The attribute values "full2026" and
"noDerivativeWorks2026"
are similar to their counterparts above, except that they use text
specified in RFC 2026 (October 1996).
The special value "none"
was also used back then, and denied the IETF any rights beyond publication
as Internet Draft.
For RFCs, the category determines the "maturity level"
(see ). The allowed values
are "std" for "Standards Track", "bcp" for "BCP", "info" for "Informational",
"exp" for "Experimental", and "historic" for - surprise - "Historic".
For Internet Drafts, the category attribute is not needed, but will
appear on the front page ("Intended Status"). Supplying this information can
be useful, because reviewers may want to know.
Note: the Standards Track consists of "Proposed Standard",
"Draft Standards", and "Internet Standard". These do not appear in the
boilerplate, thus the category attribute doesn't handle them.
However, this information can be useful for validity checkers, and thus
rfc2629.xslt supports an extension attribute
for that purpose (see for details).
The RFC Editor publishes documents from different "document streams", of which
the "IETF stream" of course is the most prominent one. Other streams are the "independent stream"
(used for things like administrative information or April 1st RFCs),
the "IAB stream" (Internet Architecture Board) and the "IRTF stream" (Internet Research Task Force).
Not surprisingly, the values for the attribute are "IETF" (the default value),
"independent", "IAB", and "IRTF".
Historically, this did not affect the final appearance of RFCs, except for
subtle differences in Copyright notices.
Nowadays (as of ), the stream name appears in the first
line of the front page, and it also affects the text in the "Status Of This Memo"
section.
For current documents, setting submissionType attribute will
have the following effect:
For RFCs, the stream name appears in the upper left corner of the
first page (in Internet Drafts, this is either "Network Working Group",
or the value of the <workgroup> element).
For RFCs, if affects the whole "Status Of This Memo" section (see
).
For all RFCs and Internet Drafts, it determines whether the "Copyright
Notice" mentions the Copyright on Code Components (see TLP, Section "Text To Be Included in IETF Documents").
For some of the publication streams (see ),
the "Status Of This Memo" section depends on whether there was a consensus
to publish (again, see ).
The consensus attribute ("yes"/"no", defaulting to "yes")
can be used to supply this information. The effect for the various streams is:
"independent" and "IAB": none."IETF": mention that there was an IETF consensus."IRTF": mention that there was a research group consensus (where the name of the research
group is extracted from the <workgroup> element).
For RFCs, this attribute supplies the RFC number.
For Internet Drafts, this specifies the draft name (which appears
below the title). The file extension is not part
of the draft, so in general it should end with the current draft number
("-", plus two digits).
Note: "Idnits" ()
checks the in-document draft name for consistency with the filename of
the submitted document.
The RFC Editor maintains a database ()
of all RFCs, including information about which one obsoletes which. Upon publication of an RFC, this
database is updated from the data on the front page.
This attribute takes a list of comma-separated RFC numbers.
Do not put the string "RFC" here.
This is like obsoletes, but for the "updates"
relation.
Copyright (c) 2006-2010, Julian Reschke (julian.reschke@greenbytes.de)
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.Neither the name of Julian Reschke nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Switch to BSD License.
Update to xml2rfc v1.33pre2.
Update to xml2rfc v1.33pre3.
Add XSLT test cases.
Experimental support for inlined rdf:Description elements (ignored
by the formatter, extracted by rfc2629grddl).
Update to xml2rfc v1.34pre2.
Experimental support for February 2009 boilerplate changes, and for
the x:boilerplate element.
Support new boilerplate ordering in RFCs published since July 2009.
Fix problems with one-column text tables.
When possible, calculate the actual Expiry date for Internet Drafts
(full date must be available).
For '$xml2rfc-ext-authors-section='end'", move the index in front of the
authors section.
Consider /rfc/@ipr="pre5378Trust200902" when producing RFCs, not IDs.
Support alignment for artwork containing images (as opposed to, well,
artwork).
Allow xref in cref (as extension).
Refactor handling of processing instructions.
Fix typo in Status Of This Memo, present since November 2008.
Fix formatting of iprExtract attribute.
Starting with Internet Draft publication dates after 2009-11-30: use new Trust
Legal Provisions text; for Internet Drafts: move Abstract up, and
move "pre5378" escape clause to the Copyright Notice.
Add support for refparent PI. For RFCs: use new TLP text as of September 2009.
Incorporate xml2rfc v1.34pre4.
Starting with Internet Draft publication dates after 2009-10-31: use new Trust
Legal Provisions text; for Internet Drafts: move Abstract up, and
move "pre5378" escape clause to the Copyright Notice.
Incorporate xml2rfc v1.34pre5.
Upgrade to xml2rfc v1.34.
For RFC generation (not IDs), experimentally support RFC 5741 headers and boilerplate and Trust
Legal Provisions 4.0.
Upgrade to xml2rfc v1.35.
Be consistent with xml2rfc.tcl in formatting initials (truncate after
the first); see .
Experimental support for prose in references.
Update to xml2rfc v1.36pre1.
Update to xml2rfc v1.36.
Add support for more /rfc/@ipr values when producing RFCs.
Initial release.
Fix two DTD issues.
Initial release.
Add document status; print references type.
Add experimental check for ID status.
Add fixes from Bill Fenner.
Add checks against local copy of .
Add checks for standards levels.
"check-ietf-references.xslt" replaced by "check-references.xslt".
Use information online at to
retrieve Internet-Draft status information.
Fix bug looking up ref type when inside change markup.
Enhance output when draft was updated, and then published as RFC.
Add XSLT2-based link target checking.
Change keywords for "intended-level" to proposed/draft/internet,
optionally extract intended level from /rfc/@x:maturity-level attribute.
New.
Use Carlisle method to define exslt:node-set in
msxsml (which means that the stylesheet can now be used with MSXML as well).
Use W3C data from tr.rdf as well (experimental).
Code rearranged, generate numbered section anchors for paragraphs (t)
as well. Fixes in index handling.
Moved HTML output into XHTML namespace.
Fixed default location for RFCs and numbering of section references.
Support ?rfc editing processing instruction.
Made telephone number links active.
Support for vspace element.
Experimental support for rfc-issue PI.
Support rfc private PI. Removed bogus code reporting the WG in the header.
Support rfc private PI. Removed bogus code reporting the WG in the header.
Support title attribute on references element
Support for list/@style="@format"
Display "closed" RFC issues as deleted
Experimentally and optionally parse XML encountered in artwork elements
(requires MSXSL).
Some cleanup. Moved RFC issues from PIs into namespaced elements.
Added support for sortrefs PI. Added support for figure names.
Highlight parts of artwork which are too wide (72 characters).
Code rearrangement for static texts. Fixes for section numbering.
TOC generation rewritten.
Support for irefs in sections; support iref @primary=true
Moved anchor prefix into a constant. Added sanity checks on user anchor
names.
Bugfix in detection of matching org names when creating the header. Fixed
sorting in subitems.
Fix TOC link HTML generation when no TOC is generated (created broken
HTML table code).
Made rendering of references more tolerant re: missing parts.
Fixed reference numbering when references are split into separate sections.
Fix default namespace (shouldn't be set for HTML output method).
Lowercase internal CSS selectors for Mozilla compliance. Do not put TOC
into ul element.
Make numbered list inside numbered lists use alphanumeric numbering.
Updated issue/editing support.
Bugfix for section numbering after introduction of ed:replace
When producing private documents, do not include document status, copyright etc.
Fix xrefs to Appendices.
Make artwork lightyellow for easier reading. (fielding)
Translate references title to anchor name to avoid non-uri characters. (fielding)
Support for tocdepth PI.
Added temporariry workaround for Mozilla/Transformiix result tree fragment problem.
(search for 'http://bugzilla.mozilla.org/show_bug.cgi?id=143668')
xref code: attempt to uppercase "section" and "appendix" when at the start
of a sentence.
fixed code for vspace blankLines="0", enhanced display for list with "format" style,
got rid of HTML blockquote elements, added support for "hangIndent"
experimental support for appendix and spanx elements
fixed counting of list numbers in "format %" styles (one counter
per unique format string). Added more spanx styles.
experimental texttable support
Make mailto links optional (default = none) (jre: default and PI name changed) (fielding)
experimental support for HTML link elements; fix default for table header
alignment default
support for "background" PI.
change %c format to lowercase alphabetic. add support for keyword
elements (generate META tag). fix various HTML conformance problems.
added experimental support for role attribute. do not number paragraphs
in unnumbered sections. update boilerplate texts. support for
"iprnotified" PI. bugfix list numbering. strip whitespace when
building tel: URIs.
more conformance fixes (layout moved into CSS, move lists and figures
out of para content, do not use tables for list formatting)
add DC.Creator meta tag, refactoring
put nbsps between "section" and section number (xref).
author summary: add missing comma.
fix index generation bug (transposed characters in key generation). Enhance
sentence start detection (xref starting a section was using lowercase
"section").
exp. support for xref/@format. Add missing support for eref w/o content.
exp. support for annotations in reference elements. Code cleanup
reference table formatting.
Another fix for DC.Creator meta tag creation based on RFC2731
Fix namespace name for DC.Creator.
Cleanup node-set support (only use exslt (saxon, xalan, libxslt) extension
functions; remove Transformix workarounds that stopped to work in Moz 1.4)
Generate HTML lang tag.
Map spanx/verb to HTML "samp" element. Fix author name display in
references (reverse surname/initials for last author), add "Ed.".
Fix internal bookmark generation.
Add DCMI dates, identifiers and abstract. Add PI to suppress DCMI
generation. Do not add TOC entry to Copyright Statement when there is
none. Align RFC2629 PI names and parameter names. Change style for
inline URIs generated by eref. Add header and footer support.
Enhance CSS paging properties. Support topblock PI. Added hooks for
proper XHTML generation through separate XSLT. Enhance warning and
error messages. Add support for artwork image display. Table formatting
fixes (borders, thead continuation).
Add workaround for MSXML4 node-set and Mozilla node-set issues (fallback
just displays are warning).
Add workaround for broken pre/ins handling in Mozilla
(see ). Make use
of cite attribute on ed:replace. CSS cleanup.
Fix minor issue detecting the same org for the header (caused by IE's
non-standard whitespace handling). Fix default handling for /rfc/@category.
Inherit ed:entered-by from ancestor elements. Change CSS color for inserted
text to green. Generate issues-list anchor. Do not complain about missing
targets when the xref element is below ed:del. Remove code that attempted
to distinguish section/Section when producing links - always use
uppercase. Fix date rendering for issue resolutions.
Fix color values for table backgrounds for issue rendering. Change
rendering of issue links to use inline-styles. Add colored issue markers to
issues.
Fix inheritance of ed:entered-by attribute. Display note elements inside
change tracking as well.
When PI compact = 'yes', make most CSS print page breaks conditional.
Support for RFC3667 IPR changes (xml2rfc 1.22); see
.
Add "(if approved)" to "updates" and "obsoletes" unless the document has
an RFC number.
Fix RFC3667 output, see .
Add support for section/top attribute. Move references into plain
section container.
Do not emit identical para anchors for deleted content.
Fix references TOC generation when there are no references.
Fix RFC3667 output, see .
Add custom support for generating compound index documents. Add anchors
for each Index letter. Add experimental cref support. Fix conditional page
breaks before References section.
Refactor external index generation.
Rewrite anchor generation for comments.
Enhance issues rendering (add links to changes).
Allow single quote as delimiter in processing instructions as well. Move
block-level issue pointers to floats. Disable issue pointers for print
media. Add "purple numbers". Add hrefs to section headings. Add non-printing
index key letter list to start of index.
Use ¶ instead of # for PNs.
Add support for list style=letters (thanks Roy F.). Make PNs optional;
add new PI.
Fix index links into unnumbered sections. Bring IPR boilerplate in-line
with xml2rfc 1.25. Add experimental CSS3 paged media support. Various
HTML fixes.
Enhance checking of artwork width.
Add check for unused references. Uppercase letters in list style letters
when nested into another list.
Fix internal change track pointers.
Allow change tracking on references (as a whole). Rewrite artwork handling
so that it allows change tracking inside artwork. Also allow a subset of
text markup inside artwork, such as xrefs (note this requires post-processing
the source to make it compliant to RFC2629bis).
Enhanced placement of iref anchors.
Index: display irefs that appeared (with primary=true) inside artwork elements
in a monospaced font.
Add special code so that changes in section titles can be change-tracked.
Bugfixes for HtmlToXhtml converter.
Enhance generation of HTML h* elements (for Mozilla Outliner).
Put vertical space around top-level TOC entries in TOC. Switch to
pt-based CSS. Re-arrange top section. Make hr elements reflect new-page
settings in TXT output (compact-PI). Fix page number in footer (CSS
print) and add some more experimental support for paged media (tested
with Prince 4.1 alpha). Rewrite TOC and Index generation to generate HTML
lists. Cleanup id generation for paragraphs. Reduce whitespace in output.
Fix vspace implementation. Use right/left dqoutes and copyright sign
where appropriate.
Add <link> element to references section. Fix newly introduced bug
in references processing.
Integrate various fixes/enhancements by Roy Fielding: spelling of
"Authors' Addresses", comma setting in references, position of "Authors"
section, optionally place authors addresses at end (PI), trailing dots
in section numbers, switch to verdana default font in CSS. Add
experimental support for centered artwork.
Fixes in spacing and links of references section titles. Enhance sorting
in references when change tracking is in place. Re-add figure centering
support. Add missing 2nd part of "Author's Adresses" fix.
Align section number format with xml2rfc1.29.
Get rid of table elements in Author's section. Add experimental hCard
() support.
Add RFC3978-style IPR statement support. (fenner@research.att.com)
Cleanup author display. hCard related fixes.
Minor fixes to allow change tracking in doc title. Add experimental
support for table border styles. CSS cleanup.
Implement missing support for references to texttables.
Use (-moz-)column-count when printing the index.
Report missing element templates with xsl:message.
Process t/@anchor.
More workarounds for Mozilla's broken del/ins handling (this time for
figures).
lowercase hCard class names
Enhance diagnostics for XML-in-artwork extension
Fix formatting of section numbers for sections inserted into <back>.
Fix some validity problems when change tracking occured inside lists.
Add change tracking inside the index.
Add prev/next links to highlighted changes (change tracking extension).
Catch errors instantiating MSXML component.
References: add "work in progress" for Internet Drafts.
Fix front matter (lowercase Internet-Draft, say "Intended status" for
non-RFC documents). Start work on experimental extension for
simplified internal links.
Tweaks to IESG Copyright stuff; support submissionType attribute.
Fix duplicate reference anchors in HTML output. Reduce HTML Tidy warnings.
Fix reference to normative ASCII version (now requires trailing ".txt").
Tweaks to hCard generation. Started to move non-issue-tracking
extensions into namespace "http://purl.org/net/xml2rfc/ext".
Moved "simple reference" extension into namespace "http://purl.org/net/xml2rfc/ext"
and add documentation. HTML conformance enhancements.
Cleanup special code for automated XHTML XSLT generation.
Generate <CITE> elements where appropiate.
Introduce x:blockquote, x:dfn, x:h and x:q elements.
Introduce x:bcp14 element.
Fix content model for x:blockquote.
Add box drawing support (x:bt, x:bc, x:bb).
HTML validity fixes (legal chars in anchors in index).
Reduce leading empty lines in artwork. Move <dt> style info into CSS.
Fix rendering of multiple street address entries (missing line break).
Add extension for deep linking into RFCs, do not generate empty list
items in TOC output, avoid empty <dt> elements for list items
without hangText attribute.
Allow @anchor on more elements; start work on Relax NG grammar for
extensions. Reduce generated style elements (use CSS classes instead).
Consistently use "id" instead of "name". Change default target for RFC
links to "http://tools.ietf.org/html/rfcNNNN".
Include appendices defined in <appendix> elements in TOC (please
consider them deprecated anyhow!). Generate links to
"http://tools.ietf.org/html/draft-*" for Internet Drafts.
Replace x:frag by x:rel, allowing any kind of relative reference instead
of just fragments.
Reduce textual differences between HTML output and what xml2rfc produces
in TXT output mode (section refs/reference targets). Add small workaround
for Opera 9.0.1's problem with node-set().
Fix problem generating internal links to change markup within references
section. Enhancements when generating numbered references for deleted
references.
Allow inclusion of references into the index (through include-references-in-index
extension).
Fix a bug that caused the newer version of the IETF boilerplate to be
produced rather than the pre-RFC3667 one.
Update to RFC4287 boilerplate.
Add extension attribute x:for-anchor to <iref> handling.
Experimental (and limited) support for <x:lt>.
Fix bugs in processing documents that have both the ipr and the number attribute
set on the rfc root element. Add support for x:fmt='none' on xrefs.
Add different pre style based on artwork type attributes (experimental).
Add x:fmt='anchor' for xref elements.
Fix root template for compatibility for the exslt:node-set implementation
in Firefox3.
Avoid empty table entry in front matter when organization is not specified
for an author.
Allow change tracking in table rows.
Add hcard profile URI () to head element.
Add warning for misplaced <t> elements (after section).
Fix internal linking from reference entries in index for some xref types.
Minor CSS tweaks contributed by MTR. Allow turning on text justification through
a PI. Improve iref anchor generation to generate less instable anchors.
Fixes for numbering of ed:inserted references sections.
Do not generate anchors for edits in deleted sections. Enhance HTML
conformance.
Enhance diagnostics when using Saxon (needs Saxon's "-l" command line
parameter to keep line number information). Add warning when symref PI
is missing (default will change in the future).
Add support for overriding computed section numbers (when formatting
historic documents).
Change default for symrefs PI to "yes" (see change in xml2rfc 1.33pre4).
Warn about docName attributes that appear to contain a file extension.
Workaround author/@initials values without trailing dot, as in xml2rfc.tcl.
Enhance index generation for references that use @x:sec attribute.
Fix: sortrefs is a nop when symrefs=no.
Work in progress: add support for referencing sections in sibling
documents by anchor name.
Work in progress (continued): support for referencing sections in sibling
documents by anchor name.
Emit warning when updating/obsoleting stuff that's not referenced.
Support xml2rfc-1.33pre5's suppress-title attribute on texttable and figure.
Extension: allow <eref> below <cref>.
Extensions: add x:span and x:length-of.
Add new RFC boilerplate (as changed in 2007-08).
Improve diagnostics for artwork width problems; add defaulting of publication
dates (requires XSLT processor supporting exslt:date, or msxml).
Enhance CSS for link elements in the front header, update rules for
generating "Acknowledgment" statement.
Use line numbers in diagnostics in Saxon8/9 as well.
Fix a bug in the logic choosing the boilerplate, resulting in obsolete
text being inserted into IDs.
Add support for superscript element.
Add sanity checks for email addresses, allow multiple email elements.
Add x:abnf-char-sequence.
Add x:note.
Add experimental support for SVG images.
Add experimental support for x:author. Fix xref/@format=none.
Fix a huge bug, causing text content after an XML comment to be ignored.
Use table/caption when needed.
Fix bug that caused text to disappear in the output in presence of
processing instructions.
Make inlined comments bookmarkable.
Upgrade to DC-HTML from RFC 2731 (affects head/@profile).
Remove table/@summary in output; the value getting inserted was just
repeating stuff that appeared in the preamble.
Implement table alignment (HTML output only for now).
Replicate Dublin Core "abstract" metadata into meta/@name=description
(search engines do use it).
Fix default/left alignment of table columns, remove silly table summmary
attributes.
Support double-sided layout using CSS page:left/right selectors.
Generate unordered lists instead of broken definition lists for list style empty.
Initial release.
Enhance handling of unknown list styles.
Update reference section handling.
Use XSL-WD-1.1-style fo:bookmark and index handling and add postprocessors for
existing implementations. Unify PDF info generation by using XEP (postprocessors)
will convert.
Add experimental cref support.
Set correct index-item defaults.
Add list style=letters.
Make URLs in text break where they are allowed to break by inserting
zero-width spaces.
Fix letter-style inside nested lists.
Update handling of artwork.
Fix handling of references inside ed:* markup. Fix whitespace handling
in artwork.
Irefs in artwork generate monospaced entries in index.
Fix TOC generation that was broken after changes in main XSLT.
Bring in sync with cosmetic changes in rfc2629.xslt.
Minor fix for change tracking in document title. Support for table
styles.
Fix references to tables.
Process t/@anchor.
References: add "work in progress" for Internet Drafts.
Use XSL 1.1 WD Feb 2006.
Support optional text justification.
Various improvements in spacing; also allow overriding the automatic
list indentation via list/x:indent.
Fix spacing in headers; add support for formatting for double-sided printing.
Remove surplus empty pages when not generating double-sided output.
Initial release.
Use XSL 1.1 WD Feb 2006.
Switch to Apache FOP 1.0.
Support for FOP 0.20.5 and FOP 0.93 removed. Please use FOP 0.95.
Add a workaround to the fo:inline workaround (sigh).
Initial release.
Fix xep:index-item attributes.
Use XSL 1.1 WD Feb 2006.