| 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. |