Einführung


... [Seminar XML und Java] ... [Thema: XSLT] ... [Template Rules] ...


Übersicht: Einführung


Vorwort

Diese Ausarbeitung entstand im Rahmen des Seminars "XML und Java" im Wintersemester 2000 an der Fachhochschule Wedel. Es wird keine Gewähr für die Richtigkeit der Informationen übernommen.

Zu diesem Dokument gehört eine xml-Beispieldatei (der Anfang von "Hamlet"), die man hier zusammen mit einem passenden Stylesheet downloaden kann. Wenn man das Stylesheet auf die xml-Datei anwendet, erhält man dieses Ergebnis.


Einleitung

Die Abkürzung XSLT steht für eXtensible Stylesheet Language Transformations. Dahinter verbirgt sich eine Sprache, die entworfen wurde, um vorzugsweise XML-Dokumente in andere XML-Dokumente zu transformieren. XSLT ist ein Bestandteil von XSL.

Transformation bedeutet das Überführen einer Menge von Informationen durch Anwenden von Regeln in eine andere Darstellungsform. Will man nicht die gesamte Menge an Informationen transformieren, muss man vorher eine Selektion durchführen. Mit XPath kann man eine Untermenge von Knoten aus einem Dokument selektieren, weshalb XPath im Zusammenhang mit XSLT eine große Bedeutung zukommt. Zu Einführung in XPath sei auf die Ausarbeitung von Robert Wruck zu diesem Thema verwiesen.

Bei einer Transformation geht in aller Regel Information verloren, es könnte aber auch neue Information hinzukommen. Eine Transformation ist also nicht zwingend umkehrbar.

Alle Elemente, die zur XSLT-Anwendungsdomäne gehören, werden durch die folgende Namespace-Deklaration erkannt: http://www.w3.org/1999/XSL/Transformation. Standardmäßig wird das Namespace-Präfix xsl verwendet.


Grundsätzliche Arbeitsweise

Der XSLT-Prozess benötig zwei Dokumente:

  1. das zu transformierende Quelldokument, das ein XML-Dokument sein muss und
  2. ein Stylesheet, das auch im XML-Format vorliegt und in dem sich die Transformationsvorschriften befinden.

Als Ergebnis erhalten wir einen Ausgabedatenstrom, der das transformierte Dokument beinhaltet. Dieses Dokument kann, muss aber nicht zwangsläufig ein XML-Dokument sein.

Der Transformationsprozess arbeitet nicht direkt auf den Dokumenten, sondern auf einer DOM-Repräsentation, also einem Baum, in dem die einzelnen Elemente des Quelldokuments und auch des Stylesheets durch Knoten repräsentiert werden.

Der Transformationsprozess traversiert das Quelldokument und beginnt dabei an der Dokumentwurzel. Jetzt wird im Stylesheet eine passende Regel gesucht, die beschreibt, was mit diesem Knoten geschehen soll. Diese Regel wird Template Rule genannt. Findet der XSLT-Prozessor eine Template Rule, die für die Dokumentwurzel zuständig ist, wird sie instanziiert. Das instanziieren der Template Rule ist das traversieren des Teilbaums im Stylesheet, der den Inhalt der Template Rule bildet.

Jetzt wird für jedes Element in diesem Stylesheet-Fragment überprüft, ob es zur Anwendungsdomäne des XSLT-Prozessors gehört. Gehört das Element dazu, wird es ausgewertet. Gehört es zu einem Namensraum, der für Erweiterungen innerhalb des Stylesheets deklariert wurde, wird es an einen näher zu spezifizierenden Auswertungsprozess weitergegeben. Besitzt das Element keinen Namensraum oder ist dieser für den Prozessor nicht von Bedeutung, wird das Element nach erfolgter Attributexpansion in das Ergebnisdokument geschrieben.

Innerhalb der Template Rule wird jetzt die Auswahl von Elementen aus dem Quelldokument gesteuert. Hierzu kann man sich verschiedener XSLT-Konstrukte bedienen, z.B. xsl:apply-templates oder xsl:for-each. Im select-Argument von xsl:apply-templates wird ein XPath-Audruck angegeben, der Elemente aus dem Quelldokument auswählt. Auf diese Elemente sollen dann wieder Template Rules angewendet werden.

Man erkennt schon an dieser Stelle, dass wir es mit einem ständigen Wechsel zwischen Stylesheet und Quelldokument zu tun haben.

Wird keine passende Template Rule gefunden, kommen so genannte implizite Regeln (Built-in Template Rules) zum Einsatz. Diese Regeln spezifizieren das Verhalten für alle unterschiedliche Knotentypen, falls keine expliziten Regeln im Stylesheet gefunden werden.

Folgende Grafik möge den Transformationsprozess noch einmal verdeutlichen:

Die grundsätzliche Arbeitsweise von XSLT

Grundsätzliche Arbeitsweise von XSLT


... [Seminar XML und Java] ... [Thema: XSLT] ... [Einleitung] ... [Template Rules]