<?xml version='1.0'?>
<!DOCTYPE slides SYSTEM "/usr/share/sgml/docbook/xsl-slides-1.1/slides.dtd">

<!-- $Id $ -->

<slides>
<slidesinfo>
  <title>Single-Source Publishing with DocBook XML</title>

  <authorgroup>
    <author>
      <firstname>Dan</firstname>
      <surname>York</surname>
      <affiliation>
         <jobtitle>Product Line Mgr, SME Server</jobtitle>
         <orgname>Mitel Networks Corporation</orgname>
	 <orgname>Network Server Solutions Group</orgname>
      </affiliation>
      <email>dan_york@mitel.com</email>
    </author>
  </authorgroup>

  <pubdate>June 28, 2002</pubdate>

  <confgroup>
     <conftitle>Ottawa Linux Symposium</conftitle>
     <conftitle role="address">Ottawa, Ontario, Canada</conftitle>
  </confgroup>
  <copyright>
     <year>2002</year>
     <holder>Dan York</holder>
  </copyright>
</slidesinfo>

<foil><title>Agenda</title>
<itemizedlist>
<listitem><para>Introduction</para></listitem>
<listitem><para>Getting started</para></listitem>
<listitem><para>Creating a first document</para></listitem>
<listitem><para>More DocBook elements</para></listitem>
<listitem><para>Stylesheets</para></listitem>
<listitem><para>Other output formats</para></listitem>
<listitem><para>Profiling</para></listitem>
<listitem><para>Extensions</para></listitem>
<listitem><para>Other tools</para></listitem>
<listitem><para>Resources</para></listitem>
</itemizedlist>
</foil>

<section>
<title>Introduction</title>
<foil><title>What is DocBook?</title>
<itemizedlist>
<listitem>
<para>A system for writing structured documents using SGML or XML
</para>
</listitem>
<listitem>
<para>Targeted at documents about computer technology, but can be used for
other subjects
</para>
</listitem>
<listitem> <para>Also other uses such as web sites and slides (like these!) </para>
</listitem>
<listitem>
<para>Supported by a growing number of commercial and free software/open source tools
</para>
</listitem>
<listitem>
<para>Supported by a large community of DocBook users and developers
</para>
</listitem>
</itemizedlist>
</foil>
<foil><title>DocBook History</title>
<itemizedlist>
<listitem>
<para>Created around 1991 originally by HaL Computer Systems and O'Reilly
&amp; Associates
</para>
</listitem>
<listitem>
<para>Later developed by a wide range of companies including:
</para>
<itemizedlist>
<listitem> <para>Novell </para> </listitem>
<listitem> <para>Digital Equipment Corporation</para> </listitem>
<listitem> <para>Hewlett Packard</para> </listitem>
<listitem> <para>Sun Microsystems </para> </listitem>
<listitem> <para>SCO</para> </listitem>
</itemizedlist>
<para>Also Fujitsu, Hitachi, Unisys and many others
</para>
</listitem>
<listitem>
<para>Now maintained by OASIS - 
<ulink url="http://www.oasis-open.org/docbook/">http://www.oasis-open.org/docbook/</ulink>
</para>
</listitem>
</itemizedlist>
</foil>
<foil><title>Who uses DocBook?</title>
<para>Beyond the companies mentioned previously, DocBook is widely used within
the free software/open source community, including by the following
organizations and companies:
</para>
<itemizedlist>
<listitem><para>Linux Documentation Project</para></listitem>
<listitem><para>FreeBSD Documentation Project</para></listitem>
<listitem><para>GNOME Documentation Project</para></listitem>
<listitem><para>KDE Documentation Project</para></listitem>
</itemizedlist>
<itemizedlist>
<listitem> <para>Caldera Systems</para> </listitem>
<listitem> <para>Mandrakesoft</para> </listitem>
<listitem> <para>Red Hat</para> </listitem>
<listitem> <para>SuSE</para> </listitem>
</itemizedlist>
</foil>
<foil><title>DocBook Strengths</title>
<itemizedlist>
<listitem><para><emphasis role="strong">Very</emphasis> strong user/developer community</para></listitem>
<listitem><para>Easily customizable and extensible "standard" stylesheets</para></listitem>
<listitem><para>Open source and commercial tools available</para></listitem>
<listitem><para>Output to multiple formats, including:</para>
  <itemizedlist>
  <listitem><para>HTML</para></listitem>
  <listitem><para>HTML Help</para></listitem>
  <listitem><para>Java Help</para></listitem>
  <listitem><para>man pages</para> </listitem>
  <listitem><para>MIF (Adobe FrameMaker)</para></listitem>
  <listitem><para>PDF</para></listitem>
  <listitem><para>PostScript</para></listitem>
  <listitem><para>RTF (Microsoft)</para></listitem>
  <listitem><para>TeX</para></listitem>
  <listitem><para>Text</para></listitem>
  <listitem><para>XHTML</para></listitem>
  <listitem><para>XSL Formatting Objects (FO)</para></listitem>
  </itemizedlist>
</listitem>
</itemizedlist>
</foil>
<foil><title>DocBook Weaknesses</title>
<itemizedlist>
<listitem><para>Number of elements can be intimidating.</para></listitem>
<listitem><para>Learning curve for newcomers not used to tagged languages can
be intimidating.</para></listitem>
<listitem><para>Setting up some of the open source tools can be intimidating.</para></listitem>
<listitem><para>Some of the open source tools do not provide the desired
level of control or maturity. (ex. XML PDF generation)</para></listitem>
</itemizedlist>
</foil>
<foil><title>Example - Book</title>
<programlisting>
<![CDATA[<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<book>
  <bookinfo>
    <title>Sample Book</title>
  </bookinfo>
  <chapter> 
    <title>First Chapter</title>
    <sect1>
      <title>First Section</title>
      <para>This is a paragraph.</para>
    </sect1>
    <sect1>...</sect1>
  </chapter>
  <chapter>...</chapter>
  <chapter>...</chapter>
  <chapter>...</chapter>
  <appendix>...</appendix>
  <appendix>...</appendix>
</book>]]>
</programlisting>
</foil>

<foil><title>Example - Article</title>
<programlisting>
<![CDATA[<?xml version="1.0"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<article>
  <articleinfo>
    <title>Sample Article</title>
  </articleinfo>
  <para>This is an introductory paragraph.</para>
  <sect1>
    <title>First Section</title>
    <para>This is a paragraph.</para>
     <sect2>
       <title>This is a section level 2</title>
       <para>Blah, blah, blah... </para>
     </sect2>
     <sect2>...</sect2>
     <sect2>...</sect2>
  </sect1>
  <sect1>...</sect1>
  <sect1>...</sect1>
  <sect1>...</sect1>
</article>]]>
</programlisting>
</foil>
</section>
<section>
<title>Getting Started</title>
<foil><title>What do you need?</title>
<itemizedlist>
<listitem> <para>An editor</para> </listitem>
<listitem> <para>The DocBook XML DTD <emphasis>(optional)</emphasis></para> </listitem>
<listitem> <para>The DocBook XSLT stylesheets </para> </listitem>
<listitem> <para>An XSLT processor</para> </listitem>
</itemizedlist>
</foil>
<foil><title>Editing</title>
<variablelist>
<varlistentry>
<term>Emacs with psgml</term>
<listitem><para>Emacs with 
<ulink url="http://www.lysator.liu.se/~lenst/about_psgml/">psgml</ulink> mode for entering elements
and performing validation</para></listitem>
</varlistentry>
<varlistentry>
<term>vim with macros</term>
<listitem><para><ulink url="http://www.vim.org/">Vim</ulink> with 
<ulink url="http://www.lodestar2.com/software/docbook/">macros</ulink> to speed entry</para></listitem>
</varlistentry>
<varlistentry>
<term>epcEdit</term>
<listitem>
<para><ulink url="http://www.epcedit.com/">http://www.epcedit.com/</ulink> -
commercial editor for both Windows and Linux
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>ArborText Epic</term>
<listitem> <para><ulink url="http://www.arbortext.com/html/products.html">http://www.arbortext.com/html/products.html</ulink> - comprehensive suite of both editing and processing tools</para> </listitem>
</varlistentry>
<varlistentry>
<term>SoftQuad XMetal</term>
<listitem><para><ulink url="http://www.softquad.com/">http://www.softquad.com/</ulink> - XML editor</para></listitem>
</varlistentry>
</variablelist>
</foil>
<foil><title>The DocBook DTD</title>
<itemizedlist>
<listitem><para>Most XSLT processors also <emphasis>validate</emphasis> the XML,
so you need access to the DocBook XML DTD</para></listitem>
<listitem> <para>Standard header to a DocBook XML file is:</para>
<screen><![CDATA[<?xml version="1.0"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">]]></screen> </listitem>
<listitem><para>If used, most XSLT processors require you to be online</para>
<tip>
<para><command>xsltproc</command> supports the use of 
<ulink url="http://www.xmlsoft.org/catalog.html">XML Catalogs</ulink> which
map identifiers to locally installed DTDs</para>
</tip></listitem>
<listitem><para>If you are not online and do not have XML Catalog support, you
need to change header to path where DTD is installed</para>
<screen><![CDATA[<?xml version="1.0"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"/usr/share/sgml/docbook/xml-dtd-4.1.2/docbookx.dtd">]]></screen></listitem>
</itemizedlist>
</foil>

<foil><title>Installing the DocBook DTD</title>
<orderedlist>
<listitem><para>Download the XML v4.1.2 DTD from:</para>
<screen>
<ulink url="http://www.oasis-open.org/docbook/xml/index.shtml">http://www.oasis-open.org/docbook/xml/index.shtml</ulink>
</screen></listitem>
<listitem><para>Extract into a directory - LSB proposal would be 
<filename>/usr/share/sgml/docbook/xml-dtd-4.1.2</filename></para></listitem>
</orderedlist>
</foil>

<foil><title>DocBook XSL stylesheets</title>
<itemizedlist>
<listitem>
<para>"Standard" set of "modular" stylesheets maintained primarily by Norman Walsh.</para>
</listitem>
<listitem>
<para>Two sets of stylesheets:</para>
     <itemizedlist>
     <listitem><para>XSL</para></listitem>
     <listitem><para>DSSSL</para></listitem> 
     </itemizedlist>
</listitem>
<listitem>
<para>Available from <ulink url="http://docbook.sourceforge.net/">http://docbook.sourceforge.net/</ulink> </para>
<para>Specifically
<ulink url="http://sourceforge.net/project/showfiles.php?group_id=21935">http://sourceforge.net/project/showfiles.php?group_id=21935</ulink>
</para>
</listitem>
</itemizedlist>
</foil>
<foil><title>XSL Stylesheets</title>
<itemizedlist>
<listitem>
<para>XSLT stylesheets can transform DocBook XML into the following formats:
</para>
    <itemizedlist>
    <listitem><para>HTML</para></listitem>
    <listitem><para>HTML Help (for Windows Help)</para></listitem>
    <listitem><para>Java Help</para></listitem>
    <listitem><para>XHTML</para></listitem>
    <listitem><para>XSL Formatting Objects (FO)</para></listitem>
    </itemizedlist>
</listitem>
<listitem>
<para>Other tools can take FO into PDF, PostScript, etc.
</para>
</listitem>
</itemizedlist>
</foil>
<foil><title>DSSL Stylesheets</title>
<itemizedlist>
<listitem>
<para>DSSSL stylesheets can transform DocBook SGML into the following formats:
</para>
    <itemizedlist>
    <listitem><para>HTML</para></listitem>
    <listitem><para>MIF</para></listitem>
    <listitem><para>RTF</para></listitem>
    <listitem><para>TeX</para></listitem>
    </itemizedlist>
</listitem>
<listitem>
<para>Toolchain typically goes from TeX into PDF, Postscript, etc.</para>
<para>Although intended to work with SGML, the <filename>openjade</filename>
toolchain also supports the use of XML.
</para>
</listitem>
</itemizedlist>
</foil>
<foil><title>Installing the XSL stylesheets</title>
<orderedlist>
<listitem>
<para>Download the <filename>.tgz</filename> or <filename>.zip</filename> from
<ulink url="http://sourceforge.net/project/showfiles.php?group_id=21935">http://sourceforge.net/project/showfiles.php?group_id=21935</ulink>
</para>
<para>Current version is 1.51.1.
</para>
</listitem>
<listitem><para>Extract them into a directory - by LSB proposal it would be 
<filename>/usr/share/sgml/docbook/docbook-xsl-1.51.1/</filename> (for example)</para></listitem>
<listitem>
<para>Will see a variety of subdirectories relating to output formats
</para>
</listitem>
</orderedlist>

</foil>
<foil><title>XSLT processor - libxslt/xsltproc</title>
<itemizedlist>
<listitem>
<para><ulink url="http://xmlsoft.org/XSLT/">http://xmlsoft.org/XSLT/</ulink>
</para>
</listitem>
<listitem>
<para>C program. Binaries available for Linux and Windows.</para></listitem>
<listitem> <para>Developed by Daniel Veillard from Red Hat, originally
for GNOME Project</para> </listitem>
<listitem> <para>Multiple commands: </para>
    <itemizedlist>
    <listitem> <para><command>xsltproc</command> - XSLT processing </para>
    </listitem>
    <listitem><para><command>xmllint</command> - XML validation and formatting
    </para></listitem>
    </itemizedlist>
</listitem>
<listitem> <para><emphasis>Extremely</emphasis> fast </para> </listitem>
<listitem> <para>Need to download both <filename>libxml2</filename> and
<filename>libxslt</filename> </para> </listitem>
</itemizedlist>
<screen>xsltproc -o <emphasis>outputfile</emphasis> <emphasis>stylesheet</emphasis> <emphasis>inputfile</emphasis>
</screen>
</foil>

<foil><title>XSLT processor - Saxon</title>
<itemizedlist>
<listitem>
<para><ulink url="http://saxon.sourceforge.net/">http://saxon.sourceforge.net/</ulink>
</para>
</listitem>
<listitem> <para>Java-based, also "Instant" versions for Windows </para> </listitem>
<listitem> <para>Developed by Michael Kay </para> </listitem>
<listitem> <para>Incorporates experimental XSLT features</para> </listitem>
</itemizedlist>
<screen>java com.icl.saxon.StyleSheet inputfile stylesheet</screen>
</foil>

<foil><title>XSLT processor - Xalan</title>
<itemizedlist>
<listitem>
<para><ulink url="http://xml.apache.org/">http://xml.apache.org/</ulink> </para>
</listitem>
<listitem> <para>Java-based (also a C++ version) </para> </listitem>
<listitem> <para>Developed by Apache Project </para> </listitem>
<listitem> <para>Widely used in open source community </para> </listitem>
</itemizedlist>
<screen>java org.apache.xml.xalan.xslt.Process -IN inputfile -XSL stylesheet -OUT outfile</screen>
</foil>

<foil><title>So are you ready?</title>
<para>You should have:
</para>
<orderedlist>
<listitem><para>An editor</para></listitem>
<listitem><para>DocBook DTD installed in <filename>/usr/share/sgml/docbook/xml-dtd-4.1.2/</filename></para></listitem>
<listitem><para>XSL stylesheets in
<filename>/usr/share/sgml/docbook/docbook-xsl-1.51.1/</filename></para></listitem>
<listitem><para>An XSLT processor</para></listitem>
</orderedlist>
<para>Let's go...  </para>
</foil>
</section>

<section>
<title>A First Document</title>
<foil><title>Starting a document</title>
<itemizedlist>
<listitem> <para>Always starts with header:</para>
<programlisting>
<![CDATA[<?xml version="1.0"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">]]>
</programlisting>
<para>May have to change URL to local path if offline
</para></listitem>
<listitem><para>Will usually be a <sgmltag>&lt;book&gt;</sgmltag> or 
<sgmltag>&lt;article&gt;</sgmltag> (need
to change header line appropriately)</para></listitem>
<listitem><para>If <sgmltag>&lt;book&gt;</sgmltag>, will be composed of
multiple <sgmltag>&lt;chapter&gt;</sgmltag> elements each with sections inside</para></listitem>
<listitem><para>If <sgmltag>&lt;article&gt;</sgmltag>, will be composed of
multiple section elements</para></listitem>
<listitem>
<para>Indenting and all whitespace is ignored except in some verbatim elements
</para>
</listitem>
</itemizedlist>
</foil>
<foil><title>Sections</title>
<itemizedlist>
<listitem><para>DocBook contains sections that can be nested.</para>
</listitem>
<listitem><para>Either of two styles, specific (&lt;sect1-5&gt;):</para>
<programlisting>
<![CDATA[<sect1>
     <sect2>
        <sect3>...</sect3>
	<sect3>
	   <sect4>
	      <sect5>...</sect5>
	      <sect5>...</sect5>
	   </sect4>
	   <sect4>...</sect4>
	</sect3>
     </sect2>
     <sect2>...</sect2>
  </sect1>
  <sect1>...</sect1>
  <sect1>...</sect1>]]>
</programlisting>
</listitem>
</itemizedlist>
</foil>
<foil><title>Sections - continued</title>
<itemizedlist>
<listitem><para>Generic (nested &lt;section&gt; tags):</para>
<programlisting>
<![CDATA[<section>
     <section>
        <section>...</section>
	<section>
	   <section>
	      <section>...</section>
	      <section>...</section>
	   </section>
	   <section>...</section>
	</section>
     </section>
     <section>...</section>
  </section>
  <section>...</section>
  <section>...</section>]]>
</programlisting>
</listitem>
<listitem><para>No theoretical limit on depth of nesting.</para></listitem>
</itemizedlist>
</foil>
<foil><title>Creating a first document</title>
<programlisting>
<![CDATA[<?xml version="1.0"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<article>
  <articleinfo>
    <title>Sample Article</title>
  </articleinfo>
  <para>This is an introductory paragraph.</para>
  <sect1>
    <title>Introduction</title>
    <para>This is a paragraph.</para>
     <sect2>
       <title>Purpose</title>
       <para>Blah, blah, blah... </para>
     </sect2>
     <sect2>
     <title>Scope</title>
     <para>This is more text</para></sect2>
  </sect1>
  <sect1>
    <title>Installation</title>
    <para>To install this program, you need to execute some script.
    </para>
  </sect1>
</article>]]>
</programlisting>
</foil>

<foil><title>Generating a single HTML page</title>
<para>For clarity in these slides, I have environment variable for path:</para>
<programlisting>
$ export DB="/usr/share/sgml/docbook/docbook-xsl-1.51.1"
</programlisting>
<orderedlist>
<listitem>
<para>Process the slides into an HTML page:
</para>
<programlisting>
$ xsltproc -o sample.html $DB/html/docbook.xsl sample.xml
</programlisting>
</listitem>
<listitem>
<para>View HTML document in browser.
</para>
</listitem>
</orderedlist>
</foil>

<foil><title>Generating multiple HTML pages</title>
<itemizedlist>
<listitem><para>Referred to as "chunking"</para></listitem>
<listitem><para>Simple matter of calling chunk stylesheet</para>
<programlisting>
$ xsltproc $DB/html/chunk.xsl sample.xml
</programlisting>
</listitem>
</itemizedlist>
</foil>
</section>

<section>
<title>More DocBook Elements</title>
<foil><title>List - Itemized</title>
<itemizedlist>
<listitem><para>Provides a bulleted list and maps to a <![CDATA[<ul>]]> in 
HTML.</para>
<programlisting>
<![CDATA[<itemizedlist>
<listitem><para>Item A</para></listitem>
<listitem><para>Item B</para></listitem>
<listitem><para>Item C</para></listitem>
</itemizedlist>]]>
</programlisting>
</listitem>
<listitem>
<para>Can contain other DocBook elements inside of
<sgmltag>&lt;listitem&gt;</sgmltag> elements
</para>
</listitem>
</itemizedlist>
</foil>
<foil><title>List - Ordered</title>
<itemizedlist>
<listitem>
<para>Provides a numbered list and maps to a <![CDATA[<ol>]]> in HTML.
</para>
<programlisting>
<![CDATA[<orderedlist>
<listitem><para>Item A</para></listitem>
<listitem><para>Item B</para></listitem>
<listitem><para>Item C</para></listitem>
</orderedlist>]]>
</programlisting>
</listitem>
</itemizedlist>
</foil>
<foil><title>List - Variable</title>
<itemizedlist>
<listitem><para>Provides a list of terms and definitions. Maps to 
a <![CDATA[<dl>]]> in HTML.</para>
<programlisting>
<![CDATA[<variablelist>
<title>Title of lists</title>
   <varlistentry>
   <term></term>
   <listitem><para></para></listitem>
   </varlistentry>
   <varlistentry>
   <term></term>
   <listitem><para></para></listitem>
   </varlistentry>
</variablelist>]]>
</programlisting>
</listitem>
</itemizedlist>
</foil>
<foil><title>Image - Simple</title>
<itemizedlist>
<listitem><para>An image is usually part of a larger 
<![CDATA[<mediaobject>]]> tag.  The simple form is: </para>
<programlisting>
<![CDATA[<mediaobject>
<imageobject>
  <imagedata fileref="filename.jpg" format="JPG"/>
</imageobject>
</mediaobject>]]>
</programlisting>
</listitem>
</itemizedlist>
</foil>
<foil><title>Image - Complex</title>
<itemizedlist>
<listitem>
<para>A more complex form allows for multiple image formats and also
alternative text:
</para>
<programlisting>
<![CDATA[<mediaobject>
<imageobject>
<imagedata fileref="logo.eps" format="EPS" scale="50" scalefit="1"/>
</imageobject>
<imageobject>
<imagedata fileref="logo.jpg" format="JPG"/>
</imageobject>
<textobject>
<phrase>Our company logo</phrase>
</textobject>
</mediaobject>]]>
</programlisting>
</listitem>
</itemizedlist>
</foil>
<foil><title>Tables</title>
<itemizedlist>
<listitem><para>Tables can be created in DocBook:</para>
<programlisting>
<![CDATA[<table>
<title></title>
<tgroup cols="2">
  <thead>
    <row>
    <entry></entry>
    <entry></entry>
    </row>
  </thead>
  <tbody>
    <row>
    <entry></entry>
    <entry></entry>
    </row>
    <row>
    <entry></entry>
    <entry></entry>
    </row>
  </tbody>
</tgroup>
</table>]]>
</programlisting>
</listitem>
<listitem>
<para>Also an <![CDATA[<informaltable>]]> tag for tables that do not need a
title. Additionally, informal tables will not appear in a generated list of tables.
</para>
</listitem>
</itemizedlist>
</foil>

<foil><title>Figures and Examples</title>
<itemizedlist>
<listitem>
<para><![CDATA[<figure>]]> and <![CDATA[<example>]]> tag are included and will
be numbered and have titles.
</para>
</listitem>
<listitem>
<para><![CDATA[<informalfigure>]]> and <![CDATA[<informalexample>]]> will not
be numbered.
</para>
</listitem>
<listitem>
<para>Examples: </para>
<programlisting>
<![CDATA[<figure>
<title>Revenues for Q1</title>
<mediaobject>
  <imageobject>
  <imagedata fileref="q1revenue.jpg" format="JPG"/>
  </imageobject>
</mediaobject>
</figure>

<example>
<title>Sample python code</title>
<programlisting>
   print "Hello, world!"
</programlisting>
</example> ]]>
</programlisting>
</listitem>
</itemizedlist>
</foil>
<foil><title>Admonitions</title>
<itemizedlist>
<listitem><para>Several forms of "admonitions" are available.</para></listitem>
<listitem>
<para>"Note":</para>
<programlisting>
<![CDATA[<note><para>This is a note</para></note>]]>
</programlisting>
<note><para>This is a note</para></note>
</listitem>
<listitem>
<para>"Warning":</para>
<programlisting>
<![CDATA[<warning><para>This is a warning</para></warning>]]>
</programlisting>
<warning><para>This is a warning</para></warning>
</listitem>
<listitem>
<para>"Tip":</para>
<programlisting>
<![CDATA[<tip><para>This is a tip</para></tip>]]>
</programlisting>
<tip><para>This is a tip</para></tip>
</listitem>
<listitem>
<para>"Caution":</para>
<programlisting>
<![CDATA[<caution><para>This is a caution</para></caution>]]>
</programlisting>
<caution><para>This is a caution</para></caution>
</listitem>
<listitem>
<para>"Important":</para>
<programlisting>
<![CDATA[<important><para>This is important</para></important>]]>
</programlisting>
<important><para>This is important</para></important>
</listitem>
</itemizedlist>
</foil>
<foil><title>Character Formatting</title>
<itemizedlist>
<listitem> <para><![CDATA[<emphasis>This is some text.</emphasis>]]> </para> </listitem>
<listitem> <para><![CDATA[<emphasis role="bold">This is some bold text.</emphasis>]]> </para> </listitem>
<listitem>
<para><![CDATA[<filename>]]>
</para>
</listitem>
<listitem>
<para><![CDATA[<command>]]>
</para>
</listitem>
<listitem>
<para>Many others
</para>
</listitem>
</itemizedlist>
</foil>
<foil><title>Verbatim Text</title>
<itemizedlist>
<listitem>
<para><![CDATA[<programlisting>]]> </para>
</listitem>
<listitem>
<para><![CDATA[<screen>]]>
</para>
</listitem>
<listitem>
<para><![CDATA[<literallayout>]]>
</para>
</listitem>
</itemizedlist>
<para>Can use <filename>&lt;![CDATA[]]&gt;</filename> to include XML/HTML
code, as in:
</para>
<programlisting>
&lt;![CDATA[<![CDATA[<listitem><para>This is a list item.</para></listitem>]]>]]&gt;
</programlisting>
</foil>
<foil><title>Links</title>
<itemizedlist>
<listitem>
<para><![CDATA[<ulink url="http://www.docbook.org/">Docbook page</ulink>]]>
</para>
</listitem>
<listitem>
<para>Internal links based on id attributes added to other elements</para>
</listitem>
<listitem>
<para><![CDATA[<link linkend="idname">Internal link</link>]]>
</para>
</listitem>
<listitem>
<para><![CDATA[<xref linkend="idname"/>]]> 
</para>
</listitem>
<listitem>
<para>Example:
</para>
<programlisting>
<![CDATA[<sect1 id="introduction">
...
<para>See the <link linkend="introduction">intro section</link>
for more info.</para>
]]>
</programlisting>
</listitem>
</itemizedlist>
</foil>
<foil><title>Indexing</title>
<itemizedlist>
<listitem>
<para>Allows creation of indices.
</para>
</listitem>
<listitem>
<para><filename><![CDATA[<indexterm>]]></filename> takes a primary and
secondary terms
</para>
</listitem>
<listitem>
<para>Example:</para>
<programlisting>
<![CDATA[One XSLT processing command is "xsltproc"
<indexterm><primary>xsltproc</primary><secondary>XSLT
processing</secondary><indexterm>, which is part of "libxslt".]]>
</programlisting>
</listitem>
</itemizedlist>
<note>
<para>It is also possible to create glossaries and bibliographies</para>
</note>
</foil>
<foil><title>Miscellaneous</title>
<itemizedlist>
<listitem><para><![CDATA[<sidebar>]]></para></listitem>
<listitem><para><![CDATA[<blockquote>]]></para></listitem>
<listitem><para><![CDATA[<footnote>]]></para></listitem>
<listitem><para><![CDATA[<envvar>]]></para></listitem>
<listitem><para><![CDATA[<menuchoice>]]></para></listitem>
<listitem><para><![CDATA[<guimenu>]]></para></listitem>
<listitem><para><![CDATA[<guilabel>]]></para></listitem>
<listitem><para><![CDATA[<guibutton>]]></para></listitem>
<listitem>
<para>Many, many, many others...
</para>
<para><ulink url="http://www.docbook.org/tdg/en/html/ref-elements.html">http://www.docbook.org/tdg/en/html/ref-elements.html</ulink>
</para>
</listitem>
</itemizedlist>
</foil>

<foil><title>Example - Q&amp;A</title>
<itemizedlist>
<listitem>
<para>DocBook can also be used for question and answer sets:
</para>
<programlisting>
<![CDATA[<?xml version="1.0"?>
<!DOCTYPE qandaset PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
       "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">

<qandaset>

<qandaentry>
<question><para>What is the answer to the ultimate question?</para></question>
<answer><para>42</para></answer> 
</qandaentry>

<qandaentry>
<question><para>What kind of stylesheets are available?</para></question>
<answer><para>XSLT or DSSSL</para></answer> 
</qandaentry>

</qandaset>]]>
</programlisting>
</listitem>
</itemizedlist>
</foil>

<foil><title>Example - Reference Page</title>
<itemizedlist>
<listitem>
<para>Can be used for items such as Linux/UNIX <filename>man</filename> pages.
</para>
</listitem>
<listitem>
<para>Example: </para>
<programlisting>
<![CDATA[<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
                   "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<refentry>
<refmeta>
<refentrytitle>ls</refentrytitle>
<manvolnum>1</manvolnum>
</refmeta>

<refsynopsisdiv><title>Synopsis</title>
<synopsis>
ls (options)... (file)...
</synopsis>
</refsynopsisdiv>

<refsect1><title>Description</title>
<para>List information about the files...
</para>
<!--...-->
</refsect1>
<!--...-->
</refentry>
]]>
</programlisting>
</listitem>
</itemizedlist>
</foil>
</section>

<section>
<title>Stylesheets</title>
<foil><title>Customization Layers</title>
<itemizedlist>
<listitem><para>Main strength of standard stylesheets is that they are easily
customizable.</para></listitem>
<listitem><para>Parameters found in <filename>params.xsl</filename> or in HTML
in <filename>$DB/doc/html/index.html</filename>.</para></listitem>
<listitem><para>Example: <filename>mystyle.xsl</filename></para>
<programlisting><![CDATA[<?xml version="1.0"?>
<!-- Customization layer -->

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">

<!-- Use 'chunk.xsl' in line below to chunk files. -->
<xsl:import href="/usr/share/sgml/docbook/docbook-xsl-1.51.1/html/docbook.xsl"/>

<xsl:param name="chapter.autolabel" select="1"/>
<xsl:param name="section.autolabel" select="1"/>
<xsl:param name="section.label.includes.component.label" select="1" doc:type="boolean"/>

<!-- Insert more parameters here. -->
</xsl:stylesheet>]]></programlisting>
</listitem>
</itemizedlist>
</foil>

<foil><title>Using the customization layer</title>
<itemizedlist>
<listitem> <para>Call your customization layer instead of the standard
stylesheet</para> 
<programlisting>
xsltproc -o sample.html mystyle.xsl sample.xml
</programlisting>
</listitem>
</itemizedlist>
</foil>

<foil><title>More complex customization layers</title>
<itemizedlist>
<listitem><para>Beyond setting parameters, you can modify XSLT "templates" to
override default behavior</para></listitem>
<listitem> <para>Requires at least minimal knowledge of XSLT</para> </listitem>
<listitem> <para>Example: </para> 
<programlisting>
<![CDATA[<xsl:template match="emphasis">
  <xsl:choose>
    <xsl:when test="(@role='strong') or (@role='bold')">
      <xsl:call-template name="inline.boldseq"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:call-template name="inline.italicseq"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template> ]]>
</programlisting>
</listitem>
</itemizedlist>
</foil>

<foil><title>Layers upon layers</title>
<itemizedlist>
<listitem><para>What if you want to generate single HTML pages
<emphasis>and</emphasis> multiple HTML pages with the same basic
customizations?</para></listitem>
<listitem><para>Could do two stylesheets that differ only in calling
<filename>docbook.xsl</filename> or <filename>chunk.xsl</filename></para>
<itemizedlist>
<listitem>
<para>Problem keeping changes in sync between stylesheets
</para>
</listitem>
</itemizedlist>
</listitem>

<listitem><para>Solution is to have one main stylesheet and two "driver" files</para></listitem>
</itemizedlist>
</foil>

<foil><title>Layers upon layers (cont'd)</title>
<itemizedlist>
<listitem>
<para>Example: XSLT stylesheets for Linux Documentation Project
</para>
</listitem>
<listitem> <para>Consist of three files:</para> 

  <itemizedlist>
  <listitem><para><filename>ldp-html-common.xsl</filename> - main stylesheet that 
  contains actual customizations</para></listitem>
  <listitem><para><filename>ldp-html.xsl</filename> - file to call for single
  HTML pages - imports <filename>ldp-html-common.xsl</filename></para></listitem>
  <listitem><para><filename>ldp-html-chunk.xsl</filename> - file to call for
  multiple HTML pages - imports <filename>ldp-html-common.xsl</filename></para></listitem>
  </itemizedlist>
</listitem>
<listitem>
<para>Allows for customizations specific to single or multiple files to be
placed in appropriate files.
</para>
</listitem>
<listitem>
<para>Usage: </para>
<programlisting>
xsltproc -o howto.html ldp-html.xsl howto.xml
xsltproc ldp-html-chunk.xsl howto.xml    
</programlisting>
</listitem>
</itemizedlist>
</foil>

<foil><title>LDP XSL stylesheet structure</title>
<itemizedlist>
<listitem><para><filename>ldp-html.xsl</filename>: </para>
<programlisting>
<![CDATA[
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version='1.0'
                xmlns="http://www.w3.org/TR/xhtml1/transitional"
                exclude-result-prefixes="#default">

<!-- Note the the *order* of the import statements below is important and
     should not be changed. -->

<!-- Change this to the path to where you have installed the standard
     DocBook XSL stylesheets.  -->
<xsl:import href="/usr/share/sgml/docbook/docbook-xsl-1.51.1/html/docbook.xsl"/>

<!-- Imports the common LDP customization layer. -->
<xsl:import href="ldp-html-common.xsl"/>

<!-- If there was some reason to override 'ldp-html-common.xsl' or to 
     perform any other customizations that affect *only* the generation
     of a single HTML file, those templates or parameters could be
     entered here. -->

</xsl:stylesheet>]]>
</programlisting></listitem>
<listitem><para><filename>ldp-html-chunk.xsl</filename>: </para>
<programlisting>
<![CDATA[
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version='1.0'
                xmlns="http://www.w3.org/TR/xhtml1/transitional"
                exclude-result-prefixes="#default">

<!-- Note the the *order* of the import statements below is important and
     should not be changed. -->

<!-- Change this to the path to where you have installed the standard
     DocBook XSL stylesheets -->
<xsl:import href="/usr/share/sgml/docbook/docbook-xsl-1.51.1/html/chunk.xsl"/>

<!-- Imports the common LDP customization layer. -->
<xsl:import href="ldp-html-common.xsl"/>

<!-- If there was some reason to override 'ldp-html-common.xsl' or to 
     perform any other customizations that affect *only* the generation
     of multiple HTML files, those templates or parameters could be
     entered here. -->

</xsl:stylesheet> ]]>
</programlisting></listitem>
<listitem><para><filename>ldp-html-common.xsl</filename> </para>
<programlisting>
<![CDATA[<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version='1.0'
                xmlns="http://www.w3.org/TR/xhtml1/transitional"
                exclude-result-prefixes="#default"
		>

<!-- Note that this file does NOT import any other files -->

<xsl:param name="admon.graphics" select="0"/>

<xsl:param name="admon.graphics.path">images/</xsl:param>

<xsl:param name="funcsynopsis.decoration" select="1" doc:type="boolean"/>

<xsl:param name="html.ext" select="'.html'"/>

<!-- ... more parameters ... -->

</xsl:stylesheet>]]>
</programlisting></listitem>

</itemizedlist>
</foil>
</section>
<section>
<title>Other Output Formats</title>
<foil><title>Generating PDF</title>
<itemizedlist>
<listitem><para>Generally a two-stage process:</para>
    <orderedlist>
    <listitem> <para>Generation of FO from XML </para> </listitem>
    <listitem> <para>Generation of PDF from FO </para> </listitem>

    </orderedlist>
</listitem>
<listitem>
<para>Example:</para>
<programlisting>
xsltproc -o sample.fo  $DB/fo/docbook.xsl sample.xml
fop.sh -fo sample.fo -pdf sample.pdf
</programlisting>
</listitem>
</itemizedlist>
</foil>

<foil><title>PDF - FOP</title>
<itemizedlist>
<listitem>
<para><ulink url="http://xml.apache.org/fop/">http://xml.apache.org/fop/</ulink> </para>
</listitem>
<listitem> <para>Java-based </para> </listitem>
<listitem> <para>Developed by Apache Project </para> </listitem>
<listitem><para>Current version outputs to PDF, MIF, text and PCL. </para></listitem>
<listitem>
<para>Examples: </para>
<screen>Fop -fo <emphasis>inputfile</emphasis> -pdf <emphasis>outputfile</emphasis></screen>
<screen>Fop -fo manual.fo -pdf manual.pdf</screen>
</listitem>
<listitem>
<para>Can be used in conjunction with Xalan to directly process files:
</para>
<screen>Fop -xsl mystyles.xsl -xml manual.xml -pdf manual.pdf</screen>
</listitem>
</itemizedlist>
</foil>

<foil><title>PDF - PassiveTeX</title>
<itemizedlist>
<listitem>
<para><ulink url="http://users.ox.ac.uk/~rahtz/passivetex/">http://users.ox.ac.uk/~rahtz/passivetex/</ulink> </para>
</listitem>
<listitem> <para>Series of TeX macros</para> </listitem>
<listitem> <para>Developed by Sebastian Rahtz</para> </listitem>
<listitem><para>Current version outputs to PDF or TeX. </para></listitem>
<listitem>
<para>Examples: </para>
<screen>pdfxmltex <emphasis>FOinputfile</emphasis> </screen>
<screen>pdfxmltex manual.fo</screen>
</listitem>
<listitem> <para>You actually run the command twice on the same FO file to resolve all
references.  </para> </listitem>
<listitem> <para>Installation can be a bit tricky, but output is regarded as high
quality.  </para> </listitem>
</itemizedlist>
</foil>

<foil><title>Generating HTML Help</title>
<itemizedlist>
<listitem><para>Creates compiled Windows Help file (<filename>.CHM</filename>) viewable
and fully searchable on Windows systems</para></listitem>
<listitem> <para>Two stage process:</para> </listitem>
<orderedlist>
<listitem> <para>Process the file into HTML files, with extra HTML Help files:</para>
<programlisting>
xsltproc $DB/htmlhelp/htmlhelp.xsl manual.xml
</programlisting></listitem>
<listitem> <para>Bring file into Microsoft's "Windows HTML Help Workshop" to
compile into single .CHM file</para> </listitem>
</orderedlist>
<listitem>
<para>Can (of course!) build a customization layer that imports
<filename>htmlhelp.xsl</filename>
</para>
</listitem>
</itemizedlist>
</foil>

<foil><title>Generating other formats</title>
<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry>AWT</entry>
<entry>FOP, displays into a Java graphic window </entry>
</row>
<row>
<entry>Java Help</entry>
<entry>Separate XSLT stylesheet similar to HTML Help</entry>
</row>
<row>
<entry>MIF</entry>
<entry>FOP or SGML toolchain</entry>
</row>
<row>
<entry>PCL</entry>
<entry>FOP, though support is limited</entry>
</row>
<row>
<entry>PostScript</entry>
<entry>FOP, similar to PDF</entry>
</row>
<row>
<entry>RTF</entry>
<entry>FOP (limited support) or SGML toolchain</entry>
</row>
<row>
<entry>SVG</entry>
<entry>FOP</entry>
</row>
<row>
<entry>Text</entry>
<entry>FOP (limited support) or through generating single HTML page and then dumping the
page to text using a text browser like "lynx" or "links"</entry>
</row>
<row>
<entry>XHTML</entry>
<entry>Separate XSLT stylesheets similar to HTML</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</foil>

</section>

<section>
<title>Profiling</title>
<foil><title>What if you want multiple versions?</title>
<itemizedlist>
<listitem> <para>What if you want to have two (or more) documents that share most of
the data in common? Ex:</para>
    <itemizedlist>
    <listitem><para>Installation manual for Linux, Windows, and Mac</para></listitem>
    <listitem><para>Document for Intel and Alpha architectures</para></listitem>
    <listitem><para>User guide with beginner and advanced variants</para></listitem>
    <listitem><para>Document with internal and public versions </para></listitem>
    <listitem> <para>Single document with multiple embedded languages </para> </listitem>
    </itemizedlist>
</listitem>
<listitem><para>DocBook implements this in <emphasis>profiling</emphasis></para></listitem>
<listitem> <para>Similar to FrameMaker's "conditional text" feature </para> </listitem>
<listitem> <para>Described in <filename>$DB/doc/tools/profiling.html</filename> </para> </listitem>
</itemizedlist>
</foil>

<foil><title>Profiling explained</title>
<itemizedlist>
<listitem> <para>Works through adding additional attributes to elements. </para> </listitem>
<listitem>
<para>Example: </para>
<programlisting>
<![CDATA[<sect1 id="installation">
<title>Installation</title>
<para>You must first have full access to the system.</para>
<para os="windows">On Windows 95/98/NT, run <filename>INSTALL.EXE</filename> 
and follow the instructions. </para>
<para os="linux">In Linux, install <filename>foo-1.0-1.i386.rpm</filename>.</para>
</sect1>]]>
</programlisting>
</listitem>
<listitem>
<para>Special stylesheets will now make a first pass through to extract
relevant elements, <emphasis>then</emphasis> do further processing.
</para>
</listitem>
<listitem>
<para>Attributes can be added to individual paragraphs or to entire sections
</para>
</listitem>
</itemizedlist>
</foil>
<!--
<foil><title>Visualizing profiling</title>
<para>Courtesy of Jirka Kosek:
</para>
<para>
<mediaobject>
  <imageobject>
   <imagedata fileref="graphics/profile-chain.png" format="PNG"/>
  </imageobject>
  <textobject>
  <phrase>Profile chain</phrase>
  </textobject>
</mediaobject>
</para>
  </foil>
  -->
  
<foil><title>Profiling usage</title>
<itemizedlist>
<listitem>
<para>Variants of standard XSL stylesheets provided with <filename>profile-</filename>
prefix </para> </listitem>
<listitem>
<para>Called with <filename>profile.xxxx</filename> parameter and value to set
profile </para> 
<note>
<para>The exact method of providing a parameter and value on the command line
varies with each XSLT processor.</para>
</note></listitem>
<listitem> <para>Examples:</para>
<programlisting>
$ xsltproc -o sample.html -stringparam "profile.os" "linux" $DB/html/profile-docbook.xsl sample.xml
$ saxon -o sample.html sample.xml $DB/html/profile-docbook.xsl "profile.userlevel=beginner"
</programlisting>
</listitem>
<listitem>
<para>Multiple values separated by semi-colons (by default), as in:
</para>
<programlisting>
xsltproc ... -stringparam "profile.os" "linux;mac" ...
</programlisting>
</listitem>
<listitem>
<para>Can be imported into a customization layer
</para>
</listitem>
</itemizedlist>
</foil>

</section>

<section>
<title>Extensions</title>
<foil><title>Slides Doctype</title>
<itemizedlist>
<listitem><para>Creation of presentation slides from DocBook XML</para></listitem>
<listitem> <para>Can create HTML (with or without frames) and FO </para> </listitem>
<listitem>
<para>Uses DocBook elements within specific heirarchical framework. 
</para>
</listitem>
<listitem>
<para>Formatting controlled through CSS file.
</para>
</listitem>
<listitem>
<para>Downloadable from DocBook Open Repository (SourceForge).
</para>
</listitem>
<listitem>
<para>Example:
</para>
<programlisting>
<![CDATA[

<!DOCTYPE slides SYSTEM "/usr/share/sgml/docbook/xsl-slides-1.1/slides.dtd">
<slides>
<slidesinfo>
  <title>Introduction to DocBook</title>
</slidesinfo>

<foil><title>My first slide</title>
<itemizedlist>
<listitem><para>...</para></listitem>
<listitem><para>...</para></listitem>
<listitem><para>...</para></listitem>
</itemizedlist>
</foil>

<foil><title>My second slide</title>
<para>... </para>
</foil>

</slides>

]]>
</programlisting>
</listitem>
</itemizedlist>
</foil>
<foil><title>Website Doctype</title>
<itemizedlist>
<listitem>
<para>Creation of web sites from a collection of DocBook XML files
</para>
</listitem>
<listitem>
<para>Uses most DocBook elements within specific framework. Has separate files
that control page navigation and heirarchy.
</para>
</listitem>
<listitem>
<para>Downloadable from DocBook Open Repository (SourceForge).
</para>
</listitem>
<listitem>
<para>See <ulink url="http://nwalsh.com/">nwalsh.com</ulink> as an example.
</para>
</listitem>
<listitem>
<para>Example of main file: </para>
<programlisting>
<![CDATA[ <!DOCTYPE webpage SYSTEM "../website.dtd" [
<!NOTATION XML SYSTEM "xml">
<!ENTITY test1a SYSTEM "test1a.xml" NDATA XML>
<!ENTITY test3 SYSTEM "test3.xml" NDATA XML>
<!ENTITY about.xml SYSTEM "about.xml" NDATA XML>
]>
<webpage id="home">
<config param="desc" value="The Test Home Page"/>
<config param="rcsdate" value="$Date: 2001/11/08 20:44:20 $"/>
<config param="footer" value="about.html" altval="About..."/>
<head>
<title>Welcome to Website</title>
<summary>Introduction</summary>
<keywords>Norman Walsh, DSSSL, SGML, XML, DocBook, Website</keywords>
</head>

<para> This small, somewhat contrived website demonstrates the
Website document type. Website provides a system for building static
Websites from XML content.</para>

<para>A <ulink url="txtindex.html">text-only</ulink> version is also
available, demonstrating how multiple presentations can be derived from
the same sources.</para>

<webtoc/>

<section><title>What is a Website?</title>

<para>A website is a collection of pages organized, for the purposes of
navigation, into one or more hierarchies. In Website, each page is a
separate XML document authored according to the Website DTD, a customization
of <ulink url="http://www.oasis-open.org/docbook/">DocBook</ulink>.</para>

</section>

</webpage> ]]> </programlisting>
</listitem>
</itemizedlist>
</foil>
</section>

<section>
<title>Other Tools</title>
<foil><title>Validation</title>
<itemizedlist>
<listitem>
<para>Most XSL processors include validation, but there are specific
tools.
</para>
</listitem>
<listitem>
<para><filename>xmllint</filename> - part of <ulink
url="http://www.xmlsoft.org/">libxml</ulink>
</para>
<programlisting>
  xmllint --valid --noout file.xml
</programlisting>
</listitem>
</itemizedlist>
</foil>


<foil><title>SGML Tools</title>
<itemizedlist>
<listitem>
<para>While designed for SGML, <filename>openjade</filename> and
<filename>jade</filename> can also work with XML.
</para>
<screen>
openjade -t sgml -i html -d <emphasis>DSSSL-stylesheet</emphasis> <emphasis>openjadepath</emphasis>/pubtext/xml.dcl <emphasis>filename</emphasis>.xml
</screen>
</listitem>
<listitem>
<para>More info at:
</para>
   <itemizedlist>
   <listitem><para><ulink url="http://openjade.sourceforge.net/">http://openjade.sourceforge.net/</ulink>
   </para>
   </listitem>
   <listitem>
   <para><ulink url="http://www.jclark.com/jade/">http://www.jclark.com/jade/</ulink>
   </para>
   </listitem>
   </itemizedlist>
</listitem>
</itemizedlist>
</foil>

<foil><title>SGML Tools, cont'd</title>
<para>Other tools provide wrappers to openjade/jade, including:</para>
<variablelist>
<varlistentry>
<term>sgmltools-lite</term>
<listitem>
<para>
<ulink url="http://sgmltools-lite.sourceforge.net/">http://sgmltools-lite.sourceforge.net/</ulink>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>sgml2x</term>
<listitem>
<para> <ulink url="http://sgml2x.sourceforge.net/">http://sgml2x.sourceforge.net/</ulink> </para>
</listitem>
</varlistentry>
</variablelist>
</foil>

<foil><title>Commercial Tools</title>
<variablelist>
<title></title>
<varlistentry>
<term>DocParse</term>
<listitem><para><ulink url="http://www.commandprompt.com/products_DocParse.lxp">http://www.commandprompt.com/products_DocParse.lxp</ulink> - converts HTML into DocBook</para> </listitem>
</varlistentry>
<varlistentry>
<term>ArborText Epic</term>
<listitem> <para><ulink url="http://www.arbortext.com/html/products.html">http://www.arbortext.com/html/products.html</ulink> - comprehensive suite of both editing and processing tools</para> </listitem>
</varlistentry>
<varlistentry>
<term>RenderX XEP</term>
<listitem><para><ulink url="http://www.renderx.com/products.html">http://www.renderx.com/products.html</ulink> - a FO to PDF rendering engine</para> </listitem>
</varlistentry>
</variablelist>
</foil>

<foil><title>Other Tools</title>
<variablelist>
<varlistentry>
<term>xt</term>
<listitem>
<para><ulink url="http://www.jclark.com/xml/xt.html">http://www.jclark.com/xml/xt.html</ulink> - one of
original XSLT processors. Less frequently used now.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>docbook2x</term>
<listitem><para><ulink url="http://docbook2x.sourceforge.net/">http://docbook2x.sourceforge.net/http://docbook2x.sourceforge.net/</ulink> - 
converts DocBook to man and Texinfo pages</para> </listitem>
</varlistentry>
<varlistentry>
<term>refdb</term>
<listitem> <para><ulink url="http://refdb.sourceforge.net/">http://refdb.sourceforge.net/</ulink> - 
creates reference databases and bibliographies from DocBook</para> </listitem>
</varlistentry>
</variablelist>
</foil>

<foil><title>Automation</title>
<itemizedlist>
<listitem>
<para>Processing can be automated through using Makefiles.
</para>
</listitem>
<listitem>
<para>Example: </para> 
<programlisting>
<![CDATA[
TARGET = installchecklist

XMLFILE = ${TARGET}.xml
HTMLFILE = ${TARGET}.html
FOFILE = ${TARGET}.fo
PDFFILE = ${TARGET}.pdf

FOSTYLESHEET = installconfig.xsl
HTMLSTYLESHEET = /usr/share/sgml/docbook/e-smith-html.xsl

all: 	html pdf

html: 
	xsltproc -o ${HTMLFILE} ${HTMLSTYLESHEET} ${XMLFILE}
pdf:
	xsltproc -o ${FOFILE} ${STYLESHEET} ${XMLFILE}
	Fop -fo ${FOFILE} ${PDFFILE}
]]>
</programlisting>
</listitem>

<listitem>
<para>Now <filename>make all</filename> will generate both HTML and PDF.
</para>
</listitem>
</itemizedlist>
</foil>

<foil><title>Version Control</title>
<itemizedlist>
<listitem>
<para>Because XML files are all text based, the Concurrent Versions System
(CVS) works extremely well.
</para>
</listitem>
<listitem>
<para><ulink url="http://www.cvshome.org/">http://www.cvshome.org/</ulink>
</para>
</listitem>
<listitem>
<para><ulink url="http://www.lodestar2.com/people/dyork/talks/cvs/">http://www.lodestar2.com/people/dyork/talks/cvs/</ulink>
</para>
</listitem>
</itemizedlist>
</foil>
</section>


<section>
<title>Conclusion</title>

<foil><title>Resources</title>
<para>OASIS DocBook home page (also mailing lists):
</para>
<itemizedlist>
<listitem>
<para>
<ulink url="http://www.oasis-open.org/docbook/">http://www.oasis-open.org/docbook/</ulink>
</para>
<para><emphasis>docbook-apps</emphasis> mailing list:
<ulink url="http://lists.oasis-open.org/archives/docbook-apps/">http://lists.oasis-open.org/archives/docbook-apps/</ulink>
</para>
</listitem>
</itemizedlist>
<para>"<emphasis>DocBook:The Definitive Guide</emphasis>" home page:
</para>
<itemizedlist>
<listitem>
<para><ulink url="http://www.docbook.org/">http://www.docbook.org/</ulink>
</para>
<para>Includes documentation in <ulink url="http://www.docbook.org/wiki/">DocBook Wiki</ulink>
</para>
</listitem>
</itemizedlist>
<para>DocBook Open Repository:
</para>
<itemizedlist>
<listitem>
<para><ulink
url="http://docbook.sourceforge.net/">http://docbook.sourceforge.net/</ulink>
</para>
</listitem>
</itemizedlist>
<para>Books:
</para>
<itemizedlist>
<listitem>
<para><emphasis>DocBook:The Definitive Guide</emphasis>, by Norman Walsh
and Leonard Muellner, published
by O'Reilly &amp; Associates, October 1999 (new version available online)
</para>
</listitem>
</itemizedlist>
</foil>
<foil><title>Resources, cont'd</title>
<para>Linux Documentation Project Author Guide:
</para>
<itemizedlist>
<listitem>
<para>
<ulink url="http://www.linuxdoc.org/LDP/LDP-Author-Guide/">http://www.linuxdoc.org/LDP/LDP-Author-Guide/</ulink>
</para>
</listitem>
</itemizedlist>
<para>Norman Walsh's documentation pages:
</para>
<itemizedlist>
<listitem>
<para><ulink url="http://www.nwalsh.com/docs/">http://www.nwalsh.com/docs/</ulink>
</para>
</listitem>
</itemizedlist>
<para>Mitel NSSG documentation process:
</para>
<itemizedlist>
<listitem>
<para><ulink
url="http://www.e-smith.org/docs/docprocess.html">http://www.e-smith.org/docs/docprocess.html</ulink>
</para>
</listitem>
</itemizedlist>
</foil>
<foil><title>Questions?</title>
<para><emphasis role="strong">Contact Info:</emphasis>
</para>
<para>Dan York, PLM, SME Server
</para>
<para>Mitel Networks Corporation Network Server Solutions Group
</para>
<itemizedlist>
<listitem>
<para>dan_york@mitel.com
</para>
</listitem>
<listitem>
<para>dyork@Lodestar2.com  (personal address)
</para>
</listitem>
<listitem>
<para>+1-613-263-4312
</para>
</listitem>
</itemizedlist>
<para>This presentation will be available from:
</para>
<itemizedlist>
<listitem>
<para><ulink url="http://www.lodestar2.com/people/dyork/talks/docbook/">http://www.lodestar2.com/people/dyork/talks/docbook/</ulink>
</para>
</listitem>
</itemizedlist>
</foil>
</section>

</slides>
