
Content Management im eigenen Haus: XSLT selbst programmieren
Veröffentlichung vom 29.11.2004
Für Content Management muss es nicht gleich ein Content Management System sein. Gerade für kleinere und mittlere Betriebe, wo jeder Euro doppelt wert ist, kann es sich lohnen, selbst zu entwickeln. Mittels XML-Technologien basierend auf der eXtensible Markup Language und ein wenig Programmierung können so auch in kurzer Zeit sehr gute Ergebnisse erzielt werden. Wie, das erfahren Sie nach einem Exkurs in XML anhand des Beispiels "Quick Guide to HALCON": Innerhalb von nur 5 Personenmonaten stellten Technische Redakteure die Produktion des 200-Seiten-Handbuchs auf einen XML-Workflow um.
Von Alexa Zierl
Inhalte
XML in aller Munde
Vom XML-Dokument zur Publikation
XML und XSLT im Praxistest: "Quick Guide to HALCON" in 5 Personenmonaten
Die Umsetzung
Fazit
XML in aller Munde
XML, die eXtensible Markup Language, ist eines der "buzz words" in der Technischen Dokumentation, insbesondere wenn es um Single Source Publishing geht, also die Idee, aus einer Quelle Dokumente in verschiedenen Ausgabeformaten (z.B. Druck, PDF, HTML) zu erzeugen, eventuell sogar mit angepassten Inhalten sowie in verschiedenen Sprachen, Versionen und Varianten. Die Einsatzmöglichkeiten scheinen also nahezu unbegrenzt zu sein.
XML erscheint deshalb als so geeignet für das Single Source Publishing, weil es von der Grundidee her eine (Meta-)Sprache zur Strukturierung von Inhalten ist und keine Information über Layout oder Formatierung enthält (siehe das folgende Beispiel-XML-Dokument). Basierend auf der Strukturinformation, z.B. dass ein Textstück eine Kapitelüberschrift ist, kann damit für verschiedene Ausgabeformate eine jeweils passende Formatierung erzeugt werden.
<?xml version="1.0" ?>
<book>
<title>Quick Guide to HALCON
</title>
<chapter>
<title>Introducing HALCON</title>
<para>HALCON defines the state of the art in machine vision software.</para>
</chapter>
</book>
Vom XML-Dokument zur Publikation
Wie aber wird aus einem XML-Dokument eine HTML-Seite oder ein gedrucktes Handbuch? Zwei Aufgaben sind hierfür zu lösen: Erstens Layout und Formatierung hinzufügen sowie zweitens (eventuell) Inhalte auswählen oder umorganisieren.
Falls man aus XML-Dokumenten "nur" eine Online-Version erzeugen, sie also in WWW-Browsern anzeigen will, kann man auf die aus der HTML-Welt bekannten Cascading Stylesheets (CSS) zurückgreifen. Diese fügen für die Browser Layout und Formatierung hinzu; eine Auswahl oder Umorganisation der Inhalte ist allerdings nicht möglich, d.h. das XML-Dokument muss exakt den gewünschten Inhalt in der gewünschten Reihenfolge enthalten.
Möchte man sicherstellen, dass XML-Dokumente aus jeweils definierten Datenstrukturen und -typen (z. B. Ziffern- und Buchstabenketten) bestehen, helfen DTDs (Document Type Definition) und Schemas. Diese beiden XML-Untersprachen filtern wie Schablonen die XML-Dateien und lassen nur in ihrem Sinne gültige XML-Dokumente zu.
Nachdem sich XML in letzter Zeit immer weiter verbreitet hat, bieten auch die gängigen Textverarbeitungs- und Publishing-Tools entsprechende Schnittstellen an. Adobe FrameMaker z.B. kann seit Version 7.0 XML-Dokumente verarbeiten, denen eine DTD zu Grunde liegt. Den Strukturelementen wird dabei Formatierungsinformation zugewiesen; via Programmierschnittstelle kann man auch komplexere Operationen vornehmen. Ein XML-Dokument wird so in ein "normales" FrameMaker-Dokument verwandelt. Mit Office 2003 hat auch Microsoft das XML-Zeitalter eingeläutet. Word-Dokumente können nun als wordspezifische XML-Dokumente abgespeichert und wieder eingelesen werden. Das zu Grunde liegende XML Schema ist offengelegt, man kann aber auch eigene Strukturelemente in einem XML Schema definieren und verwenden.
Auch die XML-Familie bietet einen Weg vom XML-Dokument zum "fertigen" Dokument: XSL, die eXtensible Stylesheet Language. XSL wurde mit dem Ziel entwickelt, CSS abzulösen und dessen Schwächen auszubügeln: Erstens sollten nicht nur Web- sondern auch gedruckte Dokumente erzeugt werden können, zweitens sollte die Sprache auch eine Inhalte eines XML-Dokuments transformieren (z. B. umstrukturieren).
XSL ist in Wirklichkeit eine Familie von XML-Sprachen: XSL-FO (XSL Formatting Objects, standardisiert Oktober 2001) beschreibt Layout und Formatierung, XSLT (XSL Transformation, standardisiert November 1999) die Transformation von XML-Inhalten. Zu beiden Sprachen wurden die passenden Tools entwickelt: Sogenannte FO-Prozessoren wandeln XSL-FO-Dokumente z.B. in PDF; XSLT-Prozessoren lesen XML-Dokumente und XSLT-Stylesheets und erzeugen daraus XML-, HTML oder Text-Dokumente.
Der folgende Code zeigt, wie die Beispiel-XML-Datei mittels XSL-FO formatiert werden kann. Im Vorspann des XSL-FO-Dokuments wird das Seitenlayout festgelegt (hier auf Standardeinstellungen); dann folgt der formatierte Inhalt.
<?xml version="1.0" ?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="book">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="book">
<fo:flow flow-name="xsl-region-body">
<fo:block font-size="20pt" font-family="sans-serif" font-weight="bold">
Introducing HALCON
</fo:block>
<fo:block font-size="10pt" font-family="serif">
HALCON defines the state of the art in machine vision software.
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
Wie man gut sehen kann, widerspricht XSL-FO eigentlich der XML-Philosophie der strikten Trennung von Inhalt und Darstellung. Gleichzeitig wird auch deutlich, dass man wohl nur ungern XML-Dateien manuell mit XSL-FO formatieren würde, da man dann z.B. jeder Kapitelüberschrift von Hand dasselbe Format zuweisen müsste. Aber das ist auch nicht nötig, denn genau dafür wurde XSLT entwickelt: Zur Transformation der XML-Quelldateien in XSL-FO-Dokumente.
Doch das ist nicht der einzige Verwendungszweck von XSLT. Der folgende Code zeigt, wie die Beispiel-XML-Datei mittels XSLT in eine HTML-Seite transformiert werden kann. Grundelement von XSLT sind die sogenannten Regeln (<xsl:template>); sie geben an, wie bestimmte Elemente eines XML-Dokuments transformiert werden sollen. Im Code-Beispiel wird z.B. für das Element <book> der HTML-Kopf ausgegeben, mit dem Inhalt des Kind-Elements <title> als Titel (abgefragt mittels <xsl:value-of>). Dann wird mit <xsl:apply-templates/> die Kontrolle wieder an den XSLT-Prozessor übergeben, der die folgenden Elemente im Dokument abarbeitet. Das Element <title> wird z.B. je nach Elternelement in eine Überschrift ersten (<book>), zweiten (<chapter>) oder dritten Grades (<section>) umgesetzt.
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml"/>
<xsl:template match="book">
<html>
<head>
<title><xsl:value-of select="title"/></title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="book/title">
<h1><xsl:value-of select="."/></h1>
</xsl:template>
<xsl:template match="chapter/title">
<h2><xsl:value-of select="."/></h2>
</xsl:template>
<xsl:template match="section/title">
<h3><xsl:value-of select="."/></h3>
</xsl:template>
</xsl:stylesheet>
Das Beispiel zeigt nur einen kleinen Ausschnitt aus den Möglichkeiten, die sich mit XSLT bieten. XSLT ist eine ausgewachsene Programmiersprache mit Variablen, Schleifen, Verzweigungsanweisungen und vielem mehr.
XML und XSLT im Praxistest: "Quick Guide to HALCON" in 5 Personenmonaten
Bei der MVTec Software GmbH stand letztes Jahr ein Handbuch-Projekt an, das zum ersten Mal auf der Basis von XML realisiert werden sollte. MVTec ist ein führender Hersteller von Software für industrielle Bildverarbeitung; die Produkte werden mit umfangreicher Dokumentation ausgeliefert.
Das neu zu erstellende Handbuch, der "Quick Guide to HALCON", ist trotz seines Names mit mehr als 200 Seiten durchaus umfangreich. Neben klassischen Handbuch-Textformen beinhaltet es auch stark strukturierte Teile wie z.B. Kapitel mit Beispielanwendungen der Software in den verschiedenen Industriezweigen. Diese sind jeweils nach dem Schema "Beispielprogrammname - Screenshots - Text mit Auszügen aus dem Beispielprogramm - Liste weiterer Beispiele" aufgebaut. Als weitere Besonderheit sollten die Listen passender Beispiele automatisch aus einer Datenbank von Beispielbeschreibungen (ebenfalls auf Basis von XML) generiert werden. Ähnliches gilt für die Auszüge aus den Beispielprogrammen.
Als DTD für das Handbuch kam DocBook zum Einsatz, eine umfangreiche Open-Source-DTD, die alles bietet, was man für typische Handbücher an Strukturelementen braucht. Grund für diese Wahl war auch, dass sich DocBook sehr einfach mit eigenen Elementen erweitern lässt, was für die angesprochenen stark strukturierten Handbuch-Teile nötig war.
Zielformat für das Handbuch waren PDF und PostScript für die Druckversion. Layout und Formatierung sollten mittels LaTeX geschehen, einem plattformunabhängigen Open-Source-Textsatz-System. LaTeX ist keine WYSIWYG-Umgebung; es besteht aus einer Auszeichnungssprache, die durchaus Ähnlichkeiten mit XML aufweist, und Tools, die die Eingabedateien in fertige Dokumente "übersetzen". Hier eine LaTeX-Version der Beispiel-XML-Datei:
\documentclass[twoside,10pt,a4paper]{book}
\title{Quick Guide to HALCON}
\begin{document}
\chapter{Introducing HALCON}
HALCON defines the state of the art in machine vision software.
\end{document}
Grund für die Entscheidung für LaTeX war, dass das neue Handbuch über interaktive Links eng mit bereits bestehenden Handbüchern verzahnt werden sollte und diese auch mit LaTeX erstellt wurden.
Mit der Entscheidung für LaTeX als Layout-Programm "reduzierte" sich die Aufgabe, die XML-Handbuch-Dokumente in ein fertiges Handbuch zu verwandeln, auf die Transformation der XML-Handbuchdateien in LaTeX-Dateien - ein klarer Fall für XSLT. Durch die zusätzliche Aufgabe, automatisch Information aus den XML-Beschreibungsdateien der Beispiele und Code aus den Beispielen selbst zu extrahieren, hätte aber auch ohne Festlegung des Layout-Programms auf LaTeX kein Weg an XSLT vorbeigeführt, da solche Transformationen mit CSS z.B. gar nicht und mit FrameMaker nur über selbst geschriebenen Code realisiert werden können. Office 2003 setzt an dieser Stelle von sich aus auf XSLT.
Die Umsetzung
Bei der Realisierung von Projekten mit XSLT kann man vielfach auf Open-Source-Tools zurückgreifen. So musste bei den XSLT-Stylesheets nicht bei Null angefangen werden: Für DocBook gibt es eine Vielzahl von Open-Source-Stylesheets zur Transformation in verschiedene Formate, so auch DB2LaTeX für die Transformation in LaTeX-Dateien. Wie DocBook selbst sind auch diese Stylesheets einfach für eigene Zwecke anpassbar und erweiterbar.
Als XSLT-Prozessor kam die Open-Source-Version von Saxon zum Einsatz. Der komplette Prozess der Handbucherzeugung lief unter der Plattform Linux.
Das Handbuch wurde in ca. 5 Personenmonaten fertiggestellt. 3 Wochen entfielen dabei auf die Einarbeitung in XML und XSLT, 7 Wochen auf die Erstellung von DTD und XSLT-Stylesheets und 12 Wochen auf den eigentlichen Handbuch-Inhalt. Die Integration mit den bestehenden Handbüchern verlief auf Grund der gemeinsamen LaTeX-Basis problemlos, von außen ist dem Quick Guide nicht anzusehen, dass er auf Basis einer anderen Technik erstellt wurde.
Fazit
Dass ein komplett neues, 200 Seiten starkes Handbuch basierend auf neuer Technik in so kurzer Zeit realisiert werden konnte, zeigt, dass es sich auch im Bereich der technischen Dokumentation durchaus lohnt, einen Blick auf XSLT zu werfen. Ausgehend von dem Ziel, XML- in XSL-FO-Dokumente zu transformieren und damit zu formatieren, entstand mit XSLT ein mächtiges, plattformunabhängiges Werkzeug, das eine fast beliebige Manipulation von XML-Daten erlaubt. Es ist seit fast fünf Jahren standardisiert und weit verbreitet, was sich auch in der Menge der verfügbaren Tools und Stylesheets widerspiegelt, vieles davon Open Source, also kostenlos verfügbar.
Die Anwendungsbereiche von XSLT sind vielfältig: XML-Dokumente können z.B. direkt in HTML transformiert werden; die gängigen Browser beinhalten deshalb auch einen XSLT-Prozessor. Die Stärken von XSLT kommen typischerweise dann zum Tragen, wenn die XML-Daten in Strukturen vorliegen, die nicht der des Zieldokuments entsprechen, z.B. weil sie auch für andere Zwecke verwendet werden. Eine weitere Anwendung sind Projekte, in denen XML-Dokumente in spezielle Ausgabeformate transformiert werden sollen, wie z.B. LaTeX im oben beschriebenen Fall. XSLT kann aber auch im Zusammenspiel mit Tools wie Word oder FrameMaker von Nutzen sein, z.B. um XML-Dokumente in eine Form zu transformieren, wie sie für die Weiterverarbeitung mit diesen Tools geeignet ist.
Jedoch: XSLT ist und bleibt eine Programmiersprache. Es ist kein Zufall, dass beim oben beschriebenen Projekt alle Mitarbeiter, die an der Handbuch-Technik beteiligt waren, aus dem Bereich der Software-Entwicklung stammen - aber das gilt ja auch für viele Word-Makro- und FrameMaker-API-Spezialisten.

