Προγραμματισμός Εφαρμογών Διαδικτύου Ενότητα 8: Εισαγωγή στην XML Φώτης Κόκκορας, Καθηγητής Εφαρμογών, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοποί ενότητας Να περιγράφει τα βασικά στοιχεία της γλώσσας XML. Να δίδει τη δομή ενός εγγράφου XML. Να ορίζει τις ιδιότητες ενός στοιχείου XML. Να αναφέρει τους κανόνες ονοματολογίας ενός στοιχείου XML. Να ορίζει τμήματα CDATA σε στοιχεία XML. Να ορίζει τους κανόνες ορθότητας και εγκυρότητας σύνταξης ενός στοιχείου XML. Προγραμματισμός Εφαρμογών Διαδικτύου 4
Περιεχόμενα ενότητας Εισαγωγή στην XML. Εισαγωγή στην XML. Δομή εγγράφου XML. Δομή εγγράφου XML. Μικτό περιεχόμενο. Μικτό περιεχόμενο. Ιδιότητες. Ιδιότητες. Κανόνες ονοματολογίας. Κανόνες ονοματολογίας. Αναφορά οντότητας. Αναφορά οντότητας. Τμήματα CDATA. Τμήματα CDATA. Ορθότητα. Ορθότητα. ……Απαραίτητο Λογισμικό. ……Απαραίτητο Λογισμικό. Εγκυρότητα. Εγκυρότητα. Namespaces. Namespaces. Ιδιότητα xmlns. Ιδιότητα xmlns. Εργασίες με έγγραφα XML. Εργασίες με έγγραφα XML. Εφαρμογές XML στο WEB. Εφαρμογές XML στο WEB. Προγραμματισμός Εφαρμογών Διαδικτύου 5
XML (eXtensible Markup Language) Γλώσσα σήμανσης (markup language) Γλώσσα σχολιασμού κειμένου με πρόσθετη πληροφορία (σήμανση) σχετικά με τη δομή, σημασιολογία ή παρουσίαση του κειμένου Π.χ. κείμενο "Θεσσαλονίκη", σήμανση "πόλη" Ένας ορισμός της XML Μια γενικού σκοπού γλώσσα σήμανσης δομημένων (π.χ. εγγραφές Β%) ή αδόμητων (π.χ. νομικό έγγραφο) δεδομένων Επιτρέπει τον καθορισμό γλωσσών σήμανσης ειδικού σκοπού, ονόματι εφαρμογές XML Ιστοσελίδες (XHTML), μαθηματικά (MathML), μαγειρική, κ.α. Προγραμματισμός Εφαρμογών Διαδικτύου 6
Τι δεν είναι XML Γλώσσα προγραμματισμού Δεν εκτελεί υπολογισμούς Βάση δεδομένων Δεν έχει στόχο τη μόνιμη αποδοτική αποθήκευση και ανάκτηση δεδομένων, αλλά την ανταλλαγή τους μεταξύ ετερογενών συστημάτων Πρωτόκολλο δικτύου Δεν καθορίζει τον τρόπο μεταφοράς Προγραμματισμός Εφαρμογών Διαδικτύου 7
Κίνητρα ανάπτυξης Διαλειτουργικότητα (interoperability) Η ικανότητα δύο η παραπάνω συστημάτων να ανταλλάσσουν πληροφορίες, τις οποίες στη συνέχεια να μπορούν να χρησιμοποιήσουν Διαφορετικές εκδόσεις του ίδιου λογισμικού Διαφορετικά λογισμικά στην ίδια πλατφόρμα Παγκόσμιος ιστός και διαλειτουργικότητα Ο παγκόσμιος ιστός, αυξάνει την ανάγκη για διαλειτουργικότητα, επειδή αφορά στην αλληλεπίδραση πολλών ετερογενών συστημάτων Λογισμικά που τρέχουν σε διαφορετικές πλατφόρμες Προγραμματισμός Εφαρμογών Διαδικτύου 8
Λόγοι εδραίωσης Βασίζεται σε κείμενο Προσφιλής μορφή σε κάθε είδους λογισμικό Ανεξάρτητη πλατφόρμας Αποθήκευση αριθμών, χαρακτήρες αλλαγής γραμμής Έχει αυστηρούς κανόνες σύνταξης Επιτρέπει σε ένα πρόγραμμα να ελέγξει αν το κείμενο ακολουθεί τους κανόνες Απλό και καλά τεκμηριωμένο πρότυπο Αναπτύχθηκε και υποστηρίζεται από το W3C Προγραμματισμός Εφαρμογών Διαδικτύου 9
Ιστορικό εξέλιξης SGML Η γλώσσα SGML (Standard Generalized Markup Language) αποτέλεσε τον πρόγονο της XML Αναπτύχθηκε από το 1970 ως το 1986 Η μεγαλύτερη επιτυχία της ήταν η γλώσσα HTML Μειονέκτημα της η μεγάλη πολυπλοκότητα XML Η έκδοση 1.0 αναπτύχθηκε από το 1996 ως το 1998, ενώ το 2004 βγήκε η έκδοση 1.1 Προγραμματισμός Εφαρμογών Διαδικτύου 10
Δομή εγγράφου XML Στοιχεία (elements) Βασικά δομικά συστατικά εγγράφων XML Μπορεί να είναι είτε κενά, είτε να περιλαμβάνουν άλλα στοιχεία, κείμενο ή και τα δύο ανάμικτα Συντάσσονται ως εξής περιεχόμενο ή αλλιώς Παραδείγματα grigoris tsoumakas ή αλλιώς Προγραμματισμός Εφαρμογών Διαδικτύου 11
Παράδειγμα εγγράφου XML Verbatim DataLife MF 2HD " black floppy disk Στοιχείο ρίζα (root) Προγραμματισμός Εφαρμογών Διαδικτύου 12
Κανόνες σύνταξης στοιχείων Αλληλοεπικάλυψη Η αλληλοεπικάλυψη στοιχείων απαγορεύεται Παράδειγμα άκυρου εγγράφου XML turing Διάκριση μικρών - κεφαλαίων Η ετικέτα είναι διαφορετική από την και την Αν ανοίξετε ένα στοιχείο με την ετικέτα δεν μπορείτε να το κλείσετε με την Προγραμματισμός Εφαρμογών Διαδικτύου 13
Η δενδρική δομή της XML Ένα έγγραφο XML αντιστοιχεί σε ένα δέντρο Κάθε στοιχείο αντιστοιχεί σε έναν κόμβο Η ρίζα του εγγράφου είναι και ρίζα του δέντρου Σχέσεις στοιχείων Ένα στοιχείο XML μπορεί ως περιεχόμενο να περιλαμβάνει ένα ή περισσότερα στοιχεία παιδιά Κάθε στοιχείο σε ένα XML έγγραφο, με εξαίρεση τη ρίζα, έχει ένα και μόνο στοιχείο γονέα Τα στοιχεία που έχουν κοινό στοιχείο γονέα, συχνά ονομάζονται αδέρφια Προγραμματισμός Εφαρμογών Διαδικτύου 14
Παράδειγμα εγγράφου XML Alan Turing computer scientist mathematician cryptographer Προγραμματισμός Εφαρμογών Διαδικτύου 15
Αντίστοιχη δενδρική δομή Προγραμματισμός Εφαρμογών Διαδικτύου 16
Μικτό περιεχόμενο Ένα στοιχείο μπορεί να περιέχει ταυτόχρονα και κείμενο και άλλα στοιχεία Αυτό συμβαίνει όταν Το έγγραφο αφορά μη δομημένη πληροφορία όπως τεκμηρίωση, εργασία, ιστοσελίδα κ.α. Συνήθως παράγονται από τον άνθρωπο Αυτό δεν συμβαίνει όταν Το έγγραφο αφορά δομημένη πληροφορία όπως αυτή που περιέχεται στις εγγραφές μιας ΒΔ ή στο αντικείμενο μιας τάξης (υπολογιστής) Συνήθως παράγονται από τον υπολογιστή Προγραμματισμός Εφαρμογών Διαδικτύου 17
Παράδειγμα μικτού περιεχομένου Alan Turing was one of the first people to truly deserve the name computer scientist. Although his contributions to the field are too numerous to list,his best-known are the eponymous Turing Test and Turing Machine. άλλα στοιχεία κείμενο Προγραμματισμός Εφαρμογών Διαδικτύου 18
Ιδιότητες (Properties) Ένα στοιχείο XML μπορεί να έχει ιδιότητες Ζεύγος ονόματος-τιμής στην ετικέτα αρχής Ανάμεσα στο όνομα και την τιμή μπαίνει ένα ίσον (=) και προαιρετικά ένα ή παραπάνω κενά Οι τιμές περικλείονται μέσα σε μονά ή διπλά εισαγωγικά Παράδειγμα Alan Turing Προγραμματισμός Εφαρμογών Διαδικτύου 19
Ιδιότητες ή στοιχεία παιδιά; (Ι) Alan Turing computer scientist mathematician ? Προγραμματισμός Εφαρμογών Διαδικτύου 20
Ιδιότητες ή στοιχεία παιδιά; (ΙΙ) Απόψεις Στις ιδιότητες βάζουμε μεταδεδομένα σχετικά με τα στοιχεία, ενώ στα παιδιά βάζουμε δεδομένα Δεν είναι πάντα σίγουρο τι είναι μεταδεδομένο… Διαφορές Κάθε στοιχείο δεν μπορεί να έχει πάνω από μια ιδιότητα με το ίδιο όνομα σε αντίθεση με πολλά στοιχεία παιδιά Οι τιμές των ιδιοτήτων μπορεί να είναι μόνο κείμενο, ενώ τα στοιχεία παιδιά μπορούν να δομηθούν περαιτέρω με νέα στοιχεία παιδιά Προγραμματισμός Εφαρμογών Διαδικτύου 21
Κανόνες ονοματολογίας (XML names) Αφορούν Στοιχεία και ιδιότητες Επιτρέπονται Αγγλικά γράμματα Α..Ζ και a..z, ψηφία 0..9 Γράμματα, αριθμοί και ιδεογράμματα από άλλες χώρες (unicode) Τα σημεία στίξης κάτω παύλα, παύλα και τελεία Απαγορεύονται Άλλα σημεία στίξης (π.χ. ", ', /, $, ^, κ.α.) Τα λευκά κενά (space, return, tab, κ.α.) Ονόματα που ξεκινάνε από Αριθμό, παύλα ή τελεία Προγραμματισμός Εφαρμογών Διαδικτύου 22
Παραδείγματα 98 NY 32 7/23/2001 Alan I NY 32 7/23/2001 Alan I-610 Προγραμματισμός Εφαρμογών Διαδικτύου 23
Αναφορά οντότητας (entity reference) Απαγορεύεται ο χαρακτήρας < στο περιεχόμενο Σημαίνει έναρξη στοιχείου παιδιού Χρήση αναφοράς οντότητας < Απαγορεύεται ο χαρακτήρας & Σημαίνει έναρξη αναφοράς οντότητας Χρήση αναφοράς οντότητας & Άλλες αναφορές οντότητας > αντί του > " αντί του " μέσα στην τιμή ιδιότητας ' αντί του ' μέσα στην τιμή ιδιότητας Προγραμματισμός Εφαρμογών Διαδικτύου 24
Παραδείγματα Η μεγαλύτερη εταιρία τηλεπικοινωνιών στην Αμερική είναι η AT & Τ Η ετικέτα <paragraph> ανοίγει μια νέα παράγραφο Προγραμματισμός Εφαρμογών Διαδικτύου 25
Τμήματα CDATA Το πρόβλημα Σε μεγάλα τμήματα περιεχομένου (π.χ. κώδικας XML ή κάποιας εφαρμογής) που περιέχουν μη επιτρεπτούς χαρακτήρες, η συνεχής χρήση αναφορών οντοτήτων είναι κουραστική Η λύση Χρήση τμήματος CDATA Ότι βρίσκεται εντός CDATA ΔΕΝ περνάει από τον parser της XML. Γίνεται αποδεκτό όπως είναι! Προγραμματισμός Εφαρμογών Διαδικτύου 26
Παράδειγμα Here is an example of XML code <![CDATA[ Alan Turing ]]> Προγραμματισμός Εφαρμογών Διαδικτύου 27
Σχόλια και εντολές επεξεργασίας Σχόλια Σημειώσεις που απευθύνονται σε ανθρώπους Σύνταξη Εντολές Απευθύνονται σε προγράμματα που διαβάζουν και επεξεργάζονται το έγγραφο Σύνταξη Παράδειγμα Προγραμματισμός Εφαρμογών Διαδικτύου 28
H δήλωση XML Προαιρετικά στην αρχή ενός εγγράφου XML Την ιδιότητα version θέτουμε πάντα στην τιμή 1.0 Ελάχιστα σημαντικές οι προσθήκες στην έκδοση 1.1 Λίγοι XML parsers υποστηρίζουν την 1.1 Η ιδιότητα encoding (προαιρετική) Εξ' ορισμού UTF-8 του Unicode character set Η ιδιότητα standalone (προαιρετική) Εξ' ορισμού είναι no, αφορά τα DTD (Document Type Definition), δηλαδή το επιτρεπτό λεξιλόγιο standalone="no": Ο XML parser θα δεχθεί εξωτερική δήλωση DTD, αν υπάρχει standalone="yes": Ο XML parser θα βγάλει error αν γίνεται αναφορά σε εξωτερικό DTD Προγραμματισμός Εφαρμογών Διαδικτύου 29
Ορθότητα Ένα έγγραφο είναι ορθό (well-formed) όταν ακολουθούνται οι κανόνες σύνταξης της XML Κάθε ετικέτα αρχής πρέπει να έχει μια ετικέτα τέλους Τα στοιχεία δεν πρέπει να αλληλεπικαλύπτονται Πρέπει να υπάρχει μόνο ένα στοιχείο ρίζα Οι τιμές των ιδιοτήτων πρέπει να είναι σε εισαγωγικά Ένα στοιχείο δεν μπορεί να έχει δύο ιδιότητες με το ίδιο όνομα … Προγραμματισμός Εφαρμογών Διαδικτύου 30
Καθορισμός λεξιλογίου και δομής Λεξιλόγιο και δομή Ονόματα στοιχείων, επιτρεπτών ιδιοτήτων και επιτρεπτών τιμών αυτών των ιδιοτήτων Ποια στοιχεία μπορούν ή πρέπει να περιέχονται σε άλλα elements, κτλ. Δύο τρόποι DTD (Document Type Definition) Αρχικός, πιο καθιερωμένος, αλλά και πιο περιοριστικός XSD (XML Schema Definition) Προσφέρει εκτεταμένες δυνατότητες Προγραμματισμός Εφαρμογών Διαδικτύου 31
Εγκυρότητα Ένα XML document είναι έγκυρο (valid) Αν είναι ορθό (well-formed) Αν ακολουθεί τους κανόνες δομής που έχουν καθοριστεί στο αντίστοιχο DTD ή XSD Εργαλεία Δωρεάν φόρμες στο διαδίκτυο για online έλεγχο Πολλά προγράμματα (συνήθως εμπορικά) - Το κορυφαίο εμπορικό πρόγραμμα: XML-Spy της Altova ( - Απλός, δωρεάν XML editor της Microsoft: XML Notepad Λίστα: Προγραμματισμός Εφαρμογών Διαδικτύου 32
Namespaces Αν συνενώσουμε δύο έγγραφα XML με διαφορετικά λεξιλόγια τότε μπορεί να προκύψει το εξής πρόβλημα. Εφόσον δεν υπάρχει καθορισμένο λεξιλόγιο ενδέχεται δύο στοιχεία από τα διαφορετικά έγγραφα να έχουν το ίδιο όνομα. Τα namespaces έρχονται να αντιμετωπίσουν αυτό το πρόβλημα ορίζοντας ένα πρόθεμα μπροστά από κάθε στοιχείο, το οποίο αντιστοιχεί σε κάποιο μοναδικό URI. Προγραμματισμός Εφαρμογών Διαδικτύου 33
Παράδειγμα Μήλα Αχλάδια Δερμάτινο τραπέζι σαλονιού Προγραμματισμός Εφαρμογών Διαδικτύου 34
Η ιδιότητα xmlns Η ιδιότητα xmlns ορίζει ένα μοναδικό URI για κάποιο πρόθεμα. xmlns:πρόθεμα="URI για το πρόθεμα" Η χρήση της ιδιότητας xmlns χωρίς πρόθεμα ορίζει ένα προκαθορισμένο (default) namespace για στοιχεία χωρίς πρόθεμα. xmlns="URI για στοιχεία χωρίς πρόθεμα" Η ιδιότητα xmlns κληρονομείται στα στοιχεία παιδιά του στοιχείου, στο οποίο εμφανίζεται. Προγραμματισμός Εφαρμογών Διαδικτύου 35
Παράδειγμα (Ι) <document xmlns:h=" xmlns:f=" Μήλα Αχλάδια Δερμάτινο τραπέζι σαλονιού Προγραμματισμός Εφαρμογών Διαδικτύου 36
Παράδειγμα (ΙΙ) Μήλα Αχλάδια Δερμάτινο τραπέζι σαλονιού Προγραμματισμός Εφαρμογών Διαδικτύου 37
Εργασίες με έγγραφα XML (I) Απλή ανάγνωση του αρχείου. Με οποιονδήποτε επεξεργαστή κειμένου (editor). Με εξειδικευμένο πρόγραμμα (XML editor). Επεξεργασία του αρχείου (κατανόηση του). Με κάποιον XML parser, ο οποίος. Απομονώνει τα επί μέρους τμήματα ενός XML εγγράφου (στοιχεία, ιδιότητες, δεδομένα, κτλ). Ελέγχει αν το έγγραφο είναι ορθό. Πολλές δωρεάν βιβλιοθήκες για XML parsing σε PHP, JAVA,... XML validatιon parser. Ελέγχει επιπλέον αν το έγγραφο συμφωνεί με τους κανόνες που έχουν καθοριστεί σε κάποιο DTD ή XSD. Προγραμματισμός Εφαρμογών Διαδικτύου 38
Εργασίες με έγγραφα XML (II) Λογισμικά που χρησιμοποιούν κάποιον XML parser για την επεξεργασία XML αρχείων: Web browsers (IE, Firefox). Εμφάνιση XML εγγράφου. Επεξεργαστής κειμένου (OpenOffice, StarOffice Writer Εισαγωγή/Εξαγωγή εγγράφου από/σε XML. Βάση δεδομένων (SQL server). Εισαγωγή/εξαγωγή δεδομένων από/σε XML. Διαχειριστής προσωπικών οικονομικών (Microsoft Money). Εισαγωγή μιας τραπεζικής συναλλαγής. Ένα δικό σας πρόγραμμα σε οποιαδήποτε γλώσσα. Προγραμματισμός Εφαρμογών Διαδικτύου 39
Εφαρμογές XML στο web XHTML RSS RDF MathML SVG SMIL Προγραμματισμός Εφαρμογών Διαδικτύου 40
Altova XML Spy Προγραμματισμός Εφαρμογών Διαδικτύου 41
Microsoft XML Notepad 2007 (1/2) Εφαρμογή: Παραγωγή HTML από XML δεδομένα, μέσω XSL μετασχηματισμού. ...με χρήση κατάλληλου XSL αρχείου (επόμενο slide) Προγραμματισμός Εφαρμογών Διαδικτύου 42
Microsoft XML Notepad 2007 (2/2) Προγραμματισμός Εφαρμογών Διαδικτύου 43
Τέλος Ενότητας