doc/en_US.ISO8859-1/slides/20050513-bsdcan-slides/slides.xml

467 lines
15 KiB
XML

<?xml version='1.0'?>
<!-- $FreeBSD$ -->
<!DOCTYPE slides SYSTEM
"/usr/local/share/xsl/slides/schema/dtd/slides.dtd" [
<!ENTITY % freebsd SYSTEM "../../../share/sgml/freebsd.ent">
%freebsd;
]>
<?dbhtml graphics-dir="/usr/local/share/xsl/slides/graphics" css-stylesheet-dir="/usr/local/share/xsl/slides/browser"?>
<?dbhtml script-dir="/usr/local/share/xsl/slides/browser"?>
<slides>
<!-- 1 -->
<slidesinfo>
<title>DocBook Slides, XSLT, and XSL-FO</title>
<titleabbrev>DocBook Slides</titleabbrev>
<author><firstname>Murray</firstname><surname>Stokely</surname></author>
<pubdate>13 May 2005</pubdate>
<copyright><year>2005</year> <holder>FreeBSD Mall, Inc.</holder></copyright>
</slidesinfo>
<!-- 2 -->
<foil id="intro-outline"><title>Outline</title>
<itemizedlist>
<listitem>Overview of FreeBSD Documentation Architecture</listitem>
<listitem>How does DocBook Slides fit in?</listitem>
<listitem>Why is it useful?</listitem>
<listitem>XSLT Tools</listitem>
<listitem>XSL-FO</listitem>
<listitem>Questions</listitem>
</itemizedlist>
</foil>
<!-- 3 -->
<foil id="docproj-overview"><title>Documentation Architecture</title>
<itemizedlist>
<listitem>Documentation Set:<itemizedlist>
<listitem>40 articles.</listitem>
<listitem>9 books.</listitem>
<listitem>Hundreds of man pages.</listitem>
<listitem>Available in a dozen languages.</listitem>
</itemizedlist></listitem>
<listitem>157 developers have made a commit to doc/ or www/ in last 12 months.</listitem>
<listitem>Books and articles authored in structured SGML/XML
DocBook DTD.</listitem>
<listitem>Robust makefile infrastructure allows one to build PDF,
HTML, or ASCII output with simple 'make' command.</listitem>
</itemizedlist>
</foil>
<!-- 4 -->
<foil id="docproj-docbook"><title>DocBook?</title>
<itemizedlist>
<listitem>Structured documentation format that allows one to
specify semantics of a document rather than the
presentation.</listitem>
<listitem>Stylesheets take care of details such as always printing
commands in a <literal>monospace</literal> font, etc.
Stylesheets can make different presentation decisions based on
the output format.</listitem>
<listitem>For example, HTML stylesheets may use a CSS mouseover on
acronyms so that the full technical term can be
displayed.</listitem>
<listitem>Links to online man pages can be automatically generated
for <literal>&lt;command&gt;</literal>s in HTML output.</listitem>
</itemizedlist>
</foil>
<!-- 5 -->
<foil id="docproj-sgml"><title>DocBook SGML/XML</title>
<itemizedlist>
<listitem>DocBook is available as both an SGML DTD and as an XML
Schema. For various reasons, most of our documentation is in
SGML format, but can easily be converted to XML for processing
with XML tools.</listitem>
<listitem>Both SGML and XML allow include files, so we can share
content across the release notes, all 40 articles, and 9 books
in the documentation set.</listitem>
<listitem>Since the content is structured, intelligent search
engines could differentiate between, say,
<literal>touch</literal>, the Unix Command, and
<emphasis>touch</emphasis>, the feeling. Search engines,
agents, and other information processing tools have information
about the meaning of the content.</listitem>
</itemizedlist>
</foil>
<!-- 6 -->
<foil id="docproj-toolchain"><title>Doc Project Toolchain</title>
<itemizedlist>
<listitem>Traditionally, we have used the Jade DSSSL Engine to
convert the DocBook SGML files into HTML, text, and PostScript
formats.</listitem>
<listitem>Jade can output HTML directly with the help of the DSSSL
stylesheets and extensive FreeBSD customizations. The text
formats can then be converted from the HTML with the help of a
text based web browser.</listitem>
<listitem>For Print output, we use the TeX backend of Jade and
then rely on TeX to generate the PostScript output.</listitem>
<listitem>The makefiles handle all of this, so <command>make
FORMATS=html</command> or <command>make FORMATS=ps</command> is
all you really need to know about if you have all of the tools
installed.</listitem>
</itemizedlist>
</foil>
<!-- 7 -->
<foil id="docproj-jade"><title>Why Jade/DSSSL and not XSLT?</title>
<itemizedlist>
<listitem>The DSSSL stylesheet specification proved difficult to
implement in practice, and so Jade was the only widely
distributed implementation.</listitem>
<listitem>The XSLT language has been much more widely adopted, and
the goal is to eventually transition the FreeBSD Documentation
Set to XML/XSLT.</listitem>
<listitem>We already use XSLT extensively for the web site builds,
and it possible to build parts of the documentation set with
XSLT as well.</listitem>
<listitem>The new slides infrastructure relies solely on XSLT and
XSL-FO, without any DSSSL stylesheets.</listitem>
</itemizedlist>
</foil>
<!-- 8 -->
<foil id="what-is-docbook-slides"><title>What is DocBook Slides?</title>
<itemizedlist>
<listitem>A DTD based on Simplified DocBook XML Schema.</listitem>
<listitem>Provides a collection of tags useful for structuring
content into slides, lists, and paragraphs for
presentations.</listitem>
<listitem>Also provides tags for describing technical content such
as commands, variables, etc..</listitem>
<listitem>Stylesheets can create HTML or PDF output by default.</listitem>
<listitem>OpenOffice Impress output should also be possible.</listitem>
</itemizedlist>
</foil>
<!-- 9 -->
<foil id="example-slides-xml"><title>Example Slide : Preamble</title>
<para>The preamble:</para>
<programlisting scale="50%">&lt;?xml version='1.0'?>
&lt;!DOCTYPE slides SYSTEM
"/usr/.../schema/dtd/slides.dtd" [
&lt;!ENTITY % freebsd SYSTEM
"../../../share/sgml/freebsd.ent">
%freebsd;
]></programlisting>
<para>Note that the default <filename>freebsd.ent</filename> file from
the FreeBSD Documentation Project is brought in. This provides
entities to represent the newest release of FreeBSD, the number of
ports in the Ports Collection, etc.</para>
</foil>
<!-- 10 -->
<foil id="example-slides-xml-2"><title>Example Slide : Title Page</title>
<programlisting>&lt;slides>
&lt;slidesinfo>
&lt;title>DocBook Slides, XSLT, and XSL-FO&lt;/title>
&lt;titleabbrev>DocBook Slides&lt;/titleabbrev>
&lt;author>
&lt;firstname>Murray&lt;/firstname>
&lt;surname>Stokely&lt;/surname>
&lt;/author>
&lt;pubdate>13 May 2005&lt;/pubdate>
&lt;copyright>
&lt;year>2005&lt;/year>
&lt;holder>FreeBSD Mall, Inc.&lt;/holder>
&lt;/copyright>
&lt;/slidesinfo></programlisting>
</foil>
<foil id="example-slides-xml-3"><title>Example Slide : Content</title>
<programlisting>&lt;foil>&lt;title>My Title&lt;/title>
&lt;para>Creating slides is easy.&lt;/para>
&lt;itemizedlist>
&lt;listitem>Point 1.&lt;/listitem>
&lt;listitem>Point 2.&lt;/listitem>
&lt;listitem>Point 3.&lt;/listitem>
&lt;listitem>Point 4.&lt;/listitem>
&lt;/itemizedlist>
&lt;para>
There are &amp;os.num; ports in &amp;rel.current;.
&lt;/para>
&lt;/foil></programlisting></foil>
<foil id="tools-basics"><title>Tools - Basics</title>
<itemizedlist>
<listitem>As with other SGML/XML document types in the tree, DocBook
slides are supported by a robust Makefile infrastructure to allow
the building of HTML or PDF output.</listitem>
<listitem>Additional options exist to use different XSLT or XSL-FO
processors, or to specify alternate stylesheets.</listitem>
<listitem><literal>FORMATS=openoffice</literal> support would be really
cool. Any takers?</listitem>
<listitem>All of the relevant software is installed with the
<filename>textproc/docproj</filename> port.</listitem>
</itemizedlist>
<screen>$ <userinput>make USE_XEP=1 FORMATS=pdf</userinput></screen>
</foil>
<foil id="tools-2"><title>Tools</title>
<para>An XSLT processor is required to transform the source XML
document for both HTML or PDF output. The Open Source
<literal>xsltproc</literal> processor is fastest and supports
the basics necessary for using the Slides DTD.</para>
<para>Other alternatives</para>
<itemizedlist>
<listitem>Saxon</listitem>
<listitem>XT (James Clark)</listitem>
<listitem>Xalan (Apache XML Project)</listitem>
<listitem>MSXSLT</listitem>
<listitem>See ports collection.</listitem>
</itemizedlist>
</foil>
<foil id="tools-html"><title>XSLT Basics</title>
<para>Used extensively in the <literal>www/</literal> tree, but for
various reasons we haven't fully migrated to building the FreeBSD
<literal>doc/</literal> tree with it.</para>
<para>Stylesheets can be layered to arbitrary depth. Templates at
layer N take precedence over those at level N-1.</para>
<programlisting>&lt;xsl:template match="command">
&lt;tt>&lt;xsl:value-of select=".">&lt;/tt>
&lt;/xsl:template></programlisting>
<para>Numerous examples in the <filename>doc/</filename> of layered
stylesheets built on top of default DocBook XSLT stylesheets.</para>
<!-- XXX
<para>FreeBSD customizations used by other open source projects and
commercial companies for producing output customizations for books,
etc.</para>-->
</foil>
<foil id="tools-html-2"><title>Tools for HTML output</title>
<para>The default XSL stylesheets for HTML output use chunking to
generate one HTML page per foil with navigation icons to allow easy
hypertext browsing of presentations.</para>
<mediaobject filename="xml_1.png"/>
</foil>
<foil id="tools-html-benefits"><title>Benefits of HTML output</title>
<itemizedlist>
<listitem>Great for advocacy: Allows the FreeBSD Project to get
"more mileage" out of presentations by providing a space to
archive them in HTML form on
<literal>http://www.FreeBSD.org</literal>.</listitem>
<listitem>More amenable to searching.</listitem>
<listitem>Recent presentations can be indexed together rather than
visiting different personal homepages or conference websites
looking for most recent FreeBSD presentations.</listitem>
<listitem>Text formats easier for translation teams to work
with.</listitem>
<listitem>Easier for documentation teams to find relevant
information from HTML slides and incorporate them into the
Handbook and other FreeBSD documentation sources.</listitem>
</itemizedlist>
</foil>
<foil id="tools-xslfo"><title>XSL-FO</title>
<itemizedlist>
<listitem>For print output, the XSLT processor transforms the XML document
into an intermediate XSL-FO document.</listitem>
<listitem>XSL-FO is an XML format that contains detailed
presentation information about the content.</listitem>
<listitem>There are many open source and commercial XSL-FO
processors.
<itemizedlist>
<listitem>FOP (Apache XML Project)</listitem>
<listitem>RenderX XEP (commercial)</listitem>
<listitem>PassiveTeX</listitem>
</itemizedlist></listitem></itemizedlist>
<imageobject filename="xml_2.png"/>
<para>What does <filename>file.fo</filename> look like?</para>
</foil>
<foil id="tools-xslfo-ex"><title>XSL-FO Example</title>
<para>XSL-FO files not really meant for hand-generation, but you asked
for it :</para>
<programlisting>&lt;?xml version="1.0" encoding="iso-8859-1"?>
&lt;fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
&lt;fo:layout-master-set>
&lt;fo:simple-page-master master-name="my-page">
&lt;fo:region-body margin="1in"/>
&lt;/fo:simple-page-master>
&lt;/fo:layout-master-set></programlisting>
<para>The layout-master-set contains one or more declarations of
page masters and page sequence masters elements that define
layouts of single pages and page sequences. In the example, the area
should have a 1 inch margin from all sides of the page.</para>
</foil>
<foil id="tools-xslfo-ex2"><title>XSL-FO Example Part 2</title>
<programlisting> &lt;fo:page-sequence master-reference="my-page">
&lt;fo:flow flow-name="xsl-region-body">
&lt;fo:block>Hello, world!&lt;/fo:block>
&lt;/fo:flow>
&lt;/fo:page-sequence>
&lt;/fo:root></programlisting>
<itemizedlist>
<listitem>Pages in the document are grouped into sequences; each sequence
starts from a new page.</listitem>
<listitem>Flow is the container object for all user text in the
document. Everything contained in the flow will be formatted into
regions on pages generated inside the page sequence.</listitem>
<listitem><literal>fo:block</literal> objects roughly correspond to
<literal>&lt;DIV></literal> in HTML, and normally include a paragraph
of text.</listitem>
</itemizedlist>
</foil>
<foil id="tools-xslfo-passivetex"><title>XSL-FO Tools - PassiveTeX</title>
<para>An open source implementation based on TeX similar to the
JadeTeX macro package used for creating print output from DSSSL
stylesheets.</para>
<para>Pros:</para>
<itemizedlist>
<listitem>Open source.</listitem>
</itemizedlist>
<para>Cons:</para>
<itemizedlist>
<listitem>Does not implement many features of XSL-FO that are
difficult to implement in TeX, such as background images. (The
daemon in the background of this slide would be impossible to
produce with PassiveTeX).</listitem>
<listitem>Requires a full TeX installation rather than generating
PDF directly. Difficult to debug.</listitem>
</itemizedlist></foil>
<foil id="tools-xslfo-fop"><title>XSL-FO Tools - FOP</title>
<para>Open source implementation in Java from the Apache
Project.</para>
<para>Pros:</para>
<itemizedlist>
<listitem>Open source.</listitem>
<listitem>Handles some implementation features that PassiveTeX does not.</listitem>
</itemizedlist>
<para>Cons:</para>
<itemizedlist>
<listitem>Not as conformant as the commercial processors. Many
features are missing.</listitem>
<listitem>A Work in Progress.</listitem>
</itemizedlist></foil>
<foil id="future-work"><title>Future Work</title>
<itemizedlist>
<listitem>This presentation will be committed to CVS later today
so that it appears on the FreeBSD web site as an
example.</listitem>
<listitem>Implement OpenOffice Impress output format.</listitem>
<listitem>Make better use of XML Documentation sources such as
release notes to create more dynamic slides.</listitem>
<listitem>Add more stylesheet options for PDF output.</listitem>
<listitem>Find/write better open source XSL-FO toolchain. </listitem>
</itemizedlist>
</foil>
<foil id="more-information"><title>More Information</title>
<itemizedlist>
<listitem><ulink
url="http://sourceforge.net/projects/docbook/">DocBook SourceForge
Project Page</ulink></listitem>
<listitem><filename>doc/share/mk/doc.slides.mk</filename></listitem>
<listitem><literal>docbook-apps@</literal> mailing
list.</listitem>
<listitem><literal>freebsd-doc@</literal> mailing list.</listitem>
<listitem>This example presentation.</listitem>
<listitem>If all else fails, send me an email and I'd be happy to
help you design a presentation in DocBook Slides.</listitem>
</itemizedlist>
</foil>
</slides>