Bedingte Ausdrücke

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

Keywords: if, then, else

XPath unterstützt die bedingte Auswertung von Teilausdrücken anhand eines Testausdrucks in Form einer if-then-else-Konstruktion:

if  testausdruck 
    then  ausdruck_1 
    else  ausdruck_2

Der hinter dem Keyword if als Testausdruck verwendete Ausdruck wird als boolescher Wert betrachtet. Ist sein effektiver boolescher Wert true, so wird der nach dem Keyword then stehende Teilausdruck ausgewertet und derjenige hinter dem Keyword else ignoriert. Analog wird, falls der Testausdruck false ergibt, nur der else-Zweig ausgeführt. Tritt im nicht ausgewerteten Zweig ein dynamischer Fehler auf, so wird dieser ignoriert.

Laufzeitfehler wirken sich also nur im tatsächlich ausgewerteten Zweig des bedingten Ausdrucks aus. Hier dient ein Vergleich als Testausdruck:

if ($haendler1/preis < $haendler2/preis)
    then $bestellung1
    else $bestellung2

Das Setzen der Klammer um den Vergleichsausdruck im vorangehenden Beispiel ist nicht unbedingt erforderlich, da die Präzedenz des Operators »<« höher ist als die des Keywords »if«. Der optische Eindruck ist allerdings eindeutiger.

Im folgenden Beispiel wird auf das Vorhandensein eines Attributs schulrabatt geprüft und es werden entsprechend unterschiedliche Bestellmöglichkeiten ausgewählt. Der eigentliche Wert des Attributs spielt keine Rolle:

if (@schulrabatt) 
    then $buch/klassensatzbestellung 
    else $buch/einzelbestellung

Rückblick auf XPath 1.0

Kontrollstrukturen wurden in XPath 2.0 neu eingeführt. In XPath 1.0 existiert keine Möglichkeit, inner­halb eines XPath-Ausdrucks bedingte Teilausdrücke zu formulieren.

   

<< zurück vor >>
Tipp der data2type-Redaktion:
Zum Thema XPath 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