xsl:fallback
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 6.)
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
Das xsl:fallback-Element dient dazu, alternativen Code zur Verfügung zu stellen, falls seine Parent-Instruktion von der XSLT-Laufzeitumgebung nicht unterstützt wird.
Klassifizierung | Instruktion |
Funktionsgruppe | Alternativer Code für Abwärtskompatibilität |
Einführung | XSLT 1.0 |
Position im Stylesheet und erlaubte Inhalte:
xsl:fallback wird als Kindelement in Anweisungsblöcken einer XSLT-Instruktion oder einer Erweiterungsinstruktion verwendet. Es dürfen mehrere xsl:fallback-Elemente in Folge auftreten.
Der Inhalt eines xsl:fallback-Elements besteht aus einem Sequenzkonstruktor bzw. Templatekörper, der sich aus beliebigen XSLT-Instruktionen, Literal Result Elements und Text zusammensetzen darf.
Attribute:
Es gelten die Standardattribute. Darüberhinaus besitzt die Instruktion xsl:fallback keine eigenen Attribute.
Verwendungszweck:
Das xsl:fallback-Element enthält einen alternativen Templateblock, der dann instanziiert wird, wenn die Instruktion, in deren Templateblock das Element enthalten ist, vom XSLT-Prozessor nicht unterstützt wird. Dies kann dann geschehen, wenn es sich um eine Erweiterungsinstruktion handelt, die in der Laufzeitumgebung unbekannt ist, oder um eine XSLT-Instruktion einer höheren (neueren) XSLT-Version als vom Prozessor implementiert.
Befinden sich mehrere xsl:fallback-Elemente im Templateblock der nicht erkannten Instruktion, so werden sie alle in der Reihenfolge ausgeführt, in der sie auftreten.
Mit dem durch xsl:fallback ermöglichten Prinzip der vorwärtskompatiblen Verarbeitung (forwards-compatible behavior) soll gewährleistet werden, dass ein XSLT-Prozessor ein Stylesheet auch dann weitestgehend ausführen kann, wenn er Teile der dort verwendeten Instruktionen nicht unterstützt.
Trifft der XSLT-Prozessor während der Ausführung des Stylesheets auf eine unbekannte Erweiterungs-Instruktion und stellt diese kein xsl:fallback-Element zur Verfügung, so muss der Prozessor einen Laufzeitfehler (dynamic error) melden und die Verarbeitung abbrechen (ERR XTDE1450).
Achtung – nicht auf Toplevel-Elemente anwendbar!
Ein Fallback ist nur für Instruktionen möglich, nicht für vom Prozessor nicht unterstützte Toplevel-Elemente. Ein nicht erkanntes Toplevel-Element (Deklaration) wird einfach ignoriert.
Beispiel – Neue XSLT-Instruktion:
<xsl:template match="/">
...
<xsl:superfeature version="3.0">
<!-- neue, nie da gewesene Möglichkeiten -->
<xsl:fallback>
<xsl:message>Leider wird diese Instruktion nicht unterstützt!</xsl:message>
</xsl:fallback>
<xsl:fallback>
<xsl:message>Da ist wohl ein neuer XSLT-Prozessor fällig...</xsl:message>
</xsl:fallback>
</xsl:superfeature>
...
</xsl:template>
Trifft der Prozessor auf eine unbekannte Instruktion, die xsl:fallback-Elemente anbietet, so werden alle diese alternativen Anweisungsblöcke ausgeführt – in diesem Fall zwei.
Anmerkung: Das version-Attribut mit Wert "3.0" alleine würde ausreichen, um einen XSLT 2.0-Prozessor zu veranlassen, in den vorwärtskompatiblen Modus umzuschalten – auch wenn ihm die Instruktion prinzipiell bekannt wäre.
Elementdefinition:
XSLT 1.0:
<!-- Category: instruction -->
<xsl:fallback>
<!-- Content: template -->
</xsl:fallback>
XSLT 2.0:
<!-- Category: instruction -->
<xsl:fallback>
<!-- Content: sequence-constructor -->
</xsl:fallback>
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