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 Booleschen 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, Vergleichsoperatoren 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 Filterprä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 enthalten (obwohl Knoten durchaus doppelt in Sequenzen auftreten dürften).
Schnittmenge – ausschließendes Und
Sollen beide Bedingungen gleichzeitig gelten, so verwendet man die AND-Relation. Dies entspricht im Wesentlichen vom Ergebnis zwei unabhängigen Predicates: 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>-Elemente 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 > und <) | =, !=, <, >, <=, >=, 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