Το XPath είναι μια τεχνολογία που καθορίζει και εξάγει με ακρίβεια και αποτελεσματικότητα τις απαιτούμενες πληροφορίες από δεδομένα δομής δέντρου, όπως HTML και XML.
Επισκόπηση XPath
Η XPath είναι μια γλώσσα που χρησιμοποιείται για τον καθορισμό και την εξαγωγή συγκεκριμένων στοιχείων και χαρακτηριστικών σε ένα δέντρο εγγράφων XML ή HTML. Δεδομένου ότι οι ιστοσελίδες αποτελούνται συχνά από HTML, το XPath χρησιμοποιείται ευρέως σε διάφορα σενάρια, όπως η απόξεση ιστού, η ανάκτηση δεδομένων και η αναζήτηση δεδομένων XML.
Η τυπική χρήση είναι η εξής:
- Εξαγωγή δεδομένων σε προγράμματα ανίχνευσης Ιστού: Το XPath χρησιμοποιείται για την αυτόματη ανάκτηση συγκεκριμένων δεδομένων, όπως πληροφορίες προϊόντων σε ιστότοπους ηλεκτρονικού εμπορίου ή τίτλους άρθρων σε ιστότοπους ειδήσεων.
- Αναζήτηση και επεξεργασία δεδομένων XML: Στα επιχειρηματικά συστήματα και στην επεξεργασία συνδέσμων δεδομένων, τα δεδομένα ανταλλάσσονται συχνά σε μορφή XML. Χρησιμοποιώντας το XPath, μπορείτε να εξαγάγετε αποτελεσματικά τις απαραίτητες πληροφορίες από μεγάλες ποσότητες δεδομένων XML.
- Ανάλυση αποκρίσεων API (μορφή XML): Όταν χρησιμοποιείτε API που βασίζονται σε XML, όπως το SOAP, το XPath χρησιμοποιείται για την ανάλυση δεδομένων απόκρισης. Αυτό σας επιτρέπει να λαμβάνετε γρήγορα συγκεκριμένους κωδικούς κατάστασης και δεδομένα αποτελεσμάτων, βελτιώνοντας την ακρίβεια της ενοποίησης του συστήματος και της αυτοματοποιημένης επεξεργασίας.
Σύσταση εργαλείου
Κατά τη διαδικασία εκμάθησης και χρήσης του XPath, τα κοινά εργαλεία περιλαμβάνουν:
Εργαλεία προγραμματιστών Chrome: Ένα ισχυρό εργαλείο που συνοδεύει το πρόγραμμα περιήγησης Chrome, μπορείτε να το καλέσετε πατώντας το πλήκτρο F12. Στον πίνακα "Στοιχεία", μπορείτε να εντοπίσετε γρήγορα στοιχεία HTML σε μια ιστοσελίδα τοποθετώντας το δείκτη του ποντικιού και κάνοντας κλικ και κάνοντας δεξί κλικ σε ένα στοιχείο μπορείτε να αντιγράψετε απευθείας την έκφραση XPath για εύκολη επαλήθευση και δοκιμή. Για παράδειγμα, όταν αναλύετε μια σελίδα προϊόντος ηλεκτρονικού εμπορίου, μπορείτε να χρησιμοποιήσετε τα εργαλεία προγραμματιστών του Chrome για να αποκτήσετε γρήγορα το XPath για ονόματα προϊόντων, τιμές και άλλα στοιχεία. Firefox Developer Tools: Έρχεται επίσης με το πρόγραμμα περιήγησης, παρόμοιο με το Chrome Developer Tools. Σας επιτρέπει επίσης να εντοπίζετε εύκολα στοιχεία στη σελίδα σας, καθώς και να προβάλλετε και να δοκιμάζετε εκφράσεις XPath. Αυτή είναι μια καλή επιλογή για προγραμματιστές που έχουν συνηθίσει να χρησιμοποιούν το πρόγραμμα περιήγησης Firefox. Διαδικτυακά εργαλεία δοκιμών XPath: Διαδικτυακά εργαλεία όπως το "XPath Tester" μπορούν να χρησιμοποιηθούν χωρίς εγκατάσταση και μπορούν να χρησιμοποιηθούν ανοίγοντας μια ιστοσελίδα. Απλώς επικολλήστε το περιεχόμενο ενός εγγράφου XML ή HTML, εισαγάγετε μια έκφραση XPath και δείτε τα αποτελέσματα της αντιστοίχισης σε πραγματικό χρόνο. Αυτό το εργαλείο είναι ιδιαίτερα κατάλληλο για αρχάριους να ξεκινήσουν γρήγορα και να κάνουν απλές ασκήσεις XPath. XPath Helper Plugin: Λαμβάνοντας ως παράδειγμα το πρόγραμμα περιήγησης Chrome, μετά την εγκατάσταση της προσθήκης XPath Helper, θα προσθέσει ένα αιωρούμενο παράθυρο στη διεπαφή του προγράμματος περιήγησης κατά την περιήγηση στον ιστό, εμφανίζοντας τη διαδρομή XPath του τρέχοντος στοιχείου του ποντικιού και μπορείτε να επεξεργαστείτε και να δοκιμάσετε εκφράσεις XPath απευθείας στο παράθυρο, βελτιώνοντας σημαντικά την αποτελεσματικότητα ανάπτυξης.
XPath Αφηρημένη Σύνταξη
Επιλέξτε έναν κόμβο
Το XPath χρησιμοποιεί εκφράσεις διαδρομής για να επιλέξει κόμβους σε ένα έγγραφο XML. Οι κόμβοι επιλέγονται ακολουθώντας μια διαδρομή ή ένα βήμα. Οι πιο χρήσιμες εκφράσεις διαδρομής παρατίθενται παρακάτω:
έκφραση | περιγραφή | | όνομα κόμβου | Επιλέγει όλους τους θυγατρικούς κόμβους αυτού του κόμβου. | | / | Επιλέξτε από τον ριζικό κόμβο (πάρτε τον θυγατρικό κόμβο). | | // | Επιλέγει κόμβους στο έγγραφο από τον τρέχοντα κόμβο της αντίστοιχης επιλογής, ανεξάρτητα από τη θέση τους (πάρτε απογόνους κόμβους). | | . | Επιλέξτε τον τρέχοντα κόμβο. | | .. | Επιλέξτε τον γονικό κόμβο του τρέχοντος κόμβου. | | @ | Επιλέξτε ένα χαρακτηριστικό. |
Στον παρακάτω πίνακα, παραθέτουμε ορισμένες εκφράσεις διαδρομής μαζί με τα αποτελέσματα των εκφράσεων:
Εκφράσεις διαδρομής | έκβαση | | βιβλιοπωλείο | Επιλέξτε όλους τους κόμβους με το όνομα βιβλιοπωλείο. | | /bookstore | Επιλέξτε το ριζικό στοιχείο βιβλιοπωλείο. Σημείωση: Εάν η διαδρομή ξεκινά με κάθετο προς τα εμπρός ( / ), τότε αυτή η διαδρομή αντιπροσωπεύει πάντα μια απόλυτη διαδρομή προς ένα στοιχείο! | | βιβλιοπωλείο/βιβλίο | Επιλέγει όλα τα στοιχεία του βιβλίου που είναι θυγατρικά στοιχεία του βιβλιοπωλείου. | | //book | Επιλέγει όλα τα υποστοιχεία του βιβλίου, ανεξάρτητα από τη θέση τους στο έγγραφο. | | βιβλιοπωλείο//βιβλίο | Επιλέξτε όλα τα στοιχεία βιβλίου που είναι απόγονοι του στοιχείου βιβλιοπωλείου, ανεξάρτητα από το πού βρίσκονται κάτω από το βιβλιοπωλείο. | | @lang | Επιλέξτε όλες τις ιδιότητες με το όνομα lang. |
Κατηγορήματα
Ένα κατηγόρημα χρησιμοποιείται για την εύρεση ενός συγκεκριμένου κόμβου ή ενός κόμβου που περιέχει μια καθορισμένη τιμή. Το κατηγόρημα είναι ενσωματωμένο σε αγκύλες. Στον παρακάτω πίνακα, παραθέτουμε ορισμένες εκφράσεις διαδρομής με κατηγορήματα και τα αποτελέσματα των εκφράσεων:
Εκφράσεις διαδρομής | έκβαση | | /bookstore/book[1] | Επιλέξτε το πρώτο στοιχείο βιβλίου που αποτελεί μέρος του θυγατρικού στοιχείου του βιβλιοπωλείου. | | /bookstore/book[last()] | Επιλέγει το τελευταίο στοιχείο βιβλίου που αποτελεί μέρος του υποστοιχείου του βιβλιοπωλείου. | | /bookstore/book[last()-1] | Επιλέγει το προτελευταίο στοιχείο βιβλίου που ανήκει στο θυγατρικό στοιχείο του βιβλιοπωλείου. | | /bookstore/book[position()<3] | Επιλέξτε τα δύο πρώτα στοιχεία βιβλίου που είναι θυγατρικά στοιχεία του στοιχείου βιβλιοπωλείου. | | τίτλος[@lang] | Επιλέγει όλα τα στοιχεία τίτλου που έχουν μια ιδιότητα με το όνομα lang. | | title[@lang='eng'] | Επιλέγει όλα τα στοιχεία τίτλου που έχουν χαρακτηριστικό lang με τιμή eng. | | /bookstore/book[price>35.00] | Επιλέγει όλα τα στοιχεία βιβλίου του στοιχείου βιβλιοπωλείου και η τιμή του στοιχείου τιμής πρέπει να είναι μεγαλύτερη από 35,00. | | /bookstore/book[price>35.00]//title | Επιλέγει όλα τα στοιχεία τίτλου του στοιχείου βιβλίου στο στοιχείο βιβλιοπωλείου και η τιμή του στοιχείου τιμής πρέπει να είναι μεγαλύτερη από 35,00. |
Επιλέξτε έναν άγνωστο κόμβο
Οι χαρακτήρες μπαλαντέρ XPath μπορούν να χρησιμοποιηθούν για τη συλλογή άγνωστων στοιχείων XML.
μπαλαντέρ | περιγραφή | | * | Ταιριάζει με οποιονδήποτε κόμβο στοιχείου. | | @* | Ταιριάζει με οποιονδήποτε κόμβο χαρακτηριστικών. | | node() | Ταιριάζει με κάθε τύπο κόμβου. |
Στον παρακάτω πίνακα, παραθέτουμε ορισμένες εκφράσεις διαδρομής και τα αποτελέσματα αυτών των εκφράσεων:
Εκφράσεις διαδρομής | έκβαση | | /bookstore/* | Επιλέγει όλα τα θυγατρικά στοιχεία του στοιχείου βιβλιοπωλείου. | | //* | Επιλέγει όλα τα στοιχεία στο έγγραφο. | | τίτλος[@*] | Επιλέγει όλα τα στοιχεία τίτλου με χαρακτηριστικά. |
Επιλέξτε έναν αριθμό διαδρομών
Χρησιμοποιώντας το "|" στην παράσταση διαδρομής χειριστές, μπορείτε να επιλέξετε πολλές διαδρομές.
Στον παρακάτω πίνακα, παραθέτουμε ορισμένες εκφράσεις διαδρομής και τα αποτελέσματα αυτών των εκφράσεων:
Εκφράσεις διαδρομής | έκβαση | | //book/title | //book/price | Επιλέγει όλα τα στοιχεία τίτλου και τιμής του στοιχείου βιβλίου. | | τίτλος | τιμή | Επιλέξτε όλα τα στοιχεία τίτλου και τιμής στο έγγραφο. | | /bookstore/book/title | //price | Επιλέγει όλα τα στοιχεία τίτλου του στοιχείου βιβλίου που ανήκουν στο στοιχείο βιβλιοπωλείου και όλα τα στοιχεία τιμής στο έγγραφο. |
Συνάρτηση XPath
Ακολουθεί μια σχολιασμένη λίστα προσθηκών στο XPath ανά βασικές συναρτήσεις XPath και XSLT, συμπεριλαμβανομένων περιγραφών, σύνταξης, λιστών παραμέτρων, τύπων αποτελεσμάτων και πηγών στις αντίστοιχες συστάσεις του W3C.
- boolean()
- οροφή()
- επιλέξτε()
- concat()
- περιέχει()
- count()
- current() XSLT specific
- document() Ειδικά για το XSLT
- στοιχείο-διαθέσιμο()
- false()
- όροφος()
- format-number() Ειδικά για το XSLT
- function-available()
- generate-id() Ειδικά για το XSLT
- id()
- key() Ειδικά για XSLT
- lang()
- last()
- local-name()
- όνομα()
- namespace-uri()
- normalize-space()
- δεν()
- αριθμός()
- θέση()
- γύρος()
- ξεκινά-με()
- συμβολοσειρά()
- μήκος συμβολοσειράς()
- υποσυμβολοσειρά()
- substring-after()
- substring-before()
- sum()
- system-property() Ειδικό XSLT
- translate()
- true()
- unparsed-entity-url() Ειδικά για το XSLT
Πρακτικές δοκιμασίες
Ανοίξτε το Chrome και λάβετε το περιεχόμενο κειμένου όλων των συνδέσμων της καρτέλας A με την ακόλουθη εντολή:
Οπως φαίνεται παρακάτω:
Αναφορά:Η σύνδεση με υπερσύνδεσμο είναι ορατή. |