Filtern von Knotensets durch Prädikate

XPath-Ausdrücke dienen der Selektion von Knoten innerhalb von XML-Bäumen. Damit ein XPath-Ausdruck auch für komplexere Problemstellungen herangezogen werden kann, bedarf es einer Möglichkeit, die Ergebnisse der bisherigen Ausdrücke nochmals zu filtern, um so genauere Zielmengen an Knoten zu definieren. Für diesen Einsatz können XPath-Ausdrücke sogenannte Prädikate enthalten. Prädikate sind Ausdrücke, die einen booleschen Wert (wahr oder falsch) zurückliefern und so für jeden selektierten Knoten einen nochmaligen Filter definieren. Trifft für einen Knoten aus einem Knotenset der Ausdruck eines Prädikats zu (ist die Bedingung also wahr), so bleibt dieser Knoten im Ergebnisknotenset. Ist dagehen der Wahrheitswert für einen Knoten falsch, so wird dieser aus dem Knotenset herausgefiltert. Ausgangssituation ist also immer eine Knotenmenge, die dann noch verfeinert (eingeschränkt) wird.

Filtern von Knotentests

Der Ausdruck //adresse selektiert alle Elementknoten "adresse" des Dokuments. In einem zweiten Schritt, nämlich durch die Anwendung eines Prädikates auf die selektierte Knotenmenge, wird diese nun reduziert. Nur diejenigen Elemente, welche die Bedingung erfüllen, dass das Kindelement "ort" den Wert "Stuttgart" hat, verbleiben in der Knotenmenge, alle anderen werden ausgefiltert.

Der Ausdruck in einem Prädikat kann neben einem Stringvergleich auch noch andere Wertevergleiche ausdrücken. Beispiele dafür sind:

Reiner Stringvergleich adresse[name="Willy Winzig"]
Numerischer Vergleich (größer) Album[@bewertung > 3]
Numerischer Vergleich (kleiner gleich) //Lied[@jahr <= 1990]
Kombination aus "gößer" und "ungleich" Album[@bewertung < 2]/Lied[@jahr != 2000]

Neben einem Wertevergleich kann ein Knotenset auch auf Koexistenz anderer Elemente hin überprüft werden.

/adressenliste[adresse] Prüfung auf Existenz eines Kindelements "adresse"
/adressenliste/adresse[@kat] Prüfung auf Existenz eines Attributes "kat" innerhalb von "adresse"

Achtung: Ein Prädikat prüft nur auf wahr oder falsch. Implizite Konvertierung zu boolean.

   

<< zurück vor >>
Tipp der data2type-Redaktion:
Zum Thema XPath bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © dpunkt.verlag GmbH 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken. Ansonsten unterliegt dieses Kapitel aus dem Buch "Professionelle XML-Verarbeitung mit Word" 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.

dpunkt.verlag GmbH, Ringstraße 19B, 69115 Heidelberg, fon 06221-14830, fax 06221-148399, hallo(at)dpunkt.de