Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Σημασιολογικός Ιστός (Semantic Web) - XML Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr
Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων XML Ορισμός και Xρήση Oντοτήτων
Εισαγωγή Ο μηχανισμός οντότητας XML αποτελεί εργαλείο εξοικονόμησης χρόνου και τρόπο ενσωμάτωσης διαφόρων τύπων δεδομένων σε έγγραφα XML Ορισμός ως οντότητα κάποιου μπλοκ κειμένου XML που χρησιμοποιείται συχνά γρήγορη εισαγωγή κειμένου στο έγγραφο Ορισμός ως οντότητα εξωτερικού αρχείου σύνδεση δεδομένων αρχείου με το έγγραφο (άλλο κείμενο XML, άλλο κείμενο, ή άλλα δεδομένα διαφορετικά από κείμενο) Ορισμός οντότητας στον ορισμό τύπου εγγράφου (DTD)
Ορισμοί και ταξινομήσεις οντοτήτων Στην προδιαγραφή της XML χρησιμοποιείται ο όρος οντότητα (entity), με ευρεία έννοια, για να γίνει αναφορά σε όλους τους τύπους αποθηκευτικών μονάδων οι οποίες συνδέονται με έγγραφα XML: Ολόκληρο το έγγραφο ΧΜL Ένα εξωτερικό υποσύνολο DTD Ένα εξωτερικό αρχείο που ορίζεται ως εξωτερική οντότητα στο DTD και στο οποίο γίνεται αναφορά με τη βοήθεια μιας αναφοράς οντότητας Ένα αλφαριθμητικό εισαγωγικών, που στο DTD ορίζεται ως εσωτερική οντότητα και στο οποίο γίνεται αναφορά με τη βοήθεια μιας αναφοράς οντότητας
Ορισμοί και ταξινομήσεις οντοτήτων Οντότητα: μέσο αναφοράς στους δύο τελευταίους τύπους αποθηκευτικών μονάδων: στους εξωτερικούς φακέλους ή σε αλφαριθμητικά εισαγωγικών που ορίζονται ως οντότητες στο DTD του εγγράφου και στα οποία γίνεται αναφορά στο έγγραφο με τη βοήθεια αναφορών οντοτήτων Οι οντότητες (entities) είναι μεταβλητές στις οποίες αποθηκεύεται περιεχόμενο το οποίο μπορεί να επαναχρησιμοποιηθεί σε αρκετά σημεία του εγγράφου. Αποτελείται από ένα όνομα και μια τιμή. Κάθε φορά που ο XML αναλυτής συναντάει μια αναφορά οντότητας την αντικαθιστά με το κατάλληλο κείμενο ή σήμανση που έχει αποθηκευτεί στην συγκεκριμένη οντότητα.
Ορισμοί και ταξινομήσεις οντοτήτων - Παράδειγμα DTD που ορίζει: το εξωτερικό αρχείο Topics.xml (ένα αρχείο που περιέχει κατάλογο με τα θέματα του άρθρου το οποίο περιέχεται στο έγγραφο) ως εξωτερική οντότητα με το όνομα topics και ένα αλφαριθμητικό εισαγωγικών ("A Short History of XML") ως εσωτερική οντότητα με το όνομα title: <!DOCTYPE ARTICLE [ <!ELEMENT ARTICLE (TITLEPAGE, INTRODUCTION, SECTION*)> <!ELEMENT TITLEPAGE (#PCDATA)> <!ELEMENT INTRODUCTION (#PCDATA)> <!ELEMENT SECTION (#PCDATA)> <!ENTITY topics SYSTEM "Topics.xml"> <!ENTITY title "A Short History of XML"> ]
Ορισμοί και ταξινομήσεις οντοτήτων - Παράδειγμα ΕΤΣΙ, μπορούμε να προσθέσουμε τον πλήρη κατάλογο θεμάτων σε οποιοδήποτε σημείο του άρθρου και να συμπεριλάβουμε απλά στο έγγραφο την αναφορά οντότητας &topics: <INTRΟDUCTIΟN> This article will cover the following topics: &topics; </INTRΟDUCTIΟN> Μπορούμε να προσθέσουμε τον τίτλο του άρθρου σε οποιοδήποτε σημείο και να συμπεριλάβουμε την αναφορά οντότητας &title: <TITLEPAGE> Title: &title; Author: Michael Young </TITLEPAGE>
Ορισμοί και ταξινομήσεις οντοτήτων - Παράδειγμα Μηχανισμός οντοτήτων ιδιαίτερα χρήσιμος για αποθήκευση κειμένων ΧΜL που χρησιμοποιούνται συχνά Π.χ. αν ένας τίτλος άρθρου εμφανιζόταν σε πολλά σημεία του άρθρου, η χρήση μιας οντότητας θα περιόριζε την πληκτρολόγηση, θα διασφάλιζε τη συνέπεια, και θα διευκόλυνε την πιθανή τροποποίηση του τίτλου Θα μπορούσαμε να αλλάξουμε τον τίτλο σε ολόκληρο το άρθρο, διορθώνοντας απλά τη δήλωση οντότητας στο DTD, π.χ. μορφή: <! ENTITY title "A Long History of XML" > <! τροποποιημένη δήλωση οντότητας --> Ομοιότητα με ορισμό σταθερών σε γλώσσα προγραμματισμού
Τύποι οντοτήτων Ταξινόμηση με τρεις διαφορετικούς τρόπους: Γενικές (general) και παραμέτρων (parameter) Εσωτερικές (internal) και εξωτερικές (external) Αναλυόμενες (parsed) και μη αναλυόμενες (unparsed)
Γενικές οντότητες και οντότητες παραμέτρων Η γενική οντότητα έχει περιεχόμενο εγγράφου δηλ. κείμενο XML, άλλου είδους κείμενο, ή δεδομένα εκτός κειμένου, τα οποία μπορούμε να χρησιμοποιήσουμε στο στοιχείο εγγράφου Τα παραδείγματα οντοτήτων title και topics αποτελούν γενικές οντότητες Η οντότητα παραμέτρων περιέχει κείμενο ΧΜL το οποίο μπορεί να συμπεριληφθεί στο DTD. Στην προδιαγραφή της ΧΜL, ο μη προσδιορισμένος όρος οντότητα αναφέρεται σε μια γενική οντότητα.
Οντότητες παραμέτρων Οι οντότητες παραμέτρων εμφανίζονται μόνο στα πλαίσια ενός DTD. Στη δήλωση μιας οντότητας παραμέτρου πριν από το όνομα της οντότητας πρέπει να τοποθετείται ο χαρακτήρας %. Το ίδιο σύμβολο % εμφανίζεται και στις αναφορές σε οντότητες παραμέτρου αντί για το σύμβολο &. Οι αναφορές σε οντότητες παραμέτρου αντικαθίσταται άμεσα με το κείμενο που αποτελεί την τιμή της οντότητας το οποίο αποτελεί πλέον κομμάτι του DTD.
Εσωτερικές και εξωτερικές οντότητες Η εσωτερική οντότητα περιέχεται μέσα σε ένα αλφαριθμητικό εισαγωγικών Π.χ. η οντότητα title Η εξωτερική οντότητα περιέχεται σε ένα ξεχωριστό αρχείο Π.χ. η οντότητα topics
Αναλυόμενες και μη αναλυόμενες οντότητες Η αναλυόμενη οντότητα αποτελείται από κείμενο XML (δεδομένα χαρακτήρων, σήμανση, ή και τα δύο). Όταν προσθέτουμε αναφορά σε αναλυόμενη οντότητα εγγράφου, η αναφορά αντικαθίσταται από τα περιεχόμενα της οντότητας (κείμενο αντικατάστασης) που ενσωματώνονται πλέον στο έγγραφο Ο αναλυτής XML σαρώνει τα περιεχόμενα της οντότητας με τον ίδιο τρόπο που σαρώνει και το κείμενο που πληκτρολογήσαμε κατευθείαν στο έγγραφο Τα παραδείγματα οντοτήτων title και topics αποτελούν αναλυόμενες οντότητες.
Αναλυόμενες και μη αναλυόμενες οντότητες Η μη αναλυόμενη οντότητα μπορεί να περιέχει οποιοδήποτε είδος δεδομένων: δεδομένα XML ή, πιο συχνά, δεδομένα μη XML Τα μη XML δεδομένα μπορεί να είναι ή δεδομένα κειμένου (π.χ. κάποιος τίτλος) ή δεδομένα μη κειμένου (π.χ. δεδομένα γραφικών για κάποια εικόνα) Η μη αναλυόμενη οντότητα συνήθως δεν περιλαμβάνει XML, γι αυτό και τα περιεχόμενά της δεν εισάγονται άμεσα στο έγγραφο μέσω κάποιας αναφοράς οντότητας Αποδίδουμε το όνομα της οντότητας σε ιδιότητα τύπου ENTITY ή ENTITIES, ώστε η εφαρμογή να έχει πρόσβαση στο όνομα και στην περιγραφή της οντότητας και να μπορεί να χειριστεί τα δεδομένα
Ταξινόμηση οντοτήτων
Τύποι οντοτήτων Γενική εσωτερική, αναλυόμενη Γενική εξωτερική, αναλυόμενη Γενική εξωτερική, μη αναλυόμενη Εσωτερική αναλυόμενη, παραμέτρου Εξωτερική αναλυόμενη, παραμέτρου
Δήλωση γενικών οντοτήτων Γενική εσωτερική, αναλυόμενη Γενική εξωτερική, αναλυόμενη Γενική εξωτερική, μη αναλυόμενη
Δήλωση γενικής εσωτερικής αναλυόμενης οντότητας Δήλωση για γενική εσωτερική αναλυόμενη οντότητα: <!ENTITY EntityName EntityValue> EntityName: όνομα οντότητας Κανόνες επιλογής ονόματος: Το όνομα πρέπει να αρχίζει με κάποιο γράμμα ή με χαρακτήρα υπογράμμισης ακολουθούμενο από κανένα ή περισσότερα γράμματα, ψηφία, τελείες, παύλες, ή χαρακτήρες υπογράμμισης Η οντότητα μπορεί να έχει το ίδιο όνομα με κάποια οντότητα παραμέτρου του εγγράφου (οι γενικές οντότητες και οι οντότητες παραμέτρου καταλαμβάνουν διαφορετικούς χώρους ονομάτων). Η οντότητα μπορεί επίσης να έχει το ίδιο όνομα με κάποιο στοιχείο ή ιδιότητα. Η εναλλαγή κεφαλαίων και πεζών χαρακτήρων έχει σημασία όταν πρόκειται για κείμενο που περιέχεται σε σήμανση, όπως και τα ονόματα οντοτήτων
Δήλωση γενικής εσωτερικής αναλυόμενης οντότητας EntityValue: τιμή οντότητας (σειρά χαρακτήρων σε εισαγωγικά, αλφαριθμητικό εισαγωγικών - quoted string - ή κυριολεκτικό αλφαριθμητικό) Κανόνες: Η ακολουθία μπορεί να οριοθετηθεί με απλά (') ή διπλά (") εισαγωγικά Στην ακολουθία δεν πρέπει να περιέχεται ο χαρακτήρας που χρησιμοποιείται για την οριοθέτησή της Η ακολουθία δεν μπορεί να περιλαμβάνει το χαρακτήρα (&) παρά μόνο στην αρχή μιας αναφοράς χαρακτήρων ή γενικής οντότητας. Δεν μπορεί επίσης να περιλαμβάνει το χαρακτήρα (%) Τα περιεχόμενα της ακολουθίας πρέπει να είναι έγκυρα για τη θέση όπου προσθέτουμε την οντότητα (μέσα σε στοιχείο ή σε τιμή ιδιότητας)
Παράδειγμα Ορισμός γενικής εσωτερικής αναλυόμενης οντότητα με το όνομα title: <!DOCTYPE ARTICLE [ <!ELEMENT ARTICLE (TITLEPAGE, INTRODUCTION, SECTION*)> <!ELEMENT TITLEPAGE (#PCDATA SUBTITLE)*> <!ELEMENT SUBTITLE (#PCDATA)> <!ELEMENT INTRODUCTION (#PCDATA)> <!ELEMENT SECTION (#PCDATA)> > <!ENTITY title "The Story of XML <SUBTITLE>The Future Language of the Internet</SUBTITLE>"> ]
Παράδειγμα Η οντότητα title περιέχει, εκτός από δεδομένα χαρακτήρων, ένα στοιχείο (SUBTITLE). Σύμφωνα με το DTD, το περιεχόμενο αυτό μπορεί να εισαχθεί με έγκυρο τρόπο μόνο σε ένα στοιχείο TITLEPAGE: <TITLEPAGE> Title: &title; Author: Michael Young </TITLEPAGE> Ο επεξεργαστής της XML θα αντικαταστήσει την αναφορά οντότητας (&title;) με τα περιεχόμενα της οντότητας και θα επεξεργαστεί τα περιεχόμενα ακριβώς όπως θα έκανε αν τα είχαμε πληκτρολογήσει στο έγγραφο, στη θέση της αναφοράς: <TITLEPAGE> Title: The Story of XML <SUBTITLE>The Future Language of the Internet</SUBTITLE> Author: Michael Young </TITLEPAGE>
Δήλωση γενικής εξωτερικής αναλυόμενης οντότητας Δήλωση για γενική εξωτερική αναλυόμενη οντότητα: <!ENTITY EntityName SYSTEM SystemLiteral> EntityName: όνομα οντότητας (Κανόνες επιλογής ονόματος όπως και προηγουμένως) SystemLiteral: κυριολεκτικό συστήματος, περιγράφει τη θέση του αρχείου που περιέχει τα δεδομένα της οντότητας Το σύστημα αυτό μπορεί να οριοθετηθεί με απλά (') ή διπλά (") εισαγωγικά και να περιέχει όλους τους χαρακτήρες εκτός από εκείνους που έχουν χρησιμοποιηθεί για την οριοθέτησή του. Το κυριολεκτικό συστήματος προσδιορίζει το ενιαίο αναγνωριστικό πόρων (URI) του αρχείου που περιέχει τα δεδομένα της οντότητας <!ENTITY abstract SYSTEM "http://bogus.com/documents/abstract.xml"> <!ENTITY abstract SYSTEM "Abstract.xml">
Παράδειγμα Ορισμός γενικής εξωτερικής αναλυόμενης οντότητα με το όνομα Topics.xml: <!DOCTYPE ARTICLE > [ <!ELEMENT ARTICLE (TITLEPAGE, INTRODUCTION, SECTION*)> <!ELEMENT TITLEPAGE (#PCDATA)> <!ELEMENT INTRODUCTION ANY> <!ELEMENT SECTION (#PCDATA)> <!ENTITY topics SYSTEM "Topics.xml"> ]
Παράδειγμα Ακολουθούν τα περιεχόμενα του αρχείου Topics.xml: <HEADING>Topics</HEADING> The Need for XML The Official Goals of XML Standard XML Applications Real-World Uses for XML To αρχείο εξωτερικής οντότητας περιέχει δύο ή περισσότερα αντικείμενα τα οποία μπορούμε να συμπεριλάβουμε σε ένα στοιχείο XML: ένα ένθετο στοιχείο και ένα μπλοκ δεδομένων χαρακτήρων Τα περιεχόμενα του αρχείου μπορούν να εισαχθούν σε ένα στοιχείο INTRODUCTION (που μπορεί να έχει οποιονδήποτε τύπο περιεχομένου): <INTRΟDUCTIΟN> Here's what this article covers: &topics; </INTRΟDUCTIΟN>
Δήλωση γενικής εξωτερικής μη αναλυόμενης οντότητας Δήλωση για γενική εξωτερική μη αναλυόμενη οντότητα: <!ENTITY EntityName SYSTEM SystemLiteral NDATA NotationName> EntityName: όνομα οντότητας (Κανόνες επιλογής ονόματος) SystemLiteral: κυριολεκτικό συστήματος, περιγράφει τη θέση του αρχείου που περιέχει τα δεδομένα της οντότητας (όπως προηγουμένως) Η λέξη-κλειδί NDATA δείχνει ότι το αρχείο της οντότητας περιέχει μη αναλυόμενα δεδομένα NotationName: όνομα σημειογραφίας που δηλώνεται στο DTD Η σημειογραφία περιγράφει τη μορφή των δεδομένων που περιέχονται στο αρχείο της οντότητας ή δίνει τη θέση ενός προγράμματος που μπορεί να επεξεργαστεί τα δεδομένα αυτά
Δήλωση γενικής εξωτερικής μη αναλυόμενης οντότητας Το αρχείο μη αναλυόμενης εξωτερικής οντότητας μπορεί να περιέχει οποιοδήποτε είδος δεδομένων εκτός από κείμενο θα πρέπει ΟΜΩΣ να συμμορφώνεται προς την περιγραφή μορφής, όπως αυτή προσδιορίζεται στη συγκεκριμένη σημειογραφία
Παράδειγμα Ορισμός του αρχείου Faun.gif στο DTD του εγγράφου ΧΜL (που περιέχει την εικόνα από ένα εξώφυλλο βιβλίου) ως γενική εξωτερική, μη αναλυόμενη οντότητα, με το όνομα faun To όνομα της σημειογραφίας αυτής της οντότητας είναι GIF και έχει οριστεί έτσι ώστε να δείχνει τη θέση ενός προγράμματος που μπορεί να εμφανίσει ένα αρχείο γραφικών σε μορφή GIF (ShowGif.exe) To DTD ορίζει επίσης ένα κενό στοιχείο με το όνομα COVERIMAGΕ και έναν τύπο ιδιότητας ENTITY για το στοιχείο αυτό, με το όνομα Source
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
Παράδειγμα <?xml version="1.0"?> <!DOCTYPE BOOK [ <!ELEMENT BOOK (TITLE, AUTHOR, COVERIMAGE)> <!ELEMENT TITLE (#PCDATA)> <!ELEMENT AUTHOR (#PCDATA)> <!ELEMENT COVERIMAGE EMPTY> <!ATTLIST COVERIMAGE Source ENTITY #REQUIRED> <!NOTATION GIF SYSTEM "ShowGif.exe"> <!ENTITY faun SYSTEM "Faun.gif" NDATA GIF> ] > <BOOK> <TITLE>The Marble Faun</TITLE> <AUTHOR>Nathaniel Hawthorne</AUTHOR> <COVERIMAGE Source="faun /> </BOOK>
Παράδειγμα Στο στοιχείο εγγράφου, η ιδιότητα Source του στοιχείου COVERIMAGE έχει το όνομα της εξωτερικής οντότητας που περιέχει τα δεδομένα γραφικών για την εμφάνιση της εικόνας του εξωφύλλου Η ιδιότητα Source έχει τον τύπο ENTITY, γι αυτό της δίνουμε όνομα γενικής εξωτερικής μη αναλυόμενης οντότητας Ο μόνος τρόπος για να χρησιμοποιήσουμε αυτόν τον τύπο οντότητας είναι να δώσουμε το όνομά του στην ιδιότητα τύπου ENTITY ή ENTITIES
Γενική εξωτερική μη αναλυόμενη οντότητα Σε αντίθεση με το αρχείο εξωτερικής αναλυόμενης οντότητας, ένα αρχείο εξωτερικής μη αναλυόμενης οντότητας δεν προσπελάζεται κατευθείαν από τον επεξεργαστή της XML. Ο επεξεργαστής απλώς κάνει την οντότητα και τη σημειογραφία της διαθέσιμες στην εφαρμογή, η οποία μπορεί να χειριστεί με οποιονδήποτε τρόπο τις πληροφορίες Π.χ. μπορεί να εκτελέσει το πρόγραμμα που είναι συσχετισμένο με τη σημειογραφία και να του δώσει εντολή να εμφανίσει τα δεδομένα που περιέχονται στο αρχείο της οντότητας
Δήλωση σημειογραφίας Η σημειογραφία περιγράφει μια συγκεκριμένη μορφή δεδομένων παρέχοντας: τη διεύθυνση μιας περιγραφής της μορφής τη διεύθυνση ενός προγράμματος που μπορεί να χειριστεί δεδομένα στη συγκεκριμένη μορφή, ή μια απλή περιγραφή μορφής Χρησιμοποιούμε σημειογραφία για την περιγραφή της μορφής μιας γενικής εξωτερικής μη αναλυόμενης οντότητας, ή Μπορούμε να ορίσουμε μια σημειογραφία σε κάποια ιδιότητα που έχει τον απαριθμητό τύπο NOTATION
Δήλωση σημειογραφίας Μια σημειογραφία έχει την εξής γενική μορφή: <!NOTATION NotationName SYSTEM SystemLiteral> NotationName: όνομα σημειογραφίας (ισχύουν οι κανόνες επιλογής ονόματος) Επιλογή λογικού ονόματος που να δηλώνει τη μορφή - αν ορίσουμε μια σημειογραφία για να περιγράψουμε ψηφιογραφική (bitmap) μορφή, μπορούμε να την ονομάσουμε BMP SystemLiteral: κυριολεκτικό συστήματος που οριοθετείται με απλά (') ή διπλά (") εισαγωγικά και το οποίο μπορεί να περιέχει οποιουσδήποτε χαρακτήρες εκτός από εκείνους που χρησιμοποιήθηκαν για την οριοθέτηση του
Δήλωση σημειογραφίας Στο κυριολεκτικό συστήματος συμπεριλαμβάνουμε οποιαδήποτε περιγραφή μορφής θεωρούμε σημαντική για την εφαρμογή που πρόκειται να εμφανίσει ή να χειριστεί το έγγραφο XML ΑΛΛΩΣΤΕ ο επεξεργαστής XML δεν χρησιμοποιεί ο ίδιος τις πληροφορίες της σημειογραφίας Απλώς τις μεταβιβάζει στην εφαρμογή, η οποία μπορεί να είναι ένα σενάριο σε κάποια ιστοσελίδα
Δήλωση σημειογραφίας Στο κυριολεκτικό συστήματος μπορούμε να συμπεριλάβουμε: To URI ενός προγράμματος που να μπορεί να επεξεργαστεί ή να εμφανίσει τη μορφή δεδομένων: <!NOTATION BMP SYSTEM "Pbrush.exe"> <!NOTATION GIF SYSTEM "http://bogus.com/showgif.exe"> To URI ενός ηλεκτρονικού εγγράφου που να περιγράφει τη μορφή: <!NOTATION STRANGEFORMAT SYSTEM "http://bogus.com/ StrangeFormat.htm"> Μια απλή περιγραφή της μορφής, όπως: <!NOTATION GIF SYSTEM "Graphic Interchange Format">
Ταξινόμηση οντοτήτων
Δήλωση οντοτήτων παραμέτρου Εσωτερική, αναλυόμενη οντότητα παραμέτρου Εξωτερική, αναλυόμενη οντότητα παραμέτρου
Δήλωση εσωτερικής αναλυόμενης οντότητας παραμέτρου Δήλωση για εσωτερική αναλυόμενη οντότητα παραμέτρου: <!ENTITY %EntityName EntityValue> EntityName: όνομα οντότητας (Κανόνες επιλογής ονόματος) Η οντότητα μπορεί να έχει το ίδιο όνομα με κάποια γενική οντότητα του εγγράφου - Οι οντότητες παραμέτρου και οι γενικές οντότητες καταλαμβάνουν διαφορετικούς χώρους ονομάτων) Η οντότητα μπορεί επίσης να έχει ίδιο όνομα με κάποιο στοιχείο ή ιδιότητα. EntityValue: η τιμή της οντότητας Η τιμή που δίνουμε σε κάποια οντότητα παραμέτρου είναι μια σειρά από χαρακτήρες σε εισαγωγικά, γνωστή ως αλφαριθμητικό εισαγωγικών ή κυριολεκτικό αλφαριθμητικό
Δήλωση εσωτερικής αναλυόμενης οντότητας παραμέτρου Κανόνες ορισμού τιμής για μια οντότητα παραμέτρου: Η ακολουθία μπορεί να οριοθετηθεί με απλά (') ή διπλά (") εισαγωγικά Η ακολουθία δεν μπορεί να περιέχει το χαρακτήρα που χρησιμοποιείται για την οριοθέτησή της Η ακολουθία δεν μπορεί να περιλαμβάνει τους χαρακτήρες (%) και (&), παρά μόνον αν με αυτούς αρχίζει αναφορά χαρακτήρα ή γενικής οντότητας Προσθέτουμε οντότητα παραμέτρου μόνον εκεί όπου μπορεί να εμφανιστεί δήλωση σήμανσης στο DTD, και όχι μέσα σε δήλωση σήμανσης
Δήλωση εσωτερικής αναλυόμενης οντότητας παραμέτρου Κανόνες ορισμού τιμής για μια οντότητα παραμέτρου: Το αλφαριθμητικό EntityValue πρέπει να περιέχει μία ή περισσότερες πλήρεις δηλώσεις σήμανσης όπως εκείνες που επιτρέπεται να περιλαμβάνεται σε ένα DTD Μια οντότητα παραμέτρου μπορεί να περιέχει δηλώσεις τύπου στοιχείων, δηλώσεις λίστας ιδιοτήτων, δηλώσεις γενικών οντοτήτων, δηλώσεις σημειογραφίας, εντολές επεξεργασίας, ή σχόλια. (Δεν επιτρέπονται δηλώσεις και αναφορές οντοτήτων παραμέτρου)
Παράδειγμα Δήλωση εσωτερικής αναλυόμενης οντότητας παραμέτρου με το όνομα author, στην οποία περιλαμβάνονται τρεις δηλώσεις σήμανσης: ένα σχόλιο, ένας τύπος στοιχείου, και μια δήλωση λίστας ιδιοτήτων
Παράδειγμα Τα περιεχόμενα της οντότητας (δηλαδή, το κείμενο αντικατάστασης) έχουν μπει στο τέλος του DTD, με τη μορφή αναφοράς οντότητας παραμέτρου (%author): <!DOCTYPE BOOK [ <!ENTITY %author "<!-- στοιχεία συγγραφέα --> <!ELEMENT AUTHOR (#PCDATA)> <!ATTLIST AUTHOR Nationality CDATA American'>" > <!ELEMENT BOOK (TITLE, AUTHOR)> <!ELEMENT TITLE (#PCDATA)> %author; ] >
Παράδειγμα Η προεπιλεγμένη τιμή ιδιότητας που περιλαμβάνεται στη δήλωση οντότητας, ('American'), έχει οριοθετηθεί με απλά εισαγωγικά για να αποφευχθεί η χρήση των ίδιων χαρακτήρων οριοθέτησης που χρησιμοποιήθηκαν και για την οριοθέτηση ολόκληρης της τιμής της οντότητας To DTD που είδαμε προηγουμένως είναι ισοδύναμο με το εξής: <!DOCTYPE BOOK > [ ] <!ELEMENT BOOK (TITLE, AUTHOR)> <!ELEMENT TITLE (#PCDATA)> <!-- στοιχεία συγγραφέα --> <!ELEMENT AUTHOR (#PCDATA)> <!ATTLIST AUTHOR Nationality CDATA 'American'>
Δήλωση εξωτερικής αναλυόμενης οντότητας παραμέτρου Δήλωση για εξωτερική αναλυόμενη οντότητα παραμέτρου: <!ENTITY %EntityName SYSTEM SystemLiteral> EntityName: όνομα οντότητας (Κανόνες επιλογής ονόματος όπως και προηγουμένως) SystemLiteral: κυριολεκτικό συστήματος, περιγράφει τη θέση του αρχείου που περιέχει τα δεδομένα της οντότητας Το σύστημα αυτό μπορεί να οριοθετηθεί με απλά (') ή διπλά (") εισαγωγικά και να περιέχει όλους τους χαρακτήρες εκτός από εκείνους που έχουν χρησιμοποιηθεί για την οριοθέτησή του. Το κυριολεκτικό συστήματος προσδιορίζει το ενιαίο αναγνωριστικό πόρων (URI) του αρχείου που περιέχει τα δεδομένα της οντότητας παραμέτρου <!ENTITY %declarations SYSTEM "http://bogus.com/documents/declarations.dtd"> <!ENTITY %declarations SYSTEM Declarations.dtd">
Δήλωση εξωτερικής αναλυόμενης οντότητας παραμέτρου Το αρχείο εξωτερικής οντότητας παραμέτρου πρέπει να περιλαμβάνει πλήρεις δηλώσεις σήμανσης των τύπων που μπορούν να περιληφθούν σε ένα DTD Συγκεκριμένα, μπορεί να περιέχει: δηλώσεις τύπων στοιχείων, δηλώσεις λίστας ιδιοτήτων, δηλώσεις οντότητας, δηλώσεις σημειογραφίας, εντολές επεξεργασίας, ή σχόλια Μπορεί επίσης να συμπεριληφθούν αναφορές οντότητας παραμέτρου καθώς και τμήματα IGNORE και INCLUDE
Παράδειγμα Χρήση εξωτερικών αναλυόμενων οντοτήτων παραμέτρου για αποθήκευση τμημάτων σχετικών μεταξύ τους δηλώσεων Π.χ. εταιρεία που πουλάει βιβλία, CD, αφίσες, και άλλα συναφή αντικείμενα Τοποθέτηση δηλώσεων για καθένα από αυτά τα είδη αντικειμένων σε ξεχωριστό αρχείο Συνδυασμός δηλώσεων με διάφορους τρόπους: Δημιουργία εγγράφου ΧΜL που περιγράφει μόνο τον κατάλογο των βιβλίων και των CD Δηλώσεις βιβλίων και CD στο DTD του εγγράφου, χρησιμοποιώντας εξωτερικές αναλυόμενες οντότητες παραμέτρου
Παράδειγμα <?xml version="1.0"?> <!DOCTYPE INVENTORY [ <!ELEMENT INVENTORY (BOOK CD)*> <!ENTITY %book_decls SYSTEM "Book.dtd"> <!ENTITY %cd_decls SYSTEM "CD.dtd"> %book_decls; %cd_decls; ] >
Παράδειγμα Περιεχόμενα του αρχείου οντότητας Book.dtd: <!ELEMENT BOOK (BOOKTITLE, AUTHOR, PAGES)> <!ELEMENT BOOKTITLE (#PCDATA)> <!ELEMENT AUTHOR (#PCDATA)> <!ELEMENT PAGES (#PCDATA)> Περιεχόμενα του αρχείου οντότητας CD.dtd: <!ELEMENT CD (CDTITLE, COMPOSER, LENGTH)> <!ELEMENT CDTITLE (#PCDATA)> <!ELEMENT COMPOSER (#PCDATA)> <!ELEMENT LENGTH (#PCDATA)>
Παράδειγμα <INVENTORY> <BOOK> <BOOKTITLE>The Marble Faun</BOOKTITLE> <AUTHOR>Nathaniel Hawthorne</AUTHOR> <PAGES>473</PAGES> </BOOK> <CD> <CDTITLE>Concerti Grossi Opus 3</CDTITLE> <COMPOSER>Handel</COMPOSER> <LENGTH>72 minutes</length> </CD> <BOOK> <BOOKTITLE>Leaves of Grass</BOOKTITLE> <AUTHOR>Walt Whitman</AUTHOR> <PAGES>462</PAGES> </BOOK> <!-- πρόσθετα στοιχεία... --> </INVENTORY>
Eξωτερικές αναλυόμενες οντότητες παραμέτρου Μια εξωτερική αναλυόμενη οντότητα λειτουργεί όπως περίπου και ένα εξωτερικό υποσύνολο DTD Οι εξωτερικές οντότητες παραμέτρου είναι πιο ευέλικτες Δίνουν τη δυνατότητα να συμπεριληφθούν στο έγγραφο πολλά εξωτερικά αρχεία δηλώσεων και με οποιαδήποτε σειρά ΜΗΝ ΞΕΧΝΑΤΕ ότι η διαδικασία επεξεργασίας ενός εξωτερικού υποσυνόλου ξεκινάει αφού ολοκληρωθεί η επεξεργασία του εσωτερικού DTD
Υπό συνθήκη τμήματα Ένα υπό συνθήκη τμήμα (conditional section) είναι τμήμα ενός εξωτερικού DTD το οποίο συμπεριλαμβάνεται ή δεν συμπεριλαμβάνεται στη λογική δομή του DTD με βάση κάποια λέξη κλειδί (keyword) η οποία συνδέεται με αυτό. Aν η τιμή της λέξης κλειδί είναι INCLUDE, τότε το περιεχόμενο του υπό συνθήκη τμήματος συμπεριλαμβάνεται στο DTD. Αν η τιμή της λέξης κλειδί είναι IGNORE, τότε το περιεχόμενο του υπό συνθήκη τμήματος δεν συμπεριλαμβάνεται στο DTD. Η λέξη κλειδί σε ένα υπό συνθήκη τμήμα μπορεί να είναι αναφορά σε οντότητα παραμέτρου. Τότε η οντότητα παραμέτρου πρέπει να αντικατασταθεί με την τιμή της για να μπορέσει ο επεξεργαστής να αποφασίσει αν θα συμπεριλάβει το υπό συνθήκη τμήμα.
Υπό συνθήκη τμήματα:παράδειγμα <!ENTITY %draft INCLUDE > <!ENTITY %final IGNORE > <! [%draft; ]> [ <!ELEMENT article (comments*, title, body, supplements?)> ] <! [%final; ]> [ <!ELEMENT article (title, body, supplements?)> ] Η συμμετοχή ή όχι των υπό συνθήκη τμημάτων καθορίζεται από την τιμή των παραμέτρων draft και final. Μεταβάλλοντας τις τιμές των παραμέτρων αυτών μπορούμε να εναλλάξουμε τα υπό συνθήκη τμήματα που θα συμπεριληφθούν στο DTD
Προσθήκη αναφορών οντοτήτων Πρόσθεση περιεχομένων (κειμένου αντικατάστασης) μιας οντότητας σε ένα έγγραφο χρησιμοποιώντας μια αναφορά οντότητας Η αναφορά των γενικών οντοτήτων γίνεται ως εξής: &EntityName; και η αναφορά των οντοτήτων παραμέτρου ως εξής: %EntityName; EntityName: όνομα της οντότητας στη δήλωση Μόνη εξαίρεση αποτελεί μια γενική εξωτερική μη αναλυόμενη οντότητα, για την προσθήκη της οποίας δεν χρησιμοποιείται αναφορά. Ο μόνος τρόπος για τη χρήση αυτού του τύπου οντότητας είναι να δοθεί το όνομα του σε κάποια ιδιότητα που έχει τον τύπο ENTITY ή ENTITIES Η δήλωση μιας οντότητας πρέπει να προηγείται οποιασδήποτε αναφοράς στην οντότητα αυτή
Οντότητες - Συνοπτικά Παραμετρική οντότητα Μία συντόμευση για μεγάλο κείμενο που εμφανίζεται πολλές φορές σε ένα DTD αρχείο Πρέπει να δηλωθεί πριν χρησιμοποιηθεί Συνήθως δηλώνεται στην αρχή του DTD αρχείου <!ENTITY %όνομα "κείμενο αντικατάστασης"> <!ENTITY %Binary yes no > Γενική οντότητα Συντόμευση για κείμενο που εμφανίζεται συχνά σε ένα XML αρχείο <!ENTITY όνομα "κείμενο αντικατάστασης"> <!ENTITY name Mara Konsta">
Οντότητες - Συνοπτικά Εσωτερική δήλωση entity <!ENTITY ΕntityName EntityValue"> <!ENTITY writer Mara Konsta"> Εξωτερική δήλωση entity <!ENTITY EntityName SYSTEM "URI/URL"> <!ENTITY writer SYSTEM http:www.mara.xml > <!ENTITY writer SYSTEM http:www.mara.dtd >
Τύπος οντότητας Γενική εσωτερική, αναλυόμενη Μορφή αναφοράς οντότητας, όπου EntityName είναι το όνομα της οντότητας &EntityName; Θέσεις όπου μπορούτε να προσθέσουμε μια αναφορά οντότητας Στο περιεχόμενο στοιχείου Σε τιμή ιδιότητας (ως προεπιλεγμένη τιμή ή ως ετικέτα αρχής στοιχείου) Στην τιμή δήλωσης εσωτερικής οντότητας Γενική εξωτερική, αναλυόμενη &EntityName; Στο περιεχόμενο στοιχείου Στην τιμή δήλωσης εσωτερικής οντότητας Γενική εξωτερική, μη αναλυόμενη EntAttr= EntityName', όπου EntAttr είναι ιδιότητα του τύπου ENTITY ή ENTITIES Δεν μπορούμε να προσθέσουμε αναφορά σε τέτοιου είδους οντότητα, μπορούμε όμως να δώσουμε το όνομα της οντότητας σε μια ιδιότητα που έχει τον τύπο ENTITY ή ENTITIES
Τύπος οντότητας Εσωτερική αναλυόμενη, παραμέτρου Μορφή αναφοράς οντότητας, όπου EntityName είναι το όνομα της οντότητας %EntityName; Θέσεις όπου μπορούμε να προσθέσουμε μια αναφορά οντότητας Σε ένα DTD όπου μπορούν να εμφανιστούν δηλώσεις σήμανσης, όχι μέσα σε δηλώσεις σήμανσης Εξωτερική αναλυόμενη, παραμέτρου Αναφορά χαρακτήρων %EntityName; ή &#xh; όπου 9 είναι ο αριθμητικός κωδικός για το χαρακτήρα σε δεκαδικό σύστημα και h ο αριθμητικός κωδικός σε δεκαεξαδικό σύστημα Σε ένα DTD όπου μπορούν να εμφανιστούν δηλώσεις σήμανσης, όχι μέσα σε δηλώσεις σήμανσης Στο περιεχόμενο στοιχείου Σε τιμή ιδιότητας (ως προεπιλεγμένη τιμή σε δήλωση λίστας ιδιοτήτων, ή σε ετικέτα αρχής στοιχείου) Στην τιμή δήλωσης εσωτερικής οντότητας
Αναφορά οντότητας, Παράδειγμα 1 Στο έγγραφο XML που ακολουθεί, δηλώνονται δύο γενικές εσωτερικές αναλυόμενες οντότητας, οι am και en To έγγραφο χρησιμοποιεί μια αναφορά στο am για να δώσει μια προεπιλεγμένη τιμή στην ιδιότητα Nationality και μια αναφορά στο en για να δώσει μια τιμή στην ιδιότητα Nationality, στο στοιχείο AUTHOR To πλεονέκτημα που δίνει η χρήση μιας οντότητας σε αυτή την περίπτωση είναι πώς μπορούμε να αλλάξουμε με τον τρόπο αυτόν την τιμή σε ολόκληρο το έγγραφο (στην περίπτωση που έχει πολλά στοιχεία) απλώς και μόνο διορθώνοντας τον ορισμό της οντότητας (π.χ. αλλάζοντας την τιμή του en από "English" σε "British")
Αναφορά οντότητας, Παράδειγμα 1 <!DOCTYPE INVENTORY [ <!ENTITY am "American"> <!ENTITY en "English"> <!ELEMENT INVENTORY (BΟΟK*)> <!ELEMENT BOOK (TITLE, AUTHOR)> <!ELEMENT TITLE (#PCDATA)> <!ELEMENT AUTHOR (#PCDATA)> <!ATTLIST AUTHOR Nationality CDATA "&am;"> ] > <INVENTORY> <BΟΟK> <TITLE>David Copperfield</TITLE> <AUTHΟR Nationality="&en;">Charles Dickens</AUTHOR> </BOOK> <!-- άλλα στοιχεία... --> </INVENTORY>
Αναφορά οντότητας, Παράδειγμα 2 Στο DTD ορίζεται μια γενική εσωτερική αναλυόμενη οντότητα (int-entity) και μια γενική εξωτερική αναλυόμενη οντότητα (ext-entity). Στη συνέχεια, ορίζεται άλλη μία γενική εσωτερική αναλυόμενη οντότητα, combo-entity, με την οποία εισάγονται και οι δύο παραπάνω οντότητες στην τιμή combo-entity. <!DOCTYPE INVENTORY > [ <!ENTITY int_entity "internal entity value"> <!ENTITY ext_entity SYSTEM "Entity.xml"> <!ENTITY combo_entity "value composed of &ext_entity; plus &int_entity;"> <! -- άλλες δηλώσεις σήμανσης... --> ]
Προσθήκη αναφοράς χαρακτήρων Χρήση αναφοράς χαρακτήρα για την προσθήκη: κάποιου χαρακτήρα που δεν υπάρχει στο πληκτρολόγιο ή κάποιου χαρακτήρα που δεν θα επιτρεπόταν να προστεθεί κυριολεκτικά στην τρέχουσα θεματική ενότητα (π.χ. χαρακτήρες < ή & στα δεδομένα χαρακτήρων ενός στοιχείου) Η αναφορά χαρακτήρα δεν χρειάζεται ορισμό Η αναφορά χαρακτήρα έχει δύο διαφορετικές μορφές: 1. όπου 9 είναι ένα ή περισσότερα δεκαδικά ψηφία (0 έως 9) που αντιπροσωπεύουν τον αντίστοιχο αριθμητικό κωδικό του χαρακτήρα στο σύνολο χαρακτήρων ISO/IEC 10646 2. &#xh; όπου h είναι ένα ή περισσότερα δεκαεξαδικά ψηφία (0 έως f ή F), που επίσης αντιπροσωπεύουν τον αντίστοιχο αριθμητικό κωδικό του χαρακτήρα στο σύνολο χαρακτήρων ISO/IEC 10646
Προσθήκη αναφοράς χαρακτήρων Το A και το A προσθέτουν το κεφαλαίο γράμμα Α (Ο αριθμητικός κωδικός για το Α είναι 65 σε δεκαδικό και 41 σε δεκαεξαδικό σύστημα.) To ISO/IEC 10646 είναι διεθνές σύνολο χαρακτήρων που αναπαριστά χαρακτήρες από όλες τις γραπτές γλώσσες ΙSO: Διεθνής Οργανισμός Προτυποποίησης - International Organization for Standardization και IEC: Διεθνής Επιτροπή Ηλεκτροτεχνίας - Ιnternational Electrotechnical Commission Οι πρώτοι 128 κωδικοί χαρακτήρων είναι ίδιοι με τους αντίστοιχους κωδικούς στο σύνολο χαρακτήρων ASCII που χρησιμοποιείται στους περισσότερους μικροϋπολογιστές
Παραδείγματα προσθήκης αναφοράς χαρακτήρα Περιεχόμενο στοιχείου: Η αριστερή γωνία εισάγεται στα δεδομένα χαρακτήρων του στοιχείου μέσω της αναφοράς χαρακτήρα < (60 είναι ο δεκαδικός κώδικας για το <) <TITLE>< The Legend of Sleepy Hollow></TITLE> Τιμή ιδιότητας: Aναφορά χαρακτήρα ä χρησιμοποιείται για να εισαγάγει το ä σε τιμή ιδιότητας: <RESIDENT Address="Seilerstätte 30, Wien"> Mike Young </RESIDENT> Τιμή δήλωσης εσωτερικής οντότητας γενικής αναλυόμενης σε DTD : αναφορά χαρακτήρα % για την εισαγωγή του χαρακτήρα (%) (37 είναι ο δεκαδικός κωδικός για το %) δεν μπαίνει κατευθείαν σε τιμή εσωτερικής οντότητας: <!ENTITY heading1 "% Complete">
Χρήση προκαθορισμένων οντοτήτων Χρήση σε έγγραφο XML αναφοράς σε προκαθορισμένη οντότητα για την προσθήκη οποιουδήποτε από τους πέντε χαρακτήρες σε κάποια θέση όπου επιτρέπεται η κυριολεκτική εισαγωγή του χαρακτήρα
Χρήση προκαθορισμένων οντοτήτων Οι προκαθορισμένες οντότητες μοιάζουν με άλλες γενικές εσωτερικές αναλυόμενες οντότητες, μόνο που χρησιμοποιούνται αναφορές σε αυτές χωρίς τον προσδιορισμό της οντότητας Προστίθενται στα ίδια σημεία: Στο περιεχόμενο του στοιχείου Στην τιμή μιας ιδιότητας (ως προεπιλεγμένη τιμή σε μια δήλωση ιδιότητας ή στην ετικέτα αρχής ενός στοιχείου) Στην τιμή μιας δήλωσης εσωτερικής οντότητας
Χρήση προκαθορισμένων οντοτήτων - Παραδείγματα Χρήση αναφορών οντοτήτων για την προσθήκη χαρακτήρων των οποίων η κυριολεκτική προσθήκη θα έκανε το έγγραφο μη έγκυρο. Αναφορά < για την προσθήκη αριστερής αγκύλης (<) στο περιεχόμενο ενός στοιχείου: <TITLE>< The Legend of Sleepy Hollow></TITLE> Aναφορά & για την προσθήκη χαρακτήρα (&) σε τιμή ιδιότητας: <PRODUCT Company="Ongaro & Sons">3/4" Τ fitting</product> Aναφορά " για την προσθήκη διπλών εισαγωγικών (") σε τιμή οντότητας (ο χαρακτήρας αυτός δε θα μπορούσε να προστεθεί κυριολεκτικά επειδή χρησιμοποιείται και για την οριοθέτηση της ακολουθίας): <!ENTITY heading "Christopher "Kit" Carson">
XML Parsers, DTDs, και Εσωτερικές Οντότητες Ο parser επεξεργάζεται το περιεχόμενο του DTD, αναγνωρίζει τις εσωτερικές οντότητες, και ελέγχει αν κάθε οντότητα είναι σωστά ορισμένη/διατυπωμένη (wellformed) Στο περιεχόμενο του DTD ορίζονται σαφείς συντακτικοί κανόνες τους οποίους πρέπει να ακολουθεί το XML έγγραφο O parser τότε αντικαθιστά κάθε εμφάνιση αναφοράς entity reference από το αναφερόμενο entity Το αλλαγμένο data object γίνεται διαθέσιμο στην εφαρμογή XML
XML: Εισαγωγή DTD <?xml version="1.0" encoding="utf-8"?> Document Type Declaration (DTD) <!DOCTYPE transfers [ <!-- Here is an internal entity that encodes a bunch of markup that we'd otherwise use in a document --> <!ENTITY messageheader "<header> <routeid> info generic to message route </routeid> <encoding>how message is encoded </encoding> </header> " > ]> <transfers> &messageheader; <fundstransfer date="20010923t12:34:34z"> <from type="intrabank">... Content omitted... </transfers> Internal Entity δήλωση Entity αναφορά &name;
XML Parsers και Εξωτερικές Οντότητες O parser επεξεργάζεται τα περιεχόμενα του DTD και αναγνωρίζει τα εξωτερικά entities Αντικαθιστά κάθε εμφάνιση ενός entity reference από την αναφερόμενη οντότητα και το επαναλαμβάνει για όλες τις οντότητες Τι συμβαίνει αν δεν μπορεί να βρει μια οντότητα? Εξαρτάται από τον τύπο της εφαρμογής ή του parser Υπάρχουν δύο τύποι XML parsers Ένας που πρέπει να ανακτά όλες τις οντότητες, και ένας που μπορεί να τις αγνοήσει (εάν δεν μπορεί να τις βρει)
Οι 2 τύποι XML parsers Validating parser (Επικύρωσης) Πρέπει να ανακτήσουν όλες τις οντότητες και να επεξεργαστούν τα περιεχόμενα όλων των DTDs. Τερματίζουν την επεξεργασία και επιστρέφουν επιτυχία ή αποτυχία. Οι parsers επίσης ελέγχουν για τη συμβατότητα του XML εγγράφου με το DTD ως προς άλλες παραμέτρους, όπως για παράδειγμα συντακτικοί κανόνες Non-validating parser (Μη επικύρωσης parser) Ο parser πιστοποιεί απλά ότι τα δεδομένα είναι well-formed XML H συμπεριφορά της εφαρμογής εξαρτάται από τον τύπο του parser
XML Επεξεργασία: Εξωτερικά Entities Ιδέα: βάλε το entity σε άλλο αρχείο ώστε να είναι διαθέσιμο από πολλά αρχεία. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE transfers [... <!ENTITY messageheader SYSTEM "http://www.somewhere.org/dir/head.xml" > ]> <transfers> &messageheader; <fundstransfer date="20010923t12:34:34z"> <from type="intrabank">... Content omitted... </transfers> ορισμός External Entity Location δοθείσα από ένα URL
Πηγές, Acknowledgement Michael J. Young, «XML Βήμα-Βήμα» (μετάφραση, εκδ. Κλειδάριθμος)