Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 5: XML. Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

Σχετικά έγγραφα
ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ

ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ

Εισαγωγή(στη(γλώσσα(XML(

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Εισαγωγή στους Αλγορίθμους

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εισαγωγή στους Αλγορίθμους

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 9η Διάλεξη: Η γλώσσα XML

Εισαγωγή στους Υπολογιστές

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Διοίκηση Ολικής Ποιότητας & Επιχειρηματική Αριστεία Ενότητα 1.3.2: Παραδοσιακή VS νέα προσέγγιση της ΔΟΠ

Εκπαιδευτική Διαδικασία και Μάθηση στο Νηπιαγωγείο Ενότητα 1: Εισαγωγή

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Διοικητική Λογιστική

Ενδεικτικές λύσεις ασκήσεων διαγραμμάτων περίπτωσης χρήσης (1ο Μέρος)

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Κβαντική Επεξεργασία Πληροφορίας

Μοντέλο. για ημι-δομημένα μημ δεδομένα. Ημι-δομημένα δεδομένα XML DTD XML Schema

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εισαγωγή στους Αλγορίθμους

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 9: Web Services. Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

Ευφυής Προγραμματισμός

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Διοίκηση Ολικής Ποιότητας & Επιχειρηματική Αριστεία Ενότητα 1.3.3: Μεθοδολογία εφαρμογής προγράμματος Ολικής Ποιότητας

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

ΝΤUA. Τεχνολογία Πολυμέσων

Ευφυής Προγραμματισμός

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Κβαντική Επεξεργασία Πληροφορίας

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Μάρκετινγκ Αγροτικών Προϊόντων

Σημασιολογικός Ιστός (Semantic Web) - XML

Βέλτιστος Έλεγχος Συστημάτων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Βάσεις Περιβαλλοντικών Δεδομένων

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 2: Εφαρμογές Δικτυωτής Ανάλυσης (1 ο Μέρος)

Διαφήμιση και Δημόσιες Σχέσεις Ενότητα 9: Σχέσεις διαφημιστή-διαφημιζόμενου

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Προσχολική Παιδαγωγική Ενότητα 2: Οργάνωση χρόνου και χώρου στα νηπιαγωγεία

Μηχανολογικό Σχέδιο Ι

ΘΕΡΜΟΔΥΝΑΜΙΚΗ Ι. Ενότητα 2: Θερμοδυναμικές συναρτήσεις. Σογομών Μπογοσιάν Πολυτεχνική Σχολή Τμήμα Χημικών Μηχανικών

Ενδεικτικές λύσεις ασκήσεων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Εφαρμογές των Τεχνολογιών της Πληροφορίας και των Επικοινωνιών στη διδασκαλία και τη μάθηση

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 3: Server Side Scripting II PHP & MySQL

Κβαντική Φυσική Ι. Ενότητα 12: Ασκήσεις. Ανδρέας Τερζής Σχολή Θετικών Επιστημών Τμήμα Φυσικής

Κβαντική Φυσική Ι. Ενότητα 19: Εισαγωγή στα τετραγωνικά δυναμικά. Ανδρέας Τερζής Σχολή Θετικών Επιστημών Τμήμα Φυσικής

Διδακτική των εικαστικών τεχνών Ενότητα 1

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εισαγωγή στους Υπολογιστές

ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΚΑΛΑΘΟΣΦΑΙΡΙΣΗΣ ΙΙ

Βέλτιστος Έλεγχος Συστημάτων

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Αερισμός. Ενότητα 1: Αερισμός και αιμάτωση. Κωνσταντίνος Σπυρόπουλος, Καθηγητής Σχολή Επιστημών Υγείας Τμήμα Ιατρικής

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

ΦΥΣΙΚΟΧΗΜΕΙΑ I Ασκήσεις

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Διοίκηση Ολικής Ποιότητας & Επιχειρηματική Αριστεία Ενότητα 1.4: ISO 9004:2009

Εισαγωγή στους Υπολογιστές

Ευφυής Προγραμματισμός

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Κβαντική Επεξεργασία Πληροφορίας

Τεχνικό Σχέδιο - CAD

Διδακτική της Πληροφορικής

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Δομή διαδικτυακών Πολυμέσων

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Γλώσσες Σήµανσης (Markup Languages) Τεχνολογία ιαδικτύου και Ηλεκτρονικό Εµπόριο

Ψηφιακή Επεξεργασία και Ανάλυση Εικόνας Ενότητα 10 η : Ανάλυση Εικόνας. Καθ. Κωνσταντίνος Μπερμπερίδης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 10: Διαχείριση Έργων (2ο Μέρος)

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Διοικητική Λογιστική

Διαχείριση Έργων. Ενότητα 10: Χρονοπρογραμματισμός έργων (υπό συνθήκες αβεβαιότητας)

Ευφυής Προγραμματισμός

Μάρκετινγκ Αγροτικών Προϊόντων

Μάρκετινγκ. Ενότητα 2: Αξία για τους Πελάτες

Transcript:

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 5: XML Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

Σκοποί ενότητας Σκοπός της παρούσας ενότητας είναι να εξοικειωθούν οι φοιτητές με τις βασικές αρχές της ΧΜL καθώς προσφέρει αποτελεσματικές και δυναμικές πολυμεσικές λύσεις. 2

Περιεχόμενα ενότητας Εισαγωγή XML & HTML Το συντακτικό της XML XML Elements XML attributes XML CDATA XML Namespaces Well Formed XML αρχεία 3

Περιεχόμενα ενότητας DTD Document Type Definition DTD ELEMENT DTD ATTLIST DTD ΕΝΤΙΤΥ XML Schema Definition XSD elements XSD - attributes 4

Εισαγωγή (1) XML Markup Language extensible Markup Language Δημιουργία του W3C Μεγάλη αποδοχή και ενσωμάτωση μετά την εμφάνισή της στα τέλη της δεκαετίας του 90 Βασικό πλεονέκτημα Ευελιξία στη μεταφορά των δεδομένων Χρησιμοποίηση δεδομένων από ένα πρόγραμμα Μετατροπή σε XML Διαμοιρασμός πληροφορίας σε XML Επικοινωνία μεταξύ διαφορετικών προγραμμάτων και πλατφόρμων 5

Εισαγωγή (2) Η ισχύς της XML Κατάφερε να θέσει ένα στάνταρτ format των δεδομένων που μεταφράζονται μεταξύ διαφορετικών πλατφόρμων (ή εφαρμογών) Μεγάλο εύρος αποδοχής XML interfaces για βάσεις δεδομένων, εφαρμογών, προγραμμάτων, κινητή τηλεφωνία κλπ. Παραδείγματα εφαρμογών Mobile File converters Voice XML Επιτρέπει τον ορισμό άλλων γλωσσών WSDL Web Services Description Language 6

Τι είναι η XML; (1) EXtensible Markup Language Υποσύνολο της SGML (Standard Generalized Markup Language) Μετα-γλώσσα κατάλληλη για τον ορισμό άλλων γλωσσών Χρησιμοποιεί τα «καλύτερα κομμάτια» της SGML Περισσότερο κανονικοποιημένη και ευέλικτη Σχεδιάστηκε για τον ορισμό/δόμηση δεδομένων Οι δομές δεδομένων ανεξάρτητες από την πλατφόρμα Εύκολη η αυτόματη επεξεργασία των δεδομένων Ο χρήστης μπορεί να ορίσει τα δικά του tags (extensible) Δεν περιγράφει τον τρόπο εμφάνισης δεδομένων! Ένα XSL αρχείο ορίζει την εμφάνιση ενός XML αρχείου Ένα DTD (Document Type Definition) ή ένα XML Schema ορίζει τη σύνταξη ενός XML αρχείου 7

Τι είναι η XML; (2) Μία γλώσσα για τη δόμηση των δεδομένων Σύνολο κανόνων για το σχεδιασμό μορφών κειμένου οι οποίες διευκολύνουν τη δόμηση των δεδομένων. Δομημένη πληροφορία Περιεχόμενο και επιπλέον ένδειξη που αφορά το ρόλο που έχει αυτό το περιεχόμενο (tags). Markup γλώσσα XML Μηχανισμός αναγνώρισης δομημένης πληροφορίας σε ένα έγγραφο Στάνταρτ προσθήκης markup σε έγγραφα 8

Χαρακτηριστικά Απλό κείμενο! Διαχείριση από λογισμικό που διαχειρίζεται κείμενο Διαφορετικές εφαρμογές για XML μπορούν να διαχειριστούν διαφορετικά την ίδια XML αναλόγως τις ανάγκες κάθε εφαρμογής Μόνο δομημένη πληροφορία Απαραίτητο λογισμικό για τη διαχείρισή της δομημένης πληροφορίας Ο χρήστης μπορεί να δημιουργήσει τα δικά του tags και τη δική του δομή 9

XML & HTML Η XML δεν έχει σκοπό να αντικαταστήσει την HTML, αλλά να την συμπληρώσει Η HTML σχεδιάστηκε για να παρουσιάζει δεδομένα δίνοντας έμφαση στο πώς αυτά φαίνονται Η XML σχεδιάστηκε για να περιγράφει δεδομένα δίνοντας έμφαση στο τι είδος δεδομένα είναι Τα δεδομένα βρίσκονται εκτός του HTML αρχείου. Σε XML αρχεία Οι αλλαγές είτε σε εμφάνιση είτε σε δομή γίνονται πιο εύκολα. 10

Χρησιμοποίηση XML Διαχωρισμός δεδομένων από τον HTML κώδικα Ανταλλαγή δεδομένων Διαμοιρασμός δεδομένων Αποθήκευση δεδομένων Περισσότερο χρήσιμα δεδομένα Δημιουργία νέων γλωσσών XHTML, WSDL, RDF και OWL, RSS κλπ. 11

Ένα απλό XML αρχείo.xml <?xml version = "1.0"?> <!-- Simple introduction to XML markup --> <mymessage> <message>welcome to XML!</message> </mymessage> View page 12

Ένα απλό XML αρχείο.xml εμφάνιση στο φυλλομετρητή 13

Ένα απλό XML αρχείο.xml εμφάνιση Μήνυμα λάθους στο φυλλομετρητή 14

XML δήλωση Η πρώτη γραμμή ενός XML αρχείου <?xml version="versionnumber" [encoding="encodingvalue"] [standalone="yes no"]?> version e.g. 1.0 encoding προαιρετική τιμή - προεπιλεγμένη UTF-8 standalone Δηλώνει αν το XML αρχείο δεν εξαρτάται από άλλα XML αρχεία για να είναι έγκυρο ή όχι Εξ ορισμού η τιμή είναι yes (δηλ. ανεξάρτητο αρχείο) 15

Το συντακτικό της XML (1) Κάθε tag πρέπει να κλείνει <message> Welcome XML! (no) Τα tags είναι case sensitive Το <message> είναι διαφορετικό από το <Message> Τα tags πρέπει να είναι εμφωλευμένα σωστά <mymessage> <message> Welcome XML </mymessage> </message> (no) Άδεια tags <Name/> 16

Το συντακτικό της XML (2) Όλα τα XML αρχεία πρέπει να έχουν ένα και μόνο root tag! Όλες οι τιμές των ιδιοτήτων πρέπει να βρίσκονται ανάμεσα σε εισαγωγικά <message date= 4/12/2007 > (yes) Όλοι οι κενοί χαρακτήρες διατηρούνται Εισαγωγή σχολίων όπως στην HTML <!-- this is a comment --> 17

XML Elements (1) Ένα XML αρχείο είναι επεκτάσιμο <tag>περιεχόμενο</tag> Νέα στοιχεία μπορούν να προστεθούν <mymessage> <message>welcome to XML!</message> <date>4/12/2007</date> </mymessage> Σχέσεις μεταξύ των XML elements mymessage root element and parent element of message & date message & date siblings & child elements of mymessage 18

XML Elements (2) Όλα τα XML αρχεία πρέπει να έχουν ένα και μόνο root tag! Όλες οι τιμές των ιδιοτήτων πρέπει να βρίσκονται ανάμεσα σε εισαγωγικά <message date= 4/12/2007 > (yes) Όλοι οι κενοί χαρακτήρες διατηρούνται Εισαγωγή σχολίων όπως στην HTML <!-- this is a comment --> 19

XML attributes Τα XML elements μπορούν να περιέχουν attributes (ιδιότητες) στο αρχικό tag όπως και στην HTML Τα attributes παρέχουν περισσότερες πληροφορίες για τα elements <file type="gif">computer.gif</file> Η τιμή ενός attribute πρέπει να βρίσκεται είτε σε μονά είτε σε διπλά εισαγωγικά Οι επιπλέον πληροφορίες για ένα element μπορούν να αποθηκευτούν είτε ως attribute είτε ως child element 20

Χρήση elements αντί attributes! Γιατί να αποφεύγετε τα attributes; Δεν μπορούν να περιέχουν πολλαπλές τιμές Δεν είναι εύκολα επεκτάσιμα Δεν περιγράφουν δομές Διαχειρίζονται δύσκολα από προγράμματα Είναι δύσκολος ο έλεγχος του με βάση ένα DTD Πότε να χρησιμοποιείτε attributes; Για πληροφορίες που δεν είναι σχετικές με τα δεδομένα Για την ανάθεση ID στα elements 21

Προκαθορισμένες οντότητες αναφοράς Η εισαγωγή του χαρακτήρα < σε ένα XML αρχείο θα παράγει σφάλμα, καθώς ο XML parser θα θεωρήσει ότι αρχίζει ένα καινούριο element Η XML υποστηρίζει τις εξής πέντε προκαθορισμένες οντότητες αναφοράς για τους ειδικούς χαρακτήρες: < < > > & & &apos; " " Σφάλμα παράγουν μόνο οι χαρακτήρες < και & 22

XML CDATA Όλο το κείμενο ενός XML αρχείου θα επεξεργαστεί από τον XML parser. Εάν ο χρήστης επιθυμεί να εισάγει πληροφορία η οποία δεν πρέπει να επεξεργαστεί τότε αυτή πρέπει να εμφανιστεί σε ένα CDATA section Ένας CDATA section αρχίζει με το <![CDATA[ και τελειώνει με το ]]> Σε ένα CDATA δεν επιτρέπεται η ακολουθία χαρακτήρων ]]> <script> <![CDATA[ function matchwo(a,b) { if (a < b && a < 0) then { return 1 } else { return 0 } } ]]> </ script > View page 23

XML CDATA εμφάνιση στο φυλλομετρητή 24

XML Namespaces (1) Είναι πιθανό σε δύο διαφορετικά αρχεία να εμφανίζονται elements με το ίδιο όνομα, αλλά διαφορετική σημασία πχ. το element <file> μπορεί να αναφέρεται είτε σε ένα αρχείο txt είτε σε μία εικόνα Προστίθεται ένα πρόθεμα μπροστά στο όνομα, καθώς τα ονόματα των tags πρέπει να είναι διαφορετικά πχ. <text:file> & <image:file> Έτσι προκύπτουν δύο διαφορετικά elements Το namespace attribute έχει την εξής σύνταξη xmlns:namespace-prefix="namespace" 25

XML Namespaces (2) Προθέματα namespaces <directory xmlns:text="urn:it:textinfo > <text:file filename="book.xml"> <text:description>a book list</text:description> </text:file> <directory> View page 26

XML Namespaces εμφάνιση στο φυλλομετρητή 27

XML Namespaces (3) Είναι δυνατό σε ένα element να δηλωθεί ένα default namespace με αποτέλεσμα να μην είναι απαραίτητο να τοποθετείται το αντίστοιχο πρόθεμα σε όλα τα παιδιά του στοιχείου αυτού <directory xmlns="urn:it:textinfo > <file filename="book.xml"> <description>a book list</description> </file> <directory> View page 28

XML Namespaces εμφάνιση στο φυλλομετρητή 29

Well Formed XML αρχεία Ένα XML αρχείο χαρακτηρίζεται ως Well Formed όταν η σύνταξή του είναι σωστή Περιέχει ένα μόνο root element Όλα τα elements του είναι παιδιά του root element Όλα τα elements είναι σωστά εμφωλευμένα Το όνομα των elements είναι το ίδιο στα start-tag και end-tag Ένα attribute εμφανίζεται μόνο μία φορά σε ένα element 30

Valid XML αρχεία Για να χαρακτηριστεί ένα XML αρχείο ως Valid πρέπει να ισχύουν τα εξής: Το XML αρχείο να είναι Well Formed και Το συντακτικό του να καθορίζεται από ένα DTD (Document Type Definition) Δηλ. δεν μπορούν να χρησιμοποιηθούν elements που δεν ορίζονται στο DTD 31

DTD Document Type Definition Ορισμός των έγκυρων tags ενός XML αρχείου Ορισμός των σχέσεων μεταξύ των tags <!ENTITY Binary yes no > <!ELEMENT bookstore (book+)> <!ELEMENT book (title,author,price)> <!ATTLIST book paperback (%Binary) #REQUIRED cdrom (%Binary) #REQUIRED> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT price (#PCDATA)> 32

Δήλωση DTD μέσα στο XML αρχείο <?xml version="1.0"?> <!DOCTYPE bookstore [ <!ENTITY Binary yes no > <!ELEMENT bookstore (book+)> <!ELEMENT book (title,author,price)> <!ATTLIST book paperback (Binary) #REQUIRED cdrom (Binary) #REQUIRED> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT price (#PCDATA)> ]> <bookstore> <book paperback="yes" cdrom="no"> <title>a Guide to XML technology</title> <author>robert Stewart</author> <price>30$</price> </book> </bookstore> 33

Το DTD σε ξεχωριστό αρχείο Δήλωση του κατάλληλου DTD αρχείου στο XML αρχείο <?xml version="1.0"?> <!DOCTYPE bookstore System bookstore.dtd > <bookstore> <book paperback="yes" cdrom="no"> <title>a Guide to XML technology</title> <author>robert Stewart</author> <price>30$</price> </book> </bookstore> 34

Τα στοιχεία ενός DTD αρχείου!element Ορίζει ένα element του XML αρχείου!attlist Ορίζει τα χαρακτηριστικά ενός element!entity Ορίζει μία συντόμευση για ένα όνομα ή μία έκφραση PCDATA parsed character data Το κείμενο μεταξύ των start-tags και end-tags ενός element το οποίο θα επεξεργαστεί από τον XML parser CDATA character data Κείμενο που δε θα επεξεργαστεί από τον XML parser 35

DTD - ELEMENT <!ELEMENT element-name category> <!ELEMENT book EMPTY> <! ELEMENT author ANY> <! ELEMENT title (#PCDATA) > <!ELEMENT element-name (element-content)> <!ELEMENT book (title,author,price)> <!ELEMENT bookstore (book+)> - min one <!ELEMENT bookstore (book*)> - zero or more <!ELEMENT bookstore (book?)> - zero or one <!ELEMENT note (body message)> - selection <!ELEMENT note (#PCDATA body message)*> 36

DTD ATTLIST (1) <!ATTLIST element-name attribute-name attribute-type default-value> Attribute type CDATA: string <!ATTLIST person name CDATA #REQUIRED> (en1 en2..): μία επιλογή από μία λίστα απαρίθμησης <!ATTLIST payment type (check cash) "cash"> ENTITY: παίρνει την τιμή από μία οντότητα ENTITIES: λίστα οντοτήτων <!ENTITY Binary yes no > <!ATTLIST book paperback (Binary) #REQUIRED> 37

DTD ATTLIST (2) ID: μοναδικό id <!ATTLIST car serial_no ID #REQUIRED> IDREF: το id ενός άλλου element & IDREFS: λίστα από άλλα ids <!ATTLIST car serial_no ID #REQUIRED> <!ATTLIST ford number IDREF #IMPLIED> NMTOKEN: ένα valid XML όνομα NMTOKENS: λίστα ονομάτων <!ATTLIST car plate_number NMTOKEN #REQUIRED> NOTATION: μία σήμανση <!ΝΟΤΑΤΙΟΝ Gif System image/gif > xml: μία προκαθορισμένη xml τιμή 38

DTD ATTLIST (3) Default value Μία προκαθορισμένη τιμή <!ATTLIST square width CDATA "0"> #REQUIRED: το χαρακτηριστικό είναι απαραίτητο <!ATTLIST person name CDATA #REQUIRED> #IMPLIED: το χαρακτηριστικό δεν είναι απαραίτητο και δεν υπάρχει προκαθορισμένη τιμή <!ATTLIST contact fax CDATA #IMPLIED> #FIXED: το χαρακτηριστικό μπορεί να πάρει μόνο αυτή τη συγκεκριμένη τιμή <!ATTLIST sender uni CDATA #FIXED Patras"> 39

DTD ΕΝΤΙΤΥ (1) Παραμετρική οντότητα Μία συντόμευση για μεγάλο κείμενο που εμφανίζεται πολλές φορές σε ένα DTD αρχείο Πρέπει να δηλωθεί πριν χρησιμοποιηθεί Συνήθως δηλώνεται στην αρχή του DTD αρχείου <!ENTITY όνομα "κείμενο αντικατάστασης"> <!ENTITY Binary yes no > Γενική οντότητα Συντόμευση για κείμενο που εμφανίζεται συχνά σε ένα XML αρχείο <!ENTITY όνομα "κείμενο αντικατάστασης"> <!ENTITY group Led Zeppelin > 40

DTD ΕΝΤΙΤΥ (2) Εσωτερική δήλωση entity <!ENTITY entity-name "entity-value"> <!ENTITY writer Ernest Hemingway > Εξωτερική δήλωση entity <!ENTITY entity-name SYSTEM "URI/URL"> <!ENTITY writer SYSTEM http:www.writer.xml > <!ENTITY writer SYSTEM http:www.writer.dtd > 41

XML Schema Definition (XSD) Ένα XML Schema μπορεί να χρησιμοποιηθεί αντί για ένα DTD Περιγράφει τη δομή ενός XML αρχείου Ένα XML Schema μπορεί να διαχειριστεί όπως ένα απλό XML αρχείο <xs:schema> </xs:schema> 42

XSD vs DTD Πλεονεκτήματα των XSD αρχείων Εύκολα επεκτάσιμα Γραμμένα σε XML Υποστηρίζουν τύπους δεδομένων Καλύτερος έλεγχος δεδομένων, χρήση δεδομένων από βάσεις δεδομένων, μετατροπή μεταξύ διάφορων τύπων, πιο εύκολοι οι περιορισμοί Υποστηρίζουν namespaces Αξιόπιστη επικοινωνία δεδομένων <date type="date">2004-03-11</date> Χρήση του τύπου δεδομένων date με το format YYYY- MM-DD 43

Ένα απλό XML Schema <?xml version="1.0"?> <xs:schema xmlns:xs=http://www.w3.org/2001/xmlschema targetnamespace=http://www.somepage.com xmlns=http://www.somepage.com elementformdefault="qualified"> <xs:element name="note"> <xs:complextype> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> type="xs:string"/> </xs:element> </xs:schema> <xs:element name="body" </xs:sequence> </xs:complextype> 44

Δήλωση XML Schema μέσα σε ένα XML αρχείο <?xml version="1.0"?> <note xmlns="http://www.somepage.com" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xsi:schemalocation="http://www.somepage.com note.xsd"> <to>catherine</to> <from>danai</from> <heading>reminder</heading> <body>don't forget me this weekend!</body> </note> 45

<Schema> element <schema> - root element xmlns:xs="http://www.w3.org/2001/xmlschema" Χρησιμοποιεί το "http://www.w3.org/2001/xmlschema" namespace Ό,τι προέρχεται από αυτό το namespace έχει μπροστά το xs: targetnamespace=http://www.somepage.com Τα elements που ορίζονται σε αυτό το σχήμα προέρχονται από αυτό το namespace xmlns=http://www.somepage.com Δηλώνεται το default namespace elementformdefault="qualified Όλα τα elements πρέπει να έχουν το namespace μπροστά 46

XSD elements (1) Element: <xs:element name="xxx type="yyy"/> <xs:element name= message" type="xs:string"/> Types: xs:string xs:decimal xs:integer xs:boolean xs:date xs:time Default και Fixed τιμές <xs:element name="color" type="xs:string" default="red"/> <xs:element name="color" type="xs:string" fixed="red"/> 47

XSD elements (1) Άδειο element Ορίζεται ένα element με περιεχόμενο, αλλά, το περιεχόμενο δε διαθέτει elements Περιεχόμενο Μεικτό <xs:complextype mixed="true"> Μόνο elements <xs:complextype> <xs:sequence> </xs:sequence> </xs:complextype> Μόνο text <xs:complextype> <xs:simplecontent> </xs:simplecontent> </xs:complextype> 48

XSD - attributes Attribute: <xs:attribute name="xxx" type="yyy"/> <xs:attribute name="lang" type="xs:string"/> Default και Fixed τιμές use= optional required <xs:attribute name="lang" type="xs:string" use="optional"/> 49

XSD - restrictions <xs:element name="age"> <xs:simpletype> <xs:restriction base="xs:integer"> <xs:mininclusive value="0"/> <xs:maxinclusive value="100"/> </xs:restriction> </xs:simpletype> </xs:element> <xs:enumeration value="audi"/> <xs:whitespace value="preserve replace"/> <xs:length value="8"/> <xs:pattern value="([a-z])*"/> 50

XSD complex elements <xs:element name="employee"> <xs:complextype> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complextype> </xs:element> <xs:element name="employee" type="personinfo"/> <xs:complextype name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complextype> 51

TO DO παραδείγματα <xs:element name="employee" type="personinfo"/> <xs:element name="student" type="personinfo"/> <xs:element name="member" type="personinfo"/> <xs:complextype name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complextype> 52

TO DO <xs:element name="employee" type="fullpersoninfo"/> <xs:complextype name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complextype> <xs:complextype name="fullpersoninfo"> <xs:complexcontent> <xs:extension base="personinfo"> <xs:sequence> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexcontent> </xs:complextype> 53

Τέλος Ενότητας

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Πατρών» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 55

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0. 56

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Πατρών, Ιωάννης Γαροφαλάκης, 2015. «Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό». Έκδοση: 1.0. Πάτρα 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https://eclass.upatras.gr/courses/ceid1093/. 57

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 58