========================
Command Line Application
========================

This section provides a guide for using **xml2rfc**.

Installation
============

Thanks to python, the installation process for xml2rfc is identical for all platforms that support python.

To install a *system-wide* version of xml2rfc, simply run:

    ``$ python setup.py 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.

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.

Official Usage: ``xml2rfc SOURCE [options] FORMATS...``

**Options**
    The following parameters affect how xml2rfc behaves, however none are required.
    
    ===============  ======================= ==================================================
    Short            Long                    Description
    ===============  ======================= ==================================================
    ``-h``           ``--help``              show the help message and exit
    ``-v``           ``--verbose``           print extra information
    ``-q``           ``--quiet``             dont print anything
    ``-c``           ``--cache``             specify an alternate cache directory to write to
    ``-n``           ``--no-dtd``            disable DTD validation step
    ``-d DTD``       ``--dtd=DTD``           specify an alternate dtd file
    ``-b BASENAME``  ``--basename=BASENAME`` specify the base name for output files
    ``-f FILENAME``  ``--filename=FILENAME`` specify an output filename
    (none)           ``--clear-cache``       purge the cache and exit
    (none)           ``--version``           display the version number and exit
    ===============  ======================= ==================================================

**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``
