element-available
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 5.)
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
Kategorie: Information über die Laufzeitumgebung
Herkunft: XSLT 1.0
Rückgabewert: Ein Boolescher Wert, je nachdem, ob die angefragte Instruktion oder Erweiterungsinstruktion in der Laufzeitumgebung verfügbar ist oder nicht
Aufruf/Argumente:
element-available($instruktionsname)
$instruktionsname:
Obligatorisch. Das Argument der Funktion ist ein String xs:string, der, wenn er literal übergeben wird durch Stringbegrenzer gekennzeichnet sein muss. Das Argument wird als QName der auf Verfügbarkeit zu prüfenden Instruktion interpretiert und muss in seiner expandierten Form dem expandierten QName der Instruktion entsprechen.
Befindet sich die so bezeichnete Instruktion im XSLT-Namensraum, so muss es sich um eine gültige XSLT-Instruktion handeln, andernfalls gilt sie als Erweiterungsinstruktion. Besitzt der QName kein Präfix (null namespace), so gibt die Funktion stets false zurück.
Verwendungszweck:
Die Funktion element-available() wird eingesetzt, um im Vorfeld der Verarbeitung abzufragen, ob eine im Stylesheet benötigte Erweiterungsinstruktion in der aktuell vorliegenden Laufzeitumgebung (d.h. vom verarbeitenden XSLT-Prozessor) unterstützt wird.
Wird die Instruktion unterstützt, so gibt der XSLT-Prozessor den Wert true zurück, andernfalls false. Die bloße Anwesenheit einer nicht unterstützten Instruktion in einem Template verursacht nicht von vornherein einen Fehler. Im Fall einer tatsächlich notwendigen Auswertung soll der XSLT-Prozessor auf ein vorhandenes alternatives xsl:fallback-Element zurückgreifen und dessen Templateinhalt ausführen.
Da sich eine Instruktion, unabhängig davon, ob es sich um eine aus XSLT selbst stammende oder um eine Erweiterungsinstruktion handelt, stets in einem Namensraum befinden muss, wird grundsätzlich false zurückgegeben, wenn der übergebene String bei seiner Interpretation als QName keinen Präfixanteil hat und demzufolge einen Null-Namensraum besitzt.
Nur auf Instruktionen anwendbar:
Die Funktion element-available() bezieht sich auf XSLT-Instruktionen und nicht auf XSLT-Deklarationen (Toplevel-Elemente). Wird sie auf Deklarationen angewendet, kann sie je nach verwendetem XSLT-Prozessor durchaus auch false zurückgeben, obwohl die entsprechende Deklaration unterstützt wird (bei Saxon ist dies z.B. der Fall). In der Praxis werden sich aus diesem Umstand allerdings keine Probleme ergeben.
Beispiele:
Beispiel 1 – Test auf neue XSLT-Instruktion:
<xsl:if test="element-available('xsl:neue-instruktion')">
<xsl:neue-instruktion>Hallo Welt!</xsl:neue-instruktion>
</xsl:if>
Eine XSLT-Instruktion wird durch einen xsl:if-Test abgeschirmt und nur dann ausgeführt, wenn der Prozessor sie unterstützt. Beim Test ist der Einsatz der erforderlichen Stringbegrenzer um den Instruktionsnamen zu beachten.
Beispiel 2 – Test auf Erweiterungsinstruktion:
<xsl:choose>
<xsl:when test="element-available('erw:uppercase')">
<p>erw:uppercase wird unterstützt.</p>
</xsl:when>
<xsl:otherwise>
<p>erw:uppercase wird nicht unterstützt.</p>
</xsl:otherwise>
</xsl:choose>
Hier wird die element-available-Funktion als Argument eines xsl:when-Tests verwendet und es werden entsprechend verschiedene Template-Abschnitte aktiviert.
Beispiel 3 – Test auf Nichtvorhandensein einer Erweiterungsinstruktion:
<xsl:if test="not(element-available('sql:connect'))">
<xsl:message>sql:connect is not available</xsl:message>
</xsl:if>
Es wird geprüft, ob die (Saxon-)SQL-Erweiterung unterstützt wird, und eine Meldung mit xsl:message ausgegeben, falls dies nicht der Fall ist.
Funktionsdefinition:
XSLT 1.0:
element-available('instruktionsname') => boolean
element-available($instruktionsname as xs:string) as xs:boolean
<< 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