Προγραμματισμός Εφαρμογών Διαδικτύου

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Εισαγωγή στην XML Μάρτιος 2005 Γ. Σ. Σακελλάρης Τ. Α. Κοντογιώργης
Advertisements

Δ.Π.Θ. xml - 1 ΝΕΕΣ ΓΛΩΣΣΕΣ ΚΑΙ ΤΕΧΝΙΚΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ XML Η HTML αποτέλεσε την πρώτη και κύρια γλώσσα δημιουργίας ιστοσελίδων από την έναρξη λειτουργίας.
Η γλώσσα μορφοποίησης υπερκειμένου HTML
Semantic Web Technologies
Ακαδημαϊκό έτος Εργαστήριο Προγραμματισμού και Επεξεργασίας Πληροφοριών Εισαγωγή στη γλώσσα MathML Αλεξ Καράκος.
Θέματα Βάσεων Δεδομένων Αποθήκευση XML δεδομένων σε Σχεσιακή Βάση Δεδομένων Θέματα Βάσεων Δεδομένων Αποθήκευση XML δεδομένων σε Σχεσιακή Βάση Δεδομένων.
Τεχνολογίες XML. XML και DTD Υποστηρικτικές τεχνολογίες Γλώσσες ερωτήσεων.
Εισαγωγή στην XML Μ. ΓΑΒΑΛΑΣ.
Γλωσσική Τεχνολογία HTML/XML Processing – HTTP Services.
HTML Θ. Βαρβαρίγου Καθηγ. ΕΜΠ Τηλ
Οι επεκτάσεις του έργου TOOBIS στις γλώσσες ορισμού και ερωτήσεων του ODMG Κ. Βασιλάκης.
EXtensible Markup Language (XML) και XML Schema Γιώργος Θάνος Παρασκευή 31 Οκτωβρίου 2008.
Βάσεις Δεδομένων ΙΙ Ευαγγελία Πιτουρά 1 Βάσεις Διαδικτύου.
Βάσεις Δεδομένων Ενότητα 2: Συστήματα Διαχείρισης Βάσεων Δεδομένων Βασίλης Βουτσινάς Τμήμα: Οργάνωση & Διοίκηση Επιχειρήσεων.
Πρόγραμμα Αγωγής Υγείας «Τρώω σωστά,μεγαλώνω σωστά» Σχολικό έτος ο Νηπιαγωγείο Πατρών.
1 Εμπορικό και Οικονομικό Δίκαιο Εταιρείες Παππά Βιβή Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Γενική Οικονομική Ιστορία Ενότητα # 3: Οι μεγάλες αυτοκρατορίες Διδάσκων: Ιωάννα-Σαπφώ Πεπελάση Τμήμα: Οικονομικής Επιστήμης.
Τεχνολογία και ποιοτικός έλεγχος Σιτηρών & Αρτοσκευασμάτων Ενότητα 7: Λειτουργικά προϊόντα δημητριακών. Θεοφάνης Γεωργόπουλος, Kαθηγητής Εφαρμογών, Τμήμα.
1 Πληροφορική Υγείας Ενότητα 5 : Ιατρικός Φάκελος Ασθενούς Ευγενία Τόκη Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Τμήμα Τεχνολόγων Γεωπόνων Τίτλος Μαθήματος: ΚΑΛΛΩΠΙΣΤΙΚΑ ΔΕΝΤΡΑ ΚΑΙ ΘΑΜΝΟΙ Ενότητα 2: Χαρακτηριστικά φύλλων ανθέων και καρπών Γρηγόριος Βάρρας Αν. Καθηγητής.
Τμήμα Τεχνολόγων Γεωπόνων Τίτλος Μαθήματος: ΚΑΛΛΩΠΙΣΤΙΚΑ ΔΕΝΤΡΑ ΚΑΙ ΘΑΜΝΟΙ Ενότητα 10: Παράγωγη καλλωπιστικών φυτών. Μέρος Β’ Γρηγόριος Βάρρας Αν. Καθηγητής.
Προγραμματισμός Εφαρμογών Διαδικτύου Ενότητα 8: Εισαγωγή στην XML Φώτης Κόκκορας, Καθηγητής Εφαρμογών, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.
Εισαγωγή στη Νοσηλευτική Επιστήμη Ενότητα 7: Σχιζοφρένεια - Διδασκαλία Αυτοφροντίδας. Κοτρώτσιου Ευαγγελία, Καθηγητής, Τμήμα Νοσηλευτικής, T.E.I. Θεσσαλίας.
ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ Ενότητα 13 : Η χρήση της MySQL στο Ηλεκτρονικό εμπόριο (IV) Ιωάννης Τσούλος Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Εισαγωγή στη Νοσηλευτική Επιστήμη Ενότητα 9: Επικοινωνία. Κοτρώτσιου Ευαγγελία, Καθηγητής, Τμήμα Νοσηλευτικής, T.E.I. Θεσσαλίας.
Ενότητα 2: HTML – Hypertext Markup Language. Φώτης Κόκκορας, Καθηγητής Εφαρμογών, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Προγραμματισμός Εφαρμογών.
ΕΙΣΑΓΩΓΗ ΣΤΗ ΛΟΓΙΣΤΙΚΗ ΕΝΟΤΗΤΑ :Η απογραφή Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Γενική Οικονομική Ιστορία Ενότητα # 2: Η Ευρώπη πριν από τη Βιομηχανική Επανάσταση Διδάσκων: Ιωάννα-Σαπφώ Πεπελάση Τμήμα: Οικονομικής Επιστήμης.
Ποιοτικός Έλεγχος Πρώτων Υλών Ενότητα 3: Ποιοτικός Έλεγχος στα Έπιπλα Γεώργιος Νταλός, Καθηγητής, Τμήμα Σχεδιασμού & Τεχνολογίας Ξύλου και Επίπλου, T.E.I.
Εισαγωγή στη λογιστική, Ενότητα :Λογιστικό αποτέλεσμα, ΤΜΗΜΑ ΧΡΗΜΑΤΟΟΙΚΟΝΟΜΙΚΉΣ ΚΑΙ ΛΟΓΙΣΤΙΚΗΣ, ΤΕΙ ΗΠΕΙΡΟΥ – Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου.
Το Εικονογραφημένο Βιβλίο στην Προσχολική Εκπαίδευση Ενότητα 2.1: Μυθολογία Αγγελική Γιαννικοπούλου Τμήμα Εκπαίδευσης και Αγωγής στην Προσχολική Ηλικία.
Τμήμα Τεχνολόγων Γεωπόνων Τίτλος Μαθήματος: ΕΠΑΓΓΕΛΜΑΤΙΚΕΣ ΜΕΛΕΤΕΣ - ΑΝΑΛΥΣΗ ΤΙΜΩΝ ΕΡΓΩΝ ΠΡΑΣΙΝΟΥ Ενότητα 3: Σύνταγμα - Δικαστήρια Γρηγόριος Βάρρας Αν.
Βάσεις Δεδομένων και Παγκόσμιος Ιστός Τεχνολογίες XML.
Εισαγωγή στη λογιστική, Ενότητα :Λογαριασμοί, ΤΜΗΜΑ ΧΡΗΜΑΤΟΟΙΚΟΝΟΜΙΚΉΣ ΚΑΙ ΛΟΓΙΣΤΙΚΗΣ, ΤΕΙ ΗΠΕΙΡΟΥ – Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου ΕΙΣΑΓΩΓΗ.
1 Ενοποιημένες Χρηματοοικονομικές Καταστάσεις Στάδια Κατάρτισης των ΕΟΚ Δρ. Χύτης Ευάγγελος Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Τμήμα Τεχνολόγων Γεωπόνων Τίτλος Μαθήματος: ΔΑΣΟΚΟΜΙΑ ΠΟΛΕΩΝ Ενότητα 12: Μέτρα βελτίωσης συνθηκών ανάπτυξης αστικού πρασίνου Γρηγόριος Βάρρας Αν. Καθηγητής.
1 Λογιστική Εθνικών Λογαριασμών Διανεμητικές Συναλλαγές Διακομιχάλης Μιχαήλ Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Προγραμματισμός Εφαρμογών Διαδικτύου
Ο Υπαλληλικός Κώδικας του 1951
Η μονιμότητα των δημοσίων υπαλλήλων
Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου
Βασικά Web εργαλεία και τεχνολογίες
Εισαγωγικό μάθημα για μαθητές
Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου
Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου
ΕΡΓΑΣΤΗΡΙΟ Ηλεκτρονικού Εμπορίου Ε-Επιχειρείν
Πανεπιστήμιο Πελοποννήσου
Βάσεις Δεδομένων Ι Επανάληψη
Client Side Προγραμματισμός Javascript
Οι διοικητικές εκκαθαρίσεις
Η ανάγκη χρήσης μεταβλητών
Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου
Εισαγωγή στη Νοσηλευτική Επιστήμη
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
Εισαγωγή στη Νοσηλευτική Επιστήμη
Χρονικός Προγραμματισμός Έργων
Λογιστική Κόστους Ενότητα # 1: Εισαγωγή Διδάσκουσα: Σάνδρα Κοέν
Βάσεις Δεδομένων Εισαγωγή για το Εργαστήριο Δρ. Τιάκας Ελευθέριος
Ποιοτικός Έλεγχος Πρώτων Υλών
Πλατφόρμα Δήλος (Delos)
Ενότητα 10: Άτμιση του Ξύλου.
Εισαγωγή στις Βάσεις Δεδομένων
ΑΤΕΙ Θεσσαλονίκης Σχολή Διοίκησης και Οικονομίας
Μάρκετινγκ Υπηρεσιών Τουρισμού Διάλεξη 4η (2016 – 17) Εξυπηρέτηση Πελατών Δρ. Αλέξανδρος Αποστολάκης Τηλ.:
Επιχειρησιακές Επικοινωνίες
Διοίκηση ΜΜΕ και Επιχειρηματικότητα Διάλεξη 5η (2017 – 18) H Ελληνική Επιχειρηματικότητα: Η Περίοδος της Κρίσης Δρ. Αλέξανδρος Αποστολάκης
Javascript – Χειρισμός της σελίδας
Εισαγωγή στις Βάσεις Δεδομένων
Οἱ Συμβολισμοί τοῦ Μυστηρίου του Γάμου
Το Εικονογραφημένο Βιβλίο στην Προσχολική Εκπαίδευση
Μεταγράφημα παρουσίασης:

Προγραμματισμός Εφαρμογών Διαδικτύου Προγραμματισμός Εφαρμογών Διαδικτύου Ενότητα 8: DTD (Document Type Definition) Φώτης Κόκκορας, Καθηγητής Εφαρμογών, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.

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

Προγραμματισμός Εφαρμογών Διαδικτύου Σκοποί ενότητας Να αναφέρει τα στοιχεία που χαρακτηρίζουν την ορθότητα σύνταξης ενός XML εγγράφου. Να συντάσσει ένα Document Type Definition. Να αναλύει τα δομικά στοιχεία ενός xml εγγράφου. Να αναλύει τις διαφορές elements και attributes. Προγραμματισμός Εφαρμογών Διαδικτύου

Προγραμματισμός Εφαρμογών Διαδικτύου Περιεχόμενα ενότητας Δομώντας ένα XML έγγραφο. Πώς Δηλώνεται ένα DTD. Δηλώσεις Στοιχείων (elements). Δηλώσεις Ιδιοτήτων (attributes). Αναφορές Οντοτήτων. DTD για email element. XML Record. Προγραμματισμός Εφαρμογών Διαδικτύου

Δομώντας ένα XML Έγγραφο τα στοιχεία (elements) που θα χρησιμοποιηθούν οι ιδιότητες (attributes) που θα έχει (αν θα έχει) το κάθε στοιχείο οι τιμές των attributes η σειρά εμφάνισης των στοιχείων το πλήθος των στοιχείων οι σχέσεις πατρότητας των στοιχείων δηλ. ποια στοιχεία μπορεί να περιέχει κάποιο στοιχείο (υπάρχουν επιπλέον πράγματα που δεν θα μας απασχολήσουν) Όλα τα παραπάνω, για δεδομένη εφαρμογή, ορίζουν την γραμματική (grammar) της γλώσσας XML της εφαρμογής. Η κωδικοποίησή της μπορεί να γίνει με 2 τρόπους: DTD (Document Type Definition): Απλός τρόπος, επαρκής για μεγάλη γκάμα εφαρμογών, αλλά απλών ως επί των πλείστων (θα τον δούμε στη συνέχεια) XML Schema: Παρέχει περισσότερες δυνατότητες (π.χ. υποστηρίζει τύπους δεδομένων!) αλλά είναι και πιο δύσκολος στην εκμάθηση/χρήση (δεν θα μας απασχολήσει). Αν υπάρχουν οι παραπάνω πληροφορίες σχετικά με τα δομικά στοιχεία του εγγρά­φου, τότε μπορεί να ελεγχθεί η εγκυρότητα του, αν δηλαδή είναι valid. Προγραμματισμός Εφαρμογών Διαδικτύου 6

Προγραμματισμός Εφαρμογών Διαδικτύου Πώς Δηλώνεται ένα DTD; Το DTD μπορεί να δηλωθεί εντός του XML αρχείου ή ως εξωτερική αναφορά. Εσωτερική δήλωση DTD (δηλ. εντός του XML που το χρησιμοποιεί) <!DOCTYPE root-element [element-declarations]> Εξωτερική δήλωση DTD (δηλ. το DTD γίνεται "include" στο XML) <!DOCTYPE root-element SYSTEM "filename"> Προγραμματισμός Εφαρμογών Διαδικτύου 7

Τι Σημαίνουν αυτές οι Δηλώσεις; Στο προηγούμενο παράδειγμα η ερμηνεία των δηλώσεων είναι περίπου η εξής: Υπάρχει ένα στοιχείο ρίζα με όνομα person. Μέσα του πρέπει να υπάρχουν στοιχεία name και surname, με αυτή τη σειρά. Κάθε ένα από αυτά τα στοιχεία περιέχει μέσα του κείμενο (#PCDATA) Η ακριβής σύνταξη ενός DTD θα εξηγηθεί παρακάτω Γιατί Χρησιμοποιούμε DTD; Με το DTD κάθε XML έγγραφο μεταφέρει μαζί του και μια περιγραφή του εαυτού του! Μέσω του DTD, ανεξάρτητοι μεταξύ τους χρήστες μπορούν να συμφωνήσουν στην κωδικοποίηση ανταλλαγής δεδομένων. Μια εφαρμογή μπορεί μέσω του DTD να ελέγξει: αν τα δεδομένα που παρέλαβε από εξωτερική πηγή είναι έγκυρα αν τα δεδομένα που παρήγαγε η ίδια είναι έγκυρα Προγραμματισμός Εφαρμογών Διαδικτύου 8

Tα Δομικά Στοιχεία ενός XML Είδαμε (slides XML) ότι ένα XML έγγραφο χτίζεται με τα ακόλουθα δομικά στοιχεία: στοιχεία (elements) - οι γνωστές ετικέτες/tags πχ το div στην γλώσσα XHTML ιδιότητες (attributes) πχ το class στον ακόλουθο XHTML κώδικα <div class="main"></div> αναφορές οντοτήτων (entity reference) (βλ. και slides XML) πχ τα < , > , & , " , &apos; (για τα <, >, &, ", ') CDATA (Character Data) – αλφαριθμητικά που θα ληφθούν ως έχουν Δεν θα περάσουν δηλαδή από τον ελεγκτή σύνταξης (parser) της γλώσσας) (βλ. slides XML) Άρα τυχόν markup (ετικέτες, κτλ) εντός τέτοιων δεδομένων ΔΕΝ θα ληφθεί ως XML. PCDATA (Parsed Character Data) – Αλφαριθμητικά που θα περάσουν από τον parser της γλώσσας (βλ. slides XML). Άρα τυχόν markup (ετικέτες, κτλ) εντός τέτοιων δεδομένων θα ληφθεί ως XML. Άρα σε ένα DTD πρέπει να μπορούμε να περιγράψουμε στοιχεία, ιδιότητες και αναφορές οντοτήτων (τα CDATA και PCDATA δεν αναλύονται περισσότερο). Με αυτό θα ασχοληθούμε στη συνέχεια. Προγραμματισμός Εφαρμογών Διαδικτύου 9

Δηλώσεις Στοιχείων (elements) 1/5 Για κάθε XML στοιχείο θα πρέπει να υπάρχει μια δήλωση της μορφής: <!ELEMENT element_name content_specification> element_name είναι το όνομα του στοιχείου για την σύνταξη των ονομάτων ισχύουν οι κανόνες της XML για well-formed έγγραφα (βλ. slides XML) το content_specification προσδιορίζει το τι επιτρέπεται ως περιεχόμενο του στοιχείου Προσδιορισμός του Περιεχομένου ενός Στοιχείου για κενά στοιχεία - EMPTY Παράδειγμα δήλωσης σε DTD: <!ELEMENT br EMPTY> Παράδειγμα XML: <br/> το γνωστό <br> της HTML (αλλαγή γραμμής) σε XHTML έκδοση! για στοιχεία με κείμενο - #PCDATA (parsed character data) Παράδειγμα δήλωσης σε DTD: <!ELEMENT phone_number (#PCDATA) Παράδειγμα XML: <phone_number>2410555444</phone_number> Το στοιχείο ΔΕΝ μπορεί να περιέχει άλλα στοιχεία ως παιδία. Πρόκειται για την πιο συνηθισμένη περίπτωση. Προσοχή στις παρενθέσεις! Τα EMPTY και ANY γράφονται χωρίς ενώ το #PCDATA με παρενθέσεις. Προγραμματισμός Εφαρμογών Διαδικτύου 10

Προγραμματισμός Εφαρμογών Διαδικτύου Δηλώσεις Στοιχείων (elements) 2/5 Προσδιορισμός του Περιεχομένου ενός Στοιχείου για στοιχεία με ένα στοιχείο-παιδί (υποχρεωτικά!) - (βάζουμε το όνομά του) Παράδειγμα δήλωσης σε DTD: <!ELEMENT address (street)> Παράδειγμα XML: <address><street>Φαρσάλων</street></address> για στοιχεία με πολλά στοιχεία-παιδιά - (όνομα1, όνομα2, όνομα3,…) Παράδειγμα δήλωσης σε DTD: <!ELEMENT date (year, month, day)> Παράδειγμα XML (η σειρά χρήσης πρέπει να συμφωνεί με τη σειρά δήλωσης στο DTD): <date><year>2012</year><month>June</month><day>17</day></date> Μπορούμε να ορίσουμε και το πλήθος των στοιχείων-παιδιών εντός του πατρικού: ? – επιτρέπεται κανένα ή ένα στοιχείο (δηλ. το πολύ ένα) * - επιτρέπεται κανένα ή περισσότερα στοιχεία (δηλ. όσα θέλουμε – χωρίς περιορισμό) + - επιτρέπονται ένα ή περισσότερα στοιχεία (δηλ. τουλάχιστον ένα) Παράδειγμα δήλωσης σε DTD: <!ELEMENT company (employee+)> Παράδειγμα XML: (θεωρεί δεδομένη και τη δήλωση: <!ELEMENT employee (#PCDATA)> ) <company><employee>Φώτης</employee><employee>Αφροδίτη</employee></company> δηλαδή μέσα στο company επιτρέπεται ένα ή περισσότερα στοιχεία employee Η ύπαρξη στοιχείων-παιδιών είναι η 2η πιο συνηθισμένη περίπτωση. Προγραμματισμός Εφαρμογών Διαδικτύου 11

Προγραμματισμός Εφαρμογών Διαδικτύου Δηλώσεις Στοιχείων (elements) 3/5 Προσδιορισμός του Περιεχομένου ενός Στοιχείου Μπορούμε να ορίσουμε το στοιχείο-παιδί ως ένα από μια λίστα επιλογών: Παράδειγμα δήλωσης σε DTD: <!ELEMENT library_item ( book | periodical | CD | DVD )> Παράδειγμα XML:(θεωρεί δεδομένη και τη δήλωση:<!ELEMENT book (#PCDATA)> ) <library_item><book>Artificial Intelligence</book><library_item> δηλαδή κάθε library_item περιέχει μόνο ένα εκ των book, periodical, CD, VDV για στοιχεία Γενικού Σκοπού (ANY): περιέχουν κείμενο ή άλλα στοιχεία-παιδιά, αρκεί να είναι δηλωμένα στο DTD Παράδειγμα δήλωσης σε DTD: <!ELEMENT person ANY> Τρία Ολοκληρωμένα Παραδείγματα/Αρχεία XML με χρήση του ANY στο επόμενο slide: Προγραμματισμός Εφαρμογών Διαδικτύου 12

Προγραμματισμός Εφαρμογών Διαδικτύου Δηλώσεις Στοιχείων (elements) 4/5 Προσδιορισμός του Περιεχομένου ενός Στοιχείου Το παράδειγμα (3) ΔΕΝ είναι valid (έγκυρο). Αιτία: δεν υπάρχει συνέπεια στη χρήση του person – εμφανίζεται μια φορά με στοιχεία-παιδιά και μια χωρίς! Προγραμματισμός Εφαρμογών Διαδικτύου 13

Προγραμματισμός Εφαρμογών Διαδικτύου Δηλώσεις Στοιχείων (elements) 5/5 Προσδιορισμός του Περιεχομένου ενός Στοιχείου Οι επιλογές που είδαμε στον ορισμό στοιχείων μερικές φορές δεν επαρκούν. Με χρήση παρενθέσεων μπορεί να ομαδοποιηθούν κάποιες προδιαγραφές και να προκύψει περισσότερο συμπαγής σύνταξη. Για παράδειγμα: <!ELEMENT point ((x, y) | (r, θ))> <!ELEMENT circle (point, (radius | diameter))> <!ELEMENT polygon (point, point, point+)> Σχόλια: Η πρώτη δήλωση περιγράφει σημεία (point) με βάση καρτεσιανές ή πολικές συντεταγμένες. Η δεύτερη κύκλους με βάση το κέντρο και την ακτίνα ή τη διάμετρο. Η τρίτη απαιτεί τουλάχιστον 3 σημεία. Μεικτό Περιεχόμενο Τα στοιχεία με μικτό περιεχόμενο δηλώνονται βάζοντας μέσα σε παρένθεση πρώτα το #PCDATA, στη συνέχεια όλα τα δυνατά στοιχεία με διαχωριστικό την κάθετη γραμμή | και στο τέλος, μετά την παρένθεση, το σύμβολο * Παραδείγματα δήλωσης στοιχείων με μεικτό περιεχόμενο: <!ELEMENT definition (#PCDATA | term)*> <!ELEMENT paragraph (#PCDATA | name | profession | footnote | emphasize | date)*> Προγραμματισμός Εφαρμογών Διαδικτύου 14

Δηλώσεις Ιδιοτήτων (attributes) 1/2 Οι ιδιότητες δηλώνονται σε ένα DTD με δηλώσεις της ακόλουθης γενικής μορφής: <!ATTLIST element-name attribute-name attribute-type default-value> element-name είναι το όνομα του στοιχείου στο οποίο χρησιμοποιείται η ιδιότητα attribute-name είναι το όνομα της ιδιότητας attribute-type: συνήθως CDATA ή λίστα επιλογών (δεν θα δούμε περισσότερα). default-value (προκαθορισμένη τιμή) μπορεί να είναι μια από τις ακόλουθες: η επιθυμητή προκαθορισμένη τιμή (αλφαριθμητικό σε διπλά εισαγωγικά) #REQUIRED: όταν θέλουμε ο συντάκτης του XML να οριστεί οπωσδήποτε την ιδιότητα #IMPLIED: όταν ο ορισμός της ιδιότητας από τον συντάκτη της XML είναι προαιρετικός #FIXED value: η ιδιότητα έχει δεδομένη τιμή που δεν μπορεί να αλλάξει – η τιμή ισχύει είτε οριστεί η ιδιότητα στο στοιχείο είτε όχι Παράδειγμα χρησιμότητας προκαθορισμένης τιμής ιδιότητας: Προγραμματισμός Εφαρμογών Διαδικτύου 15

Δηλώσεις Ιδιοτήτων (attributes) 2/2 Παράδειγμα χρήσης του #FIXED ως προκαθορισμένης τιμής ιδιότητας: Στα παραπάνω παραδείγματα, το attribute-type των ιδιοτήτων ήταν πάντα CDATA που είναι και το σύνηθες. Μια δεύτερη συχνή περίπτωση είναι να θέλουμε η τιμή της ιδιότητας να προκύπτει με επιλογή από μια δεδομένη λίστα τιμών (enumerated list). Παράδειγμα Προγραμματισμός Εφαρμογών Διαδικτύου 16

Elements vs. Attributes Που είναι καλύτερα να βάζουμε τα δεδομένα, σε στοιχεία (elements) ή σε ιδιότητες (attributes); Επίσημα δεν υπάρχει προτίμηση πέρα από θέματα που προκύπτουν από διάφορους περιορισμούς των δύο λύσεων. πχ δεδομένο attribute μπορούμε να το έχουμε μια φορά (στα elements δεν υπάρχει περιορισμός) Συμβουλή: βάζετε τα δεδομένα σε elements και τα μεταδεδομένα τους σε attributes. πχ σε ένα database record συναλλαγής, ο μοναδικός κωδικός συναλλαγής δεν είναι ουσιαστική πληροφορία αλλά μεταδεδομένο που περιγράφει το database record – δεν είναι δεδομένο της συναλλαγής! <transaction id="123456"> <date> <year>2012</year> <month>6</month> <day>17</day> </date> <amount>10000</amount> </transaction> Όμοια δεν είναι καλή ιδέα να μπουν το όνομα και το επώνυμο κάποιου σε ιδιότητες. Οι ιδιότητες μπορεί να δηλωθούν και με πολλαπλό τρόπο. Παράδειγμα 3x ορισμού: <!ATTLIST element-name attribute-name1 attribute-type1 default-value1 attribute-name2 attribute-type2 default-value2 attribute-name3 attribute-type3 default-value3 > Προγραμματισμός Εφαρμογών Διαδικτύου 17

Αναφορές Οντοτήτων (Entity References) Πρόκειται για μεταβλητές που ορίζουν συντομεύσεις σε κείμενα ή χαρακτήρες. Γνωρίζετε ήδη κάποιες: < , > , & , " , &apos; (για τα <, >, &, ", ') Εσωτερικός ορισμός οντοτήτων: <!ENTITY entity-name "entity-value"> entity-name: το όνομα της οντότητας entity-value: η τιμή της οντότητας Παράδειγμα δήλωσης σε DTD: <!ENTITY writer "Φώτης Κόκκορας"> <!ENTITY institution "ΤΕΙ Λάρισας"> Παράδειγμα χρήσης σε XML δεδομένα: <author>&writer;&institution;</author> Σημείωση: δηλαδή μια οντότητα έχει 3 μέρη: &, όνομα, ; Εξωτερικός ορισμός οντοτήτων <!ENTITY entity-name SYSTEM "URI/URL"> Παράδειγμα δήλωσης σε DTD: <!ENTITY writer SYSTEM "http://www.teilar.gr/entities.dtd"> <!ENTITY institution SYSTEM "http://www.teilar.gr/entities.dtd"> Παράδειγμα χρήσης σε XML δεδομένα: <author>&writer;&institution;</author> Προγραμματισμός Εφαρμογών Διαδικτύου 18

Παράδειγμα DTD για email element <?xml version="1.0" encoding="UTF-8"?> <!ELEMENT email (head,body)> <!ELEMENT head (from, to+, cc*, subject)> <!ELEMENT from EMPTY> <!ATTLIST from name CDATA #IMPLIED address CDATA #REQUIRED> <!ELEMENT to EMPTY> <!ATTLIST to name CDATA #IMPLIED <!ELEMENT cc EMPTY> <!ATTLIST cc name CDATA #IMPLIED address CDATA #REQUIRED> <!ELEMENT subject (#PCDATA)> <!ELEMENT body (text,attachment*)> <!ELEMENT text (#PCDATA)> <!ELEMENT attachment EMPTY> <!ATTLIST attachment encoding (mime|binhex) "mime" file CDATA #REQUIRED> Σημείωση: η παραπάνω δομή είναι αυθαίρετη και δεν συμφωνεί απαραίτητα με το τι ισχύει στα πραγματικά emails. Το encoding attribute ενός attachment element μπορεί να έχει την τιμή "mime" ή "binhex" "mime" είναι η default τιμή Προγραμματισμός Εφαρμογών Διαδικτύου 19

XML Record με Βάση το Προηγούμενο DTD <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE email SYSTEM "email.dtd"> <email> <head> <from name="Fotis K." address="user1@teilar.gr"></from> <to address="user2@teilar.gr" /> <to name="Nick" address="user3@teilar.gr" /> <subject>Δοκιμή XML/DTD</subject> </head> <body> <text>Hello XML/DTD World!</text> <attachment encoding="binhex" file="foo.doc" /> </body> </email> Μπορείτε να ελέγξετε την εγκυρότητα ενός XML εγγράφου είτε με ειδικά λογισμικά χειρισμού XML δεδομένων (π.χ. XMLSpy) ή με on-line validators όπως αυτός του W3Schools στη διεύθυνση: http://www.w3schools.com/xml/xml_validator.asp Θα χρειαστεί να αποθηκεύσετε το DTD σε αρχείο με όνομα email.dtd Προγραμματισμός Εφαρμογών Διαδικτύου 20

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