DocBook
Textverarbeitung mit XML
       Peter Eisentraut

          5.3.2005
Pers¨nlich
                                 o



• PostgreSQL-Entwickler

• Maintainer PostgreSQL-Dokumentation

• Debian-Entwickler

• Debian XML/SGML Group

• Maintainer DocBook DSSSL Stylesheets

• Buchautor


DocBook                                   1
Was ist DocBook?



• XML-Vokabular f¨r technische Dokumente
                 u

• Stylesheets und viele Tools

• OASIS-Standard




DocBook                                       2
Ein einfaches Beispiel


<?xml version="1.0"?>
<!DOCTYPE book
    PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
    "http://www.oasis-open.org/xml/4.3/docbookx.dtd">
<book lang="de">
   <title>Ein sehr einfaches Buch</title>
   <chapter>
      <title>Einf&uuml;hrung</title>
      <para>Hallo Welt!</para>
   </chapter>
</book>



DocBook                                                 3
Verarbeitungsbeispiel

$ xsltproc /usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl 
  beispiel.xml > beispiel.html




DocBook                                                        4
Vorteile von DocBook



• Inhalt und Format getrennt

• mehrere Ausgabeformate

• XML als standardisiertes Format

• erweiterbar, anpassbar

• l¨uft auf vielen Plattformen
   a




DocBook                                           5
Ausgabeformate


• HTML, XHTML

• PDF, PostScript

• HTML Help, JavaHelp

• RTF

• Manpages

• Plain Text

• ...

DocBook                                  6
Nachteile von DocBook



• kein WYSIWYG

• kein DTP-Ersatz

• nicht einfach
   – viele Tags (HTML: 90, DocBook: 400)
   – strikte Struktur
   – viele kooperierende Tools

• perfekte Druckergebnisse schwierig



DocBook                                        7
Einsatzbereiche



• wiederholte Releases

• verteilte Autorenschaft

• große, komplexe Dokumente

• mehrere Ausgabeformate

• automatische Verarbeitung




DocBook                                         8
Aktuelle Anwender


GNOME, KDE, FreeBSD, Linux-Kernel, LDP, PostgreSQL, Debian, OpenLDAP,
PHP, SuSE, Red Hat, Sun, O’Reilly, . . .




DocBook                                                             9
Verarbeitung


          Umwandlung von DocBook in Zielformat




              Dokument         Prozessor    HTML, RTF, ...




                DTD            Stylesheet




DocBook                                                      10
Verarbeitung


          Umwandlung von DocBook ber Zwischenformat in Zielformat




                 Dokument       Prozessor    XSL-FO, TeX   Prozessor




                   DTD          Stylesheet                 PDF, PS




DocBook                                                                11
Die DocBook DTDs


Document Type Definition — legt die Dokumentstruktur fest

• f¨r XML und SGML
   u

• Aktuell Version 4.4

• Ver¨ffentlicht von OASIS
     o

Zuk¨nftig (Version 5):
   u

• Relax NG Schemas

• XML Schemas (experimentell)

DocBook                                                    12
DTD-Beispiel

<!ELEMENT Chapter
((DocInfo?, Title, Subtitle?, TitleAbbrev?), ToCchap?,
  (((CalloutList | GlossList | ItemizedList | OrderedList | SegmentedList |
     SimpleList | VariableList | Caution | Important | Note | Tip | Warning |
     LiteralLayout | ProgramListing | ProgramListingCO | Screen | ScreenCO |
     ScreenShot | Synopsis | CmdSynopsis | FuncSynopsis | FormalPara | Para |
     SimPara | Address | BlockQuote | Graphic | GraphicCO | MediaObject |
     MediaObjectCO | InformalEquation | InformalExample | InformalFigure |
     InformalTable | Equation | Example | Figure | Table | MsgSet | Procedure |
     Sidebar | QandASet | Anchor | BridgeHead | Comment | Highlights |
     Abstract | AuthorBlurb | Epigraph | IndexTerm)+,
    (Sect1* |
     (RefEntry)* |
     SimpleSect* | Section*))|
   (Sect1+ |
    (RefEntry)+ |
    SimpleSect+ | Section+)),
  (Index | Glossary | Bibliography)*)
>


DocBook                                                                           13
Stylesheets



• XSLT-Stylesheets
   – W3C-Standard
   – nur f¨r XML DTD
          u
   – Ausgabe: HTML, XHTML, HTML Help, XSL-FO, . . .

• DSSSL-Stylesheets
   – ISO-Standard
   – f¨r XML und SGML DTDs
      u
   – Ausgabe: HTML, TEX, RTF




DocBook                                               14
XSLT-Beispiel


DocBook:     Schreiben Sie an <email>user@domain.com</email>.

<xsl:template match="email">
  <xsl:call-template name="inline.monoseq">
    <xsl:with-param name="content">
      <xsl:text>&lt;</xsl:text>
      <a>
       <xsl:attribute name="href">mailto:<xsl:value-of select="."/></xsl:attribute>
       <xsl:apply-templates/>
      </a>
      <xsl:text>&gt;</xsl:text>
    </xsl:with-param>
  </xsl:call-template>
</xsl:template>


HTML:     Schreiben Sie an <tt>&lt;<a
href="mailto:user@domain.com">user@domain.com</a>&gt;</tt>.


DocBook                                                                               15
DSSSL-Beispiel


DocBook:     Schreiben Sie an <email>user@domain.com</email>.

(element email
  ($code-seq$
    (make sequence
      (literal "&#60;")
      (make element gi: "A"
            attributes:
              (list (list "HREF"
                           (string-append "mailto:"
                                          (data (current-node)))))
            (process-children))
      (literal "&#62;"))))


HTML:     Schreiben Sie an <tt>&#60;<a
href="mailto:user@domain.com">user@domain.com</a>&#62;</tt>.



DocBook                                                              16
XSLT-Prozessoren



• xsltproc

• Saxon

• Xalan

• ...




DocBook                         17
XSL-FO-Prozessoren


Frei:

• FOP

• PassiveTEX

Nicht frei:

• Antenna House XSL Formatter

• RenderX XEP

• Unicorn Formatting Objects

DocBook                                      18
DSSSL-Toolchain



• Umwandlung DSSSL: Jade, OpenJade

• Umwandlung TEX in PDF: JadeTEX




DocBook                                  19
Schreibwerkzeuge



• Texteditor

• Editor mit SGML/XML-Modus

• XML-Editor




DocBook                                  20
Beispiele: Inline-Markup


<para>Auf <trademark class="registered">UNIX</trademark>-Systemen
steuert die Datei <filename>/etc/crontab</filename> die von
<command>cron</command> ausgef&uuml;hrten Befehle.</para>

<para><symbol>UINTMAX</symbol> ist gleich
2<superscript>32</superscript>-1.</para>




DocBook                                                        21
Beispiele: Listen


<itemizedlist>
  <listitem>
    <para>Erster Punkt</para>
  </listitem>
  <listitem>
    <para>Zweiter Punkt</para>
  </listitem>
  <listitem>
    <para>Dritter Punkt</para>
  </listitem>
</itemizedlist>



DocBook                                    22
Beispiele: Formale Objekte


Abbildungen, Beispiele, Gleichungen, Tabellen

• automatisch nummeriert

• automatisches Abbildungsverzeichnis usw.




DocBook                                            23
Beispiele: Code


<para>Dies ist ein sehr einfaches Shell-Skript:

<programlisting>
#!/bin/sh

exit 0
</programlisting>

</para>




DocBook                                           24
Beispiele: Querverweise


<chapter id="maus">
<title>Verwendung einer Maus</title>
...
Siehe <xref linkend="maus"/>.

HTML-Ausgabe:

Siehe <a href="#maus">Kapitel 3, Verwendung einer Maus</a>.




DocBook                                                       25
Beispiele: Grafiken


Unterst¨tzte Formate h¨ngen von der Toolchain ab.
       u              a

<mediaobject>
  <imageobject>
    <imagedata fileref="figures/eiffeltower.eps" format="eps">
  </imageobject>
  <imageobject>
    <imagedata fileref="figures/eiffeltower.gif" format="gif">
  </imageobject>
  <textobject>
    <phrase>The Eiffel Tower</phrase>
  </textobject>
</mediaobject>

DocBook                                                          26
Customization


DocBook DTD anpassbar:

• Elemente hinzuf¨gen
                 u

• Elemente entfernen

DocBook Stylesheets anpassbar:

• neue Formatierungsregeln

HTML-Ausgabe anpassbar:

• CSS

DocBook                                      27
Alternative Anwendungen



• Simplified DocBook DTD

• Module: EBNF, HTML Forms, MathML, SVG

• Website DTD

• Slides DTD

• angepasste Rechtschreibpr¨fung
                           u

• Gettext-Integration


DocBook                                           28
Zusammenfassung


DocBook . . .

• ist eine XML DTD f¨r technische Dokumente
                    u

• unterst¨tzt viele Ausgabeformate
         u

• ist geeignet f¨r wiederholte und verteilte Bearbeitung
                u

• ist nicht immer ganz einfach

Weitere Informationen:

• http://docbook.sourceforge.net/

DocBook                                                    29

Docbook: Textverarbeitung mit XML

  • 1.
    DocBook Textverarbeitung mit XML Peter Eisentraut 5.3.2005
  • 2.
    Pers¨nlich o • PostgreSQL-Entwickler • Maintainer PostgreSQL-Dokumentation • Debian-Entwickler • Debian XML/SGML Group • Maintainer DocBook DSSSL Stylesheets • Buchautor DocBook 1
  • 3.
    Was ist DocBook? •XML-Vokabular f¨r technische Dokumente u • Stylesheets und viele Tools • OASIS-Standard DocBook 2
  • 4.
    Ein einfaches Beispiel <?xmlversion="1.0"?> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/xml/4.3/docbookx.dtd"> <book lang="de"> <title>Ein sehr einfaches Buch</title> <chapter> <title>Einf&uuml;hrung</title> <para>Hallo Welt!</para> </chapter> </book> DocBook 3
  • 5.
  • 6.
    Vorteile von DocBook •Inhalt und Format getrennt • mehrere Ausgabeformate • XML als standardisiertes Format • erweiterbar, anpassbar • l¨uft auf vielen Plattformen a DocBook 5
  • 7.
    Ausgabeformate • HTML, XHTML •PDF, PostScript • HTML Help, JavaHelp • RTF • Manpages • Plain Text • ... DocBook 6
  • 8.
    Nachteile von DocBook •kein WYSIWYG • kein DTP-Ersatz • nicht einfach – viele Tags (HTML: 90, DocBook: 400) – strikte Struktur – viele kooperierende Tools • perfekte Druckergebnisse schwierig DocBook 7
  • 9.
    Einsatzbereiche • wiederholte Releases •verteilte Autorenschaft • große, komplexe Dokumente • mehrere Ausgabeformate • automatische Verarbeitung DocBook 8
  • 10.
    Aktuelle Anwender GNOME, KDE,FreeBSD, Linux-Kernel, LDP, PostgreSQL, Debian, OpenLDAP, PHP, SuSE, Red Hat, Sun, O’Reilly, . . . DocBook 9
  • 11.
    Verarbeitung Umwandlung von DocBook in Zielformat Dokument Prozessor HTML, RTF, ... DTD Stylesheet DocBook 10
  • 12.
    Verarbeitung Umwandlung von DocBook ber Zwischenformat in Zielformat Dokument Prozessor XSL-FO, TeX Prozessor DTD Stylesheet PDF, PS DocBook 11
  • 13.
    Die DocBook DTDs DocumentType Definition — legt die Dokumentstruktur fest • f¨r XML und SGML u • Aktuell Version 4.4 • Ver¨ffentlicht von OASIS o Zuk¨nftig (Version 5): u • Relax NG Schemas • XML Schemas (experimentell) DocBook 12
  • 14.
    DTD-Beispiel <!ELEMENT Chapter ((DocInfo?, Title,Subtitle?, TitleAbbrev?), ToCchap?, (((CalloutList | GlossList | ItemizedList | OrderedList | SegmentedList | SimpleList | VariableList | Caution | Important | Note | Tip | Warning | LiteralLayout | ProgramListing | ProgramListingCO | Screen | ScreenCO | ScreenShot | Synopsis | CmdSynopsis | FuncSynopsis | FormalPara | Para | SimPara | Address | BlockQuote | Graphic | GraphicCO | MediaObject | MediaObjectCO | InformalEquation | InformalExample | InformalFigure | InformalTable | Equation | Example | Figure | Table | MsgSet | Procedure | Sidebar | QandASet | Anchor | BridgeHead | Comment | Highlights | Abstract | AuthorBlurb | Epigraph | IndexTerm)+, (Sect1* | (RefEntry)* | SimpleSect* | Section*))| (Sect1+ | (RefEntry)+ | SimpleSect+ | Section+)), (Index | Glossary | Bibliography)*) > DocBook 13
  • 15.
    Stylesheets • XSLT-Stylesheets – W3C-Standard – nur f¨r XML DTD u – Ausgabe: HTML, XHTML, HTML Help, XSL-FO, . . . • DSSSL-Stylesheets – ISO-Standard – f¨r XML und SGML DTDs u – Ausgabe: HTML, TEX, RTF DocBook 14
  • 16.
    XSLT-Beispiel DocBook: Schreiben Sie an <email>user@domain.com</email>. <xsl:template match="email"> <xsl:call-template name="inline.monoseq"> <xsl:with-param name="content"> <xsl:text>&lt;</xsl:text> <a> <xsl:attribute name="href">mailto:<xsl:value-of select="."/></xsl:attribute> <xsl:apply-templates/> </a> <xsl:text>&gt;</xsl:text> </xsl:with-param> </xsl:call-template> </xsl:template> HTML: Schreiben Sie an <tt>&lt;<a href="mailto:user@domain.com">user@domain.com</a>&gt;</tt>. DocBook 15
  • 17.
    DSSSL-Beispiel DocBook: Schreiben Sie an <email>user@domain.com</email>. (element email ($code-seq$ (make sequence (literal "&#60;") (make element gi: "A" attributes: (list (list "HREF" (string-append "mailto:" (data (current-node))))) (process-children)) (literal "&#62;")))) HTML: Schreiben Sie an <tt>&#60;<a href="mailto:user@domain.com">user@domain.com</a>&#62;</tt>. DocBook 16
  • 18.
  • 19.
    XSL-FO-Prozessoren Frei: • FOP • PassiveTEX Nichtfrei: • Antenna House XSL Formatter • RenderX XEP • Unicorn Formatting Objects DocBook 18
  • 20.
    DSSSL-Toolchain • Umwandlung DSSSL:Jade, OpenJade • Umwandlung TEX in PDF: JadeTEX DocBook 19
  • 21.
    Schreibwerkzeuge • Texteditor • Editormit SGML/XML-Modus • XML-Editor DocBook 20
  • 22.
    Beispiele: Inline-Markup <para>Auf <trademarkclass="registered">UNIX</trademark>-Systemen steuert die Datei <filename>/etc/crontab</filename> die von <command>cron</command> ausgef&uuml;hrten Befehle.</para> <para><symbol>UINTMAX</symbol> ist gleich 2<superscript>32</superscript>-1.</para> DocBook 21
  • 23.
    Beispiele: Listen <itemizedlist> <listitem> <para>Erster Punkt</para> </listitem> <listitem> <para>Zweiter Punkt</para> </listitem> <listitem> <para>Dritter Punkt</para> </listitem> </itemizedlist> DocBook 22
  • 24.
    Beispiele: Formale Objekte Abbildungen,Beispiele, Gleichungen, Tabellen • automatisch nummeriert • automatisches Abbildungsverzeichnis usw. DocBook 23
  • 25.
    Beispiele: Code <para>Dies istein sehr einfaches Shell-Skript: <programlisting> #!/bin/sh exit 0 </programlisting> </para> DocBook 24
  • 26.
    Beispiele: Querverweise <chapter id="maus"> <title>Verwendungeiner Maus</title> ... Siehe <xref linkend="maus"/>. HTML-Ausgabe: Siehe <a href="#maus">Kapitel 3, Verwendung einer Maus</a>. DocBook 25
  • 27.
    Beispiele: Grafiken Unterst¨tzte Formateh¨ngen von der Toolchain ab. u a <mediaobject> <imageobject> <imagedata fileref="figures/eiffeltower.eps" format="eps"> </imageobject> <imageobject> <imagedata fileref="figures/eiffeltower.gif" format="gif"> </imageobject> <textobject> <phrase>The Eiffel Tower</phrase> </textobject> </mediaobject> DocBook 26
  • 28.
    Customization DocBook DTD anpassbar: •Elemente hinzuf¨gen u • Elemente entfernen DocBook Stylesheets anpassbar: • neue Formatierungsregeln HTML-Ausgabe anpassbar: • CSS DocBook 27
  • 29.
    Alternative Anwendungen • SimplifiedDocBook DTD • Module: EBNF, HTML Forms, MathML, SVG • Website DTD • Slides DTD • angepasste Rechtschreibpr¨fung u • Gettext-Integration DocBook 28
  • 30.
    Zusammenfassung DocBook . .. • ist eine XML DTD f¨r technische Dokumente u • unterst¨tzt viele Ausgabeformate u • ist geeignet f¨r wiederholte und verteilte Bearbeitung u • ist nicht immer ganz einfach Weitere Informationen: • http://docbook.sourceforge.net/ DocBook 29