Xml2rfc generates RFCs and IETF drafts from document source in XML according to the dtd in RFC2629.
Project description
Introduction
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.
Installation
System Install
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
User Install
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.
Custom Install
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
Usage
xml2rfc accepts a single XML document as input and outputs to one or more conversion formats.
Basic Usage: xml2rfc SOURCE [options] FORMATS...
- Options
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
- Formats
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
- Examples
- xml2rfc draft.xmlxml2rfc draft.xml --dtd=alt.dtd --basename=draft-1.0 --text --nroff --html
Dependencies
xml2rfc depends on the following packages:
Changelog
Version 2.9.2 (09 Feb 2018)
Fixed issues with packaging and with execution under python 2.7. Fixes issue #342 and #343.
Version 2.9.1 (09 Feb 2018)
Boilerplate grammar fix, see https://www.rfc-editor.org/errata/eid5248
Version 2.9.0 (09 Feb 2018)
This release introduces preptool functionality, through a –preptool output mode. With reservation for some points for which issues has been raised, this follows the spedicfication in RFC7998.
The preptool currently takes vocabulary v3 input, and produces prepped output. When work on the text formatter commences, the idea is that the input xml source will always be run through v2v3 conversion and preptool processing before the output formatting, in order to increase consistency and reduce complexity of the output formatter.
There are also some changes which are not related to the preptool functionality: The tox tests have been changed to add testing under Python 3.6, and removed test runs for Python 3.3. Although there is no intention of breaking compatibility with Python 3.3, it may happen eventually since there will not be any release testing with that version of Python.
The v2v3 converter in some cases could insert <seriesInfo> elements with only a name= attribute, because the required seriesNo= attribute on <rfc> was missing. This has been changed.
In order to work around a debilitating issue with relax-ng validation in libxml2 (time to validate increases exponentially with number of attributes on the root element: https://bugzilla.gnome.org/show_bug.cgi?id=133736) some empty attributes on <rfc> are removed during processing; for instance obsoletes=”” and updates=””. They don’t contribute information, but increase validation time with a factor ~20.
In order to identify the unicode scripts needed to display a document, a module to efficiently identify the scripts related to unicode codepoints has been written. The ‘uniscripts’ module which was originally intended to be used for this turned out not to be viable. The new ‘scripts’ module can be broken out for separate release as a library module, if desired.
In order to work with vocabulary v3 input, the parser has been slightly modified to not do input validation according to rfc2629.dtd if not appropriate.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.