Absolute Pfade (oben beginnend) | ||
---|---|---|
/AA /AA/bb |
Der Pfad der Ergebnisknoten muss exakt dem gewünschten entsprechen | /bezirk/gewässer/fluss |
Beliebige Ebene (oben / in der Mitte beginnend) | ||
//AA //AA/bb |
Der Pfad der Ergebnisknoten muss wie der gewünschte enden. Zusätzliche Eltern sind erlaubt. | //fluss/gemeinden/gemeinde |
Variable Eltern/Kinder | ||
/* | Alle Knoten auf der obersten Ebene. Wobei Alle aufgrund der XML-Definition nur einer ist (Dokumentelement). | /* |
/*/*/* | Alle Knoten auf der dritten Ebene. | /*/*/* |
//* | Jeder einzelne Knoten, egal auf welcher Ebene. | //* |
/AA/* | Alle Kinder von AA (nicht aber Kindeskinder) | /bezirk/gewässer/* |
/AA//* | Alle Kinder von AA inklusive Kindeskinder | /bezirk/gewässer//* |
*/*/AA | Enkel (2. Tiefe) namens AA des aktuellen Elements | |
Element-Position | ||
AA/BB[3] | Der dritte BB-Knoten in einem AA-Knoten. | gemeinden/gemeinde[3]
gewässer/fluss[2]/gemeinden |
AA/BB[last()] | Die letzten BB-Knoten in allen AA-Knoten. | gemeinden/gemeinde[last()] |
AA/BB[last()-2] | Die dritt-letzten BB-Knoten in allen AA-Knoten. | gemeinden/gemeinde[last()-2] |
AA/BB[position()=3] | Mittels position() kann die Elementposition auch in komplexeren Ausdrücken verwendet werden. Das Beispiel rechts findet jede dritte Gemeinde. Achtung der Operator mod funktioniert besser wenn die Zählung mit 0 beginnt. | gemeinden/gemeinde[(position()-1) mod 3 = 0] |
Attribute | ||
//AA/@key | Alle key-Attribute von AA-Elementen | //gemeinde/@flaeche |
//AA[@key] | Alle AA-Elemente mit einem key-Attribute | //gemeinde[@stadt] |
//AA[@abc|@def|...] | Alle AA-Elemente mit eines der gelisteten Attribute haben | //gemeinde[@stadt | @flughafenanrainer] |
//AA[@abc and @def and ...] | Alle AA-Elemente mit alle der gelisteten Attribute haben | //gemeinde[@stadt and @flughafenanrainer] |
//@* | Alle Attribute an beliebiger Position | //@* |
//[@*] | Alle Elemente mit irgendeinem Attribut. Das Ergebnis enthält keine Duplikate! | //*[@*] |
//[not(@*)] | Alle Elemente die keinerlei Attribute haben. | //*[not(@*)] |
//[not(@xyz)] | Alle Elemente die das genannte Attribut nicht haben. | //gemeinden/gemeinde[not(@stadt)] |
//[not(@xyz | @uvw|...)] | Alle Elemente die keines der gelisteten Attribute haben. | //gemeinden/gemeinde[not(@flughafenanrainer | @stadt)] |
//[not(@xyz and @abc and ...)] | Alle Elemente die nicht alle gelisteten Attribute haben. | //gemeinden/gemeinde[not(@flughafenanrainer and @stadt)] |
Wertvergleiche | ||
//AA/*[@key < 5] | Vergleiche können nur innerhalb von [ ] gemacht werden. Entsprechend ist das Ergebnis die Liste der Eltern-Knoten. Man kann aber darauf basierend wieder zu dem gesuchten Attribut gehen. | //*[@flaeche<=5.2 and @flaeche>4]/@flaeche |
Axen | ||
//AA/../ | Mit zwei Punkten hintereinander '..' steigt man im Pfad eine Ebene nach oben. Das Beispiel rechts findet zuerst alle Flüsse die durch die Gemeinde Glattfelden fliessen um anschliessend von deren Elternelementen aus die name-Attribute aller gemeinde-Elemente zu finden. Dadurch werden alle Gemeinden, die mit Glattfelden ein Gewässer teilen, gefunden. Achtung: Ein Resultat kann mehrfach auftreten! |
//fluss//gemeinde[@name='Glattfelden']/../gemeinde/@name
Genutzte Gewässer: //fluss//gemeinde[@name='Glattfelden']/../../@name |
Diverses | ||
//comment()/.. | Alle Knoten, die Kommentare enthalten | //comment()/.. |
... | ... | Kombinieren aller vier Typen | |
//*[@plz=8152] | //*[@plz=8152]/@plz | //comment() | //*[@plz=8427]/text() |