Βασικά, υπάρχουν δυο τύποι XML εγγράφων : τα well-formed και τα valid.Ένα well-formed XML έγγραφο
ακολουθεί τους γενικούς κανόνες σύνταξης της XML, οι οποίοι
είναι πιο αυστηροί από αυτούς της HTML και της SGML. Οι
χαρακτήρες δεδομένων της XML δεν μένουν ποτέ
δίχως ένα markup τέλους οποιουδήποτε είδους , είτε end-tag όπως το
ζεύγος <MYTAG></MYTAG>, είτε ένα empty element tag με το σύμβολο της καθέτου πριν το σύμβολο
>, όπως <MYTAG/>. Το markup της XML ξεκινάει πάντοτε με το σύμβολο < ή με το
σύμβολο &. Οι τύποι των στοιχείων και τα ονόματα
των εισαγωγικών είναι case sensitive. Τα
χαρακτηριστικά απαιτούν εισαγωγικά κ.α.
Τα valid XML έγγραφα ακολουθούν ένα συγκεκριμένο Document Type Definition(DTD). Ευθύνη
των συγγραφέων και των εκδοτών είναι να
επιβεβαιώνουν την εγκυρότητα των XML εγγράφων, ενώ οι
ικανοί XML browsers χρειάζονται μόνον τον έλεγχο για καλή
μορφοποίηση εάν θέλουν να διαβάσουν XML έγγραφα.
Έτσι κάθε XML parser ελέγχει το έγγραφο για καλή μορφοποίηση
και εγκυρότητα ενώ ο browser αναζητά μονάχα
την καλή μορφοποίηση.
Αν ένα data object είναι well-formed είναι ένα ΧΜL
έγγραφο. Ένα well-formed XML έγγραφο μπορεί να είναι valid εάν πλήρη
κάποιους περιορισμούς.
Κάθε XML έγγραφο έχει μια λογική και μια φυσική
δομή. Φυσικά, το κείμενο συνθέτεται από μονάδες
που καλούνται οντότητες (entities).H οντότητα
μπορεί να αναφέρεται σε άλλες οντότητες για να
προκαλέσει τον συνυπολογισμό τους στο έγγραφο.
Το έγγραφο ξεκινάει από την «αφετηρία» (“root”) ή από
την οντότητα του εγγράφου (document entity).
Λογικά, το έγγραφο αποτελείται από δηλώσεις,
στοιχεία, σχόλια, αναφορές σε χαρακτήρες και
οδηγίες εκτέλεσης , καθένα από τα οποία φαίνονται
στο έγγραφο με σαφές markup.
Ακολουθώντας
τα παρακάτω βήματα και παραδείγματα μπορείτε να
κατανοήσετε την έννοια της well-formed XML
πραγματοποιώντας έτσι τους στόχους αυτού του
διδακτικού υλικού.
Τα well-formed έγγραφα είναι καλά τροποποιημένα επειδή
δεν είναι απαραίτητο να δημιουργούνται σε ένα
δομημένο περιβάλλον, έναντι ενός
προκαθορισμένου συνόλου δομημένων εικόνων, αλλά
να συμμορφώνονται μερικά με τους καλά
τροποποιημένους περιορισμούς. Αυτοί οι
περιορισμοί απαιτούν ότι τα στοιχεία που
ονομάζονται content containers, φωλιάζουν ιδανικά μεταξύ τους και
χρησιμοποιούν σωστά άλλη σύνταξη markup. Τα well-formed XML στοιχεία
καθορίζονται από τη χρήση τους, και όχι από έναν
αυστηρά δομημένο ορισμό, επιτρέποντας τους
συγγραφείς να δημιουργούν στοιχεία σε
ανταπόκριση με την ανάπτυξή τους. Αυτή η
ελαστικότητα προσφέρει στους συγγραφείς
μεγαλύτερο έλεγχο γύρω από την επεξεργασία και
τον σχεδιασμό ενός εγγράφου από αυτά που υπήρχαν
στα παραδοσιακά SGML περιβάλλοντα, στα οποία η δομή έπρεπε να
καθορίζεται τυπικά σε ένα DTD προτού γραφεί
οποιοδήποτε έγγραφο.
Τα well-formed XML ελευθερώνουν τους συγγραφείς του WEB από την
προκαθορισμένη φύση της HTML, επιτρέποντας
την φαντασία να υπερισχύει των περιορισμών. Η HTML είναι
ένας προκαθορισμένος τύπος εγγράφου, που
σημαίνει ότι δεν μπορεί να επεκταθεί ή να
αλλαχθεί για να βελτιώσει την περιγραφική του
δύναμη. Για παράδειγμα, οι συγγραφείς μπορούν να
περιγράψουν έγγραφα στην XML χρησιμοποιώντας
στοιχεία με δικές τους ονομασίες, όπως ESSAY, SECTION, PARAGRAPH, NOTE και IMPORTANT.
Εφόσον συγγράψει το έγγραφο ο συγγραφέας μπορεί
να αλλάξει ένα παράδειγμα του στοιχείου PARAGRAPH σε TAKENOTICE για να
επισημάνει ότι το παράδειγμα αυτό διαφέρει από
τα προηγούμενα και εξυπηρετεί έναν συγκριτικό
σκοπό. Αυτό το επίπεδο ελαστικότητας είναι
ενδεικτικό της well-formed XML και επιτρέπει στους συγγραφείς να
περιγράφουν τα έγγραφα όπως αισθάνονται ότι
ταιριάζουν. Οι συγγραφείς μπορούν να
δημοσιεύσουν τα XML έγγραφα με XSL, CSS, ή DSSSL stylesheets, τα οποία παρέχουν στους WEB
browsers
και στα εργαλεία μετατροπής styling πληροφορίες
για κάθε στοιχείο για να παρουσιάζουν τα έγγραφα
ιδανικά.
Μπορείτε να χρησιμοποιήσετε το notepad των
windows προκειμένου να γράψετε τον XML κώδικα που
επιθυμείτε. Υπάρχουν βέβαια και ειδικά
προγράμματα για την συγγραφή XML όπως το XML - Notepad της Microsoft.
Η μορφή που παίρνει ο κώδικας όταν είναι
γραμμένος στον notepad των windows είναι η εξής:
<?xml version=”1.0” standalone=”yes”?>
<TRIVIA>
<MATH>
<QUESTION>What is the spuare root of 25</QUESTION>
<ANSWER>5</ANSWER>
</MATH>
<GENERAL>
<QUESTION>What is the season after Summer</QUESTION>
<ANSWER>Autumn</ANSWER>
</GENERAL>
</TRIVIA>
|
Αποθηκεύετε το παραπάνω
κείμενο σώζοντάς το με κατάλληξη xml. Το ίδιο
κείμενο στον notepad της xml θα έπερνε την εξής μορφή:
Παρακάτω
ακολουθούν αναλυτικά τα βήματα στα οποία
μπορείτε να βασιστείτε για τη σύνταξη well-formed XML εγγράφων.
Ο σκοπός αυτού του βήματος είναι να
δημιουργήσουμε μια XML δήλωση, η οποία
να δηλώνει τη φύση των XML εγγράφων στους
αναγνώστες των εγγράφων. Χωρίς αυτή τη δήλωση ο
αναγνώστης μπορεί να αναγνωρίσει λανθασμένα το
έγγραφο ως SGML, HTML, ή RTF προκαλώντας μεταφραστικά προβλήματα.
Κάθε έγγραφο XML πρέπει να
χρησιμοποιεί μια XML δήλωση, για να
δηλώνει τη φύση του στους αναγνώστες των XML εγγράφων.
Οι επεξεργαστές κειμένου, οι browsers και οι
επεξεργαστές εγγράφων χρησιμοποιούν τη δήλωση
για να καθορίσουν πώς ένα έγγραφο μπορεί να
επεξεργαστεί. Η δήλωση είναι πολύ σημαντική στα
μεγάλα και σύνθετα έγγραφα αλλά μπορεί επίσης να
χρησιμοποιηθεί σε μικρότερα και δοκιμαστικά
έγγραφα. Η XML δήλωση περιλαμβάνει πληροφορίες για τη
γλώσσα markup, για την παρουσία εξωτερικών δηλώσεων markup και για
την κωδικοποίηση χαρακτήρων.
Δήλωση XML
Αυτές οι XML δηλώσεις χρησιμοποιούνται για ποικίλους
τύπους XML εγγράφων. Οι πρώτες δυο χρησιμοποιούνται
για να περιγράψουν τα well-formed και τα valid XML
έγγραφα,αντίστοιχα. Η τρίτη δήλωση μπορεί να
θεωρηθεί ως default δήλωση
XML,
δηλώνοντας ότι είναι έγγραφο της έκδοσης 1.0, δεν
χρησιμοποιεί εξωτερικές δηλώσεις markup και είναι
κωδικοποιημένη σε μορφή UTF-8.
<?xml version=”1.0” standalone=”yes”?>
<?xml version=”1.0” standalone=”no”?>
<?xml version=”1.0” standalone=”no” encoding=”UTF-8”?>
Συστατικά της
δήλωσης XML
Όρος Ερμηνεία
<?xml
Αρχίζει την δήλωση XML, ένα είδος
οδηγίας για την επεξεργασία.
version
Η δήλωση version περιγράφει την έκδοση της XML που
χρησιμοποιείται, που πρέπει να είναι ίση με “1.0”,
καθώς η XML 1.0 είναι η τρέχουσα και μοναδική έκδοση της XML.
standalone
Η Standalone δήλωση εγγράφου επιτρέπει στον συγγραφέα
του εγγράφου να διευκρινίζει αν υπάρχουν
εξωτερικές markup δηλώσεις. Αυτό το χαρακτηριστικό μπορεί να
είναι ίσο με yes ή no και είναι συνήθως το πρώτο στα well-formed έγγραφα.
encoding
H encoding δήλωση επιτρέπει στον συγγραφέα να καθορίσει τον χαρακτήρα
κωδικοποίησης που θα χρησιμοποιηθεί. Αυτή η
δήλωση πρέπει να χρησιμοποιείται μόνο από
συγγραφείς που χρησιμοποιούν χαρακτήρα
κωδικοποίησης εκτός του US-ASCII, τον πιο κοινό, ή
τον UTF-8.
?>
Κλείνει την XML δήλωση.
Ο στόχος αυτού του βήματος είναι να
δημιουργήσουμε ένα στοιχείο αφετηρίας, που να
περιέχει όλα τα στοιχεία που δημιουργείτε
μετέπειτα. Είναι το πιο σημαντικό στοιχείο, καθώς
περιέχει το υπόλοιπο του εγγράφου και γίνεται
συνώνυμο με τον τύπο εγγράφου. Δεν μπορεί να
επαναληφθεί.
Τα έγγραφα markup, όπως τα HTML, XML ή SGML, εισάγουν
ένα στοιχείο αφετηρίας το οποίο περιλαμβάνει όλα
τα υπόλοιπα. Το στοιχείο αφετηρίας συνήθως
περιγράφει τη εστία ή τη λειτουργία του εγγράφου.
Το HTML
στοιχείο στην HTML είναι ένα καλό στοιχείο αφετηρίας επειδή
αποκαλύπτει το όνομα της γλώσσας markup. Το στοιχείο TRIVIA στο
παράδειγμα είναι ένα άλλο στοιχείο αφετηρίας
επειδή περιγράφει τη λειτουργία του εγγράφου.
Όλα τα XML στοιχεία περιλαμβανομένων και των
στοιχείων αφετηρίας έχουν μια συγκεκριμένη
σύνταξη. Περιλαμβάνουν το όνομά τους ή τον τύπο
τους ανάμεσα στα σύμβολα < και >, τα οποία
χρησιμοποιούνται συχνά σε HTML, SGML και XML έγγραφα.
Για παράδειγμα, το στοιχείο της παραγράφου στην XML γράφεται
ως <P>.
Υπάρχουν άλλοι κανόνες για τα στοιχεία και άλλοι
για τα χαρακτηριστικά , τα οποία περιέχονται στα
στοιχεία, αλλά τα περισσότερα στοιχεία παίρνουν
τη μορφή: <NAME>CONTENT</NAME>. H XML είναι case sensitive, οπότε ένα στοιχείο μπορεί να εμφανίζεται
ως: <DocumentTitle>XML Tutorial</DocumentTitle>.
To δικό σας
παράδειγμα της well-formed XML
Είσαστε τώρα στο στάδιο της δημιουργίας
ενός δικού σας εγγράφου στο οποίο πρέπει να
αποφασίσετε για το περιεχόμενό του και τα
στοιχεία που θα χρησιμοποιήσετε στην περιγραφή
του. Διαλέξτε ένα στοιχείο που να περιγράφει το
έγγραφο που θα δημιουργήσετε. Χρησιμοποιείστε
αυτό το στοιχείο ως στοιχείο αφετηρίας, καθώς
περιέχει όλα τα στοιχεία μέσα σε αυτό, και
περιγράψτε το έγγραφό σας. Για παράδειγμα, τα NOVEL, SONG και LOG είναι
καλά στοιχεία αφετηρίας επειδή υποδηλώνουν τη
λειτουργία ολόκληρου του εγγράφου. Αυτό το
έγγραφο περιέχει βοήθεια για τη δημιουργία των XML εγγράφων
και χρησιμοποιεί το <HELP> ως κατάλληλα
επιλεγμένο στοιχείο αφετηρίας.
<?xml version=”1.0” standalone=”yes”?>
<HELP>
<HELP/>
Παράδειγμα
εγγράφου
Αυτό το έγγραφο είναι ένα καλό παράδειγμα
μιας ιδανικής περιγραφής περιεχομένου
χρησιμοποιώντας XML. Ξεκινάει με μια XML δήλωση και
εισάγει ένα καλό στοιχείο αφετηρίας. Περιγράφει,
επίσης, καλά τη δομή ολόκληρου του εγγράφου,
επιβεβαιώνοντας ότι παρουσιάζει καλά τις
διαφορές μεταξύ διαφόρων τύπων του περιεχομένου.
<?xml version=”1.0” standalone=”yes”?>
<TRIVIA>
<MATH>
<QUESTION>What is the spuare root of 25</QUESTION>
<ANSWER>5</ANSWER>
</MATH>
<GENERAL>
<QUESTION>What is the season after Summer</QUESTION>
<ANSWER>Autumn</ANSWER>
</GENERAL>
</TRIVIA>
Σκοπός αυτού του βήματος είναι να
περιγράψουμε το παράδειγμα της well-formed XML που
δημιουργήσατε. Θα πρέπει να γράψετε το έγγραφό
σας και να το περιγράψετε με XML markup, όπως απορρέει.
Θα είναι το μεγαλύτερο βήμα από τη στιγμή που
δημιουργήσατε το σώμα του εγγράφου.
Τώρα που έχετε μια εστία για το έγγραφό
σας αναπτύξτε το. Ξεκινήστε να γράφετε
περιγράφοντας το περιεχόμενο με στοιχεία της
δικής σας ονομασίας. Επινοήστε καινούριο
στοιχείο κάθε φορά που εισάγετε περιεχόμενο στο
έγγραφό σας και που να διαφέρει σημαντικά από
κάθε προηγούμενο. Όσο πιο βαθιά είναι η περιγραφή
του εγγράφου, τόσο μεγαλύτερο έλεγχο θα έχετε
αργότερα, όταν το χρησιμοποιείτε, προφανώς όταν
γράφετε ένα stylesheet.
Μπορείτε επίσης να χρησιμοποιείτε
χαρακτηριστικά για να περιγράψετε το έγγραφό
σας. Περιέχονται μέσα στα start-tags των στοιχείων
και χρησιμοποιούνται για να περιγράψουν το
περιεχόμενό τους ή την συμπεριφορά τους. Για
παράδειγμα, ένα χαρακτηριστικό χρησιμοποιείται
για να περιγράψει τη διαφορά μεταξύ των
ταξινομημένων και των μη-ταξινομημένων λιστών,
εάν όλες οι λίστες περιγραφόταν με το στοιχείο <LIST>. Αν το
χαρακτηριστικό ονομαζόταν type, το start-tag μιας
μη-ταξινομημένης λίστας θα έπαιρνε τη μορφή: <LIST type = “unordered”>.
Μπορείτε να χρησιμοποιήσετε τα στοιχεία και τα
χαρακτηριστικά ως μέρος της σειράς εργαλείων.
Χρησιμοποίησε παραδείγματα XML, όπως την
υπόδειξη TRIVIA στο βήμα 2, το οποίο περιγράφει ερωτήσεις
και απαντήσεις και τη συνομιλία σε αυτό το βήμα.
Πρόσεξε ότι και τα δυο
παραδείγματα αναπαριστούν
συστατικά εγγράφου με περιγραφικά στοιχεία.
Αποτελεσματικές XML υποδείξεις χρησιμοποιούν
περιγραφικά ονόματα στοιχείων με τέτοιο τρόπο
που επιβεβαιώνει ότι τα έγγραφα είναι εύκολο να δημιουργηθούν και να
διατηρηθούν.
Οι συγγραφείς ονομάζουν τυπικά τα
έγγραφά τους. Τα στοιχεία TITLE και TTL
χρησιμοποιούνται συχνά σε έγγραφα ονομασίας και
σε συστατικά εγγράφων, όπως πίνακες και φιγούρες.
Δεν είναι υποχρεωτικό να περιλαμβάνεις πάντα
έναν τίτλο εγγράφου ωστόσο εάν χρησιμοποιηθεί
παρέχει μια πολύ καλή περιγραφή στους
αναγνώστες. Το όνομα του εγγράφου πρέπει να
βρίσκεται στην αρχή του εγγράφου μετά το
στοιχείο αφετηρίας.
To δικό σας
παράδειγμα της well-formed XML
Σε αυτό το βήμα πρέπει να συμπληρώσετε
το δικό σας παράδειγμα. Το επόμενο παράδειγμα θα
σας βοηθήσει να κατανοήσετε κάθε βήμα αυτού του tutorial.
<?xml version=”1.0” standalone=”yes”?>
<HELP>
<TITLE>XML Help</TITLE>
<QUERY area=”XML”>
<QUESTION>I don’t know where to start. What do II do?</QUESTION>
<ANSWER>Start with our root element. Break your document down into parts,
filling them in and flushing them out further</ANSWER>
</QUERY>
<QUERY area=”XML”>
<QUESTION>How do I know if my element names are well
chosen?</QUESTION>
<ANSWER>If their purpose is implied through their names, then they are well
chosen. Make sure, at the very least, that they make sense to you. If not rename them or
change your structure.</ANSWER>
</QUERY>
<QUERY area=”formatting”>
<QUESTION>Where can I learn about formetting XML
documents?</QUESTION>
<ANSWER>You
should learn much more about XML before you concern yourself with formatting. Formating is
an external process and is best done with XSL, CSS or DSSSL.</ANSWER>
</QUERY>
</HELP>
Το παράδειγμα
ενός XML εγγράφου που περιγράφει μια συζήτηση.
Αυτό το έγγραφο περιγράφει μια συζήτηση
μεταξύ δυο ανθρώπων. Μπορείτε να το
χρησιμοποιήσετε ως ακόμη ένα παράδειγμα μιας
καλής περιγραφής κειμένου. Η χρήση των κεφαλαίων
για τα ονόματα στοιχείων και των μικρών
γραμμάτων για τα ονόματα των χαρακτηριστικών
είναι μια πρόταση που δεν είναι υποχρεωτικό να
ακολουθηθεί.
<version=”1.0” standalone=”yes”?>
<CONVERSATION>
<TITLE>A Conversation between Richard and Annie</TITLE>
<SPEECH>
<PERSON name=“Annie”>Why XML?</PERSON>
< PERSON name=“Richard”>XML conforms to information allowing document
authors to create markup languages that work for them.</ PERSON>
</SPEECH>
<SPEECH>
<PERSON name=“Richard”>With HTML, document authors become frustrated,
trying to fit their information sets into a fixed markup language.</ PERSON>
< PERSON name=“Annie”>For authors that have become used to HTML, but
only want a few more elements, can they use XML?< /PERSON>
< PERSON name=“Richard”>With XML, anything is possible. You could
extend or even contract HTML, depending on needs. You can also define your own markup
language, to describe any organization of information. Think of XML as being
information-dependent.</ PERSON>
</SPEECH>
</CONVERSATION>
Στόχος αυτού του βήματος είναι να γίνει ο
έλεγχος για το αν ακολουθεί το έγγραφο τους
κανόνες της well-formed XML. Εάν το έγγραφό σας δεν συμφωνεί με αυτούς
τους κανόνες δεν μπορεί να διαβαστεί κανονικά
από έναν XML reader.
Εάν το έγγραφό σας δεν είναι πολύ καλά
μορφοποιημένο μπορεί να μην ενεργεί όπως είναι
επιθυμητό. Επιβεβαιώστε ότι το κάθε στοιχείο
έχουν από μια ετικέτα αρχής και τέλους (start and end tags) και
ειδικά το στοιχείο της αφετηρίας. Τα start και end tags όλων των
στοιχείων πρέπει να φωλιάζουν ιδανικά μέσα σε
υψηλότερα στοιχεία, που σημαίνει ότι τα στοιχεία
δεν μπορούν να επικαλυφθούν. Επίσης, έλεγξε ότι
όλα τα χαρακτηριστικά χρησιμοποιούν μονά ή διπλά
εισαγωγικά και ότι η τιμή κάθε χαρακτηριστικού
περιέχεται από έναν μόνο τύπο χαρακτηριστικών.
Ένας καλύτερος τρόπος ελέγχου εάν το
έγγραφο είναι well-formed είναι η χρήση του parser (αναλυτή), ο
οποίος ελέγχει για λάθη το XML έγγραφο.
Προσφέρει μεγάλη βοήθεια όταν δεν μπορείτε να
βρείτε το λόγο για τον οποίο τα έγγραφά σας δεν
διαβάζονται κανονικά. Ένας τρόπος να ελέγξεις
την καλή μορφοποίηση του εγγράφου είναι να
χρησιμοποιήσεις την εντολή NSGMLS: NSGMLS –s xml.dcl yourfile.xml. Για αυτόν το
σκοπό υπάρχουν πολλοί άλλοι καλοί parsers.
Παραδείγματα
ελέγχου και ανάλυσης εγγράφων
Αυτά τα παραδείγματα επεξηγούν κοινά
μυστικά και την ιδανική χρήση των στοιχείων. Τα
πρώτα δυο παραδείγματα είναι σε well-formed XML ενώ τα
υπόλοιπα που ακολουθούν δεν είναι παρόλο που
ελέγχουν για λάθη.
<PRICE>$57.80</PRICE>
<PET><CAT type=“Corish Rex”>Cat nests properly within
PET.</CAT><PET>
<WEATHER>foggy
<LEVEL>intermediate<LEVEL>
<PASSWORD>planetB612</PASSWD>
<DISTANCE TYPE=KM120</DISTANCE>
<CAR><engine>engine does not net properly within
CAR</CAR></engine>