Vorwärts- und Rückwärtskompatibilität

(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 6.)

Die Unterscheidung zwischen rückwärts- bzw. vorwärtskompatibler Verarbei­tung ist Sache des Blickwinkels. Die dahinter stehende Idee ist, dass jeder XSLT-Prozessor, ungeachtet seines Versionsstandes, jedes XSLT-Stylesheet – wie­derum ungeachtet dessen Versionsstandes – zumindest rudimentär ausführen können soll.

Die Frage der Vor- oder Rückwärtskompatibilität stellt sich also dann, wenn es sich entweder nicht um ein XSLT 2.0-Stylesheet handelt oder um ein Style­­sheet, in dem nicht alle Instruktionen den Versionsstand 2.0 besitzen. Der Pro­zessor kann, je nach Erfordernis auch »punktuell«, während der Verarbeitung eines Stylesheets den Modus wechseln.

Jede XSLT-Instruktion kann entweder im vorwärts- oder im rückwärtskompa­tiblen Modus verarbeitet werden – oder es muss sich um eine XSLT 2.0-Instruk­tion handeln, die »normal« behandelt werden kann, ohne dass der Prozessor besondere Maßnahmen ergreifen müsste.

Aus Sicht von XSLT 2.0 stellt sich die Lage folgendermaßen dar:

Rückwärtskompatible Verarbeitung

Ältere XSLT-Prozessoren sollen in XSLT 2.0-Stylesheets die neuen Elemente ignorieren (dies gilt für Deklarationen durch ihnen unbekannte Toplevel-Elemente) oder bei unerkannten Instruktionen in Templates entsprechende xsl:fall­back-Templates ausführen.

Ein XSLT 2.0-Stylesheet muss innerhalb der dann aktivierten Fallback-Templa­tes alternative Instruktionen oder Ausdrücke bereitstellen, die der Syntax von XSLT 1.0 und XPath 1.0 entsprechen. In XPath 2.0-Datentypen verwendete Größen werden gegebenenfalls in entsprechende XPath 1.0-Datentypen umge­wandelt.

Anstelle von xsl:fallback kann auch mit xsl:choose zwischen verschiede­nen Anweisungsblöcken gewählt werden. Dies kann mit Hilfe der function-available()- bzw. element-available()-Funktionen gesteuert werden. Ebenso kann mit der Funktion system-property() der Versionsstand des XSLT-Prozessors abgefragt werden.

Alternativ kann die rückwärtskompatible Verarbeitung für eine Instruktion und deren Inhalt (Attribute sowie alle in ihr auf der Descendent-Achse enthal­tenen weiteren XSLT-Instruktionen) auch forciert werden, indem diese ein version-Attribut mit einem Wert kleiner als "2.0" erhält.

Ist der Wert des version-Attributs, der für die betrachtete Instruktion gültig ist (also für diese selbst oder ein Element auf ihrer Ancestor-Achse gesetzt ist), gleich oder größer als "2.0", so kann der rückwärtskompatible Modus nicht aktiviert werden.

Vorwärtskompatible Stylesheetverarbeitung

Für die Verarbeitung von Stylesheets, deren Versionsstand höher ist als der durch den verarbeitenden Prozessor zugelassene, gilt generell das Prinzip der vorwärtskompatiblen Verarbeitung. Das Stylesheet soll, wenn möglich, den­noch verarbeitet werden, wobei neue, unbekannte Instruktionen und Attribute ignoriert oder entsprechende Fallback-Anweisungsblöcke ausgeführt werden.

Für den Fall, dass Instruktionen oder Ausdrücke unbekannt sind, aber keine Fallback-Instruktionen existieren, soll eine Fehlermeldung nicht unmittelbar erfolgen. Statische Fehler (d.h. solche Konflikte, die eigentlich bereits beim Einlesen des Stylesheets erkannt werden) werden ignoriert und spekulativ zu dynamischen Fehlern herabgestuft. Ein Fehler tritt dann nur im Fall einer tat­sächlichen Auswertung eines unbekannten oder nicht interpretierbaren Aus­drucks in Form eines Laufzeitfehlers auf.

Auch die vorwärtskompatible Verarbeitung kann forciert werden, indem diese ein version-Attribut mit einem Wert größer "2.0" erhält. Der Modus gilt dann für die entsprechende Instruktion und deren Inhalt (ihre Attribute sowie alle in ihr auf der Descendent-Achse enthaltenen weiteren XSLT-Instruktionen).

Ist ein für die Instruktion gültiges version-Attribut vorhanden, dessen Wert kleiner oder gleich "2.0" ist, so kann der vorwärtskompatible Modus jedoch nicht in Kraft treten.

   

<< 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