#!/bin/sh
# This script converts a DocBook XML file into HTML and then displays it using a
# Web browser. This script uses Firefox to display the generated HTML. If you
# use a different Web browser, change the BROWSER variable below.
#
# There are only (!) five things you need for this script to work:
#
# 1. A shell that can execute this script. On UNIX/Linux systems, you get this
# for free. On Windows, you can install Cygwin from http://www.cygwin.com/
# to get the Bash shell.
#
# 2. The DocBook 4.2 XML DTD (Document Type Definition). This is a file named
# docbookx.dtd along with a bunch of supporting files having the extensions
# .mod, .cat, and .ent. The DocBook DTD is used to validate the syntactic
# correctness of your DocBook XML file. It also defines entitiies such as
# " ", which is replaced by a non-breaking space. You can download the
# DocBook 4.2 DTD files from:
#
# http://www.oasis-open.org/docbook/xml/4.2/
#
# After you download the DocBook DTD, put the files in a directory of your
# choosing, and change variable DOCBOOK_DTD_DIR in this script to point to
# that directory. You can learn more about DTDs at:
#
# http://en.wikipedia.org/wiki/Document_Type_Definition
#
# 3. A DocBook XSL (Extensible Stylesheet Language) stylesheet that outputs HTML.
# You can download this from:
#
# http://sourceforge.net/projects/docbook
#
# Download only the "docbook-xsl" package. The other packages at that site
# are not needed. After downloading the docbook-xsl archive file, unpack it
# into a directory of your choosing, and change the variable DOCBOOK_XSL_DIR
# in this script to point to that directory.
#
# 4. The LDP customization stylesheet. This is a stylesheet written by the LDP
# that makes the generated HTML conform to LDP conventions. You can download
# this from:
#
# http://www.happy-monkey.net/docbook/
#
# The above page has installation instructions for the LDP customization
# stylesheet, which basically just requires unpacking the archive and copying
# some files. This stylesheet is actually optional, but if you don't install
# it, then you won't get numbered sections. You must install this on top of
# the DocBook XSL stylesheet -- don't install it in a separate directory.
#
# 5. An XSLT (Extensible Stylesheet Language Transformations) processor. This
# is a program that reads the DocBook DTD, the DocBook XSL for a given kind
# of output (e.g., HTML), and the DocBook XML document you have written,
# validates the document against the DTD and uses the stylesheet to convert
# the document into the output format (e.g., HTML).
#
# Most Linux systems come with an XSLT processor named "xsltproc", which is
# what this script invokes. If you are using Windows, you can install Cygwin
# from http://www.cygwin.com/ which includes xsltproc. You can learn more
# about XSLT processors at:
#
# http://en.wikipedia.org/wiki/Xslt
#
# IMHO, it's sad that converting DocBook XML to HTML is so complicated. This is
# what you get when engineers create tools for other engineers.
################################################################################
# Change these variables so they are appropriate for your system.
# Change this to point to the directory containing the DocBook DTD (i.e., the
# directory containing the file docbookx.dtd and its supporting files).
DOCBOOK_DTD_DIR="/cygdrive/c/franl/work/ldp/dtd-4.2"
# Change this to point to the directory containing the DocBook XSL stylesheet.
DOCBOOK_XSL_DIR="$HOME/work/ldp/xsl/docbook-xsl-1.69.1"
# Change this to point to the temporary file in which the converted HTML will
# be stored.
TMPFILE="c:/temp/db2html.html"
# Change this to point to your preferred Web browser.
BROWSER="c:/program files/mozilla firefox/firefox.exe"
################################################################################
# We use the LDP customization stylesheet if it's installed, otherwise we use
# the DocBook XSL stylesheet.
if [ -f "$DOCBOOK_XSL_DIR/html/tldp-one-page.xsl" ]
then
STYLESHEET="file://$DOCBOOK_XSL_DIR/html/tldp-one-page.xsl"
else
STYLESHEET="file://$DOCBOOK_XSL_DIR/html/docbook.xsl"
fi
################################################################################
# Now do the conversion.
rm -f "$TMPFILE"
# This entire script exists basically to execute these two commands, so you
# could probably just type these commands by hand, after manually substituting
# the variables.
. "$DOCBOOK_XSL_DIR/.profile.incl"
xsltproc --nonet --path "$DOCBOOK_DTD_DIR" --output "$TMPFILE" "$STYLESHEET" "$@"
#xsltproc --output "$TMPFILE" "$STYLESHEET" "$@"
################################################################################
# Now display the result (if the conversion was successful).
if [ -f "$TMPFILE" ]
then
"$BROWSER" "file://$TMPFILE" &
exit 0
fi
echo "No HTML file produced due to errors!" >&2
exit 1