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

<!-- $Id: intro-docbook.xml,v 1.2 2001/11/08 20:44:20 dyork Exp $ -->

<slides>
<slidesinfo>
  <title>Chasing Documentation's Holy Grail</title>
  <subtitle>Toward Single-Source Publishing Using DocBook XML</subtitle>

  <authorgroup>
    <author>
      <firstname>Dan</firstname>
      <surname>York</surname>
      <affiliation>
         <jobtitle>Director of Training</jobtitle>
         <orgname>Mitel Networks Corporation</orgname>
	 <orgname>Network Server Solutions Group</orgname>
	 <orgname>(formerly e-smith, inc.)</orgname>
      </affiliation>
    </author>
  </authorgroup>

  <pubdate>November 8, 2001</pubdate>

  <confgroup>
     <conftitle>XML Users Group of Ottawa</conftitle>
     <conftitle role="address">Ottawa, Ontario, Canada</conftitle>
  </confgroup>
  <copyright>
     <year>2001</year>
     <holder>Dan York</holder>
  </copyright>
</slidesinfo>

<foil><title>Agenda</title>
<itemizedlist>
<listitem><para>Introduction</para></listitem>
<listitem><para>Examples</para></listitem>
<listitem><para>Stylesheets</para></listitem>
<listitem><para>Tools</para></listitem>
<listitem><para>Extensions</para></listitem>
<listitem><para>Resources</para></listitem>
</itemizedlist>
</foil>

<section>
<title>Introduction</title>
<foil><title>Chasing the Holy Grail</title>
<para>Documentation staff have always been seeking a system that...
</para>
<itemizedlist>
<listitem><para>Uses a <emphasis>single source file</emphasis> that can
be exported into <emphasis>multiple output formats</emphasis></para></listitem>
<listitem><para>Allows the easy automation of production</para></listitem>
<listitem><para>Allows for the easy customization of formatting</para></listitem>
</itemizedlist>
</foil>
<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
</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>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 (UNIX/Linux manual pages) </para> </listitem>
  <listitem><para>MIF (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>Texinfo pages </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>
</section>

<section>
<title>Examples</title>
<foil><title>Example - Book</title>
<programlisting>
<![CDATA[<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[<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>
<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>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>
</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>Based on id's found in other elements
</para>
</listitem>
<listitem>
<para><![CDATA[<ulink url="http://www.docbook.org/">Docbook page</ulink>]]>
</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>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>Standard 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>
</listitem>
</itemizedlist>
</foil>
<foil><title>XSL Stylesheets - Output</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 - Output</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>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> and (for HTML)
<filename>chunk.xsl</filename>.</para></listitem>
<listitem><para>Example:</para>
<programlisting><![CDATA[<?xml version="1.0"?>
<!-- HTML Stylesheet for Mitel NSSG DocBook XML documents -->

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

<xsl:import href="/usr/share/sgml/docbook/docbook-xsl-1.45/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>Example - Generating HTML</title>
<itemizedlist>
<listitem><para>Separate XSLT stylesheets for processing a single file and
for generating multiple files (chunking). </para></listitem>
<listitem>
<para>Example of generating a single file:</para>
<programlisting>
xsltproc -o outfile.html  /usr/share/sgml/docbook-xsl/html/docbook.xsl input.xml
</programlisting>
</listitem>
<listitem>
<para>Example of generating multiple files:</para>
<programlisting>
xsltproc /usr/share/sgml/docbook-xsl/html/docbook.xsl input.xml
</programlisting>
</listitem>
</itemizedlist>
</foil>

<foil><title>Example - 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 manual.fo  /usr/share/sgml/docbook-xsl/fo/docbook.xsl manual.xml
Fop -fo manual.fo -pdf manual.pdf
</programlisting>
</listitem>
<listitem>
<para>Example of generating multiple files:</para>
<programlisting>
xsltproc /usr/share/sgml/docbook-xsl/html/docbook.xsl input.xml
</programlisting>
</listitem>
</itemizedlist>
</foil>

</section>

<section>
<title>Tools</title>
<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>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>HTML - 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>HTML - 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>HTML - libxslt</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>
</itemizedlist>
<screen>xsltproc -o <emphasis>outputfile</emphasis> <emphasis>stylesheet</emphasis> <emphasis>inputfile</emphasis>
</screen>
</foil>

<foil><title>Print - 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>Print - 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>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>
<para>More tools can be found at: </para>
<itemizedlist>
<listitem>
<para><ulink url="http://www.freshmeat.net/">http://www.freshmeat.net/</ulink>
</para>
</listitem>
<listitem>
<para><ulink url="http://www.sourceforge.net/">http://www.sourceforge.net/</ulink>
</para>
</listitem>
</itemizedlist>
</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>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>Conclusion</title>

<foil><title>So have we reached the Holy Grail?</title>
<para>Yes, if you are willing to:
</para>
<itemizedlist>
<listitem><para>Sacrifice some formatting control</para></listitem>
<listitem><para>Experience complexity in setting up tools</para></listitem>
</itemizedlist>
<para>No, if you:
</para>
<itemizedlist>
<listitem><para>Need precise formatting control</para></listitem>
<listitem><para>Do not have the technical expertise to set up the tools</para></listitem>
</itemizedlist>
</foil>
<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>
</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>
</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, Director of Training
</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>
