Logische Verknüpfung von Bedingungen mit AND und OR

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

Innerhalb eines Predicates können problemlos mehrere, logisch verknüpfte Bedingungen auftreten, die dann gleichzeitig (AND) oder alternativ (OR) erfüllt sein müssen. Die beiden XPath-Ausdrücke, die jeweils für sich einen Boole­schen Wert ergeben müssen, werden in der eckigen Prädikatsklammer durch die Token and bzw. or verknüpft. Da die Präzedenz der logischen Operatoren gegenüber anderen Operatoren (Rechenoperatoren, Vergleichs­operatoren etc.) niedriger ist, müssen die verknüpften Ausdrücke nicht geklammert werden.

Vereinigungsmenge – einschließendes Oder

Will ich die Autoren 'Hafner, Katie' und 'Hass, Hans' sehen, so muss ein Filter­prädikat mit OR-Relation gebildet werden, das beide Autoren passieren lässt:

buch[buchautor='Hafner, Katie' or buchautor='Hass, Hans']

Dies würde Bücher auswählen, die beide – einzeln oder auch gemeinsam – als Autoren besitzen. Es müssen nicht ähnliche Bedingungen sein, denkbar wäre zum Beispiel auch

buch[buchautor='Panter, Peter' or @kat='reisen']

Dies entspricht der Vereinigungsmenge aller Bücher des Autors Peter Panter mit allen Büchern der Kategorie »Reisen«. Hierbei sind Buchelemente, die beide Bedingungen erfüllen, jedoch nicht doppelt in der Ergebnissequenz ent­halten (obwohl Knoten durchaus doppelt in Sequenzen auftreten dürften).

Schnittmenge – ausschließendes Und

Sollen beide Bedingungen gleichzeitig gelten, so verwendet man die AND-Rela­tion. Dies entspricht im Wesentlichen vom Ergebnis zwei unabhängigen Predi­cates: In der Ergebnissequenz befinden sich nur diejenigen Nodes, die beide Bedingungen erfüllen.

[buchautor='Hafner, Katie' and buchautor='Lyon, Matthew']

Dies kann nur der Fall sein, wenn ein Buch mindestens zwei <buchautor>-Ele­mente besitzt und unter diesen die beiden getesteten Werte auftreten.

Operatoren in Predicates

Hier noch einmal eine kurze Auflistung der möglichen Operatoren, die bei der Formulierung von Predicates verwendet werden können. Die Reihenfolge von oben nach unten entspricht der oben angesprochenen Operator-Präzedenz.

Tabelle: Operatoren in Predicates und ihre Präzedenz.

Test/Aufgabe Operator
unäres Minus (Vorzeichen) -
multiplikative Operatoren *, div, idiv, mod
Additive Operatoren +, -
Vergleichsoperatoren (<, > zu ersetzen durch &gt; und &lt;) =, !=, <, >, <=, >=, eq, ne, lt, gt, le, ge, is, isnot
Bedingung additiv and
Bedingung alternativ or

   

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