<chapter>
-<chapterinfo>
-<releaseinfo role="meta">
-$Id$
-</releaseinfo>
-<author><surname>Stayton</surname>
-<firstname>Bob</firstname></author>
-<copyright><year>2000</year><holder>Bob Stayton</holder>
-</copyright>
-</chapterinfo>
-<title>DocBook XSL</title>
-<?dbhtml filename="publishing.html"?>
- <sect1>
- <title>Using XSL tools to publish DocBook
- documents</title>
- <para>There is a growing list of tools to process DocBook
- documents using XSL stylesheets. Each tool implements parts
- or all of the XSL standard, which actually has several
- components:
- <variablelist>
- <varlistentry>
- <term>Extensible Stylesheet Language (XSL)</term>
- <listitem>
- <para>A language for expressing stylesheets written
- in XML. It includes the formatting object language, but
- refers to separate documents for the transformation
- language and the path language.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>XSL Transformation (XSLT)</term>
- <listitem>
- <para>The part of XSL for transforming XML documents
- into other XML documents, HTML, or text. It can be used to
- rearrange the content and generate new content.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>XML Path Language (XPath)</term>
- <listitem>
- <para>A language for addressing parts of an XML
- document. It is used to find the parts of your document to
- apply different styles to. All XSL processors use this
- component.</para>
- </listitem>
-</varlistentry>
-</variablelist></para>
-<para>To publish HTML from your XML documents, you just
- need an XSLT engine. To get to print, you need an XSLT
- engine to produce formatting objects (FO), which then must
- be processed with an FO engine to produce
- PostScript or PDF output.</para>
+ <chapterinfo>
+ <releaseinfo role="meta">
+ $Id$
+ </releaseinfo>
+ <author><surname>Stayton</surname>
+ <firstname>Bob</firstname></author>
+ <copyright><year>2000</year><holder>Bob Stayton</holder>
+ </copyright>
+ </chapterinfo>
+ <title>DocBook XSL</title>
+ <?dbhtml filename="publishing.html"?>
+ <sect1>
+ <title>Using XSL tools to publish DocBook
+ documents</title>
+ <para>There is a growing list of tools to process DocBook
+ documents using XSL stylesheets. Each tool implements parts
+ or all of the XSL standard, which actually has several
+ components:
+ <variablelist>
+ <varlistentry>
+ <term>Extensible Stylesheet Language (XSL)</term>
+ <listitem>
+ <para>A language for expressing stylesheets written
+ in XML. It includes the formatting object language, but
+ refers to separate documents for the transformation
+ language and the path language.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>XSL Transformation (XSLT)</term>
+ <listitem>
+ <para>The part of XSL for transforming XML documents
+ into other XML documents, HTML, or text. It can be used to
+ rearrange the content and generate new content.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>XML Path Language (XPath)</term>
+ <listitem>
+ <para>A language for addressing parts of an XML
+ document. It is used to find the parts of your document to
+ apply different styles to. All XSL processors use this
+ component.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist></para>
+ <para>To publish HTML from your XML documents, you just
+ need an XSLT engine. To get to print, you need an XSLT
+ engine to produce formatting objects (FO), which then must
+ be processed with an FO engine to produce
+ PostScript or PDF output.</para>
<sect2>
<title>XSLT engines</title>
<sect3>
<title>Which XSLT engine should I use?</title>
- <para>Before reading anything else in this section, please take
- a few seconds to read the following warning.</para>
+ <para>Currently, the only XSLT engines that are recommended and
+ known to work well with the DocBook XSL stylesheets are
+ Daniel Veillard's C-based implementation, <application
+ class="software" >xsltproc</application> (the command line
+ processor packaged with <ulink
+ url="http://xmlsoft.org/XSLT/" >libxslt</ulink>, the XSLT
+ C library for Gnome), and Michael Kay's Java-based
+ implementation, <application class="software" ><ulink
+ url="http://saxon.sourceforge.net/"
+ >Saxon</ulink></application>.</para>
- <warning>
- <simpara>One engine you should definitely
- <emphasis>not</emphasis> use is James Clark's XT. XT is an
- incomplete implementation of the XSLT 1.0 specification. One
- of the important things that's missing from it is support for
- XSLT "keys", which the DocBook XSLT stylesheets rely on for
- generating indexes, among other things. So you can't use XT
- reliably with current versions of the stylesheets.
- </simpara>
- </warning>
+ <warning>
+ <title>XSLT engines not recommended for use with DocBook</title>
+ <para>The following engines are not currently recommended for
+ use with the DocBook XSL stylesheets:
+ <variablelist>
+ <varlistentry>
+ <term>James Clark's XT</term>
+ <listitem>
+ <para>XT is an incomplete implementation
+ of the XSLT 1.0 specification. One of the important things
+ that's missing from it is support for XSLT "keys", which
+ the DocBook XSLT stylesheets rely on for generating
+ indexes, among other things. So you can't use XT reliably
+ with current versions of the stylesheets.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Xalan (both Java and C++ implementations)</term>
+ <listitem>
+ <para>Bugs in current versions of Xalan prevent it
+ from being used reliably with the stylesheets.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+ </warning>
<para>Your choice of an XSLT engine may depend a lot on the
- environment you'll be running the engine in. Many DocBook
- users who need or want to use a non-Java application are using
- Daniel Veillard's C-based implementation, xsltproc (the
- command line processor packaged with libxslt, the XSLT C
- library for Gnome, <ulink url="http://xmlsoft.org/XSLT/"
- >http://xmlsoft.org/XSLT/</ulink>). It's very fast, and also a
- good choice because Veillard monitors the DocBook mailing
- lists to field usage and troubleshooting questions and
- responds very quickly to bug reports. (And the libxslt site
- features a <ulink url="http://xmlsoft.org/XSLT/docbook.html"
- >DocBook page</ulink> that, among other things, includes a
- shell script you can use to automatically generate <ulink
- url="http://xmlsoft.org/catalog.html" >XML catalogs</ulink>
- for DocBook.) But one current limitation xsltproc has is that
- it doesn't yet support Norm Walsh's DocBook-specific XSLT
- extension functions.</para>
+ environment you'll be running the engine in. Many DocBook
+ users who need or want a non-Java application are using
+ <application class="software" >xsltproc</application>. It's
+ very fast, and also a good choice because Veillard monitors
+ the DocBook mailing lists to field usage and troubleshooting
+ questions and responds very quickly to bug reports. (And the
+ libxslt site features a <ulink
+ url="http://xmlsoft.org/XSLT/docbook.html" >DocBook
+ page</ulink> that, among other things, includes a shell
+ script you can use to automatically generate <ulink
+ url="http://xmlsoft.org/catalog.html" >XML
+ catalogs</ulink> for DocBook.) But one current limitation
+ <application class="software" >xsltproc</application> has is
+ that it doesn't yet support Norm Walsh's DocBook-specific
+ XSLT extension functions.</para>
- <para>The current Java-based XSLT engine of choice for many
- DocBook users seems to be Michael Kay's Saxon (<ulink
- url="http://saxon.sourceforge.net/"
- >http://saxon.sourceforge.net/</ulink>). It supports Norm
- Walsh's DocBook-specific XSLT extension functions, and among the
- Java-based engines, seems to generate the fewest bug reports to
- the DocBook mailing lists.</para>
+ <para>If you can use a Java-based implementation, choose Michael
+ Kay's <application class="software">Saxon</application>. It
+ supports Norm Walsh's DocBook-specific XSLT extension
+ functions.</para>
<para>A variety of XSLT engines are available. Not all of them
are used much in the DocBook community, but here's a list of
- some free/open-source ones you might want to try (including
- the two previously mentioned).
+ some free/open-source ones you might consider (though
+ <application class="software" >xsltproc</application> and
+ <application class="software" >Saxon</application> are
+ currently the only recommended XSLT engines for use with
+ DocBook).
<itemizedlist>
<listitem>
<para>xsltproc, written in C, from Daniel Veillard (<ulink
url="http://saxon.sourceforge.net/"
>http://saxon.sourceforge.net/</ulink>)</para>
</listitem>
+<!-- commented out because current Xalan versions don't work with DocBook
<listitem>
- <para>Xalan, written in Java, from the Apache XML
- Project (<ulink url="http://xml.apache.org"
- >http://xml.apache.org</ulink>)</para>
- </listitem>
+ <para>Xalan, available in both C++ and Java
+ implementations, from the Apache XML Project (<ulink
+ url="http://xml.apache.org"
+ >http://xml.apache.org</ulink>)</para>
+ </listitem>
+<!-->
<listitem>
<para>4XSLT, written in Python, from FourThought LLC
- (<ulink url="http://www.fourthought.com"
- >http://www.fourthought.com</ulink>)</para>
+ (<ulink url="http://www.fourthought.com"
+ >http://www.fourthought.com</ulink>)</para>
</listitem>
<listitem>
<para>Sablotron, written in C++, from Ginger Alliance
- (<ulink url="http://www.gingerall.com"
- >http://www.gingerall.com</ulink>)</para>
+ (<ulink url="http://www.gingerall.com"
+ >http://www.gingerall.com</ulink>)</para>
</listitem>
<listitem>
<para>XML::XSLT,written in Perl, from Geert Josten and
Egon Willighagen (<ulink url="http://www.cpan.org"
- >http://www.cpan.org</ulink>)</para>
+ >http://www.cpan.org</ulink>)</para>
</listitem>
</itemizedlist>
</para>
specification, are still very useful:
<itemizedlist>
<listitem><para>PassiveTeX (TeX-based) from Sebastian
- Rahtz (<ulink
+ Rahtz (<ulink
url="http://www.hcu.ox.ac.uk/TEI/Software/passivetex/"
>http://www.hcu.ox.ac.uk/TEI/Software/passivetex/</ulink>)</para>
</listitem>
<listitem>
<para>FOP (Java-based) from the Apache XML Project
- (<ulink url="http://xml.apache.org/fop/"
+ (<ulink url="http://xml.apache.org/fop/"
>http://xml.apache.org/fop/</ulink>)</para>
</listitem>
</itemizedlist>
Of those, PassiveTeX currently seems to be the more mature,
less buggy implementation.
</para>
+
<para>And there are two proprietary commercial products that
- both seem to be fairly mature, complete implementations of the
- FO part of the XSL specification:
+ both seem to be fairly mature, complete implementations of the
+ FO part of the XSL specification:
<itemizedlist>
<listitem>
- <para>Epic Editor 4.2 (includes support for processing
- formatting object files) from Arbortext (<ulink
- url="http://www.arbortext.com"></ulink>)</para>
+ <para>current versions of <ulink
+ url="http://www.arbortext.com" >Arbortext Epic
+ Editor</ulink> include integrated support for
+ processing formatting object files</para>
</listitem>
<listitem>
- <para>XEP (written in Java) from RenderX (<ulink
- url="http://www.renderx.com"
- >http://www.renderx.com</ulink>).</para>
+ <para><ulink url="http://www.renderx.com" >RenderX
+ XEP</ulink> (written in Java) is a standalone tool
+ for processing formatting object files</para>
</listitem>
</itemizedlist>
</para>
-
+
</sect3>
<sect3>
<title>How do I use an XSLT engine?</title>
</sect2>
</sect1>
+
<sect1>
<title>A brief introduction to XSL</title>
<para>XSL is both a transformation language and a
of their own (or their ancestors).</para>
</sect2>
</sect1>
-</chapter>
+</chapter>
\ No newline at end of file