Login
Newsletter
Werbung

Do, 28. März 2013, 15:00

Einführung in Docbook

Docbook XSL

Für Docbook gibt es eine umfangreiche Sammlung von Stylesheets für die Herstellung von verschiedenen Ausgabeformaten mittels XSL-Transformationen (XSLT): Docbook XSL. Sie sind ebenfalls weit entwickelt, sehr vielseitig und können neben den Schemata als zweite Hälfte von Docbook angesehen werden. Im Paket docbook-xsl-ns ist für Ubuntu 12.04 eine aktuelle, für Docbook 5 vorgesehene Version 1.76 (letzte Veröffentlichung: 1.78) der Stylesheets bequem verfügbar. Diese befinden sich nach der Installation in verschiedenen Unterverzeichnissen von /usr/share/xml/docbook/stylesheet/docbook-xsl-ns. Brandaktuelle Snapshots von Docbook XSL werden regelmäßig gepackt. Mit Hilfe eines der üblichen XSLT-Prozessoren wie Saxon, Xalan, oder Xsltproc können verschiedene Ausgabeformate wie HTML/XHTML, EPUB oder XSL-FO (als Vorstufe u.a. für PDF-Dateien) aus einem Docbook-Master erzeugt werden. Die Stylesheets liegen im XSLT-Format 1.0 vor, und die XSLT 2.0-Version davon ist bisher rein experimentell. Die Stylesheets sind gut dokumentiert; Bob Staytons »Docbook XSL – The definitive guide« (der auch als generelle Einführung gelesen werden kann) ist frei im Netz verfügbar. Dies gilt auch für Norman Walshs »Reference Documentation«. Für den Prozessor Saxon (Paket libsaxon-java) gibt es für die Verarbeitung von Docbook spezielle Erweiterungen im Paket docbook-xsl-saxon.

PDF erzeugen

Um mit Docbook eine PDF-Datei zu erzeugen, muss nun zunächst aus der Masterdatei mit Hilfe des dafür gedachten Stylesheets eine XSL-FO-Datei hergestellt werden:

saxon-xslt -o foo.fo foo.xml /usr/share/xml/docbook/stylesheet/docbook-xsl-ns/fo/docbook.xsl

Eine aus docbook_test.xml resultierende PDF-Datei

Daniel Stender

Eine aus docbook_test.xml resultierende PDF-Datei

Danach kann die .fo-Datei mit einem FO-Formatierer wie FOP in die gewünschte PDF-Datei umgewandelt werden:

fop foo.fo foo.pdf

Es empfiehlt sich, für die verschiedenen oft ausgeführten Kommandozeilen-Operationen ein Shellscript oder ein Makefile für die Benutzung mit GNU Make anzufertigen. Mit dem Tool Dblatex können aus Docbook PDF-Dateien mit Hilfe von LaTeX auch ohne Docbook XSL erzeugt werden; dazu müssen allerdings umfangreiche Abhängigkeiten erfüllt sein bzw. mitgezogen werden.

Parameter manipulieren

Die Voreinstellungen der XSL-Stylesheets lassen sich grundsätzlich auf zwei Arten manipulieren: indem bei Aufruf des XSLT-Prozessoren Parameter an diesen übergeben werden und/oder durch eine separate Anpassungsdatei. Die Anpassungsdatei docbook_test.xsl verändert für die XSL-FO-Ausgabe die Standardwerte für Papiergröße (paper.type) von US Letter auf DIN A4, schaltet die automatische Abschnittszählung (section.autolabel) ein, ändert bei den obersten Abschnittsüberschriften (section.title.level1.properties) die Schriftgröße auf das 1,5-Fache der Brotschrift, und erhöht für diese den oberen Abstand auf 15 pt.

Es handelt sich dabei selbst um eine konforme XSLT-Datei, in der alle Elemente dem dafür vorgesehenen Namensraum xsl zugeordnet sind.

Dem XSLT-Prozessor kann dieses selbsterstellte Stylesheet dann anstatt der originalen Datei docbook-xsl-ns/fo/docbook.xsl angegeben werden, die von dieser mit xsl:import reimportiert wird. Auf diese Art und Weise lassen sich die Ausgabedateien bis in alle Einzelheiten kontrollieren.

Das automatisch generierte Inhaltsverzeichnis lässt sich übrigens verhindern, indem man dem Paramater generate.toc die Einstellung article nop übergibt. Eine sehr reichhaltige Sammlung von Docbook-Hacks ist Thomas Schraitles DoCookBook-Projekt.

Autoreninformation

Daniel Stender (Webseite) hat einen Magister in Indologie, ist Debian-Maintainer und entwickelt im Bereich Digital humanities.

Dieser Artikel ist in freiesMagazin 03/2013 (ISSN 1867-7991) erschienen. Veröffentlichung mit freundlicher Genehmigung.

  • Das Werk darf vervielfältigt, verbreitet und öffentlich zugänglich gemacht werden, Abwandlungen und Bearbeitungen des Werkes müssen unter den gleichen Bedingungen weitergegeben werden. Der Name des Autors/Rechteinhabers muss in der von ihm festgelegten Weise genannt werden.

    - Weitere Informationen
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung