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 alterna­tiven 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 Erweiterungsinstruk­tion handelt, die in der Laufzeitumgebung unbekannt ist, oder um eine XSLT-Instruktion einer höheren (neueren) XSLT-Version als vom Prozessor imple­mentiert.

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ärtskompatib­len 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 Pro­zessor 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-Ele­mente anbietet, so werden alle diese alternativen Anweisungsblöcke ausge­fü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ärtskompa­tiblen 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>

Querverweise:

Siehe auch die XSLT-Funktion element-available().

   

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