Skip to main content

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.xml
xml2rfc draft.xml --dtd=alt.dtd --basename=draft-1.0 --text --nroff --html

Dependencies

xml2rfc depends on the following packages:

Changelog

Version 2.10.2 (19 Sep 2018)

  • Added a full listing of validation errors found, rather than just the first, when running v3 validation on an (possibly v2v3 converted) input file in preptool. Also improved the error messages by providing the xpath to the offending element.

  • Added normalization of RFC 2119 phrases before checking for validity, and updated tests files to include a <bcp14> test.

  • Fixed several places where unexpected input could cause exceptions. Also turned the invalid input document warning into an error. Fixes issue #375.

  • Preserved the element tail when rendering <bcp14>. Fixes issue #374.

  • Fixed an issue where an empty <references/> section could cause an exception in the v2 text formatter.

Version 2.10.1 (18 Sep 2018)

This is primarily a bugfix release, to handle issues people have reported with the new vocabulary v3 text formatter:

  • Fixed an issue where the v2 text formatter could blow up for some v3 documents, rather than exit with a message.

  • Fixed a problem in the v2v3 converter that could cause an Internet-Draft <seriesInfo> element to be inserted even if one was alredy present.

  • Tweaked the <seriesInfo> insertion code slightly, and expanded an error message slightly.

  • Fixed a couple of places where bad input could cause exceptions. Fixes issue #366.

  • Fixed a case where max() could be given an empty sequence.

  • Tweaked the handling of <ul> with structured <li> content. Fixes issue #365.

  • Improved the handling of <br>.

  • Added render_blockquote(). This fixes issue #359.

  • Fixed a problem in the plaintext formatter where table cells were not filled in if the table was wider than the available width. Also added support for formatted table cell content.

  • Added a check in preptool for <keyword> elements containing multiple keywords. Fixes issue #353.

  • Moved the reading of input files to avoid multiple reads. Fixes issue #352.

  • Added a renderer for <bcp14> elements.

  • Added error messages for empty artwork files. Tweaked the error message for missing artwork text. Addresses issue #370

  • Forced no_dtd when running v2v3 to avoid complaints when converting an alredy converted file, and also with the v3 text formatter.

  • Added a try/except around xinclude in order to provide error message without traceback on missing include files.

  • Removed an assert that prevented rendering of document top when some elements are so long that the line width will be more than 72 characters. Added support for <note> with <name>. Added <xref> format default for included references. Added a warning for <xref>s without ‘pn’ attribute (which can happen if the <xref> is pointing at an element for which pn is not generated (this is probably an error in RFC 7998). Fixes issue #346

  • Tweaked the preptool to handle removeInRFC=’true’ elements that lacks <t> children.

  • Added xml2rfc-dev@ietf.org to the release notification addresses.

Version 2.10.0 (12 Jul 2018)

This release introduces the vocabulary v3 text formatter. In order to invoke this formatter, use the regular –text switch for text output, and add the –v3 switch to specify the v3 text formatter.

Xml2rfc in v3 text formatter mode accepts any valid xml2rfc input file, but since the actual formatter only understands the XML elements and attributes which have not been deprecated by RFC7991, it first applies the xml2rfc v2v3 converter in order to transform any deprecated markup to the elements and attributes it understands, and then applies the preptool in order to normalize the input before it starts rendering.

This is the first release of the v3 text formatter, and there are some known rough edges and deficiencies:

  • The current table output renders all table borders. This differs from the v2 formatter, and will be remedied in a later release. The reason for doing the first release with this rendering of tables is that the table layout options have changed substantially with the possibility of using rowspans, and the table layout code is much more complex than for v2 as a consequence. With all table borders visible, the initial testing of the layout code has been easier than if horizontal borders were not rendered.

  • The statement of work for the text formatter coding does not include paginated output, and as a consequence the Table of Contents is much less informative than it would be if it was able to show the page for each ToC entry.

  • The xml2rfc v3 vocabulary (RFC 7991) does not provide ‘align’ attributes for tables, which means that the ability to center and right-align tables is lost. All tables are left-aligned. (Alignment of text within each cell is still supported, though.)

  • The index generation (using <iref> elements) has some known issues, which will also be fixed in a subsequent release.

The v3 schema used in this release differs from the schema specified in RFC7991 in some respects. A separate document will be published with details about the changes: draft-levkowetz-xml2rfc-v3-implementation-notes. The issues leading to the changes will also be entered in the document issue trackers and sent to the xml2rfc-dev mailing list for discussion.

Feedback on the v3 text formatter will be appreciated. Please send feedback to xml2rfc-dev@ietf.org or henrik@levkowetz.com.

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.

Source Distribution

xml2rfc-2.10.2.tar.gz (2.0 MB view details)

Uploaded Source

File details

Details for the file xml2rfc-2.10.2.tar.gz.

File metadata

  • Download URL: xml2rfc-2.10.2.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/2.7

File hashes

Hashes for xml2rfc-2.10.2.tar.gz
Algorithm Hash digest
SHA256 5ae9dc3280b40a3da8cec79978c6c75ea2a0ee3426823947fe6df5798b68740a
MD5 dbf3f76729ae9098139a9172ca3ffdad
BLAKE2b-256 d11e13948d5c4a8c9e7b8d3be83f9ef35fd2014daa5a626bec6cf095df86a65c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page