Αξονές (Axes) της XPath

Έγγραφο παράδειγμα XML

Θα χρησιμοποιήσουμε αυτό το XML έγγραφο στις παρακάτω παραδείξεις:

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

Άξονας XPath

Ο άξονας μπορεί να ορίσει μια ομάδα κόμβων σχετικά με τον τρέχοντα κόμβο.

Όνομα άξονα Αποτελέσματα
ancestor Επιλέγει όλους τους προγόνους του τρέχοντος κόμβου (γονείς, παππούδες κ.λπ.).
ancestor-or-self Επιλέγει όλους τους προγόνους του τρέχοντος κόμβου (γονείς, παππούδες κ.λπ.) και τον ίδιο τον κόμβο.
attribute Επιλέξτε όλες τις ιδιότητες του τρέχοντος κόμβου.
child Επιλέξτε όλους τους υποκείμενους στοιχεία του τρέχοντος κόμβου.
descendant Επιλέγει όλους τους απογόνους των στοιχείων του τρέχοντος κόμβου (γιους, εγγόνους κ.λπ.).
descendant-or-self Επιλέγει όλους τους απογόνους των στοιχείων του τρέχοντος κόμβου (γιους, εγγόνους κ.λπ.) και τον ίδιο τον κόμβο.
following Επιλέγει όλους τους κόμβους μετά από την τελική ετικέτα του τρέχοντος κόμβου.
namespace Επιλέγει όλους τους κόμβους ονόματος χώρου του τρέχοντος κόμβου.
parent Επιλέγει τον γονικό κόμβο του τρέχοντος κόμβου.
preceding Επιλέγει όλους τους κόμβους πριν από την αρχική ετικέτα του τρέχοντος κόμβου.
preceding-sibling Επιλέγει όλους τους同级 κόμβους πριν από τον τρέχοντα κόμβο.
self Επιλέγει τον τρέχοντα κόμβο.

Έκφραση θέσης δρόμου

Η θέση του δρόμου μπορεί να είναι αβсолютος ή σχετικός.

Ο αβсолютος δρόμος ξεκινάει από την αριστερή κάθετη γραμμή ( / ) και ο σχετικός δρόμος δεν κάνει αυτό. Σε και τα δύο περιπτώματα, η θέση του δρόμου περιλαμβάνει μια ή περισσότερες βήματα, κάθε βήμα είναι διαιρεμένο από την κάθετη γραμμή:

Αποτελεσματική διαδρομή απόλυτης θέσης:

/step/step/...

Αποτελεσματική διαδρομή απόλυτης θέσης:

step/step/...

Κάθε βήμα υπολογίζεται με βάση τους κόμβους του τρέχοντος συνόλου κόμβων.

Βήμα (step) περιλαμβάνει:

Άξονας (axis)
Ορίζει τη δέντρο σχέση μεταξύ του επιλεγμένου κόμβου και του τρέχοντος κόμβου
Ονοματοδοσία κόμβου (node-test)
Ανίχνευση κόμβων μέσα σε έναν άξονα
Άκρο ή περισσότεροι προτάτες (predicate)
Περισσότερο εξειδικευμένη απόκτηση του επιλεγμένου συνόλου κόμβων

Γραμματική βήματος:

Όνομα άξονα::ονοματοδοσία κόμβου[σύνταξη]

Επίδειξη

Παράδειγμα Αποτελέσματα
child::book Επιλέξτε όλους τους κόμβους book που ανήκουν σε όλους τους υποκείμενους στοιχεία του τρέχοντος κόμβου.
attribute::lang Επιλέξτε την ιδιότητα lang του τρέχοντος κόμβου.
child::* Επιλέξτε όλους τους υποκείμενους στοιχεία του τρέχοντος κόμβου.
attribute::* Επιλέξτε όλες τις ιδιότητες του τρέχοντος κόμβου.
child::text() Επιλέξτε όλους τους υποκείμενους κόμβους κειμένου του τρέχοντος κόμβου.
child::node() Επιλέξτε όλους τους υποκείμενους κόμβους του τρέχοντος κόμβου.
descendant::book Επιλέξτε όλους τους απογόνους book του τρέχοντος κόμβου.
ancestor::book Επιλέξτε όλους τους προγόνους book του τρέχοντος κόμβου.
ancestor-or-self::book Επιλέξτε όλους τους προγόνους book του τρέχοντος κόμβου και τον τρέχοντα κόμβο (αν ο κόμβος αυτός είναι κόμβος book)
child::*/child::price Επιλέξτε όλους τους γιόνους price του τρέχοντος κόμβου.