Stylesheets generieren

Beim Erstellen von XSLT-Stylesheets von "Hand" überträgt der oder die AutorIn das Markup des Dokuments in das Stylesheet. Für alle Tags, für die eine Verarbeitungsregel (template rule) benötigt wird, muss ein oder mehrere <xsl:template> Elemente angelegt werden. Das ist mühsam und legt die Frage nach visuellen Werkzeugen nahe. Die gibt es inzwischen, allerdings sind sie oft teuer oder der erzeugte XSLT-Code ist meist nicht besonders brauchbar. Warum also nicht ein Stylesheet schreiben, das zumindest einen Teil dieser Arbeit erledigt?

Das hier vorgestellte Stylesheet nutzt den Markup des Quelldokuments, um für dieses Dokument ein Stylesheet-Skelett zu erzeugen. Bei der Neuentwicklung eines Dokumenttyps ist oft noch kein Schema vorhanden und Entwickler experimientieren mit Instanzen herum. Häufig kommt es auch vor, dass ein XML-Datenstrom aus einer Serialisierung beispielsweise aus einer Datenbank entsteht. Auch in diesem Fall exisitieren oft keine Schemata. In dieser Situation ist es praktisch, rasch ein Stylesheet Skelett zur Hand zu haben, das leicht für eine einfache Visualisierung der Inhalte ausgebaut werden kann.

Das Stylesheet doconthefly.xslt aus dem Paket generate-xslt.zip erzeugt standardmässig zwei Dokumente:

  • eine HTML Crossreferenz zur Struktur des XML Dokuments
  • ein Skelett eines XSLT Stylesheets passend zum Markup des Eingabedokuments

Das erzeugte Stylesheet Skelett ist XSLT 1.0 kompatibel. Als vordefinierte Namen werden crossref.html und skeleton.xslt verwendet. Durch Übergabe der Parameter 'html-crossref' und 'xslt-skeleton' an das Stylesheet, können diese Namen durch selbstgewählte Namen überschrieben werden. Weitere Hinweise auf die Abläufe im Stylesheet finden Sie als (englische) Kommentare im Quellcode.

Wo ist die XSLT 1.0 Version?

Da die XSLT 1.0 Version des Stylesheets nicht stabil lief, wurde sie entfernt. Der noch als experimentell eingestufte XSLT 2.0 Prozessor Saxon 7.5 arbeitet auf längeren Dokumenten mit der vorliegenden Ausgabe stabiler als das XSLT 1.0 Stylesheet. Dies ist vor allem auf die neue <xsl:for-each-group > Anweisung zurückzuführen, von der heftig Gebrauch gemacht wird. Infos zu den Voraussetzungen zur Nutzung dieser Lösung finden Sie im download Bereich.

Wer nicht auf XSLT 2.0 umsteigen will oder kann, findet die Beschreibung einer anderen Lösung im Artikel Mit Schlange und Stil.

© M. Knobloch 2003-06-22 created with SAXON 7.5.1 from Michael Kay XSL Version 1.8