2. Έγγραφα (Documents)

2.1 Τι είναι τα well-formed και τι τα valid έγγραφα

Βασικά, υπάρχουν δυο τύποι 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.

   

2.1.1 Well-formed XML έγγραφα

  Ακολουθώντας τα παρακάτω βήματα και παραδείγματα μπορείτε να κατανοήσετε την έννοια της 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 εγγράφων.

 

ΒΗΜΑ 1: Πως γίνεται μια 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 δήλωση.

   

ΒΗΜΑ 2: Δημιουργώντας ένα στοιχείο αφετηρίας.

  Ο στόχος αυτού του βήματος είναι να δημιουργήσουμε ένα στοιχείο αφετηρίας, που να περιέχει όλα τα στοιχεία που δημιουργείτε μετέπειτα. Είναι το πιο σημαντικό στοιχείο, καθώς περιέχει το υπόλοιπο του εγγράφου και γίνεται συνώνυμο με τον τύπο εγγράφου. Δεν μπορεί να επαναληφθεί.

  Τα έγγραφα 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>

 

 

ΒΗΜΑ 3: Γράφοντας σε XML

  Σκοπός αυτού του βήματος είναι να περιγράψουμε το παράδειγμα της 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>

 

Βήμα 4: Έλεγχος και ανάλυση του εγγράφου.

Στόχος αυτού του βήματος είναι να γίνει ο έλεγχος για το αν ακολουθεί το έγγραφο τους κανόνες της well-formed XML. Εάν το έγγραφό σας δεν συμφωνεί με αυτούς τους κανόνες δεν μπορεί να διαβαστεί κανονικά από έναν XML reader.

Εάν το έγγραφό σας δεν είναι πολύ καλά μορφοποιημένο μπορεί να μην ενεργεί όπως είναι επιθυμητό. Επιβεβαιώστε ότι το κάθε στοιχείο έχουν από μια ετικέτα αρχής και τέλους (start and end tags) και ειδικά το στοιχείο της αφετηρίας. Τα start και end tags όλων των στοιχείων πρέπει να φωλιάζουν ιδανικά μέσα σε υψηλότερα στοιχεία, που σημαίνει ότι τα στοιχεία δεν μπορούν να επικαλυφθούν. Επίσης, έλεγξε ότι όλα τα χαρακτηριστικά χρησιμοποιούν μονά ή διπλά εισαγωγικά και ότι η τιμή κάθε χαρακτηριστικού περιέχεται από έναν μόνο τύπο χαρακτηριστικών.

Ένας καλύτερος τρόπος ελέγχου εάν το έγγραφο είναι well-formed είναι η χρήση του parser (αναλυτή), ο οποίος ελέγχει για λάθη το XML έγγραφο. Προσφέρει μεγάλη βοήθεια όταν δεν μπορείτε να βρείτε το λόγο για τον οποίο τα έγγραφά σας δεν διαβάζονται κανονικά. Ένας τρόπος να ελέγξεις την καλή μορφοποίηση του εγγράφου είναι να χρησιμοποιήσεις την εντολή NSGMLS: NSGMLSs 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>