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

Σχετικά έγγραφα
Δομημένη Αναπαράσταση Πληροφοριών

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

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

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

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

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

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

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

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

Δομημένη Αναπαράσταση Πληροφοριών

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

ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ - XML

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

Βάσεις ιαδικτύου. Θέματα. Εισαγωγή στην XML. Ευρετήρια για την Ανάκτηση Κειμένων. Ο αλγόριθμος HITS. είναι η XML. Παράδειγμα XML

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Διαδικασιακός Προγραμματισμός

ΕΠΛ 012 Εισαγωγή στο Παγκόσμιο Πλέγμα Πληροφοριών

ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ - XML

ΜΕΡΟΣ II: XML DTD XML Namespaces XML Schema

Βάσεις Δεδομένων Ι 6. Ιδιότητες πεδίων. Τμήμα Διοίκησης Επιχειρήσεων (Μεσολόγγι) ΤΕΙ Δυτικής Ελλάδας

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

SGML (Standard Generalized Markup Language) HTML (HyperText Markup Language) XML (extensible Markup Language)

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Σχεδίαση Βάσεων Δεδομένων

Οδηγίες ενεργοποίησης λογαριασμού στο λογισμικό λογοκλοπής TURNITIN

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

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

Η γλώσσα XHTML: διαφορές με HTML, μετατροπή

Ανάπτυξη και Σχεδίαση Λογισμικού

2.1. Εντολές Σχόλια Τύποι Δεδομένων

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

Browsers. Λειτουργικότητα και Παραμετροποίηση

Όλοι οι χρήστες του Turnitin πρέπει να δημιουργήσουν ένα προφίλ χρήστη.

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Εισαγωγή στη Fortran. Μάθημα 1 ο. Ελευθερία Λιούκα

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

3. Επερώτηση XML Εγγράφων: Η Γλώσσα XPath

Διαχείριση Έργων Πληροφορικής Εργαστήριο

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Διαχείριση Βάσης Δεδομένων (dbadmin)

Βάσεις Δεδομένων ΙΙ. Διάλεξη 5 η XML και ΒΔ στο Διαδίκτυο

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

Περιεχόμενα. Λίγα λόγια από το συγγραφέα... 7

Εισαγωγή στον Προγραμματισμό

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

Σχεδίαση Βάσεων Δεδομένων

5. Επερώτηση XML Εγγράφων: Εισαγωγή στη Γλώσσα XQuery

Οδηγίες Καταχώρησης Τεκμηρίου

ΕΥΦΥΗΣ ΔΙΑΧΕΙΡΙΣΗ XML ΔΕΔΟΜΕΝΩΝ ΜΕ ΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PROLOG

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Διαγραφή Επιλέγετε Διαγραφή για να διαγράψετε μία ήδη υπάρχουσα διαδικασία εισαγωγής ASCII

Ενότητα. Σχεδίαση Βάσεων Δεδομένων

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : / id ot.com /

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Αντικειμενοστρεφής Προγραμματισμός

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

Εργαστήριο Σημασιολογικού Ιστού

Σχεδιασμός Βάσεων Δεδομένων

Pylon Entry. Είδη. Στη διαδικασία αυτή περιγράφεται η Δημιουργία Μεταβολή Διαγραφή - Αναζήτηση ενός είδους

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

Βοήθεια ΠΛΟΗΓΗΣΗ ΑΝΑΖΗΤΗΣΗ (ΑΠΛΗ) ΣΥΝΘΕΤΗ ΑΝΑΖΗΤΗΣΗ ΠΛΟΗΓΗΣΗ

DELETE, UPDATE, INSERT

Η γλώσσα προγραμματισμού C

Ποιες είναι οι κύριες ετικέτες που χρησιμοποιεί η HTML για την περιγραφή της συνολικής δομής μιας ιστοσελίδας;

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΓΕΩΓΡΑΦΙΑΣ ΜΑΘΗΜΑ: ΣΥΣΤΗΜΑΤΑ ΓΕΩΓΡΑΦΙΚΩΝ ΠΛΗΡΟΦΟΡΙΩΝ Ι

DELETE, UPDATE, INSERT.

ΒΑΣΙΚΕΣ ΑΡΧΕΣ ΣΧΕΔΙΑΣΜΟΥ ΕΦΑΡΜΟΓΩΝ

Είδη. Σε αυτό το εγχειρίδιο περιγράφεται η Δημιουργία, Μεταβολή, Διαγραφή και Αναζήτηση ενός είδους

8 FORTRAN 77/90/95/2003

Σπουδές CAD, Πληροφορικής, Οικονομίας, Διοίκησης και D.T.P. με Σύστημα διδασκαλίας facetoface

ΥΠΗΡΕΣΙΑ «TAXISNET» - ΗΛΕΚΤΡΟΝΙΚΗ ΥΠΟΒΟΛΗ ΤΩΝ ΦΟΡΟΛΟΓΙΚΩΝ ΔΗΛΩΣΕΩΝ ΓΙΑ ΤΟ ΤΜΗΜΑ ΕΣΩΤΕΡΙΚΩΝ ΠΡΟΣΟΔΩΝ ΚΑΙ ΤΗΝ ΥΠΗΡΕΣΙΑ ΦΟΡΟΥ ΠΡΟΣΤΙΘΕΜΕΝΗΣ ΑΞΙΑΣ ΤΟΥ

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Βασικές έννοιες προγραμματισμού

Pylon Entry. Υπηρεσίες. Στην διαδικασία αυτή περιγράφεται η Δημιουργία- Μεταβολή-Διαγραφή και Αναζήτηση υπηρεσίας

Βάσεις Δεδομένων. Εργαστήριο 1. Ηλεκτρονικοί Υπολογιστές ΙI. Ακαδημαϊκό Έτος Διαφάνεια 1. Κάπαρης Αναστάσιος

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

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

Εισαγωγή στην Αριθμητική Ανάλυση

της πληροφορίας Λίνα Μπουντούρη Εθνικό Κέντρο Τεκμηρίωσης 13ο ΠανελλήνιοΣυνέδριοΑκαδημαϊκών Βιβλιοθηκών - Κέρκυρα 2004

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

ΚΕΦΑΛΑΙΟ Web Services

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

ΟΔΗΓΙΕΣ ΥΠΟΒΟΛΗΣ ΕΡΕΥΝΗΤΙΚΗΣ ΕΡΓΑΣΙΑΣ ΣΤΟ ΙΔΡΥΜΑΤΙΚΟ ΑΠΟΘΕΤΗΡΙΟ ΤΟΥ ΟΠΑ "ΠΥΞΙΔΑ"

Σημαντικές δυνατότητες των σύγχρονων υπολογιστικών μηχανών: Αξιόπιστη καταγραφή πολύ μεγάλου όγκου δεδομένων

Ηλεκτρονικοί Υπολογιστές ΙI. Βάσεις Δεδομένων. Ακαδημαϊκό Έτος Εργαστήριο 2. Διαφάνεια 1. Κάπαρης Αναστάσιος

ΤΕΙ ΚΡΗΤΗΣ ΚΕΝΤΡΙΚΗ ΒΙΒΛΙΟΘΗΚΗ. Η χρήση του. Βήμα προς Βήμα

Πληροφορική Τμήμα Σχεδιασμού & Τεχνολογίας Ξύλου & Επίπλου Αντώνιος Καραγεώργος Ευανθία Τσιλιχρήστου. Μάθημα 5 ο Τεχνολογίες Διαδικτύου: HTML I

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΟΛΟΚΛΗΡΩΜΕΝΟΥ ΠΛΗΡΟΦΟΡΙΑΚΟΥ ΣΥΣΤΗΜΑΤΟΣ (ΟΠΣ) ΓΙΑ ΤΗΝ ΠΡΟΓΡΑΜΜΑΤΙΚΗ ΠΕΡΙΟΔΟ ΣΕΣ

Σενάριο Χρήσης myschool

Περιεχόμενα. Γαβαλάς Δαμιανός Τρέχον status της HTML

Επαλήθευση και Βελτιστοποίηση Συστήµατος ιαχείρισης XML Εγγράφων στη Γλώσσα CLIPS

Transcript:

Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Σημασιολογικός Ιστός (Semantic Web) - XML 18/10/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων XML Δημιουργία έγκυρων XML εγγράφων

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

Έγκυρα έγγραφα XML Πρέπει να πληρούν ένα πιο αυστηρό σύνολο κριτηρίων από εκείνο των σωστά διατυπωμένων εγγράφων Θα δούμε: Τις βασικές προϋποθέσεις δημιουργίας έγκυρων εγγράφων XML και τα πλεονεκτήματα Δήλωση τύπου εγγράφου απαραίτητη σε κάθε έγκυρο έγγραφο XML Λεπτομερείς εντολές για τον ορισμό των στοιχείων και των ιδιοτήτων σε ένα έγκυρο έγγραφο Μετατροπή του εγγράφου που δημιουργήσαμε σε έγκυρο

Βασικά κριτήρια για ένα έγκυρο έγγραφο XML Κάθε έγγραφο XML πρέπει να είναι σωστά διατυπωμένο, πρέπει δηλαδή να πληροί τις απαραίτητες προϋποθέσεις ενός συμμορφούμενου εγγράφου XML. Ένα σωστά διατυπωμένο έγγραφο XML μπορεί να είναι και έγκυρο. Έγκυρο (valid) έγγραφο XML είναι ένα σωστά διατυπωμένο έγγραφο που πληροί τις δύο παρακάτω προϋποθέσεις: Ο πρόλογος του εγγράφου πρέπει να περιλαμβάνει μια κατάλληλη δήλωση τύπου εγγράφου (document type declaration). Η δήλωση αυτή περιέχει έναν ορισμό τύπου εγγράφου (document type definition DTD) που ορίζει τη δομή του εγγράφου. Το υπόλοιπο έγγραφο πρέπει να ακολουθεί τη δομή που ορίζεται στο DTD.

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

Περιορισμοί σωστής διατύπωσης Περιορισμοί σωστής διατύπωσης: σύνολο κανόνων που ορίζεται από την προδιαγραφή της XML και οι οποίοι πρέπει να ακολουθούνται εκτός από τις βασικές συντακτικές απαιτήσεις για τη δημιουργία σωστά διατυπωμένων εγγράφων. Τα έγγραφα XML πρέπει να είναι σωστά διατυπωμένα, αλλιώς η παραβίαση περιορισμών είναι fatal error και ο επεξεργαστής σταματά την επεξεργασία

Περιορισμοί εγκυρότητας Περιορισμοί εγκυρότητας: ένα επιπλέον σύνολο κανόνων που περιέχεται στην προδιαγραφή της XML και οι οποίοι πρέπει να ακολουθούνται για τη δημιουργία έγκυρων εγγράφων. Η εγκυρότητα ενός εγγράφου XML είναι προαιρετικό χαρακτηριστικό οπιαδήποτε παραβίαση είναι απλό σφάλμα. Ο επεξεργαστής απλά αναφέρει το πρόβλημα και επιχειρεί να το διορθώσει Οι περιορισμοί εγκυρότητας αποτελούνται από: συγκεκριμένους κανόνες δημιουργίας κατάλληλης δήλωσης τύπου εγγράφου με το DTD του, και δημιουργίας ενός εγγράφου που συμφωνεί με τις προδιαγραφές που αναφέρονται στο DTD

Πλεονεκτήματα της δημιουργίας έγκυρων εγγράφων XML Γιατί χρειαζόμαστε έγκυρα έγγραφα XML??? Για να είμαστε βέβαιοι ότι το έγγραφο ακολουθεί συγκεκριμένη δομή ή σύνολο κανόνων, η παρουσία ενός DTD που ορίζει τη δομή επιτρέπει σε επεξεργαστή XML να ελέγξει κατά πόσο το έγγραφο ακολουθεί τη δομή Το DTD παρέχει στον επεξεργαστή πρότυπο προσχέδιο ώστε, ελέγχοντας την εγκυρότητα του εγγράφου, να μπορεί να επιβάλει την επιθυμητή δομή & να εγγυηθεί ότι το έγγραφο πληροί τις προϋποθέσεις Αν κάποιο από τα μέρη του εγγράφου δεν τηρεί την προδιαγραφή του DTD, ο επεξεργαστής εμφανίζει στην οθόνη ένα μήνυμα σφάλματος Η δημιουργία έγκυρων εγγράφων XML αποτελεί πολύ χρήσιμη διαδικασία, καθώς εξασφαλίζεται με τον τρόπο αυτόν ομοιομορφία σε ένα σύνολο παρόμοιων εγγράφων DTD: "γραμματική μιας τάξης εγγράφων"

Παράδειγμα Έστω μια εκδοτική εταιρία εγγράφων για τον Ιστό που απαιτεί όλοι οι διορθωτές της να δημιουργούν έγγραφα XML με κοινή δομή Η δημιουργία ενός απλού DTD για όλα τα έγγραφα εξασφαλίζει την ύπαρξη της απαιτούμενης δομής σε αυτά Επίσης αποτρέπει τους διορθωτές από την αυθαίρετη προσθήκη νέων στοιχείων, την τοποθέτηση πληροφοριών σε λάθος σειρά, την απόδοση λανθασμένων τύπων δεδομένων στις ιδιότητες, κ.ο.κ Το πρόγραμμα πρέπει να εκτελείται σε κάποιον επεξεργαστή που να ελέγχει την εγκυρότητά του

Άρα Η συμπερίληψη DTD και ο έλεγχος της εγκυρότητας είναι σημαντικές διαδικασίες όταν η επεξεργασία των εγγράφων γίνεται από προσαρμοσμένο λογισμικό που αναμένει συγκεκριμένη δομή εγγράφου Αν όλοι οι χρήστες του λογισμικού συμπεριλάβουν στα XML έγγραφά τους ένα κοινό DTD και αν στα έγγραφα γίνεται έλεγχος εγκυρότητας, οι χρήστες μπορούν να είναι σίγουροι ότι τα έγγραφά τους θα αναγνωρίζονται από το λογισμικό επεξεργασίας Αν μια ομάδα μαθηματικών επιστημόνων θέλει να δημιουργήσει μαθηματικά έγγραφα που θα εμφανιστούν μέσω συγκεκριμένου προγράμματος, μπορούν να συμπεριλάβουν στα έγγραφά τους ένα κοινό DTD που ορίζει την απαιτούμενη δομή, τα στοιχεία, τις ιδιότητες, και άλλα χαρακτηριστικά των εγγράφων (MathML)

Προσθήκη του DTD Η δήλωση τύπου εγγράφου καθορίζει τη δομή του εγγράφου και αποτελεί τμήμα της σήμανσης ΧΜL που προστίθεται στον πρόλογο ενός έγκυρου εγγράφου XML (σε οποιοδήποτε σημείο έξω από οποιαδήποτε άλλη σήμανση μετά τη δήλωση XML

Η μορφή του DTD Η δήλωση τύπου εγγράφου έχει την εξής γενική μορφή: <!DOCTYPE Όνομα DTD> Το Όνομα προσδιορίζει το όνομα του στοιχείου εγγράφου για το οποίο ορίζουμε δήλωση Π.χ. Αν δημιουργήσουμε δήλωση τύπου εγγράφου για το έγγραφο του παραδείγματος, θα χρησιμοποιήσουμε το όνομα INVENTORY: <!DOCTYPE INVENTORY DTD> Αυτή η δήλωση δεν είναι ακόμα πλήρης. Απομένει να αντικατασταθεί το DTD με το πραγματικό περιεχόμενο To DTD είναι ο ορισμός του τύπου εγγράφου που περιλαμβάνει τις δηλώσεις που προσδιορίζουν τα στοιχεία, τις ιδιότητες και άλλα χαρακτηριστικά του εγγράφου

Δημιουργία του DTD To DTD αποτελείται από αριστερή αγκύλη [ ακολουθούμενη από σειρά δηλώσεων σήμανσης και δεξιά αγκύλη ] Οι δηλώσεις σήμανσης (markup declarations) περιγράφουν τη λογική δομή του εγγράφου, δηλ. προσδιορίζουν τα στοιχεία, τις ιδιότητες και άλλα στοιχεία του εγγράφου

Δημιουργία του DTD Πλήρες έγκυρο έγγραφο XML που περιέχει ένα DTD με μια απλή δήλωση σήμανσης η οποία ορίζει το μοναδικό τύπο στοιχείου εγγράφου, το SIMPLE To DTD ορίζει ότι το έγγραφο μπορεί να περιέχει μόνο στοιχεία τύπου SIMPLE (αυτό είναι το μοναδικό στοιχείο που προσδιορίζεται) και ότι το στοιχείο αυτό μπορεί να έχει οποιοδήποτε περιεχόμενο (λέξη-κλειδί ANY).

Τύποι δηλώσεων σήμανσης Δηλώσεις τύπου στοιχείων: Ορίζουν τους τύπους των στοιχείων που μπορεί να περιέχει το έγγραφο, καθώς και το περιεχόμενο και τη διάταξή τους Δηλώσεις λίστας ιδιοτήτων: Κάθε δήλωση λίστας ιδιοτήτων ορίζει τα ονόματα των ιδιοτήτων που μπορούν να χρησιμοποιηθούν σε κάποιο συγκεκριμένο τύπο στοιχείου, καθώς και τους τύπους των δεδομένων και τις προκαθορισμένες τιμές των ιδιοτήτων αυτών Δηλώσεις οντοτήτων: Οι οντότητες χρησιμοποιούνται για αποθήκευση τμημάτων κειμένου που χρησιμοποιούνται συχνά ή για να συμπεριλάβουμε στο έγγραφο δεδομένα εκτός XML

Τύποι δηλώσεων σήμανσης Δηλώσεις σημειογραφίας: Η σημειογραφία περιγράφει τη μορφή δεδομένων ή καθορίζει το πρόγραμμα που χρησιμοποιείται για την επεξεργασία μιας συγκεκριμένης μορφής Εντολές επεξεργασίας Σχόλια Αναφορές οντοτήτων παραμέτρων: Οποιοδήποτε από τα παραπάνω στοιχεία μπορεί να συμπεριληφθεί σε μια οντότητα παραμέτρου και να εισαχθεί μέσω μιας αναφοράς οντότητας παραμέτρου

Δήλωση τύπων στοιχείων Σε ένα έγκυρο έγγραφο XML πρέπει να δηλώνεται ο τύπος κάθε στοιχείου που χρησιμοποιείται σε δήλωση τύπου στοιχείου (element type declaration) μέσα στο DTD Η δήλωση τύπου στοιχείου δείχνει το όνομα του τύπου και το επιτρεπόμενο περιεχόμενο του στοιχείου (συχνά προσδιορίζει τη σειρά με την οποία εμφανίζονται τα θυγατρικά στοιχεία) Οι δηλώσεις των τύπων στοιχείων στο DTD απεικονίζουν ολόκληρη τη λογική δομή του εγγράφου Δείχνουν τους τύπους των στοιχείων που περιέχει το έγγραφο, τη σειρά και την προδιαγραφή του περιεχομένου τους.

Μορφή δήλωσης τύπου στοιχείων Μια δήλωση τύπου στοιχείου έχει τη μορφή: <!ELEMENT Όνομα contentspec> Όνομα είναι το όνομα του τύπου στοιχείου που δηλώνεται Contentspec είναι η προδιαγραφή περιεχομένου (content specification) που ορίζει τι ακριβώς μπορεί να περιέχει το στοιχείο Παράδειγμα δήλωση τύπου στοιχείου: TITLE (επιτρέπεται να περιέχονται μόνο δεδομένα στοιχείων - απαγορεύονται τα θυγατρικά στοιχεία): <!ELEMENT TITLE (#PCDATA)> Παράδειγμα δήλωση τύπου στοιχείου: GENERAL (μπορεί να περιέχει οποιονδήποτε τύπο περιεχομένου): <!ELEMENT GENERAL ANY>

Μορφή δήλωσης τύπου στοιχείων <?xml version="1.0"?> <!DOCTYPE COLLECTION [ <!ELEMENT COLLECTION (CD)+> <!ELEMENT CD (#PCDATA)> <!-- Σε ένα DTD μπορείτε να βάλετε και σχόλια. --> ] > <COLLECTION> <CD>Mozart Violin Concertos 1, 2, and 3</CD> <CD>Telemann Trumpet Concertos</CD> <CD>Handel Concerti Grossi Op. 3</CD> </COLLECTION> Πλήρες έγγραφο XML με δύο τύπους στοιχείων: - Η δήλωση του τύπου COLLECTION δείχνει ότι μπορεί να περιέχει ένα ή περισσότερα στοιχεία CD - Η δήλωση του τύπου στοιχείου CD προϋποθέτει ότι μπορεί να περιέχει μόνο δεδομένα χαρακτήρων

Η προδιαγραφή περιεχομένου στοιχείου Περιεχόμενο EMPTY: το στοιχείο πρέπει να είναι κενό, δεν μπορεί να έχει περιεχόμενο <!ELEMENT IMAGE EMPTY> Τα στοιχεία που ακολουθούν είναι έγκυρα στοιχεία ELEMENT: <IMAGE></IMAGE> <IMAGE/> Περιεχόμενο ANY: το στοιχείο μπορεί να έχει οποιονδήποτε έγκυρο τύπο περιεχομένου (μπορεί να περιέχει κανένα ή περισσότερα θυγατρικά στοιχεία, σε οποιαδήποτε σειρά ή σε οποιονδήποτε αριθμό επαναλήψεων, με ή χωρίς την παρουσία δεδομένων χαρακτήρων) - η πιο ελαστική προδιαγραφή περιεχομένου, δημιουργεί τύπο στοιχείου χωρίς περιορισμούς περιεχομένου <!ELEMENT MISC ΑΝΥ>

Η προδιαγραφή περιεχομένου στοιχείου Περιεχόμενο στοιχείου (γνωστό και ως θυγατρικό περιεχόμενο): το στοιχείο μπορεί να περιλαμβάνει θυγατρικά στοιχεία, δεν μπορεί όμως να περιλαμβάνει δεδομένα χαρακτήρων Μικτό περιεχόμενο: το στοιχείο μπορεί να περιλαμβάνει οποιαδήποτε ποσότητα δεδομένων χαρακτήρων, τα οποία παρατίθενται προαιρετικά μαζί με θυγατρικά στοιχεία των συγκεκριμένων τύπων

Προσδιορισμός περιεχομένου στοιχείων Αν ένα στοιχείο έχει περιεχόμενο, μπορεί να περιέχει άμεσα μόνο τα προσδιορισμένα θυγατρικά στοιχεία και όχι δεδομένα χαρακτήρων Στο έγγραφο, μπορείτε να διαχωρίζετε, αν θέλετε, τα θυγατρικά στοιχεία με χαρακτήρες κενού χώρου για να είναι πιο ευανάγνωστα (Ο επεξεργαστής αγνοεί τους χαρακτήρες και δεν τους μεταφέρει στην εφαρμογή)

Προσδιορισμός περιεχομένου στοιχείων Έγγραφο ΧΜL που περιγράφει ένα βιβλίο: <?xml version="1.0"?> <!DOCTYPE BOOK ] > [ <BOOK> </BOOK> <!ELEMENT BOOK (TITLE, AUTHOR)> <!ELEMENT TITLE (#PCDATA)> <!ELEMENT AUTHOR (#PCDATA)> <TITLE>The Scarlet Letter</TITLE> <AUTHOR>Nathaniel Hawthorne</AUTHOR>

Προσδιορισμός περιεχομένου στοιχείων Ο τύπος του στοιχείου BOOK έχει περιεχόμενο Τα (TITLE, AUTHOR) που ακολουθούν το όνομα του στοιχείου στη δήλωση είναι γνωστά ως μοντέλο περιεχομένου (content model) To μοντέλο περιεχομένου δείχνει τους επιτρεπόμενους τύπους θυγατρικών στοιχείων και τη διάταξή τους Το μοντέλο περιεχομένου δηλώνει ότι ένα στοιχείο BOOK πρέπει να έχει ένα μόνο θυγατρικό στοιχείο TITLE ακολουθούμενο από ένα μόνο θυγατρικό στοιχείο AUTHOR Ο επεξεργαστής θα αγνοήσει τις τρεις κενές γραμμές που διαχωρίζουν τα θυγατρικά στοιχεία μεταξύ τους μέσα στο στοιχείο BOOK

Μορφές μοντέλου περιεχομένου Ακολουθία: Η μορφή ακολουθίας (sequence) του μοντέλου περιεχομένου δείχνει ότι το στοιχείο πρέπει να έχει μια συγκεκριμένη ακολουθία θυγατρικών στοιχείων. Tα ονόματα των θυγατρικών στοιχείων διαχωρίζονται με κόμματα Επιλογή: Η μορφή επιλογής (choice) του μοντέλου περιεχομένου δείχνει ότι το στοιχείο μπορεί να περιέχει οποιοδήποτε από μία σειρά θυγατρικών στοιχείων, για το διαχωρισμό των οποίων χρησιμοποιούνται χαρακτήρες.

Ακολουθία Το στοιχείο εγγράφου MOUNTAIN πρέπει να έχει ένα θυγατρικό στοιχείο NAME, ακολουθούμενο από ένα θυγατρικό στοιχείο HEIGHT και αυτό με τη σειρά του από ένα θυγατρικό στοιχείο STATE <!DOCTYPE MOUNTAIN > [ <!ELEMENT MOUNTAIN (NAME, HEIGHT, STATE)> <!ELEMENT NAME (#PCDATA)> <!ELEMENT HEIGHT (#PCDATA)> <!ELEMENT STATE (#PCDATA)> ]

Ακολουθία Είναι έγκυρο το έγγραφο που ακολουθεί? <MOUNTAIN> <NAME>Wheeler</NAME> <HEIGHT>13161</HEIGHT> <STATE>New Mexico</STATE> </MOUNTΑΙΝ> ΝΑΙ!!! Είναι έγκυρο το έγγραφο που ακολουθεί? <MOUNTAIN> <STATE>New Mexico</STATE> <NAME>Wheeler</NAME> <HEIGHT>13161</HEIGHT> </M0UNTAIN> ΟΧΙ!!! Η παράλειψη θυγατρικού στοιχείου ή η παράθεση του ίδιου θυγατρικού στοιχείου περισσότερες από μία φορές είναι περιπτώσεις στις οποίες το έγγραφο και πάλι γίνεται μη έγκυρο.

Επιλογή Ένα στοιχείο FILM μπορεί να περιέχει ένα θυγατρικό στοιχείο STAR ή ένα θυγατρικό στοιχείο NARRATOR ή ένα θυγατρικό στοιχείο INSTRUCTOR: <!DOCTYPE FILM [ <!ELEMENT FILM (STAR NARRATOR INSTRUCTOR)> <!ELEMENT STAR (#PCDATA)> <!ELEMENT NARRATOR (#PCDATA)> <!ELEMENT INSTRUCTOR (#PCDATA)> ] >

Επιλογή Είναι έγκυρα τα στοιχεία εγγράφου που ακολουθούν? <FILM> </FILM> <STAR>Robert Redford</STAR> <FILM> </FILM> <NARRATOR>Sir Gregory Parsloe</NARRATOR> <FILM> <INSTRUCTOR>Galahad Threepwood</INSTRUCTOR> </FILM> ΝΑΙ!!!!!

Επιλογή Είναι έγκυρο το ακόλουθο? <FILM> <NARRATOR>Sir Gregory Parsloe</NARRATOR> <INSTRUCTOR>Galahad Threepwood</INSTRUCTOR> </FILM> ΟΧΙ!!!!!

Τροποποίηση μορφών μοντέλου περιεχομένου Χαρακτήρας Σημασία? Κανένα ή ένα προηγούμενο αντικείμενο + Ένα ή περισσότερα από το αντικείμενο που προηγείται * Κανένα ή περισσότερα από το αντικείμενο που προηγείται

Παράδειγμα Η ακόλουθη δήλωση σημαίνει ότι μπορούμε να συμπεριλάβουμε ένα ή περισσότερα θυγατρικά στοιχεία NAME και ότι το θυγατρικό στοιχείο HEIGHT είναι προαιρετικό: <!ELEMENT MOUNTAIN (NAME+, HEIGHT?, STATE)> Είναι έγκυρο το παρακάτω στοιχείο? <MΟUNTAIN> <NAME>Pueblo Peak</NAME> <NAME>Taos Mountain</NAME> <STATE>New Mexico</STATE> </MOUNTAIN> ΝΑΙ!!!!!

Παράδειγμα Η ακόλουθη δήλωση σημαίνει ότι μπορούμε να συμπεριλάβουμε κανένα ή περισσότερα θυγατρικά στοιχεία STAR ή ένα θυγατρικό στοιχείο NARRATOR ή ένα θυγατρικό στοιχείο INSTRUCTOR: <!ELEMENT FILM (STAR* NARRATOR INSTRUCTOR)> Είναι έγκυρα τα παρακάτω στοιχεία? <FILM> </FILM> <FILM> </FILM> <FILM/> <STAR>Tom Hanks</STAR> <STAR>Meg Ryan</STAR> <NARRATOR>Sir Gregory Parsloe</NARRATOR> ΝΑΙ!!!!!

Παράδειγμα Χαρακτήρες?, + ή * για τροποποίηση ΟΛΟΚΛΗΡΟΥ του μοντέλου περιεχομένου, τοποθετώντας το χαρακτήρα αμέσως μετά από την τελική παρένθεση

Παράδειγμα Συμπεριλαμβάνουμε ένα ή περισσότερα θυγατρικά στοιχεία οποιουδήποτε από τους τρεις τύπους σε οποιαδήποτε σειρά: <!ELEMENT FILM (STAR NARRATOR INSTRUCTOR)+> Είναι έγκυρα τα παρακάτω στοιχεία? <FILM> </FILM> <FILM> </FILM> <FILM> </FILM> <NARRATOR>Bertram Wooster</NARRATOR> <STAR>Sean Connery</STAR> <NARRATOR>Plug Basham</NARRATOR> <STAR>Sean Connery</STAR> <STAR>Meg Ryan</STAR> <INSTRUCTOR>Stinker Pike</INSTRUCTOR> ΝΑΙ!!!!!

Παράδειγμα Δημιουργία πιο σύνθετων μοντέλων περιεχομένου τοποθετώντας ένα μοντέλο περιεχομένου επιλογής ως ένθετο μέσα σε μοντέλο ακολουθίας ή αντίστροφα Το παρακάτω DTD ορίζει ότι το στοιχείο FILM πρέπει να έχει ένα θυγατρικό στοιχείο TITLE το οποίο να ακολουθείται από ένα θυγατρικό στοιχείο CLASS και αυτό από ένα θυγατρικό στοιχείο STAR, NARRATOR, ή INSTRUCTOR: <!DOCTYPE FILM [ <!ELEMENT FILM (TITLE, CLASS, (STAR NARRATOR INSTRUCTOR))> <!ELEMENT TITLE (#PCDATA)> <!ELEMENT CLASS (#PCDATA)> <!ELEMENT STAR (#PCDATA)> <!ELEMENT NARRATOR (#PCDATA)> <!ELEMENT INSTRUCTOR (#PCDATA)> ]

Παράδειγμα 1) 2) Είναι συντακτικά σωστά τα παρακάτω έγγραφα? <FILM> <TITLE>The Net</TITLE> <CLASS>fictional</CLASS> <STAR>Sandra Bullock</STAR> </FILM> <FILM> <TITLE>How to Use XML</TITLE> <CLASS>instructional</CLASS> <INSTRUCTOR>Penny Donaldson</INSTRUCTOR> </FILM> ΝΑΙ!!!!!

Προσδιορισμός μικτού περιεχομένου Ένα στοιχείο με μικτό περιεχόμενο μπορεί να περιέχει δεδομένα χαρακτήρων Αν στη δήλωση ορίζονται ένα ή περισσότερα θυγατρικά στοιχεία, τότε μπορεί να περιέχει οποιοδήποτε από αυτά τα θυγατρικά στοιχεία σε οποιαδήποτε σειρά και με οποιαδήποτε συχνότητα εμφάνισης (καμία ή περισσότερες φορές) ΔΗΛΑΔΗ με το μικτό περιεχόμενο περιορίζονται οι τύποι των θυγατρικών στοιχείων, ΟΧΙ ΟΜΩΣ η σειρά ή ο αριθμός εμφανίσεων ενός θυγατρικού στοιχείου, ούτε μπορεί να οριστεί ως υποχρεωτικό κάποιο συγκεκριμένο θυγατρικό στοιχείο

Μορφές μοντέλου περιεχομένου Δεδομένα μόνο χαρακτήρων: ορισμός στοιχείου που περιέχει μόνο δεδομένα χαρακτήρων με το μοντέλο περιεχομένου (#PCDATA PCDATA: parsed character data, ενώ CDATA: character data) Δεδομένα χαρακτήρων και προαιρετικά θυγατρικά στοιχεία: ορισμός στοιχείου που περιέχει δεδομένα χαρακτήρων και κανένα ή περισσότερα θυγατρικά στοιχεία: φτιάχνοντας μια λίστα με όλα τα θυγατρικά στοιχεία που ακολουθούν το #PCDATA στο μοντέλο περιεχομένου διαχωρίζοντας τα αντικείμενα μεταξύ τους με χαρακτήρες και τοποθετώντας έναν αστερίσκο (*) στο τέλος ολόκληρου του μοντέλου περιεχομένου Κάθε όνομα στοιχείου μπορεί να εμφανιστεί μόνο μία φορά στο μοντέλο περιεχομένου

Δεδομένα μόνο χαρακτήρων Ένα στοιχείο SUBTITLE μπορεί να περιέχει μόνο δεδομένα χαρακτήρων: <!ELEMENT SUBTITLE (#PCDATA)*> Έγκυρα στοιχεία SUBTITLE: <SUBTITLE> A new approach </SUBTITLE> <SUBTITLE></SUBTITLE> Ένα στοιχείο που έχει οριστεί να περιέχει δεδομένα χαρακτήρων μπορεί να περιέχει μηδέν χαρακτήρες μπορεί να μείνει κενό

Δεδομένα χαρακτήρων και προαιρετικά θυγατρικά στοιχεία Ένα στοιχείο TITLE μπορεί να περιέχει δεδομένα χαρακτήρων και μηδέν ή περισσότερα θυγατρικά στοιχεία SUBTITLE: <!ELEMENT TITLE (#PCDATA SUBTITLE)*> Έιναι έγκυρα στοιχεία TITLE? <TITLE> </TITLE> <TITLE> </TITLE> Moby-Dick <SUBTITLE>Or, the Whale</SUBTITLE> <SUBTITLE>Or, the Whale</SUBTITLE> Moby-Dick ΝΑΙ!!!!!

Δεδομένα χαρακτήρων και προαιρετικά θυγατρικά στοιχεία Είναι έγκυρα στοιχεία TITLE? <TITLE> Moby-Dick </TITLE> <TITLE> <SUBTITLE>Or, the Whale</SUBTITLE> <SUBTITLE>Another Subtitle</SUBTITLE> </TITLE> <TITLE></TITLE> ΝΑΙ!!!!!

Δηλώσεις Τύπου Στοιχείων Δήλωση Σημασία R? 0 ή 1 στιγμιότυπο του R R+ 1 ή περισσότερα στιγμιότυπα του R R* 0 ή περισσότερα στιγμιότυπα του R R 1, R 2,, Rn R 1 R 2 Rn EMPTY ANY #PCDATA 1 στιγμιότυπο του R 1 ακολουθούμενο από 1 στιγμ. του R 2,...,ακολουθούμενο από 1 στιγμ. του Rn 1 στιγμιότυπο του R 1 ή του R 2 ή... ή του Rn Κενό στοιχείο Οτιδήποτε Χαρακτήρες που έχουν υποστεί συντακτική ανάλυση

Check validity! DTD <!ELEMENT a (b+, c?) > <!ELEMENT b (#PCDATA) > <!ELEMENT c (#PCDATA) > <!-- XML Data--> <!-- XML Data--> <a> <a> <b> Some </b> <b> Some </b> <c> 100 </c> <c> 101 </c> ΟΧΙ!!!!! <b> Thing </b> </a> ΝΑΙ!!!!! </a>

DTD:Δηλώσεις Τύπου Στοιχείων: Παράδειγμα Με την έκφραση: <!ELEMENT s (a, b?,c*)> δηλώνεται ότι: κάθε στοιχείο με ετικέτα s που εμφανίζεται σε ένα έγκυρο XML έγγραφο, περιλαμβάνει ένα ακριβώς στοιχείο με ετικέτα a ακολουθούμενο προαιρετικά από ένα το πολύ στοιχείο με ετικέτα b, και στη συνέχεια από οσοδήποτε μεγάλο πλήθος (μπορεί και μηδέν) στοιχείων με ετικέτα c.

DTD:Δηλώσεις Τύπου Στοιχείων: Παράδειγμα Με την έκφραση: <!ELEMENT e ((c?, d)* (d, c)*)> δηλώνεται ότι κάθε στοιχείο με ετικέτα e που εμφανίζεται σε ένα έγκυρο XML έγγραφο, περιλαμβάνει: μια ακολουθία από (μηδέν ή περισσότερα) ζεύγη στοιχείων c, d από τα οποία το c είναι προαιρετικό, είτε μια ακολουθία από (μηδέν ή περισσότερα) ζεύγη στοιχείων d, c.

DTD:Δηλώσεις Τύπου Στοιχείων: Παράδειγμα (συνέχεια) ΝΑΙ!!!!! Είναι έγκυρο XML έγγραφο? <e> <d/> <d/> <c/> <d/> <d/> </e> Είναι έγκυρο XML έγγραφο? <e> <d/> <c/> <c/> <d/> </e> ΟΧΙ!!!!!

Check validity <!DOCTYPE ProductInformation [ <!ELEMENT ProductInformation (ProductName,Price)> <!ELEMENT ProductName (#PCDATA)> <!ELEMENT Price (#PCDATA)> ]> Είναι έγκυρο? <ProductInformation> <Price/> </ProductInformation> Είναι έγκυρο? <ProductInformation> <ProductName/> </ProductInformation> ΟΧΙ!!!!! ΟΧΙ!!!!!

Check validity <!DOCTYPE ProductInformation [ <!ELEMENT ProductInformation (ProductName,Price)> <!ELEMENT ProductName (#PCDATA)> <!ELEMENT Price (#PCDATA)> ]> Είναι έγκυρο? <ProductInformation> <ProductName> <Price/> </ProductName> </ProductInformation> Είναι έγκυρο? <ProductInformation> <ProductName/> <Price/> </ProductInformation> ΟΧΙ!!!!! ΝΑΙ!!!!!

Check validity <!DOCTYPE ProductInformation [ <!ELEMENT ProductInformation (ProductName,Price)> <!ELEMENT ProductName (#PCDATA)> <!ELEMENT Price (#PCDATA)> ]> Είναι έγκυρο? <ProductInformation> <Price/> <ProductName/> </ProductInformation> ΟΧΙ!!!!!

Check validity <?xml version="1.0"?> <!DOCTYPE element[ <!ELEMENT element (elmnt1,elmnt2?)+> <!ELEMENT elmnt1 (#PCDATA)> <!ELEMENT elmnt2 (#PCDATA)> ]> <element> <elmnt1></elmnt1> <elmnt2></elmnt2> <elmnt1></elmnt1> <elmnt2></elmnt2> </element> ΝΑΙ!!!!!

Check validity <?xml version="1.0"?> <?xml version="1.0"?> <!DOCTYPE element[ <!ELEMENT element (elmnt1,elmnt2?)+> <!ELEMENT elmnt1 (#PCDATA)> <!ELEMENT elmnt2 (#PCDATA)> ]> <element> </element> ΟΧΙ!!!!!

Check validity <?xml version="1.0"?> <?xml version="1.0"?> <!DOCTYPE element[ <!ELEMENT element (elmnt1*,elmnt2)?> <!ELEMENT elmnt1 (#PCDATA)> <!ELEMENT elmnt2 (#PCDATA)> ]> <element> <elmnt1></elmnt1> <elmnt2></elmnt2> <elmnt1></elmnt1> <elmnt2></elmnt2> </element> ΟΧΙ!!!!!

Check validity <?xml version="1.0"? > <!DOCTYPE element [ <!ELEMENT element (elmnt1*, elmnt2)? > <!ELEMENT elmnt1 (#PCDATA) > <!ELEMENT elmnt2 (#PCDATA) > ] > <element> </element> ΝΑΙ!!!!!

Δήλωση ιδιοτήτων Σε ένα έγκυρο έγγραφο XML, πρέπει να δηλώνονται με σαφήνεια όλες οι ιδιότητες που χρησιμοποιούνται με τα στοιχεία του εγγράφου Ορισμός των ιδιοτήτων με τη βοήθεια σήμανσης DTD, δήλωση λίστας ιδιοτήτων (attribute-list declaration): Ορίζει τα ονόματα των ιδιοτήτων που έχουν σχέση με το στοιχείο. Σε ένα έγκυρο έγγραφο συμπεριλαμβάνονται στην ετικέτα αρχής ενός έγκυρου στοιχείου μόνο οι ιδιότητες που έχουν οριστεί για το έγγραφο αυτό Ορίζει τον τύπο δεδομένων για κάθε ιδιότητα Ορίζει αν είναι απαραίτητη κάποια ιδιότητα. Αν η ιδιότητα δεν είναι απαραίτητη, η δήλωση λίστας ιδιοτήτων δείχνει επίσης τι πρέπει να κάνει ο επεξεργαστής στην περίπτωση που η ιδιότητα αυτή παραλειφθεί

Μορφή δήλωσης λίστας ιδιοτήτων Η δήλωση λίστας ιδιοτήτων έχει την εξής μορφή: <!ATTLIST Όνομα AttDefs> Όνομα είναι το όνομα του στοιχείου που συνδέεται με την ιδιότητα ή τις ιδιότητες AttDefs είναι μια σειρά από έναν ή περισσότερους ορισμούς ιδιοτήτων, καθένας από τους οποίους προσδιορίζει μια ιδιότητα Ένας ορισμός ιδιότητας έχει την εξής μορφή: Όνομα AttType DefaultDecl Όνομα είναι το όνομα της ιδιότητας AttType είναι ο τύπος ιδιότητας (attribute type), το είδος δηλαδή της τιμής που μπορεί να αποδοθεί στην ιδιότητα DefaultDecl είναι η δήλωση προεπιλογής (default declaration) που δείχνει αν η ιδιότητα είναι απαραίτητη και παρέχει και άλλες πληροφορίες

Μορφή δήλωσης λίστας ιδιοτήτων Δήλωση στοιχείου με το όνομα FILM: <!ELEMENT FILM (TITLE, (STAR NARRATOR INSTRUCTOR))> Παράδειγμα δήλωσης λίστας ιδιοτήτων όπου ορίζονται δύο ιδιότητες με τα ονόματα Class και Year για τα στοιχεία FILM: <!ATTLIST FILM Class CDATA "fictional Year CDATA #REQUIRED>

Μορφή δήλωσης λίστας ιδιοτήτων Ο τύπος της ιδιότητας Class είναι οποιοδήποτε συντακτικά σωστό αλφαριθμητικό σε εισαγωγικά (λέξηκλειδί CDATA) Αν παραληφθεί η ιδιότητα από ένα συγκεκριμένο στοιχείο, τότε το στοιχείο αυτό θα πάρει αυτόματα την προεπιλεγμένη τιμή "fictional" Ο τύπος της ιδιότητας Year είναι οποιοδήποτε συντακτικά σωστό αλφαριθμητικό σε εισαγωγικά ΟΜΩΣ αυτή η ιδιότητα πρέπει να παίρνει τιμή σε κάθε στοιχείο του FILM (λέξη-κλειδί #REQUIRED) δεν έχει προεπιλεγμένη τιμή

Μορφή δήλωσης λίστας ιδιοτήτων Πλήρες έγγραφο XML που περιλαμβάνει τη δήλωση λίστας ιδιοτήτων και ένα στοιχείο FILM: <?xml version="1.0"?> <!DOCTYPE FILM > [ <!ELEMENT FILM (TITLE, (STAR NARRATOR INSTRUCTOR))> <!ATTLIST FILM Class CDATA "fictional" Year CDATA #REQUIRED> <!ELEMENT TITLE (#PCDATA)> <!ELEMENT STAR (#PCDATA)> <!ELEMENT NARRATOR (#PCDATA)> <!ELEMENT INSTRUCTOR (#PCDATA)> ] <FILM Year="1948"> </FILM> <TITLE>The Morning After</TITLE> <STAR>Morgan Attenbury</STAR> Στο στοιχείο FILM: - η ιδιότητα Year έχει πάρει την τιμή "1948«- η ιδιότητα Class έχει παραλειφθεί λόγω του ότι η ιδιότητα αυτή έχει προεπιλεγμένη τιμή ("fictional )

Τύπος ιδιότητας Ο τύπος ιδιότητας (attribute type) είναι το δεύτερο απαιτούμενο μέρος του ορισμού ιδιότητας Προσδιορίζει το είδος της τιμής που αποδίδεται στην ιδιότητα μέσα στο έγγραφο

Τύπος ιδιότητας Τύπος αλφαριθμητικού: μπορεί να πάρει οποιοδήποτε αλφαριθμητικό σε εισαγωγικά (quoted string κυριολεκτικό αλφαριθμητικό) που να συμφωνεί με τους γενικούς κανόνες για έγκυρες τιμές ιδιοτήτων Για δήλωση ιδιότητας τύπου ακολουθίας, χρήση της λέξης CDATA: <!ATTLIST FILM Class CDATA fictional"> Διακριτός τύπος (tokenized type): Οι τιμές που μπορεί να πάρει μια ιδιότητα διακριτού τύπου υπακούουν σε ποικίλους περιορισμούς Απαριθμητός τύπος (enumerated type): απόδοση καθορισμένης τιμής σε ιδιότητα απαριθμητού τύπου

Προσδιορισμός διακριτού τύπου Η τιμή που αποδίδεται σε ένα διακριτό τύπο πρέπει να: είναι αλφαριθμητικό σε εισαγωγικά, που ακολουθεί τους γενικούς κανόνες για έγκυρες τιμές ιδιοτήτων σύμφωνη με τον περιορισμό που ορίζεται στον ορισμό της ιδιότητας χρησιμοποιώντας την κατάλληλη λέξη-κλειδί

Λέξεις-κλειδιά για ορισμό ιδιοτήτων διακριτού τύπου ID: Σε κάθε στοιχείο, η ιδιότητα πρέπει να έχει μοναδική τιμή IDREF: Η τιμή ιδιότητας πρέπει να ταιριάζει με την τιμή κάποιας άλλης ιδιότητας τύπου ID ενός στοιχείου που να περιέχεται στο έγγραφο IDREFS: ίδιος με τον τύπο IDREF, μόνο που η τιμή του μπορεί να περιέχει αναφορές σε διάφορα αναγνωριστικά που διαχωρίζονται μεταξύ τους με κενά διαστήματα που βρίσκονται στο αλφαριθμητικό εισαγωγικών ENTITY: πρέπει να ταιριάζει με το όνομα κάποιας μη αναλυόμενης (parsed) οντότητας που έχει δηλωθεί στο DTD

Λέξεις-κλειδιά για ορισμό ιδιοτήτων διακριτού τύπου ENTITIES: ίδιος με τον τύπο ENTITY, μόνο που η τιμή του μπορεί να περιλαμβάνει τα ονόματα διαφόρων μη αναλυόμενων οντοτήτων που διαχωρίζονται μεταξύ τους με κενά διαστήματα και βρίσκονται μέσα στο αλφαριθμητικό εισαγωγικών ΝΜΤΟΚΕΝ: Η τιμή είναι διακριτό όνομα, δηλ. όνομα που αποτελείται από ένα ή περισσότερα γράμματα, ψηφία, τελείες, παύλες, ή χαρακτήρες υπογράμμισης NMTOKENS: ίδιος με τον τύπο ΝΜΤΟΚΕΝ, μόνο που η τιμή μπορεί να περιλαμβάνει διάφορα διακριτά ονόματα (name tokens) που διαχωρίζονται μεταξύ τους με κενά διαστήματα και βρίσκονται σε αλφαριθμητικό εισαγωγικών

ID Η τιμή της ιδιότητας πρέπει να ξεκινάει με κάποιο γράμμα ή με χαρακτήρα υπογράμμισης ακολουθούμενο από κανένα ή από περισσότερα γράμματα, ψηφία, τελείες, παύλες, ή χαρακτήρες υπογράμμισης Μπορεί επίσης να περιλαμβάνει άνω και κάτω τελεία (:) όχι όμως ως πρώτο χαρακτήρα Ένας συγκεκριμένος τύπος στοιχείου μπορεί να έχει μόνο μία ιδιότητα ID και η προεπιλεγμένη δήλωσή της πρέπει να είναι ή #REQUIRED ή #IMPLIED

ID Χρήση λέξης-κλειδιού ID για ορισμό ιδιότητας StockCode ως διακριτός τύπος ID λέξη-κλειδί για τη δήλωση διακριτού τύπου (για κάθε στοιχείο η ιδιότητα πρέπει να πάρει μια μοναδική τιμή) Δεν επιτρέπεται ο κωδικός αποθέματος "S021" σε δύο στοιχεία ITEM <?xml version=" 1. 0"?> <!DOCTYPE INVENTORY > [ <!ELEMENT INVENTORY (ITEM*)> <!ELEMENT ITEM (#PCDATA)> <!ATTLIST ITEM StockCode ID #REQUIRED> ] <INVENTORY> <!-- Κάθε ITEM πρέπει να έχει διαφορετική τιμή StockCode. --> <ΙΤΕΜ StockCode="S021">Peach Tea Pot</ITEM> <ITEM StockCode="S034">Electric Coffee Grinder</ITEM> <ITEM StockCode="S086">Candy Thermometer</ITEM> </INVENTORY>

IDREF O τύπος ιδιότητας αναφέρεται στο μοναδικό αναγνωριστικό κάποιας άλλης ιδιότητας Π.χ. Προσθήκη ιδιότητας IDREF με το όνομα GoesWith στο στοιχείο ITEM: <!ELEMENT ITEM (#PCDATA)> <!ATTLIST ITEM StockCode ID #REQUIRED GoesWith IDREF #IMPLIED> Χρήση ιδιότητας αυτής για να αναφερθούμε σε κάποιο άλλο στοιχείο ITEM: <ΙΤΕΜ StockCode="S034">Electric Coffee Grinder</ITEM> <ΙΤΕΜ StockCode="S047 GoesWith="S034"> Coffee Grinder Brush </ITEM>

IDREFS H τιμή του μπορεί να περιέχει αναφορές σε διάφορα αναγνωριστικά που διαχωρίζονται μεταξύ τους με κενά διαστήματα, tα οποία βρίσκονται στο αλφαριθμητικό εισαγωγικών Π.χ. Προσθήκη ιδιότητας IDREFS με το όνομα GoesWith στο στοιχείο ITEM: <!ATTLIST ITEM StockCode ID #REQUIRED GoesWith IDREFS #IMPLIED> Χρήση ιδιότητας αυτής για να αναφερθούμε σε άλλα στοιχεία ITEM: <ΙΤΕΜ StockCode="S034">Electric Coffee Grinder</ITEM> <ΙΤΕΜ StockCode="S039 >1 pound breakfast blend coffee beans</item> <ΙΤΕΜ StockCode="S047 GoesWith="S034 S039"> Coffee Grinder Brush </ITEM>

ENTITY Mια μη αναλυόμενη οντότητα αναφέρεται σε ένα εξωτερικό αρχείο, ουσιαστικά σε κάποιο αρχείο που δεν αποθηκεύει δεδομένα XML Π.χ. Δήλωση στο DTD στοιχείου με το όνομα IMAGE για την αναπαράσταση μιας εικόνας, και ιδιότητα ENTITY με το όνομα Source που δείχνει την πηγή των δεδομένων γραφικών: <!ELEMENT IMAGE EMPTY> <!ATTLIST IMAGE Source ENTITY #REQUIRED> Αν έχει δηλωθεί μια μη αναλυόμενη οντότητα με το όνομα Logo που περιέχει δεδομένα γραφικών για κάποια εικόνα, αποδίδουμε την οντότητα αυτή στην ιδιότητα Source εvός στοιχείου IMAGE του εγγράφου: <IMAGE Source="Logo"/>

ENTITIES Η τιμή μπορεί να περιλαμβάνει τα ονόματα διαφόρων μη αναλυόμενων οντοτήτων που διαχωρίζονται μεταξύ τους με κενά διαστήματα και βρίσκονται μέσα στο αλφαριθμητικό εισαγωγικών Π.χ. Ορισμός ιδιότητας Source με τον τύπο ENTITIES: <!ELEMENT IMAGE EMPTY> <!ATTLIST IMAGE Source ENTITIES #REQUIRED> Αναφερόμαστε σε μη αναλυόμενες οντότητες (οντότητες που αποθηκεύουν τα δεδομένα γραφικών σε εναλλακτικές μορφές) : <IMAGE Source="LogoGif LogoBmp"/> Τα LogoGif και LogoBmp είναι τα ονόματα μη αναλυόμενων οντοτήτων που έχουν δηλωθεί στο DTD

NMTOKEN Η τιμή είναι διακριτό όνομα, δηλ. όνομα που αποτελείται από ένα ή περισσότερα γράμματα, ψηφία, τελείες, παύλες, ή χαρακτήρες υπογράμμισης Μπορεί επίσης να περιλαμβάνει άνω και κάτω τελεία (:) όχι όμως ως πρώτο χαρακτήρα Παράδειγμα: <!ELEMENT BOOK (#PCDATA)> <!ATTLIST BOOK ISBN ΝΜΤΟΚΕΝ #REQUIRED> <ΒΟΟΚ ISBN="9-99999-999-9" >The Portrait of a Lady</BOOK> Παράδειγμα: <!ATTLIST report phase NMTOKEN #IMPLIED > <report phase="draft"> <report phase="preliminary draft"> Σωστό ή λάθος? Σωστό ή λάθος?

NMTOKENS H τιμή μπορεί να περιλαμβάνει διάφορα διακριτά ονόματα (name tokens) που διαχωρίζονται μεταξύ τους με κενά διαστήματα, τα οποία βρίσκονται σε αλφαριθμητικό εισαγωγικών Παράδειγμα: <!ELEMENT SHIRT (#PCDATA)> <!ATTLIST SHIRT Codes NMTOKENS #REQUIRED> Έτσι δίνουμε στην ιδιότητα διάφορες τιμές διακριτών ονομάτων: <SHIRT Codes="38 21 97">long sleeve Henley</SHIRT>

Προσδιορισμός απαριθμητού τύπου Η τιμή που αποδίδεται σε ένα διακριτό τύπο πρέπει να: είναι αλφαριθμητικό σε εισαγωγικά, που ακολουθεί τους γενικούς κανόνες για έγκυρες τιμές ιδιοτήτων σύμφωνη με κάποιο από τα ονόματα που παραθέτουμε στην προδιαγραφή τύπου ιδιοτήτων και η οποία έχει συγκεκριμένη μορφή: Αριστερή παρένθεση, ακολουθούμενη από έναν κατάλογο διακριτών ονομάτων που διαχωρίζονται μεταξύ τους με χαρακτήρες ( Ι ) και στη συνέχεια δεξιά παρένθεση Η λέξη κλειδί NOTATION ακολουθούμενη από κενό, αριστερή παρένθεση, κατάλογο με ονόματα σημειογραφίας με χαρακτήρες ( Ι ) ανάμεσα τους, και δεξιά παρένθεση

Προσδιορισμός απαριθμητού τύπου Αριστερή παρένθεση, ακολουθούμενη από κατάλογο διακριτών ονομάτων που διαχωρίζονται μεταξύ τους με χαρακτήρες ( Ι ) και στη συνέχεια δεξιά παρένθεση Ένα διακριτό όνομα (name token) είναι ένα όνομα που αποτελείται από ένα ή περισσότερα γράμματα, ψηφία, τελείες, παύλες, ή χαρακτήρες υπογράμμισης και μπορεί επίσης να περιλαμβάνει άνω και κάτω τελεία (:) σε οποιαδήποτε θέση εκτός από την αρχική Παράδειγμα: περιορισμός τιμών ιδιότητας Class σε "fictional","instructional", ή "documentary": <!ATTLIST FILM Class (fictional instructional documentary) "fictional >

Προσδιορισμός απαριθμητού τύπου Πλήρες έγγραφο XML με χρήση ιδιότητας Class: <?xml version^"1. 0"?> <!DOCTYPE FILM [ > <!ELEMENT FILM (TITLE, (STAR NARRATOR INSTRUCTOR) )> <!ATTLIST FILM Class (fictional instructional documentary) "fictional"> <!ELEMENT TITLE ( #PCDATA)> <!ELEMENT STAR ( #PCDATA)> <!ELEMENT NARRATOR ( #PCDATA)> <!ELEMENT INSTRUCTOR ( #PCDATA)> ] <FILM Class = "instructional"> </FILM> <TITLE>The Use and Care of XML</TITLE> <NARRATOR>Michael Young</NARRATOR> - Αν παραλείψουμε την ιδιότητα Class, θα πάρει την τιμή "fictional" - Αν αποδώσουμε στην ιδιότητα Class τιμή άλλη εκτός από τις "fictional", "instructional", ή "documentary", τότε σφάλμα εγκυρότητας.

Δήλωση προεπιλογής Το τρίτο και τελευταίο απαραίτητο στοιχείο ενός ορισμού ιδιότητας! Προσδιορίζει αν η ιδιότητα είναι απαραίτητη και, αν δεν είναι, δείχνει τι πρέπει να κάνει ο επεξεργαστής σε περίπτωση που η ιδιότητα αυτή παραλειφθεί Η δήλωση μπορεί, για παράδειγμα, να παρέχει μια προεπιλεγμένη τιμή ιδιότητας, την οποία ο επεξεργαστής πρέπει να χρησιμοποιήσει σε περίπτωση που απουσιάζει η ιδιότητα

Μορφές δήλωσης προεπιλογής #REQUIRED: ορισμός μίας τιμής ιδιότητας για κάθε στοιχείο του ανάλογου τύπου #IMPLIED: μπορούμε να συμπεριλάβουμε ή να παραλείψουμε την ιδιότητα ενός στοιχείου του συσχετισμένου τύπου και, αν παραλείψουμε την ιδιότητα, δεν πρόκειται να μεταφερθεί οδηγία για προεπιλεγμένη τιμή στον επεξεργαστή AttValue: AttValue είναι μια προεπιλεγμένη τιμή ιδιότητας #FIXED AttValue: AttValue είναι μια προκαθορισμένη τιμή ιδιότητας (με τη μορφή αυτή συμπεριλαμβάνουμε ή παραλείπουμε την ιδιότητα από ένα στοιχείο συσχετισμένου τύπου

#REQUIRED Υποχρεωτικός ορισμός μιας τιμής στην ιδιότητα Class μέσα στην ετικέτα αρχής κάθε στοιχείου FILM του εγγράφου: <!ATTLIST FILM Class CDATA #REQUIRED>

#IMPLIED Μπορούμε να συμπεριλάβουμε ή να παραλείψουμε την ιδιότητα ενός στοιχείου του συσχετισμένου τύπου και, αν παραλείψουμε την ιδιότητα, δεν πρόκειται να μεταφερθεί οδηγία για προεπιλεγμένη τιμή στον επεξεργαστή Η μορφή αυτή μάλλον "υπονοεί" παρά "δηλώνει" μια τιμή και, με τον τρόπο αυτόν, η εφαρμογή χρησιμοποιεί τη δική της προεπιλεγμένη τιμή, δηλαδή το όνομα Ο προσδιορισμός τιμής για την ιδιότητα Class σε ένα στοιχείο FILM είναι προαιρετικός και το έγγραφο δεν παρέχει προεπιλεγμένη τιμή Class : <!ATTLIST FILM Class CDATA #IMPLIED>

AttValue Προεπιλεγμένη τιμή ιδιότητας Συμπεριλαμβάνουμε ή παραλείπουμε την ιδιότητα από κάποιο στοιχείο συσχετισμένου τύπου Αν την παραλείψουμε, ο επεξεργαστής χρησιμοποιεί την προεπιλεγμένη τιμή (σαν να είχαμε συμπεριλάβει την ιδιότητα και είχαμε πληκτρολογήσει τη συγκεκριμένη τιμή) Η προεπιλεγμένη τιμή πρέπει, φυσικά, να συμφωνεί με το δηλωμένο τύπο ιδιότητας Η δήλωση αποδίδει την προεπιλεγμένη τιμή "fictional" στην ιδιότητα Class: <!ATTLIST FILM Class CDATA "fictional"> Με τη δήλωση αυτή, τα παρακάτω δύο στοιχεία είναι ισοδύναμα: <FILM>The Graduate</FILM> <FILM Class="fictional">The Graduate</FILM>

#FIXED AttValue AttValue: Προκαθορισμένη τιμή ιδιότητας Συμπεριλαμβάνουμε ή παραλείπουμε την ιδιότητα από στοιχείο συσχετισμένου τύπου Αν την παραλείψουμε, ο επεξεργαστής χρησιμοποιεί την προεπιλεγμένη τιμή, αν την συμπεριλάβουμε, πρέπει να ορίσουμε την προεπιλεγμένη τιμή Η δήλωση ορίζει μια σταθερή προεπιλεγμένη τιμή για την ιδιότητα Class: <!ATTLIST FILM Class CDATA #FIXED "documentary"> Είναι έγκυρα αυτά τα στοιχεία? <FILM>The Making of XML</FILM> <FILM Class ="documentary">the Making of XML</FILM> Είναι έγκυρο αυτό το στοιχείο? <FILM Class="instructional">The Making of XML</FILM> ΝΑΙ!!!!! ΟΧΙ!!!!!

Συνοψίζοντας...

Δηλώσεις Λίστας Ιδιοτήτων: Παράδειγμα <!ATTLIST φοιτητής ΑΜ CDATA #REQUIRED ΑΔΤ CDATA #IMPLIED> Το στοιχείο φοιτητής έχει δύο ιδιότητες με ονόματα ΑΜ και ΑΔΤ. Και οι δύο ιδιότητες είναι του τύπου CDATA. Η παρουσία της ιδιότητας ΑΜ είναι υποχρεωτική σε κάθε εμφάνιση του στοιχείου φοιτητής (λόγω του #REQUIRED). Η παρουσία της ιδιότητας ΑΔΤ δεν είναι υποχρεωτική (λόγω του #IMPLIED).

Δηλώσεις Λίστας Ιδιοτήτων: Παράδειγμα Στη δήλωση λίστας ιδιοτήτων που ακολουθεί: <!ATTLIST book color (red green blue) blue > ορίζεται ότι: Το στοιχείο book έχει μία ιδιότητα με όνομα color. Η ιδιότητα αυτή μπορεί να πάρει μια από τις τιμές red, green, blue. Σε περίπτωση που η ιδιότητα απουσιάζει από ένα στοιχείο book θεωρείται ως εάν να είναι παρούσα και η τιμή της να είναι η blue (προκαθορισμένη τιμή).

Δηλώσεις Λίστας Ιδιοτήτων: Παράδειγμα Με τη δήλωση: <!ATTLIST form method CDATA #FIXED "POST"> ορίζεται ότι: το στοιχείο form διαθέτει την ιδιότητα method η οποία είναι τύπου CDATA και έχει πάντα την τιμή POST.

Οι τύποι ιδιότητας ID, IDREF, και IDREFS: Παράδειγμα DTD Ένα DTD: <!DOCTYPE οικογένεια [ <!ELEMENT οικογένεια (πρόσωπο)*> <!ELEMENT πρόσωπο (όνομα, επώνυμο)> <!ATTLIST πρόσωπο ΑΔΤ ID #REQUIRED μητέρα IDREF #IMPLIED πατέρας IDREF #IMPLIED παιδιά IDREFS #IMPLIED> <!ELEMENT όνομα (#PCDATA)> <!ELEMENT επώνυμο (#PCDATA)> ]>

Οι τύποι γνωρίσματος ID, IDREF, και IDREFS: Παράδειγμα (συνέχεια) Ένα XML έγγραφο: <οικογένεια> <πρόσωπο ΑΔΤ = "Κ123456" παιδιά = "Μ345678 Ν456789"> <όνομα> Πέτρος </όνομα> <επώνυμο> Πέτρου </επώνυμο> </πρόσωπο> <πρόσωπο ΑΔΤ = "Λ234567" παιδιά = "Μ345678 Ν456789"> <όνομα> Μαρία </όνομα> <επώνυμο> Πέτρου </επώνυμο> </πρόσωπο> <πρόσωπο ΑΔΤ = "Μ345678" πατέρας = "Κ123456" μητέρα= "Λ234567" > <όνομα> Γιώργος </όνομα> <επώνυμο> Πέτρου </επώνυμο> </πρόσωπο> <πρόσωπο ΑΔΤ = Ν456789 πατέρας = "Κ123456" μητέρα= "Λ234567" > <όνομα> Άννα </όνομα> <επώνυμο> Πέτρου-Ιωάννου </επώνυμο> </πρόσωπο>...... </οικογένεια>

XML Validation <!ELEMENT population (#PCDATA)> <!ATTLIST population year CDATA #IMPLIED> 1. <population>445</population> 2. <population year= 1999 >445</population> 3. <population year= 1998 >389</population> 4. <population year= Year of the Rabbit >445 </population> Which are valid? All are valid -- #IMPLIED means the attribute is optional. #IMPLIED: Attribute is optional, no default provided <!ATTLIST element-name attr-name attr-type attr-default...> Declares which attributes are allowed or required in which elements

XML Validation <!ELEMENT population (#PCDATA)> <!ATTLIST population year (1999 2000) #REQUIRED> 1. <population>445</population> 2. <population year= 1999 >445</population> 3. <population year= 1998 >389</population> 4. <population year= Year of the Rabbit >445 </population> Which are valid? #REQUIRED: The attribute must be explicitly provided <!ATTLIST element-name attr-name attr-type attr-default...> Declares which attributes are allowed or required in which elements Only the second line remains valid, since the attribute is now mandatory, and must be either 1999, or 2000.

XML Validation <!ELEMENT population (#PCDATA)> <!ATTLIST population year CDATA 1999 > 1. <population>445</population> 2. <population year= 1999 >445</population> 3. <population year= 1998 >389</population> <!ATTLIST element-name attr-name attr-type attr-default...> Declares which attributes are allowed or required in which elements Which of the following are valid, and what is the value of the year attribute in each of the following? All are valid. The year attribute has the value 1999 in the first two, but not the last, which is 1998.

XML Validation <!ELEMENT population (#PCDATA)> <!ATTLIST population year CDATA #FIXED 1999 > 1. <population>445</population> 2. <population year= 1999 >445</population> 3. <population year= 1998 >389</population> Which of these is valid, and what is the value of the year attribute in each? The first two are valid, the last one is not. For the first two, the value of year is 1999. #FIXED means the value must be the given value (1999). I.e., the attribute is fixed to the value given. #FIXED "value": If not explicitly provided, this value inserted by default, but only this value is allowed <!ATTLIST element-name attr-name attr-type attr-default...> Declares which attributes are allowed or required in which elements

Χρήση εξωτερικού υποσυνόλου DTD Έχουμε δει DTD που περιέχονται πλήρως στη δήλωση τύπου εγγράφου εσωτερικό υποσύνολο DTD Αν τοποθετήσουμε ολόκληρο το DTD του εγγράφου, ή μέρος του, σε ξεχωριστό αρχείο και στη συνέχεια αναφερόμαστε στο αρχείο αυτό από τη δήλωση τύπου εγγράφου εξωτερικό υποσύνολο DTD Η χρήση εξωτερικού υποσυνόλου DTD παρέχει περισσότερα πλεονεκτήματα (κυρίως για DTD που χρησιμοποιείται από ένα ολόκληρο σύνολο εγγράφων) Κάθε έγγραφο μπορεί να αναφέρεται σε ένα ξεχωριστό αρχείο DTD (ή σε αντίγραφό του) ως εξωτερικό υποσύνολο DTD Δεν χρειάζεται να γίνεται αντιγραφή των περιεχομένων του DTD σε κάθε έγγραφο που το χρησιμοποιεί και διευκολύνεται η συντήρησή του (διορθώσεις μόνο στο DTD) Πολλές από τις πρότυπες εφαρμογές XML βασίζονται σε ένα κοινό DTD το οποίο περιλαμβάνεται σε όλα τα έγραφα XML που συμμορφώνονται με την εφαρμογή

Χρήση μόνο εξωτερικού υποσυνόλου DTD Για χρήση εξωτερικού υποσυνόλου DTD, παραλείπουμε το τμήμα με τις δηλώσεις σήμανσης εντός αγκυλών ([ ]) και στη θέση του προσθέτουμε τη λέξη-κλειδί SYSTEM, ακολουθούμενη από μια περιγραφή, εντός εισαγωγικών, της θέσης του ξεχωριστού αρχείου που περιέχει το DTD Έγγραφο SIMPLE που έχει εσωτερικό υποσύνολο DTD: <?xml version="1.0"?> <!DOCTYPE SIMPLE > [ <!ELEMENT SIMPLE ANY> ] <SIMPLE> 'Ενα εξαιρετικά απλό έγγραφο XML. </SIMPLE>

Χρήση μόνο εξωτερικού υποσυνόλου DTD Έγγραφο SIMPLE με εξωτερικό υποσύνολο DTD: <?xml version=" 1. 0"?> <!DOCTYPE SIMPLE SYSTEM "Simple.dtd"> <SIMPLE> 'Eva εξαιρετικά απλό έγγραφο XML. </SIMPLE> Το αρχείο Simple.dtd έχει τα εξής περιεχόμενα: <!ELEMENT SIMPLE ANY> Το αρχείο που περιέχει το εξωτερικό υποσύνολο DTD μπορεί να περιλαμβάνει τις ίδιες δηλώσεις σήμανσης που περιλαμβάνει και το εσωτερικό υποσύνολο DTD

Χρήση μόνο εξωτερικού υποσυνόλου DTD Η περιγραφή της θέσης του αρχείου (Simple.dtd) είναι γνωστή ως κυριολεκτικό συστήματος (system literal) Μπορεί να οριοθετηθεί με τη χρήση απλών (') ή διπλών (") εισαγωγικών και περιλαμβάνει οποιουσδήποτε χαρακτήρες εκτός από τους χαρακτήρες εισαγωγικών που χρησιμοποιήθηκαν για την οριοθέτησή του Το κυριολεκτικό συστήματος προσδιορίζει το ενιαίο αναγνωριστικό πόρων (uniform resource identifier, URI) του αρχείου που περιέχει το εξωτερικό υποσύνολο DTD Προς το παρόν, το URI ταυτίζεται με μια τυπική διεύθυνση Internet Ενιαίος Εντοπιστής Πόρων (Uniform Resource Locator, URL) Μπορείτε να χρησιμοποιήσετε κάποιο πλήρως προσδιορισμένο URI: <!DOCTYPE SIMPLE SYSTEM "http://bogus.com/dtds/simple.dtd"> Μπορείτε να χρησιμοποιήσετε κάποιο μερικό URI που να προσδιορίζει μια τοποθεσία σχετική με τη θέση του εγγράφου XML που περιέχει το URI: <!DOCTYPE SIMPLE SYSTEM "Simple.dtd" >

URI To URI είναι καινούργιο, πλήρως ευέλικτο σύστημα σημειογραφίας για απόδοση διεύθυνσης πόρων To URL (Uniform Resource Locator) είναι τύπος URI που χρησιμοποιείται ευρέως οτο Internet Στο μέλλον, τα URI θα περιλαμβάνουν και άλλους τύπους σημειογραφίας για απόδοση διεύθυνσης πόρων (ακόμη είναι ακόμα στο στάδιο της δημιουργίας Τα σχετικά URI στα έγγραφα XML δουλεύουν όπως και τα σχετικά URL σε σελίδες HTML: Αν πλήρες URI εγγράφου XML: http:// bogus.com/documents/simple.xml τότε το "Simple.dtd" αναφέρεται στο http://bogus.com/documents/simple.dtd Αν το έγγραφο XML βρισκόταν στο file:///c: \XML Step by Step\Example Code\Simple.xml τότε το "Simple.dtd" αναφέρεται στο file:///c:\xmlstepbystep\example Code\Simple.dtd

Χρήση εσωτερικού και εξωτερικού υποσυνόλου DTD Για χρήση εξωτερικού και εσωτερικού υποσυνόλου DTD, πρέπει να συμπεριλάβουμε τη λέξη-κλειδί SYSTEM μαζί με το κυριολεκτικό συστήματος που δίνει τη θέση του αρχείου με το εξωτερικό υποσύνολο DTD και στη συνέχεια τις δηλώσεις σήμανσης του εσωτερικού υποσυνόλου DTD μέσα σε αγκύλες ([ ])

Χρήση εσωτερικού και εξωτερικού υποσυνόλου DTD Παράδειγμα απλού εγγράφου XML που περιέχει και εσωτερικό και εξωτερικό υποσύνολο DTD: <?xml version="1. 0"?> <!DOCTYPE BOOK SYSTEM "Book.dtd" > [ <!ATTLIST BOOK ISBN CDATA #IMPLIED Year CDATA "2000"> <!ELEMENT TITLE (#PCDATA) > ] <BOOK Year="1998"> </BOOK> <TITLE>The Scarlet Letter</TITLE> Ακολουθούν τα περιεχόμενα του αρχείου Book.dtd που περιέχει το εξωτερικό υποσύνολο DTD: <!ELEMENT BOOK ANY> <!ATTLIST BOOK ISBN NMTOKEN #REQUIRED>

Χρήση εσωτερικού και εξωτερικού υποσυνόλου DTD Συγχώνευση των περιεχομένων των δύο υποσυνόλων και δημιουργία πλήρους DTD Συγχωνευμένο DTD που ορίζει δύο στοιχεία, τα TITLE και BOOK, και δύο ιδιότητες για το στοιχείο BOOK, τις ISBN και Year. Αν μια ιδιότητα με το ίδιο όνομα και τύπο στοιχείου δηλωθεί περισσότερες από μία φορές, ο επεξεργαστής ΧΜL χρησιμοποιεί την πρώτη δήλωση και αγνοεί όλες όσες ακολουθούν

Χρήση εσωτερικού και εξωτερικού υποσυνόλου DTD Το εσωτερικό υποσύνολο DTD θεωρείται ότι προηγείται του εξωτερικού υποσυνόλου DTD. Οποιαδήποτε ιδιότητα ορίζεται στο εσωτερικό υποσύνολο έχει προτεραιότητα έναντι της αντίστοιχης ιδιότητας με το ίδιο όνομα και τον ίδιο τύπο στοιχείου, που βρίσκεται στο εξωτερικό υποσύνολο Ο επεξεργαστής XML θεωρεί ότι η ιδιότητα ISBN έχει τον τύπο CDATA και τη δήλωση προεπιλογής #IΜPLIED ΑΡΑ το παρακάτω στοιχείο (που δεν περιλαμβάνει ISBN) είναι έγκυρο: <BΟΟK Year="1850"> </ΒΟΟΚ> <TITLE>The Scarlet Letter</TITLE>

Παράβλεψη υπό συνθήκη τμημάτων εξωτερικού υποσυνόλου DTD Παράβλεψη τμήματος εξωτερικού υποσυνόλου DTD, χρησιμοποιώντας το τμήμα IGNORE Χρήση τμήματος IGNORE κατά τη δημιουργία αρχείου, προκειμένου να απενεργοποιηθεί προσωρινά ένα εναλλακτικό ή προαιρετικό σύνολο δηλώσεων σήμανσης Κάτι αντίστοιχο με την τεχνική μετατροπής σε σχόλιο κάποιου κώδικα που θέλουμε προσωρινά να παραλείψουμε Ένα τμήμα IGNORE αρχίζει με τους χαρακτήρες <![IGNORE[ και τελειώνει με τους χαρακτήρες ]]>

Παράβλεψη υπό συνθήκη τμημάτων εξωτερικού υποσυνόλου DTD Παράδειγμα ολοκληρωμένου εξωτερικού υποσυνόλου DTD που περιλαμβάνει τμήμα IGNORE

Παράβλεψη υπό συνθήκη τμημάτων εξωτερικού υποσυνόλου DTD Αν θέλετε να ενεργοποιήσουμε προσωρινά ένα σύνολο δηλώσεων σήμανσης που περιλαμβάνεται σε ένα τμήμα IGNORE, αντικατάσταση της λέξης-κλειδιού IGNORE με την INCLUDE, χωρίς αφαίρεση χαρακτήρων οριοθέτησης (<![, [ και ]]>): <! [INCLUDE! ]]> <!-- προαιρετικό τμήμα δηλώσεων οήμανσης που επανενεργοποιούνται προσωρινά --> <!ATTLIST BOOK Category CDATA "fiction"> <! ELEMENT TITLE ( #PCDATA) > <! ELEMENT AUTHOR ( #PCDATA) > Απενεργοποίηση του τμήματος, επαναφέροντας στη θέση της τη λέξη IGNORE. Ένα ένθετο τμήμα INCLUDE μέσα σε ένα τμήμα IGNORE αγνοείται από τον επεξεργαστή.

DTD για Εξειδικευμένα Πεδία Η ανάπτυξη τυποποιημένων DTD για εξειδικευμένα πεδία επιτρέπει την ανταλλαγή δεδομένων ανάμεσα σε ετερογενείς πηγές. Παράδειγμα: Μαθηματική Γλώσσα Σήμανσης (Mathematical Markup Language) (MathML). Τεχνικό εγχειρίδιο «Mathematical Markup Language (MathML) Version 2.0» από τη διεύθυνση http://www.w3.org/tr/mathml2 Κωδικοποίηση μαθηματικού υλικού στο web Η παράσταση (x+y)^2 κωδικοποιείται στην MathML ως: <apply> <power/> <apply> <plus/> <ci>x</ci> <ci>y</ci> </apply> <cn>2</cn> </apply>

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων XML Δημιουργία έγκυρων εγγράφων XML Παράδειγμα

Μετατροπή σωστά διατυπωμένου εγγράφου σε έγκυρο Να μετατραπεί το έγγραφο Inventory.xml σε έγκυρο έγγραφο και επιπλέον να προστεθεί ένα καινούριο στοιχείο και δύο ιδιότητες Στο στοιχείο BOOK θέλουμε να προσθέσουμε μια ιδιότητα απαριθμητού τύπου με το όνομα InStock. Πρόκειται για μια απαραίτητη ιδιότητα στην οποία μπορεί να αποδοθεί τιμή "yes" ή "no". Στο στοιχείο AUTHOR θέλουμε να προσθέσουμε μια ιδιότητα τύπου ακολουθίας με το όνομα Born. Είναι προαιρετική και δεν έχει προεπιλεγμένη τιμή. Το στοιχείο TITLE να έχει μικτό περιεχόμενο (δεδομένα χαρακτήρων με διάσπαρτα ανάμεσα τους κανένα ή περισσότερα στοιχεία SUBTITLE).

Inventory.xml (1/3) <?xml version="1.0"?> <!-- File Name: Inventory.xml --> <INVENTORY> <BOOK> <TITLE>The Adventures of Huckleberry Finn</TITLE> <AUTHOR>Mark Twain</AUTHOR> <BINDING>mass market paperback</binding> <PAGES>298</PAGES> <PRICE>$5.49</PRICE> </BOOK> <BOOK> <TITLE>Leaves of Grass</TITLE> <AUTHOR>Walt Whitman</AUTHOR> <BINDING>hardcover</BINDING> <PAGES>462</PAGES> <PRICE>$7.75</PRICE> </BOOK>

Inventory.xml (2/3) <BOOK> <TITLE>The Legend of Sleepy Hollow</TITLE> <AUTHOR>Washington Irving</AUTHOR> <BINDING>mass market paperback</binding> <PAGES>98</PAGES> <PRICE>$2.95</PRICE> </BOOK> <BOOK> <TITLE>The Marble Faun</TITLE> <AUTHOR>Nathaniel Hawthorne</AUTHOR> <BINDING>trade paperback</binding> <PAGES>473</PAGES> <PRICE>$10.95</PRICE> </BOOK> <BOOK> <TITLE>Moby-Dick</TITLE> <AUTHOR>Herman Melville</AUTHOR> <BINDING>hardcover</BINDING> <PAGES>724</PAGES> <PRICE>$9.95</PRICE> </BOOK>

Inventory.xml (3/3) <BOOK> <TITLE>The Portrait of a Lady</TITLE> <AUTHOR>Henry James</AUTHOR> <BINDING>mass market paperback</binding> <PAGES>256</PAGES> <PRICE>$4.95</PRICE> </BOOK> <BOOK> <TITLE>The Scarlet Letter</TITLE> <AUTHOR>Nathaniel Hawthorne</AUTHOR> <BINDING>trade paperback</binding> <PAGES>253</PAGES> <PRICE>$4.25</PRICE> </BOOK> <BOOK> <TITLE>The Turn of the Screw</TITLE> <AUTHOR>Henry James</AUTHOR> <BINDING>trade paperback</binding> <PAGES>384</PAGES> <PRICE>$3.35</PRICE> </BOOK> </INVENTORY>

Μετατροπή σωστά διατυπωμένου εγγράφου σε έγκυρο Πάνω ακριβώς από το στοιχείο εγγράφου INVENTORY πληκτρολόγηση της δήλωσης τύπου εγγράφου: <!DOCTYPE INVENTORY > [ <!ELEMENT INVENTORY (BOOK)*> <!ELEMENT BOOK (TITLE, AUTHOR, BINDING, PAGES, PRICE)> <!ATTLIST BOOK InStock (yes no) #REQUIRED> <!ELEMENT TITLE (#PCDATA SUBTITLE)*> <!ELEMENT SUBTITLE (#PCDATA)> <!ELEMENT AUTHOR (#PCDATA)> <!ATTLIST AUTHOR Born CDATA #IMPLIED> <!ELEMENT BINDING (#PCDATA)> <!ELEMENT PAGES (#PCDATA)> <!ELEMENT PRICE (#PCDATA)> ]

Μετατροπή σωστά διατυπωμένου εγγράφου σε έγκυρο Το όνομα που ακολουθεί τη λέξη-κλειδί DOCTYPE είναι όμοιο με το όνομα του στοιχείου εγγράφου INVENTORY To DTD αποτελείται μόνο από εσωτερικό υποσύνολο που ορίζει τα στοιχεία και τις ιδιότητες του στοιχείου: Το στοιχείο εγγράφου INVENTORY έχει περιεχόμενο. Μπορεί να περιέχει κανένα ή περισσότερα θυγατρικά στοιχεία BOOK. Το στοιχείο BOOK έχει και αυτό περιεχόμενο. Πρέπει να περιέχει ένα από το καθένα από τα παρακάτω στοιχεία, με τη σειρά που παρατίθενται στη δήλωση στοιχείου: TITLE, AUTHOR, BINDING, PAGES, και PRICE. Το στοιχείο TITLE έχει μικτό περιεχόμενο. Μπορεί να περιέχει δεδομένα χαρακτήρων με διάσπαρτα ανάμεσα τους κανένα ή περισσότερα στοιχεία SUBTITLE.

Μετατροπή σωστά διατυπωμένου εγγράφου σε έγκυρο Συνέχεια: Το καθένα από τα στοιχεία AUTHOR, BINDING, PAGES, και PRICE έχει μικτό περιεχόμενο. Τα στοιχεία αυτά όμως μπορούν να περιλαμβάνουν μόνο δεδομένα χαρακτήρων και όχι θυγατρικά στοιχεία. Το στοιχείο BOOK έχει μια ιδιότητα απαριθμητού τύπου με το όνομα InStock. Πρόκειται για μια απαραίτητη ιδιότητα στην οποία μπορεί να αποδοθεί τιμή "yes" ή "no". Το στοιχείο AUTHOR έχει μια ιδιότητα τύπου ακολουθίας με το όνομα Born. Είναι προαιρετική και δεν έχει προεπιλεγμένη τιμή.

Μετατροπή σωστά διατυπωμένου εγγράφου σε έγκυρο Προσθήκη θυγατρικού στοιχείου SUBTITLE στο στοιχείο TITLE για το βιβλίο Moby-Dick: <BOOK> <TITLE>Moby-Dick <SUBTITLE>Or, the Whale</SUBTITLE> </TITLE> Προσθήκη της απαραίτητης ιδιότητας InStock σε κάθε στοιχείο BOOK, αποδίδοντας τιμή "yes" ή "no : <BOOK InStock="yes"> <TITLE>The Adventures of Huckleberry Finn</TITLE> <AUTHOR Born="1835">Mark Twain</AUTHOR> <BINDING>mass market paperback</binding> <PAGES>298</PAGES> <PRICE>$5.49</PRICE> </BOOK>