Γραμματική XPath

Η XPath χρησιμοποιεί έκφραση διαδρομής για να επιλέξει κόμβους ή σύνολο κόμβων σε ένα έγγραφο XML. Οι κόμβοι επιλέγονται ακολουθώντας μια διαδρομή (path) ή βήμα (steps).

Παράδειγμα εγγράφου 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 χρησιμοποιεί έκφραση διαδρομής για να επιλέξει κόμβους σε ένα έγγραφο XML. Οι κόμβοι επιλέγονται ακολουθώντας μια διαδρομή ή βήμα.

Κατωτέρω αναφέρονται οι πιο χρήσιμες εκφράσεις οδού:

Έκφραση Περιγραφή
nodename Επιλέξτε όλους τους υποκείμενους κόμβους αυτού του κόμβου.
/ Επιλέξτε από τον ρίζα.
// Επιλέξτε κόμβους από το έγγραφο που ταιριάζουν στη επιλογή, ανεξάρτητα από τη θέση τους.
. Επιλέξτε τον τρέχοντα κόμβο.
.. Επιλέξτε τον γονικό κόμβο του τρέχοντος κόμβου.
@ Επιλέξτε ιδιότητες.

Παράδειγμα

Στην παρακάτω τύχη, αναφέρονται μερικές εκφράσεις οδού και τα αποτελέσματα των εκφράσεων:

Αφηγηματική Έκφραση Εκτέλεση
bookstore Επιλέξτε όλους τους υποκείμενους κόμβους του στοιχείου bookstore.
/bookstore

Επιλέξτε το ρίζα στοιχείο bookstore.

Σημείωση: Αν η οδός ξεκινά με τον τελεστικό χαρακτήρα (/), τότε αυτή η οδός αντιπροσωπεύει πάντα το αμερικανικό δρόμο για ένα στοιχείο!

bookstore/book Επιλέξτε όλα τα στοιχεία book που είναι υποστοιχεία του στοιχείου bookstore.
//book Επιλέξτε όλα τα στοιχεία book που είναι υποστοιχεία, ανεξάρτητα από τη θέση τους στο έγγραφο.
bookstore//book Επιλέξτε όλα τα στοιχεία book που ανήκουν στο στοιχείο bookstore, ανεξάρτητα από τη θέση τους κάτω από το bookstore.
//@lang Επιλέξτε όλες τις ιδιότητες με όνομα lang.

Προτάγματα (Predicates)

Οι προτάγματα χρησιμοποιούνται για να βρουν συγκεκριμένα κόμβους ή κόμβους που περιέχουν συγκεκριμένες τιμές.

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

Παράδειγμα

Στην παρακάτω τύχη, αναφέρονται μερικές εκφράσεις οδού με προτάγματα και τα αποτελέσματα των εκφράσεων:

Αφηγηματική Έκφραση Εκτέλεση
/bookstore/book[1] Επιλέξτε το πρώτο στοιχείο book που ανήκει στο στοιχείο bookstore.
/bookstore/book[last()] Επιλέξτε το τελευταίο στοιχείο book που ανήκει στο στοιχείο bookstore.
/bookstore/book[last()-1] Επιλέξτε το δεύτερο τελευταίο στοιχείο book που ανήκει στο στοιχείο bookstore.
/bookstore/book[position()<3] Επιλέξτε τα δύο πρώτα στοιχεία book που ανήκουν στο στοιχείο bookstore.
//title[@lang] Επιλέξτε όλα τα στοιχεία title που έχουν την ιδιότητα lang.
//title[@lang='eng'] Επιλέξτε όλα τα στοιχεία title που έχουν την ιδιότητα lang με τιμή eng.
/bookstore/book[price>35.00] Επιλέξτε όλα τα στοιχεία book που ανήκουν στο στοιχείο bookstore και τα στοιχεία price που έχουν τιμή μεγαλύτερη από 35.00.
/bookstore/book[price>35.00]/title Επιλέξτε όλα τα στοιχεία title του στοιχείου bookstore που έχουν στοιχείο price με τιμή μεγαλύτερη από 35.00.

Επιλογή άγνωστων κόμβων

Οι αντικαταστάσεις XPath μπορούν να χρησιμοποιηθούν για να επιλέξουν άγνωστα στοιχεία XML.

Αντικατάσταση Περιγραφή
* Συγκρίσιμο με οποιοδήποτε στοιχείο κόμβου.
@* Συγκρίσιμο με οποιοδήποτε κόμβο ιδιοτήτων.
node() Συγκρίσιμο με οποιοδήποτε τύπο κόμβου.

Παράδειγμα

Στην παρακάτω τύχη, καταγράφουμε μερικές αφηγηματικές εκφράσεις και τα αποτελέσματα αυτών των εκφράσεων:

Αφηγηματική Έκφραση Εκτέλεση
/bookstore/* Επιλέξτε όλα τα υποστοιχεία του στοιχείου bookstore.
//* Επιλέξτε όλα τα στοιχεία στο έγγραφο.
//title[@*] Επιλέξτε όλα τα στοιχεία title που έχουν ιδιότητες.

Επιλογή πολλαπλών διαδρομών

Με τη χρήση του οπτικού συμβόλου "|" στο αφηγηματικό τύπο, μπορείτε να επιλέξετε πολλαπλές διαδρομές.

Παράδειγμα

Στην παρακάτω τύχη, καταγράφουμε μερικές αφηγηματικές εκφράσεις και τα αποτελέσματα αυτών των εκφράσεων:

Αφηγηματική Έκφραση Εκτέλεση
//book/title | //book/price Επιλέξτε όλα τα στοιχεία title και price στο στοιχείο book.
//title | //price Επιλέξτε όλα τα στοιχεία title και price στο έγγραφο.
/bookstore/book/title | //price Επιλέξτε όλα τα στοιχεία title που ανήκουν στο στοιχείο bookstore και όλα τα στοιχεία price στο έγγραφο.