HOW-TO:  Compiling Subversion DocBook XML Documents
===================================================

The Subversion project uses for some of its documentation DocBook
Lite, a scaled-down version of the DocBook DTD, used by O'Reilly &
Associates.

The goal of this document is to give simple instructions to anyone who
wants to compile Subversion DocBook documents into a useful format,
like HTML or PDF.  It should state *exactly* which tools to use, and
how to invoke them, in simplest terms.

Table of Contents:

  I. PRIMER
 II. COMPILING THE DOCS
III. HACKING ON THE DOCS

I. PRIMER

  DocBook has a tortured, confusing history.  Before you do anything,
  take a look at Eric Raymond's excellent "DocBook Demystification HOWTO":

     http://tldp.org/HOWTO/DocBook-Demystification-HOWTO/

  It's very short and clears up many things.


II. COMPILING THE DOCS


1. Fetch XSL stylesheets for DocBook and place them in tools/xsl

   The "DocBook Open Repository" on Sourceforge has a large collection
   of XSL stylesheets that specifically operate on DocBook.  Download
   and install the latest 'docbook-xsl' package from this page:
  
      http://sourceforge.net/project/showfiles.php?group_id=21935

   Download the latest version of docbook-xsl, unpack it, then rename
   the unpacked directory to tools/xsl, something like this:

      $ cd doc/book/tools
      $ tar zxvf docbook-xsl-X.YY.Z.tar.gz
      $ mv docbook-xsl-X.YY.Z xsl

   The default build process expects the stylesheets to be in
   tools/xsl/.


2. Use XSLT to transform the documents.

   XSLT applies an .xsl stylesheet to an .xml file, and produces some
   new markup document.

   * Get libxslt, a C library for XSLT, from http://xmlsoft.org/XSLT/.
     (If you're having trouble finding a source package to compile,
     try ftp://archive.progeny.com/GNOME/sources/libxslt/1.0/.)
     Install it:

        $ tar zxvf libxslt-1.0.22.tar.gz
        $ cd libxslt-1.0.22
        $ ./configure
        $ ./make
        # make install

     (Note: you may discover that you need to install libxml2 first.
     Find it at ftp://archive.progeny.com/GNOME/sources/libxml2/)

     If you don't want to compile libxslt, you can just fetch the
     appropriate OS binary package.  

   * From this directory, do

        $ make all-html

     This produces an HTML version for the Subversion DocBook docs in
     misc-docs/svn-misc-docs.html.

         
3. Make a PDF file.

   Formatting Objects (FO) is a layout language, kind of like
   postscript, dvi or css.  People are quickly standardizing on it.

   * Fetch FOP, a java program which converts .fo files into PDF:

        http://xml.apache.org/fop/index.html

     There are approximately 17577 ways to install FOP.  Rather than
     describe them all, we will recommend one way.  If you've already
     installed FOP some other way, that's fine, then you can ignore
     the following recipe:

        1. Download the latest version from 
           http://www.apache.org/dyn/closer.cgi/xml/fop, for example,
           fop-0.20.5-bin.tar.gz.  Just get a binary distribution,
           there's no need for the Java source.

        2. Unpack it into tools/fop/

           $ cd doc/book/tools
           $ tar zxvf fop-0.20.5-bin.tar.gz
           $ mv fop-0.20.5 fop

     That should be enough.  The Makefile will actually invoke
     tools/bin/run-fop.sh.  That script attempts to find FOP already
     installed on your system, but falls back to the FOP unpacked into
     tools/fop/ if there's no other FOP available.

     Of course, to run FOP at all, you also need a Java runtime
     environment.  Try java.sun.com or www.blackdown.org if you don't
     already have that.

     Sometimes building the DocBook documents can use more memory than
     Java is willing to allocate by default, and you may need to increase
     the default heap size.  With Sun's JVM, this is accomplished by
     passing the arguments "-Xms100m -Xmx200m" (known to work with
     versions 1.2.x-1.4.x, and likely different for JVMs from other
     vendors).  To tell fop.sh about these arguments, pass them via
     the environment variable FOP_OPTS (which is also configurable in
     your ~/.foprc).

        $ export FOP_OPTS="-Xms100m -Xmx200m"

   * If you want images to be included in the PDF, you'll need to use
     the JIMI image processing library.  Grab the latest release from
     http://java.sun.com/products/jimi/, then cp the jar file into the
     same place as the FOP jar files:

        $ cd doc/book/tools/
        $ tar zxvf jimi1_0.tar.Z
        $ cp Jimi/examples/AppletDemo/JimiProClasses.jar fop/lib/

     Poof!  You now have PNG support.

   * From this directory, do

        $ make pdf

     This produces PDF for the Subversion DocBook documents in
     misc-docs/svn-misc-docs.pdf.


III. HACKING ON THE DOCS

In addition to everything in section II:


1. Get a nice editing environment for SGML/XML.

   This isn't strictly required, but it's nice when your editor
   colorizes things, understands the DTD, tells you what tags you can
   insert, etc.

   If you use emacs, we recommend the PSGML major-mode.  Most free
   operating systems package it, or its home page is here:

         http://www.lysator.liu.se/projects/about_psgml.html

   If you use vim, you might check out xmledit, at:

         http://www.vim.org/scripts/script.php?script_id=301


2. Get a validating parser.

   Actually, if you have what you need to compile the documentation,
   then you almost certainly have an XML validator installed already -
   it is called xmllint, and comes as part of libxml2.

   The makefile is preconfigured with a suitable invocation of it,
   so simply run:
   
      $ make valid


3. Read about the DocBook lite tags.

   The tools area contains the readme-dblite.html file which describes
   how to write with DocBook Lite.  Familiarize yourself with these
   tags before changing the docs.
