Xml2rfc generates RFCs and IETF drafts from document source in XML according to the dtd in RFC2629.
The IETF uses a specific format for the standards and other documents it publishes as RFCs, and for the draft documents which are produced when developing documents for publications. There exists a number of different tools to facilitate the formatting of drafts and RFCs according to the existing rules, and this tool, xml2rfc, is one of them. It takes as input an xml file which contains the text and meta-information about author names etc., and transforms it into suitably formatted output. The input xml file should follow the DTD given in RFC2629 (or it’s inofficial successor).
The current incarnation of xml2rfc provides output in the following formats: Paginated and unpaginated ascii text, html, nroff, and expanded xml. Only the paginated text format is currently (January 2013) accepable as draft submissions to the IETF.
To install a system-wide version of xml2rfc, download and unpack the xml2rfc distribution package, then cd into the resulting package directory and run:
$ python setup.py install
Alternatively, if you have the ‘pip’ command (‘Pip Installs Packages’) installed, you can run pip to download and install the package:
$ pip install xml2rfc
If you want to perform a local installation for a specific user, you have a couple of options. You may use python’s default location of user site-packages by specifying the flag --user. These locations are:
- UNIX: $HOME/.local/lib/python<ver>/site-packages
- OSX: $HOME/Library/Python/<ver>/lib/python/site-packages
- Windows: %APPDATA%/Python/Python<ver>/site-packages
You can additionally combine the flag --install-scripts with --user to specify a directory on your PATH to install the xml2rfc executable to. For example, the following command:
$ python setup.py install --user --install-scripts=$HOME/bin
will install the xml2rfc library and data to your local site-packages directory, and an executable python script xml2rfc to $HOME/bin.
The option --prefix allows you to specify the base path for all installation files. The setup.py script will exit with an error if your PYTHONPATH is not correctly configured to contain the library path the script tries to install to.
The command is used as follows:
$ python setup.py install --prefix=<path>
For further fine-tuning of the installation behavior, you can get a list of all available options by running:
$ python setup.py install --help
xml2rfc accepts a single XML document as input and outputs to one or more conversion formats.
Basic Usage: xml2rfc SOURCE [options] FORMATS...
The following parameters affect how xml2rfc behaves, however none are required.
Short Long Description -C --clear-cache purge the cache and exit -h --help show the help message and exit -n --no-dtd disable DTD validation step -N --no-network don’t use the network to resolve references -q --quiet dont print anything -v --verbose print extra information -V --version display the version number and exit -b BASENAME --basename=BASENAME specify the base name for output files -c CACHE --cache=CACHE specify an alternate cache directory to write to -D DATE --date=DATE run as if todays date is DATE (format: yyyy-mm-dd) -d DTD --dtd=DTD specify an alternate dtd file -o FILENAME --out=FILENAME specify an output filename
At least one but as many as all of the following output formats must be specified. The destination file will be created according to the argument given to –filename. If no argument was given, it will create the file(s) “output.format”. If no format is specified, xml2rfc will default to paginated text (--text).
Command Description --raw outputs to a text file, unpaginated --text outputs to a text file with proper page breaks --nroff outputs to an nroff file --html outputs to an html file --exp outputs to an XML file with all references expanded
- xml2rfc draft.xmlxml2rfc draft.xml --dtd=alt.dtd --basename=draft-1.0 --text --nroff --html
Version 2.14.1 (23 Nov 2018)
- The v3 attribute xml:base of <reference> is not compatible with the v2 DTD. Added xml:base to the DTD for <reference> in order to be able to work from the same reference cache for v2 and v3, without backing out the issue #381 resolution.
Version 2.14.0 (23 Nov 2018)
- Added missing ‘(if approved)’ annotations for obsoleted and updated lines in v3 html rendering of drafts.
- Fixed the case of appendix section numbers in v3 html output.
- Removed rfc2629 dtd validation for input files with <rfc version=”3”> set.
- Tweaked the lxml resolver callback to not accept xi:include names lacking an ‘.xml’ extension under v3. Added setting of xml:base before caching xi:include content, in order to not loose the origin. Fixes issue #381.
- Sorted the entries in requirements.txt lexicographically.
- Added a check for duplicate id attribute values after each include of svg content into generated html, as duplicates may cause display problems with some browsers.
- Added back the ability to place <iref> elements in a location where they will translate to invalid HTML. Avoided invalid HTML by pushing the span up one level, as a previous sibling, when needed. Fixes issue #378.
Version 2.13.1 (17 Nov 2018)
- Filled in missing rendering values for the case when cref is being rendered in inline context in the v3 text renderer. Fixes issue #380.
- Under python 3.6, dictionary keys() return a set-like object that cannot be indexed. Convert to list for our purposes. Fixes issue #379
- Remove the ‘alt’ attribute on <artwork> with SVG after setting <desc>.
- Fixed an issue with missing svg namespace when inserting <desc>.