xslt tutorial xslt transformations elements with examples
Αυτό το σεμινάριο εξηγεί τι είναι το XSLT, οι μετασχηματισμοί, τα στοιχεία και η χρήση του με παράδειγμα. Καλύπτει επίσης τη σημασία του XPath για την ανάπτυξη κώδικα μετατροπής XSLT:
Ο όρος 'XSLT' δημιουργείται συνδυάζοντας δύο λέξεις, δηλαδή 'XSL' και 'T', 'XSL' είναι η σύντομη μορφή 'Extensible Stylesheet Language' και 'T' είναι μια σύντομη μορφή 'Transformation'.
Έτσι, βασικά, το XSLT είναι μια γλώσσα μετασχηματισμού που χρησιμοποιείται για τη μετατροπή / μετατροπή εγγράφων XML πηγής σε έγγραφα XML ή σε άλλες μορφές όπως HTML, PDF χρησιμοποιώντας XSL-FO (Formating Objects) κ.λπ.
Τι θα μάθετε:
Εισαγωγή στο XSLT
Ο μετασχηματισμός γίνεται με τη βοήθεια του επεξεργαστή XSLT (όπως το Saxon, το Xalan). Αυτός ο επεξεργαστής XSLT παίρνει ένα ή περισσότερα έγγραφα XML ως πηγή με ένα αρχείο XSLT που περιέχει κώδικα XSLT γραμμένο σε αυτό και τα αποτελέσματα / έγγραφα εξόδου θα δημιουργηθούν αργότερα όπως φαίνεται στο παρακάτω διάγραμμα.
Ο επεξεργαστής XSLT αναλύει τα έγγραφα XML προέλευσης χρησιμοποιώντας το X-Path για πλοήγηση σε διαφορετικά στοιχεία προέλευσης ξεκινώντας από το ριζικό στοιχείο έως το τέλος των εγγράφων.
Συνιστώμενη ανάγνωση => Όλα όσα πρέπει να γνωρίζετε X-Path
Μετασχηματισμός XSLT
Για την έναρξη του μετασχηματισμού χρειαζόμαστε ένα έγγραφο XML στο οποίο θα εκτελεστεί ο κώδικας XSLT, το ίδιο το αρχείο κώδικα XSLT και το εργαλείο ή το λογισμικό που διαθέτει επεξεργαστή XSLT (Μπορείτε να χρησιμοποιήσετε οποιαδήποτε δωρεάν έκδοση ή δοκιμαστική έκδοση του λογισμικού για μαθησιακούς σκοπούς).
# 1) Κωδικός XML
Παρακάτω είναι ο πηγαίος κωδικός XML στον οποίο θα εκτελεστεί ο κωδικός XSLT.
Ονομα αρχείου: Books.xml
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
# 2) Κωδικός XSLT
Παρακάτω είναι ο κωδικός XSLT βάσει του οποίου θα εκτελεστεί στο παραπάνω έγγραφο XML.
Ονομα αρχείου: Books.xsl
Books:-
Book ID Book Name Author Name Publisher Price Edition
# 3) Αποτέλεσμα / Κωδικός εξόδου
Ο παρακάτω κώδικας θα παραχθεί μετά τη χρήση του κωδικού XSLT στο παραπάνω έγγραφο XML.
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st 9987436700 SQL The Complete Reference James R. Groff McGraw-Hill 3rd
# 4) Προβολή αποτελεσμάτων / εξόδου στο πρόγραμμα περιήγησης στο Web
Βιβλία:
Αναγνωριστικό βιβλίου | Όνομα βιβλίου | Όνομα συγγραφέα | Εκδότης | Τιμή | Εκδοση |
---|---|---|---|---|---|
5350192956 | Αναφορά προγραμματιστή XSLT | Μάικλ Κάι | Wrox | 40 $ | 4ος |
3741122298 | Επικεφαλής Πρώτη Java | Κάθι Σιέρα | Όρελι | 19 $ | 1ος |
9987436700 | SQL Η πλήρης αναφορά | Τζέιμς Γκρόφ | McGraw-Hill | 45 $ | 3ος |
Στοιχεία XSLT
Για να κατανοήσουμε τον παραπάνω κώδικα XSLT και λειτουργεί, πρέπει πρώτα να κατανοήσουμε τα διαφορετικά στοιχεία XSLT και τα χαρακτηριστικά τους.
# 1) Ή
Κάθε κωδικός XSLT πρέπει να ξεκινά με το στοιχείο ρίζας
Γνωρίσματα:
- @xmlns: xsl: Συνδέει το έγγραφο XSLT με το πρότυπο XSLT.
- @εκδοχή: Καθορίζει την έκδοση του κώδικα XSLT στον αναλυτή.
#δύο)
Αυτή η δήλωση ορίζει ένα σύνολο κανόνων που εφαρμόζονται για την επεξεργασία ή τον μετασχηματισμό του επιλεγμένου στοιχείου εισόδου του εγγράφου προέλευσης στους καθορισμένους κανόνες στόχου των εγγράφων εξόδου.
Βασικά, υπάρχουν δύο τύποι προτύπων σύμφωνα με τα χαρακτηριστικά τους:
(i) Ονομαζόμενο πρότυπο: Όταν το στοιχείο xsl: template περιέχει το χαρακτηριστικό @name, τότε αυτό ονομάζεται Πρότυπο με όνομα.
Τα ονομαζόμενα πρότυπα ονομάζονται από το στοιχείο xsl: call-template.
(ii) Πρότυπο αγώνα: Το στοιχείο xsl: template περιέχει το χαρακτηριστικό @match που περιέχει ένα ταίριασμα μοτίβου ή XPath που εφαρμόζεται στους κόμβους εισόδου.
Τα πρότυπα αντιστοίχισης καλούνται από το στοιχείο xsl: apply-template.
xsl: το στοιχείο προτύπου πρέπει να έχει είτε το χαρακτηριστικό @ match ή το χαρακτηριστικό @name ή και τα δύο. Ένα στοιχείο προτύπου xsl που δεν έχει χαρακτηριστικό αντιστοίχισης δεν πρέπει να έχει χαρακτηριστικό λειτουργίας και χαρακτηριστικό προτεραιότητας.
Ας ξαναγράψουμε το παραπάνω XSLT (
προς την) Κωδικός XSLT με βάση το Πρότυπο αντιστοίχισης με. Δείτε παρακάτω κίτρινο & γκρι επισημασμένο αλλαγμένο κώδικα, θα παράγει το ίδιο παραπάνω αποτέλεσμα εξόδου.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Ανατρέξτε στο στιγμιότυπο οθόνης για επισημασμένη περιοχή:
σι) Κωδικός XSLT με βάση το Πρότυπο με το όνομα. Δείτε παρακάτω κίτρινο & γκρι επισημασμένο αλλαγμένο κώδικα, θα παράγει το ίδιο παραπάνω αποτέλεσμα εξόδου.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Ανατρέξτε στο στιγμιότυπο οθόνης για επισημασμένη περιοχή:
# 3)
Ο επεξεργαστής θα βρει και θα εφαρμόσει όλα τα πρότυπα που έχουν καθοριστεί XPath στο χαρακτηριστικό @select.
Το χαρακτηριστικό @mode χρησιμοποιείται επίσης εάν θέλουμε να δώσουμε περισσότερους από έναν τρόπους εξόδου με το ίδιο περιεχόμενο εισαγωγής.
# 4)
Ο επεξεργαστής θα πραγματοποιήσει μια κλήση στα πρότυπα που έχουν αξία μέσα στο χαρακτηριστικό @name (απαιτείται).
Το στοιχείο χρησιμοποιείται για τη μετάδοση παραμέτρων στο πρότυπο.
με τι ανοίγω αρχεία βάζων
# 5)
Δώστε την τιμή συμβολοσειράς / κειμένου σχετικά με την έκφραση XPath που ορίζεται στο χαρακτηριστικό @select, όπως ορίζεται στον παραπάνω κώδικα.
Αυτό θα δώσει την αξία του ονόματος βιβλίου.
# 6): Επανάληψη
Αυτό θα επεξεργαστεί τις οδηγίες για κάθε σύνολο κόμβων (xpath που ορίζεται στο χαρακτηριστικό @select (απαιτείται)) στην ταξινομημένη ακολουθία.
Ο παραπάνω κωδικός σημαίνει για κάθε σύνολο κόμβων κατάστημα / βιβλίο σημαίνει:
/ κατάστημα / βιβλίο (1)
/ κατάστημα / βιβλίο (2)
/ κατάστημα / βιβλίο (3)
μπορεί επίσης να χρησιμοποιηθεί ως παιδί του xsl: για κάθε έναν για να καθορίσει τη σειρά ταξινόμησης.
# 7): Επεξεργασία υπό όρους
Το xsl: εάν οι οδηγίες θα επεξεργαστούν μόνο εάν η τιμή Boolean του χαρακτηριστικού @test θα είναι αληθής, διαφορετικά η εντολή δεν θα αξιολογηθεί και επιστρέφεται η κενή ακολουθία.
2'> Condition True: Count of books are more than two.
Αποτέλεσμα: Condition True: Ο αριθμός των βιβλίων υπερβαίνει τα δύο.
Εδώ το πλήθος () είναι η προκαθορισμένη συνάρτηση.
# 8): Εναλλακτική επεξεργασία συνθηκών
xsl: επιλέξτε έχουν πολλές περιπτώσεις για διαφορετικές συνθήκες που δοκιμάζονται μέσα στο χαρακτηριστικό @test του xsl: όταν στοιχεία, η συνθήκη δοκιμής που πραγματοποιείται πρώτη μεταξύ όλων των xsl: πότε, θα γίνει πρώτη επεξεργασία και θα υπάρχει προαιρετικό xls: αλλιώς στοιχείο έτσι ώστε εάν καμία από τις δοκιμές συνθηκών δεν πραγματοποιείται τότε αυτό το xsl: διαφορετικά θα ληφθεί υπόψη.
Condition True: Count of book is one. Condition True: Count of book is two. Condition True: Count of book is three. No condition match.
Αποτέλεσμα: Condition True: Ο αριθμός του βιβλίου είναι τρεις.
# 9)
xsl: η αντιγραφή λειτουργεί σε αντικείμενο περιβάλλοντος, δηλαδή εάν αυτός είναι κόμβος, τότε θα αντιγράψει τον κόμβο περιβάλλοντος στον κόμβο που δημιουργήθηκε πρόσφατα και αυτό δεν θα αντιγράψει τα παιδιά του κόμβου περιβάλλοντος. Εξαιτίας αυτού του λόγου, αυτό ονομάζεται ρηχό αντίγραφο. Σε αντίθεση με το xsl: copy-of element, το xsl: copy δεν έχει το χαρακτηριστικό @ select.
Στον παρακάτω κώδικα, τα αντικείμενα περιβάλλοντος αντιγράφονται στην έξοδο και όλα τα θυγατρικά στοιχεία ονομάζονται και αντιγράφονται από το xsl: apply-template αναδρομικά.
κόμβος () | @ * Σημαίνει όλους τους κόμβους και όλα τα χαρακτηριστικά τους αναδρομικά.
Αποτέλεσμα: Αυτό θα αντιγράψει όλους τους κόμβους και τα χαρακτηριστικά του εγγράφου προέλευσης αναδρομικά στο έγγραφο εξόδου, δηλαδή θα δημιουργήσει ένα ακριβές αντίγραφο του εγγράφου προέλευσης.
# 10)
xsl: το αντίγραφο του θα αντιγράψει την ακολουθία των κόμβων με όλα τα παιδιά και τα χαρακτηριστικά του αναδρομικά από προεπιλογή, λόγω αυτής της φύσης, αυτό ονομάζεται επίσης αντιγραφή σε βάθος. Απαιτείται χαρακτηριστικό @select για την αξιολόγηση του XPath.
Αποτέλεσμα: Αυτό θα αντιγράψει όλους τους κόμβους και τα χαρακτηριστικά του εγγράφου προέλευσης αναδρομικά στο έγγραφο εξόδου, δηλαδή θα δημιουργήσει ένα ακριβές αντίγραφο του εγγράφου προέλευσης.
Αντιπροσωπεύει ένα αντίγραφο του τρέχοντος κόμβου και του τρέχοντος χαρακτηριστικού.
#έντεκα)
Αυτό το στοιχείο χρησιμοποιείται για να γράψει ένα σχόλιο στο αποτέλεσμα στόχου, οποιοδήποτε περιεχόμενο κειμένου που βρίσκεται δίπλα σε αυτήν την ετικέτα θα εκτυπωθεί ως σχόλιο εξόδου.
Αυτό θα εκτυπωθεί στην έξοδο ως κόμβος σχολίων.
Αποτέλεσμα:
# 12)
Αυτό θα δημιουργήσει έναν κόμβο κειμένου στο έγγραφο αποτελεσμάτων, η τιμή μέσα στο xsl: κείμενο θα εκτυπωθεί ως συμβολοσειρά στην έξοδο.
Αυτό είναι ένα
γραμμή κειμένου.
Παραγωγή:
Αυτό είναι ένα
γραμμή κειμένου.
# 13)
Αυτό θα δημιουργήσει ένα στοιχείο στο έγγραφο αποτελεσμάτων με το όνομα που αναφέρεται στο χαρακτηριστικό @name. Το χαρακτηριστικό name είναι το απαιτούμενο χαρακτηριστικό.
Αποτέλεσμα: 5350192956
# 14)
Αυτό θα δημιουργήσει ένα χαρακτηριστικό στο μητρικό του στοιχείο στο έγγραφο αποτελεσμάτων. Το όνομα του χαρακτηριστικού καθορίζεται από το χαρακτηριστικό name και η τιμή του χαρακτηριστικού υπολογίζεται από το XPath που αναφέρεται στο χαρακτηριστικό select όπως δίνεται στον παρακάτω κώδικα. Το χαρακτηριστικό name είναι το απαιτούμενο χαρακτηριστικό.
Αποτέλεσμα:
#δεκαπέντε)
Αυτό το στοιχείο θα ταξινομήσει τον επιλεγμένο κόμβο με τρόπο ακολουθίας αναλόγως σε αύξουσα ή φθίνουσα διεύθυνση. Ο κόμβος ή το XPath δίνεται μέσω του χαρακτηριστικού @select και η κατεύθυνση ταξινόμησης καθορίζεται από το χαρακτηριστικό @order.
c ++ κυκλική συνδεδεμένη λίστα
Στον παρακάτω κώδικα θα λάβουμε τη λίστα όλων των βιβλίων σύμφωνα με το όνομα του βιβλίου με αλφαβητική σειρά.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Ανατρέξτε σε αυτό το στιγμιότυπο οθόνης για την επισημασμένη περιοχή:
Αποτέλεσμα: Η παρακάτω λίστα περιέχει τα ονόματα των βιβλίων με αλφαβητική σειρά, δηλαδή σε αύξουσα σειρά.
Βιβλία:
Αναγνωριστικό βιβλίου | Όνομα βιβλίου | Όνομα συγγραφέα | Εκδότης | Τιμή | Εκδοση |
---|---|---|---|---|---|
3741122298 | Επικεφαλής Πρώτη Java | Κάθι Σιέρα | Όρελι | 19 $ | 1ος |
9987436700 | SQL Η πλήρης αναφορά | Τζέιμς Γκρόφ | McGraw-Hill | 45 $ | 3ος |
5350192956 | Αναφορά προγραμματιστή XSLT | Μάικλ Κάι | Wrox | 40 $ | 4ος |
# 16)
Αυτό το στοιχείο δηλώνει μια μεταβλητή που κρατά μια τιμή σε αυτήν. Μια μεταβλητή θα μπορούσε να είναι μια παγκόσμια μεταβλητή ή τοπική μεταβλητή. Το όνομα της μεταβλητής καθορίζεται από το χαρακτηριστικό @name και η τιμή που θα διατηρήσει αυτή η μεταβλητή καθορίζεται από το χαρακτηριστικό @select.
Η πρόσβαση της καθολικής μεταβλητής είναι καθολική, δηλαδή οι μεταβλητές μπορούν να κληθούν σε οποιοδήποτε στοιχείο και να παραμείνουν προσβάσιμες εντός του φύλλου στυλ.
Για να καθορίσουμε μια καθολική μεταβλητή, απλώς πρέπει να δηλώσουμε ότι δίπλα στο ριζικό στοιχείο του φύλλου στυλ όπως φαίνεται στον παρακάτω κώδικα στο κίτρινο επισημασμένο, η μεταβλητή «SecondBook» είναι η καθολική μεταβλητή και κρατά το όνομα του δεύτερου βιβλίου.
Η πρόσβαση της τοπικής μεταβλητής είναι τοπική στο στοιχείο στο οποίο ορίζεται, δηλαδή ότι η μεταβλητή δεν θα ήταν προσβάσιμη εκτός του στοιχείου στο οποίο ορίζεται όπως φαίνεται στον παρακάτω κώδικα που επισημαίνεται με γκρι χρώμα, η μεταβλητή «πρώτο βιβλίο» είναι τοπική μεταβλητή και έχει το όνομα του πρώτου βιβλίου.
Για να πραγματοποιήσετε μια κλήση είτε στην καθολική μεταβλητή στην τοπική μεταβλητή, το σύμβολο Dollar ($) χρησιμοποιείται πριν από το όνομα της μεταβλητής, όπως φαίνεται παρακάτω με κίτρινο $ .
First Book Name: Second Book Name:
Ανατρέξτε στο στιγμιότυπο οθόνης για την επισημασμένη περιοχή:
Αποτέλεσμα:
Όνομα πρώτου βιβλίου: Αναφορά προγραμματιστή XSLT
Όνομα δεύτερου βιβλίου: Head First Java
# 17)
Αυτό το στοιχείο χρησιμοποιείται για τη δήλωση κλειδιών, για τις τιμές μοτίβου που ταιριάζουν με το συγκεκριμένο κλειδί.
Το όνομα είναι πάροχος αυτού του κλειδιού από το χαρακτηριστικό @name (' get-publisher '), Το οποίο χρησιμοποιείται αργότερα μέσα στη συνάρτηση κλειδιού (). Το χαρακτηριστικό @match παρέχεται στον ευρετήριο κόμβου εισόδου από τις εκφράσεις XPath (' Βιβλίο '), Όπως στο παρακάτω κίτρινο επισημασμένο @match χρησιμοποιείται για την ευρετηρίαση όλων των βιβλίων που είναι διαθέσιμα στο κατάστημα.
Σε σχέση με το χαρακτηριστικό @match, χρησιμοποιείται το χαρακτηριστικό @use, δηλώνει τον κόμβο για να πάρει την τιμή για αυτό το κλειδί μέσω της έκφρασης XPath ('εκδότης').
Τώρα, ας υποθέσουμε ότι αν χρειαζόμαστε τις λεπτομέρειες του βιβλίου που δημοσιεύεται μόνο από τον εκδότη «Wrox», μπορούμε να πάρουμε αυτήν την τιμή εύκολα μέσω του xsl: key element κάνοντας ένα ζεύγος κλειδιών-τιμών.
κλειδί («get-publisher», «Wrox») Το κλειδί () παίρνει δύο παραμέτρους, το πρώτο είναι το όνομα του κλειδιού, το οποίο σε αυτήν την περίπτωση είναι «get-publisher», το δεύτερο είναι η τιμή συμβολοσειράς που πρέπει να αναζητηθεί, η οποία στην περίπτωσή μας είναι «Wrox».
Books:-
Book ID Book Name Author Name Publisher Price Edition
Ανατρέξτε στο στιγμιότυπο οθόνης για την επισημασμένη περιοχή:
Αποτέλεσμα:
ερωτήσεις συνέντευξης δοκιμών λογισμικού για έμπειρους
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th
Αποτέλεσμα / Προβολή HTML:
Βιβλία:
Αναγνωριστικό βιβλίου | Όνομα βιβλίου | Όνομα συγγραφέα | Εκδότης | Τιμή | Εκδοση |
---|---|---|---|---|---|
5350192956 | Αναφορά προγραμματιστή XSLT | Μάικλ Κάι | Wrox | 40 $ | 4ος |
# 18)
Αυτό το στοιχείο χρησιμοποιείται για σκοπούς εντοπισμού σφαλμάτων στην ανάπτυξη XSLT. Το στοιχείο δίνει την έξοδο του στην τυπική οθόνη εξόδου της εφαρμογής.
Το χαρακτηριστικό @terminate χρησιμοποιείται με δύο τιμές είτε «ναι» είτε «όχι», εάν η τιμή έχει οριστεί σε «ναι» τότε ο αναλυτής τερματίζει αμέσως μόλις ικανοποιηθεί η συνθήκη δοκιμής για να εκτελεστεί το μήνυμα.
Για να το καταλάβουμε αυτό, ας υποθέσουμε ότι εάν στο έγγραφο εισόδου μας το στοιχείο τιμής αδειάσει κατά λάθος όπως στον παρακάτω κώδικα, τότε η επεξεργασία θα πρέπει να σταματήσει αμέσως μόλις ο επεξεργαστής συναντήσει το κενό στοιχείο τιμής που μπορεί εύκολα να επιτευχθεί χρησιμοποιώντας xsl: μήνυμα εντός της συνθήκης δοκιμής, όπως στον παρακάτω κώδικα XSLT.
Η ειδοποίηση εντοπισμού σφαλμάτων εμφανίζεται από την τυπική οθόνη της εφαρμογής: Η επεξεργασία τερματίστηκε με xsl: μήνυμα στη γραμμή 21.
Εισαγωγή κωδικού XML:
SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Ανατρέξτε στο στιγμιότυπο οθόνης για επισημασμένη περιοχή:
Κωδικός XSLT:
Books:-
Book ID Book Name Author Name Publisher Price Edition Terminating: price element is empty.
Ανατρέξτε στο στιγμιότυπο οθόνης για επισημασμένη περιοχή:
Αποτέλεσμα: Λάβετε υπόψη ότι μόλις ο αναλυτής συναντήσει την κενή τιμή, τερματίζει αμέσως την επεξεργασία λόγω της οποίας οι ετικέτες κλεισίματος τουκαι δεν θα έφτανε στο τέλος του αρχείου.
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st Ανατρέξτε στο στιγμιότυπο οθόνης για επισημασμένη περιοχή:
# 19) &
Το στοιχείο ορίζει την παράμετρο στο πρότυπο εάν ορίζεται μέσα. Μπορεί να οριστεί είτε εσωτερικά ως καθολική παράμετρος είτε εσωτερικά ως τοπική παράμετρος σε αυτό το πρότυπο.
Η τιμή του μεταβιβάζεται / παρέχεται όταν το πρότυπο καλείται byor.
περνά την τιμή της παραμέτρου που ορίζεται στο πρότυπο. Το χαρακτηριστικό όπως το @name περιέχει το όνομα της παραμέτρου που πρέπει να ταιριάζει με το χαρακτηριστικό @name του στοιχείου. Το χαρακτηριστικό @Select χρησιμοποιείται για να ορίσει μια τιμή σε αυτήν την παράμετρο.
Για τη λήψη της τιμής της παραμέτρου ίδια όπως χρησιμοποιείται ένα μεταβλητό σύμβολο δολαρίου ($).
Κωδικός πηγής XML:
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Κωδικός XSLT:
List of Books Name :-
Book Name:
Ανατρέξτε στο στιγμιότυπο οθόνης για την επισημασμένη περιοχή:
Αποτέλεσμα:
List of Books Name :-
Book Name: XSLT Programmer's Reference
Book Name: Head First Java
Book Name: SQL The Complete Reference