Kurzübersicht über XSLT 2.0
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 6.)
In der Spezifikation zu XSLT 2.0 sind weiterhin alle von XSLT 1.0 bekannten Elemente enthalten, zum Teil mit erweiterten Möglichkeiten. Zusätzlich wurden eine Reihe von Elementen hinzugefügt, die von entsprechend aktuellen XSLT-Prozessoren genutzt werden können. Hierfür ist das version-Attribut des Stylesheet-Elements auf "2.0" zu setzen. Auch für einzelne Deklarationen oder Instruktionen kann ein version-Attribut gesetzt werden. Die Attributsätze bzw. teilweise auch die Inhaltsmodelle der bestehenden Elemente und Instruktionen wurden in XSTL 2.0 erweitert.
Hinzugekommen ist ein für alle Elemente zulässiger Standard-Attributsatz, der im Wesentlichen Namensraum- und Verarbeitungsaspekte berührt, und zu dem zusätzlich das oben bereits angesprochene version-Attribut gehört. Auf diese und weitere elementspezifische Erweiterungen wird in Folge und in der alphabetischen Referenz aller XSLT-Elemente im Einzelnen hingewiesen.
Es gibt in XSLT 2.0 insgesamt vierzehn neue Elemente; drei Toplevel-Elemente, acht Instruktionen und drei Sub-Instruktionen, was die Zahl der XSLT-Elemente auf insgesamt 49 anwachsen lässt.
Achtung – XSLT 2.0 baut nicht auf XSLT 1.1 auf!
Das in der ursprünglich geplanten, jedoch später zurückgezogenen Version XSLT 1.1 vorgesehene neue Element xsl:script entfällt in XSLT 2.0 wieder. Die Funktionalität der XSLT 1.1-Instruktion xsl:document wird in XSLT 2.0 durch xsl:result-document abgedeckt. Die namensgleiche Instruktion xsl:document von XSLT 2.0 dient der Validierung nicht serialisierter Dokumentbäume, ist also mit derjenigen aus XSLT 1.1 nicht identisch.
Neue Toplevel-Elemente in XSLT 2.0
XSLT 2.0 fügt den zwölf von XSLT 1.0 übernommenen Toplevel-Elementen drei weitere hinzu:
Tabelle: Neue Toplevel-Elemente in XSLT 2.0.
Der erste Neuzugang ist xsl:character-map, das zur Deklaration benannter Character-Mappings dient. Mit Hilfe des Elements kann eine Ersetzung bestimmter Zeichen durch je einen festzulegenden String während der Serialisierung des Ergebnisdokuments definiert werden. Ergänzend hierzu wird die Instruktion xsl:output-character eingeführt.
Als zweites neues Toplevel-Element erlaubt xsl:function die Deklaration von Funktionen und ihrer Rückgabewerte durch den Nutzer. Da diese Funktionen an das ihre Definition enthaltende Stylesheet und dessen Laufzeit gebunden sind, werden sie auch als »Stylesheet-Funktionen« bezeichnet.
Ebenfalls hinzugefügt wurde die Deklaration xsl:import-schema, die sich, wie der Name andeutet, mit der Einbindung von XML Schema-Dateien in den Verarbeitungsprozess befasst. Hiermit ergibt sich die Möglichkeit, beispielsweise nutzerdefinierte Datentypen bei der XSLT-Verarbeitung zu berücksichtigen.
Neue Instruktionen und Sub-Instruktionen in XSLT 2.0
Den 17 aus XSLT 1.0 bekannten Instruktionen fügt XSLT 2.0 acht weitere hinzu:
xsl:document | |
xsl:result-document | |
Tabelle: Neue Instruktionen in XSLT 2.0.
In diesem Zusammenhang sind auch drei weitere Sub-Instruktionen definiert:
xsl:output-character |
Tabelle: Neue Sub-Instruktionen in XSLT 2.0.
Auf verschiedene, unter XSLT 1.0 nur schwer oder gar nicht lösbare Problemstellungen sind in XSLT 2.0 Antworten in Form neuer Instruktionen gefunden worden. So kann mit xsl:analyze-string eine Zeichenkettenüberprüfung mittels regulärer Ausdrücke vorgenommen werden. Als untergeordnete Sub-Instruktionen hierzu dienen xsl:matching-substring und xsl:non-matching-substring.
Die Instruktion xsl:document ermöglicht die Erzeugung eines Dokumentknotens in Form eines temporären Baums bei gleichzeitig möglicher Validierung. Diese Instruktion ist ergänzend zur ebenfalls neuen Instruktion xsl:result-document (siehe unten) zu sehen, die nicht mit temporären Bäumen arbeitet.
Die neue Instruktion xsl:for-each-group erleichtert die Gruppierung von Ausgabeknoten. In diesem Zusammenhang sind die zwei XSLT-Funktionen current-group() und current-grouping-key() definiert.
Die Instruktion xsl:perform-sort gibt sortierte Sequenzen zurück. Hierfür gruppiert sie mehrere xsl:sort-Anweisungen und bringt diese gemeinsam als Sortiervorschrift zur Anwendung.
Die vorhandenen Möglichkeiten zur Generierung von Nodes werden komplettiert durch xsl:namespace, mit der Namensraumknoten erzeugt werden können.
Die Instruktion xsl:next-match ermöglicht – vergleichbar mit xsl:apply-imports – die zusätzliche Aktivierung derjenigen Template-Regeln, die das zur aktuellen Regel »prioritätsnächste« match-Pattern für den aktuell verarbeiteten Knoten besitzen.
In Verbindung mit der oben erwähnten Toplevel-Deklaration xsl:character-map dient die Sub-Instruktion xsl:output-character im Rahmen einer Sammlung von Character-Mapping-Anweisungen der Zuordnung eines Ersetzungsstrings zu einem zu ersetzenden Zeichen.
Das bisher nur unter Verwendung von prozessorspezifischen Erweiterungsinstruktionen darstellbare Erzeugen von mehreren Ausgabedokumenten im Zuge eines Verarbeitungsdurchlaufs fließt in Form von xsl:result-document in den neuen Standard ein. Die Deklaration xsl:output wurde zwecks Zuordenbarkeit zu dieser Instruktion um ein name-Attribut ergänzt.
Die Instruktion xsl:sequence ermöglicht die Generierung einer Sequenz aus beliebigen Typen, die beispielsweise einer bestehenden Sequenz hinzugefügt werden kann. Sie stellt eine Alternative zur Konstruktion von Sequenzen mittels XPath 2.0-Ausdrücken dar. Innerhalb von Stylesheetfunktionen, wie sie durch xsl:function definiert werden, dient die Instruktion zur Erzeugung der Ergebnissequenz.
Die Abbildung verdeutlicht die Zusammenhänge und die Hierarchie der XSLT 2.0-Elemente:
Abbildung: Übersicht über die XSLT-Elemente von XSLT 2.0.
<< zurück | vor >> |
Tipp der data2type-Redaktion: Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: |
Copyright © Galileo Press, Bonn 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT 2.0 & XPath 2.0 ― Das umfassende Handbuch" denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
Galileo Press, Rheinwerkallee 4, 53227 Bonn