Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Σημασιολογικός Ιστός (Semantic Web) - XML 11/10/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr
Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων XML Δημιουργία και εμφάνιση εγγράφων XML
Δημιουργία εγγράφου XML Text editor για τη δημιουργία του εγγράφου Inventory.xml
Ανατομία εγγράφου XML 2 βασικά μέρη Πρόλογος Στοιχείο εγγράφου (document element) ή αλλιώς Βασικό στοιχείο (root element)
Ανατομία εγγράφου XML Πρόλογος <?xml version="1.0"?> Δήλωση XML Στοιχείο εγγράφου (Βασικό στοιχείο) <!-- 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> </BOOK> </INVENTORY> Σχόλιο Στοιχεία ένθετα στο στοιχείο εγγράφου
Πρόλογος <?xml version="1.0"?> (ή <?xml version= 1.0?>) <!-- File Name: Inventory.xml --> Σημείωση: τα αλφαριθμητικά σε εισαγωγικά που περιέχονται στη σήμανση XML κυριολεκτικά αλφαριθμητικά μπορούν να περικλείονται είτε σε μονά είτε σε διπλά εισαγωγικά
XML δήλωση Η πρώτη γραμμή ενός XML αρχείου <?xml version="versionnumber" [encoding="encodingvalue"] [standalone="yes no"]?> version e.g. 1.0 encoding προαιρετική τιμή - προεπιλεγμένη UTF-8 standalone Δηλώνει αν το XML αρχείο δεν εξαρτάται από άλλα XML αρχεία για να είναι έγκυρο ή όχι Εξ ορισμού η τιμή είναι yes (δηλ. ανεξάρτητο αρχείο)
XML δήλωση Η XML δήλωση είναι προαιρετική αν και η προδιαγραφή της γλώσσας την αναφέρει ως υποχρεωτική Εμφανίζεται πάντα στην αρχή του εγγράφου
Πρόλογος <?xml version="1.0"?> <!-- File Name: Inventory.xml --> 2 η γραμμή ΚΕΝΗ Ο επεξεργαστής XML τις αγνοεί Check inventory.xml 3 η γραμμή ΣΧΟΛΙΟ Διευκολύνει την ανάγνωση του εγγράφου! Ο επεξεργαστής XML αγνοεί ότι είναι μεταξύ <!- - και --> (οποιοδήποτε κείμενο εκτός από -- ) Ο πρόλογος μπορεί επίσης να περιλαμβάνει: Δήλωση είδους εγγράφου καθορίζει τη δομή και το είδος του εγγράφου Εντολές επεξεργασίας (πληροφορίες που ο XML επεξεργαστής μεταβιβάζει στην εφαρμογή) π.χ. Εντολή επεξεργασίας για σύνδεση φύλλου στυλ στο έγγραφο XML
Σημείωση... / XML Parser Η επεξεργασία των XML αρχείων γίνεται με τη χρήση XML Parsers (επεξεργαστές XML) Ο επεξεργαστής XML είναι η μονάδα του λογισμικού που διαβάζει το έγγραφο XML και επιτρέπει την προσπέλαση των περιεχομένων του Όταν εμφανίζουμε ένα έγγραφο XML στον Internet Explorer, τότε ο browser παρέχει και τον επεξεργαστή της XML! Ένας Parser ελέγχει αν ένα XML αρχείο είναι well formed ή συντακτικά ορθό
Στοιχείο εγγράφου Το στοιχείο εγγράφου περιέχει επιπλέον στοιχεία Λογική δομή εγγράφου XML Πληροφορίες εγγράφου πχ πληροφορίες σχετιλά με το βιβλίο (τίτλοι, ονόματα συγγραφέων, τιμές) Ετικέτα αρχής Περιεχόμενο Δεδομένα χαρακτήρων Άλλα στοιχεία ένθετα / δεδομένα σήμανσης Συνδυασμός και των δύο Ετικέτα τέλους
Στοιχείο εγγράφου Στοιχείο εγγράφου: INVENTORY Ετικέτα αρχής: <INVENTORY> Περιεχόμενο 8 ένθετα στοιχεία του BOOK Ετικέτα τέλους: </INVENTORY> Ας θυμηθούμε λίγο HTML Στοιχείο εγγράφου παρόμοιο με στοιχείο BODY αλλά εδώ το ορίζουμε με όποιο συντακτικά σωστό όνομα θέλουμε!
Ανατομία εγγράφου XML Ετικέτα αρχής Ένθετα στοιχεία Ετικέτα τέλους Τύπος <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> </BOOK> Δεδομένα χαρακτήρων Κάθε στοιχείο του BOOK περιλαμβάνει με τη σειρά του έναν ένθετο αριθμό στοιχείων Τύπος στοιχείου το όνομα που εμφανίζεται στην αρχή Εδώ τα ένθετα στοιχεία έχουν μόνο δεδομένα χαρακτήρων
Ανατομία εγγράφου XML Τύπος Τύπος <TITLE>The Adventures of Huckleberry Finn</TITLE> Ετικέτα αρχής Περιεχόμενο (Δεδομένα χαρακτήρων) Ετικέτα τέλους
Μερικοί βασικοί κανόνες Το έγγραφο πρέπει να περιέχει ένα μόνο στοιχείο ανωτάτου επιπέδου (το στοιχείο εγγράφου ή βασικό στοιχείο). Όλα τα υπόλοιπα στοιχεία πρέπει να είναι ένθετα σε αυτό. Η ένθεση των στοιχείων πρέπει να είναι σωστή. Αυτό σημαίνει ότι, αν ένα στοιχείο ξεκινάει μέσα σε κάποιο άλλο, πρέπει και να τελειώνει μέσα σε αυτό. Κάθε στοιχείο πρέπει να έχει ετικέτα αρχής και ετικέτα τέλους. Σε αντίθεση με την HTML, η XML δεν επιτρέπει να παραλείπεται η ετικέτα τέλους Το όνομα του στοιχείου στην ετικέτα αρχής πρέπει να είναι ίδιο ακριβώς με εκείνο της ετικέτας τέλους
Μερικοί βασικοί κανόνες Στα ονόματα των στοιχείων γίνεται διάκριση κεφαλαίων και πεζών χαρακτήρων Αυτό συμβαίνει με όλο το κείμενο που γράφεται σε XML. Για παράδειγμα, το στοιχείο που ακολουθεί δεν είναι συντακτικά σωστό, επειδή το όνομα της ετικέτας αρχής δεν είναι όμοιο με εκείνο της ετικέτας τέλους: <TITLE>Leaves of Grass</Title> <! -- μη επιτρεπτό στοιχείο -->
Το συντακτικό της XML 1/2 Κάθε tag πρέπει να κλείνει <message> Welcome XML! Τα tags είναι case sensitive (no) Το <message> είναι διαφορετικό από το <Message> Τα tags πρέπει να είναι εμφωλευμένα σωστά <mymessage> <message> Welcome XML </mymessage> </message> (no) Άδεια tags <Name/>
Το συντακτικό της XML 2/2 Όλα τα XML αρχεία πρέπει να έχουν ένα και μόνο root tag! Όλες οι τιμές των ιδιοτήτων πρέπει να βρίσκονται ανάμεσα σε εισαγωγικά <message date= 12/01/2004 > Εισαγωγή σχολίων όπως στην HTML <!-- this is a comment --> (yes)
XML Elements 1/2 Ένα XML αρχείο είναι επεκτάσιμο Νέα στοιχεία μπορούν να προστεθούν <mymessage> <message>welcome to XML!</message> <date>6/12/2004</date> </mymessage> Σχέσεις μεταξύ των XML elements mymessage root element and parent element of message & date περιέχει ένα ή περισσότερα ένθετα στοιχεία message & date siblings & child elements of mymessage περιέχονται στο γονικό στοιχείο
XML Elements 2/2 Το περιεχόμενο των elements ποικίλλει Άλλα elements (child elements) Μεικτό περιεχόμενο κείμενο & elements Μόνο κείμενο Άδειο element Δεν υπάρχει περιορισμός στο βάθος του εμφωλιασμού στοιχείων Τα ονόματα των elements Μπορούν να περιέχουν γράμματα, αριθμητικά ψηφία και άλλους χαρακτήρες Δεν μπορούν να αρχίζουν με αριθμητικό ή σημείο στίξης Δεν μπορούν να αρχίζουν με τα γράμματα xml (ή XML ή Xml) Δεν μπορούν να περιέχουν κενά
Εμφάνιση εγγράφου XML Άνοιγμα εγγράφου ΧΜL κατευθείαν στον Internet Explorer, όπως ακριβώς με μια ιστοσελίδα HTML Αν το έγγραφο XML δεν είναι συνδεδεμένο με κάποιο φύλλο στυλ, ο Internet Explorer εμφανίζει το πλήρες έγγραφο, μαζί με σήμανση (π.χ. ετικέτες, σχόλια), στοιχεία χαρακτήρων Ο Internet Explorer κωδικοποιεί με χρώματα τα διάφορα μέρη του εγγράφου για να κάνει πιο εύκολη την αναγνώρισή τους Εμφανίζει το στοιχείο εγγράφου ως συμπτύξιμο / επεκτάσιμο δένδρο, ώστε να δείξει με σαφήνεια τη λογική δομή του εγγράφου με διάφορα επίπεδα λεπτομερειών
Εμφάνιση εγγράφου XML Σύνδεση εγγράφου XML με κάποιο φύλλο στυλ ΤΟΤΕ εμφάνιση από τον Internet Explorer μόνο των δεδομένων χαρακτήρων των στοιχείων του εγγράφου Μορφοποίηση ακολουθώντας τους κανόνες που έχουν οριστεί στο φύλλο στυλ Διάφορα φύλλα στυλ: Φύλλο επάλληλων στυλ (CSS ο ίδιος τύπος φύλλου στυλ που χρησιμοποιείται και στις σελίδες HTML) Φύλλο στυλ XSL (Extensible Stylesheet Language - Επεκτάσιμη Γλώσσα Φύλλων Στυλ) χρησιμοποιεί το συντακτικό της ΧΜL και μπορεί να χρησιμοποιηθεί μόνο σε έγγραφα XML.
Εμφάνιση εγγράφου XML Inventory.xml Αλλαγή επιπέδου λεπτομέρειας
Εντοπισμός σφαλμάτων Πριν ο Internet explorer εμφανίσει το έγγραφο, ο ενσωματωμένος αναλυτής/επεξεργαστής XML αναλύει τα περιεχόμενα του εγγράφου Έλεγχος για το αν το έγγραφο είναι σωστά διατυπωμένο δεν ελέγχει την εγκυρότητα του εγγράφου! Αν σφάλμα, τότε σελίδα μηνύματος σφάλματος! Αλλαγή Inventory.xml
Δημιουργία σωστά διατυπωμένων εγγράφων XML Σωστά διατυπωμένο έγγραφο (well-formed document): είναι εκείνο που πληροί τα απαραίτητα κριτήρια ενός συμβατού εγγράφου XML Εύκολη η δημιουργία του! Σε αντίθεση με το έγκυρο (valid) έγγραφο XML: ένα έγγραφο που δεν είναι μόνο σωστά διατυπωμένο αλλά ακολουθεί ένα σύνολο πιο αυστηρών περιορισμών Περιλαμβάνει και δήλωση είδους εγγράφου στον πρόλογο του εγγράφου
Τα μέρη ενός σωστά διατυπωμένου εγγράφου XML
Δημιουργία XML αρχείου για την παρακάτω παραγγελία
Δημιουργία XML αρχείου για την παρακάτω παραγγελία
Προσθήκη στοιχείων στο έγγραφο Ιεραρχική δενδρική μορφή με ένθετα στοιχεία ΟΠΩΣΔΗΠΟΤΕ ένα στοιχείο ανωτάτου επιπέδου το στοιχείο εγγράφου ή βασικό στοιχείο και όλα τα υπόλοιπα στοιχεία να είναι ένθετα σε αυτό
Ανατομία ενός στοιχείου Το όνομα που εμφανίζεται στην ετικέτα αρχής και στην ετικέτα τέλους (π.χ. TITLE) είναι γνωστό ως τύπος ή γενικό αναγνωριστικό του στοιχείου (generic identifier ή Gl). To όνομα αυτό αντιπροσωπεύει ένα ορισμένο είδος ή τάξη στοιχείων, και όχι κάποιο συγκεκριμένο στοιχείο. Έτσι, το έγγραφο μπορεί να περιέχει περισσότερα από ένα στοιχεία με το ίδιο όνομα τύπου
Επιλογή ονόματος στοιχείου Το όνομα πρέπει να ξεκινάει με κάποιο γράμμα ή με χαρακτήρα υπογράμμισης (_), ακολουθούμενο από το μηδέν ή από επιπλέον γράμματα, ψηφία, τελείες (.), παύλες (-), ή χαρακτήρες υπογράμμισης Στην προδιαγραφή της XML, αναφέρεται ότι τα ονόματα στοιχείων που αρχίζουν με το πρόθεμα xml (με οποιονδήποτε συνδυασμό κεφαλαίων ή πεζών χαρακτήρων) διατίθενται μόνο για προτυποποίηση
Ονόματα στοιχείων Έγκυρα ονόματα στοιχείων Μη έγκυρα ονόματα στοιχείων ΣΗΜΕΙΩΣΗ: Σύμφωνα με την προδιαγραφή της XML, η άνω και κάτω τελεία (:) χρησιμοποιείται στον προσδιορισμό χώρων ονομάτων (namespaces). Με τους χώρους ονομάτων διαφοροποιούνται στοιχεία που έχουν το ίδιο όνομα.
Well-formed? Τμήμα 1 <myelement /> Τμήμα 2 < myelement /> Τμήμα 3 <myelement / > Τμήμα 4 <myelement/ > Τμήμα 5 <myelement/> YES! NO!!! NO!!! NO!!! YES!
Τύποι περιεχομένου στοιχείων Ένθετα στοιχεία. Τα στοιχεία INVENTORY και BOOK έχουν και τα δύο ως περιεχόμενό τους ένθετα στοιχεία Δεδομένα χαρακτήρων. Κείμενο που εκφράζει το πληροφοριακό περιεχόμενο ενός στοιχείου, π.χ. κάποιος συγκεκριμένος τίτλος βιβλίου στο στοιχείο TITLE
Παράδειγμα Παράδειγμα περιεχομένου που αποτελείται και από δεδομένα χαρακτήρων και από ένα ένθετο στοιχείο Όταν προσθέτετε δεδομένα χαρακτήρων σε ένα στοιχείο, μπορείτε να παρεμβάλετε όποιους χαρακτήρες θέλετε, εκτός από την αριστερή αγκύλη (<), το εμπορικό "και" (&), ή την αλφαριθμητική ακολουθία ]]>
Τύποι περιεχομένου στοιχείων Αναφορές γενικής οντότητας ή αναφορές χαρακτήρων - στοιχείο που περιλαμβάνει και τα δύο: Ενότητες CDATA. Η ενότητα CDATA είναι ένα μπλοκ κειμένου όπου τοποθετούμε όποιους χαρακτήρες θέλουμε εκτός από την ακολουθία ]]> - στοιχείο που περιέχει ενότητα CDATA
Τύποι περιεχομένου στοιχείων Εντολές επεξεργασίας. Μια εντολή επεξεργασίας παρέχει πληροφορίες στην εφαρμογή της XML Σχόλια. Το σχόλιο είναι μια σημείωση που προσθέτουμε στο έγγραφο και η οποία μπορεί να διαβαστεί από ανθρώπους αλλά όχι από τον επεξεργαστή Στοιχείο που περιέχει και εντολή επεξεργασίας και σχόλιο:
Κενά στοιχεία Η σύνταξη της XML επιτρέπει κενά στοιχεία (empty elements) δηλαδή στοιχεία με κενό (χωρίς) περιεχόμενο Τα κενά στοιχεία έχουν τη μορφή: <ετικέτα></ετικέτα> Ή ετικέτα κενού στοιχείου: <ετικέτα/> Γιατί θέλουμε το κενό στοιχείο??? Μπορεί να θέλουμε να πούμε στην εφαρμογή της XML να εκτελέσει μια ενέργεια ή να εμφανίσει ένα αντικείμενο Ένα κενό στοιχείο μπορεί να αποθηκεύσει πληροφορίες μέσω ιδιοτήτων (θα δούμε στη συνέχεια)
Δημιουργία διαφορετικών τύπων στοιχείων Προσθήκη επιπλέον στοιχείων (Inventory03.xml): Σχόλιο σε στοιχείο ως μέρος του περιεχομένου του (INVENTORY) ο browser δεν εμφανίζει το κείμενο του σχολίου Κενό στοιχείο με το όνομα COVER_IMAGE, στην αρχή κάθε στοιχείου του BOOK δίνει οδηγία στην εφαρμογή XML να εμφανίσει τη συγκεκριμένη εικόνα του εξωφύλλου του βιβλίου. (Η ιδιότητα Source περιέχει το όνομα του αρχείου εικόνας.) Όμως, για να χρησιμοποιηθεί αυτό, χρειάζεται ένα φύλλο στυλ XSL και όχι το απλό CSS Το στοιχείο TITLE για το Moby Dick περιέχει και δεδομένα χαρακτήρων και θυγατρικό στοιχείο (SUBTITLE) Ο browser εμφανίζει τα δεδομένα χαρακτήρων και το θυγατρικό στοιχείο σε μία και μόνη γραμμή, χρησιμοποιώντας την ίδια μορφοποίηση (που ορίζει το στοιχείο TITLE)
Εγγραφο 1 <book1> <isbn>1234567890</isbn> <name>introduction to XML > 2013<</name> </book1> Εγγραφο 2 <book1> <Isbn>1234567890</isbn> <Name>Introduction to XML >2013<</Name> </book1> Εγγραφο 3 <1_book> <isbn>1234567890</isbn> <name>introduction to XML>2013<</name> </1_book> Εγγραφο 4 <book> <isbn>1234567890 <name> </isbn>introduction to XML>2013< </name> </book> Well-formed? YES! NO!!! NO!!! NO!!!
Well-formed? Εγγραφο 1 <course>html&php</course > Εγγραφο 2 <course> HTML version (<<5>>) </course> NO!!! NO!!! Εγγραφο 3 <course>html "v05" </course> YES! Εγγραφο 4 <course/ > NO!!!
XML attributes/ιδιότητες Τα XML elements μπορούν να περιέχουν attributes (ιδιότητες) στο αρχικό tag Τα attributes παρέχουν περισσότερες πληροφορίες για τα elements <file type="gif">computer.gif</file> Η τιμή ενός attribute πρέπει να βρίσκεται είτε σε μονά είτε σε διπλά εισαγωγικά Οι επιπλέον πληροφορίες για ένα element μπορούν να αποθηκευτούν είτε ως attribute είτε ως child element
Προσθήκη ιδιοτήτων σε στοιχεία Ζεύγος ονόματος-τιμής που συνδέεται με το στοιχείο Το στοιχείο PRICE περιλαμβάνει μια ιδιότητα που ονομάζεται Type και για την οποία ορίζεται η τιμή retail: <PRICE Type="retail" >$10. 95</PRICE> Το στοιχείο BOOK περιλαμβάνει δύο ιδιότητες: τις Category και Display <ΒΟΟΚ Category="fiction" Display=" emphasize" > <TITLE>The Marble Faun</TITLE> <AUTHOR>Nathaniel Hawthorne</AUTHOR> <BINDING>trade paperback</binding> <PAGES>473</PAGES> <PRICE>$10. 95</PRICE> </B00K>
Προσθήκη ιδιοτήτων σε στοιχεία To παρακάτω κενό στοιχείο περιλαμβάνει μια ιδιότητα που ονομάζεται Source και δείχνει το όνομα του αρχείου το οποίο περιέχει την εικόνα που πρόκειται να εμφανιστεί: <COVER_IMAGE Source="Faun.gif"/>
Προσθήκη ιδιοτήτων σε στοιχεία Εναλλακτική λύση που δίνει τη δυνατότητα να συμπεριλαμβάνουμε πληροφορίες σε ένα στοιχείο Τοποθέτηση όγκου δεδομένων που θέλουμε να εμφανίσουμε στο περιεχόμενο του στοιχείου Χρησιμοποίηση ιδιοτήτων για να αποθηκεύσουμε διάφορα χαρακτηριστικά του στοιχείου που δεν έχουμε απαραιτήτως σκοπό να εμφανίσουμε
Ιδιότητες στην XML Διαφορετικοί τρόποι κωδικοποίησης πληροφορίας σε XML με χρήση στοιχείων και ιδιοτήτων: Παράδειγμα 1: <φοιτητής ΑΜ = "12345"> <όνομα> Νίκος </όνομα> <επώνυμο> Νικολάου </επώνυμο> </φοιτητής> Παράδειγμα 2: <φοιτητής> <ΑΜ> 12345 </ΑΜ> <όνομα> Νίκος </όνομα> <επώνυμο> Νικολάου </επώνυμο> </φοιτητής> Παράδειγμα 3: <φοιτητής ΑΜ = "12345" όνομα = "Νίκος" επώνυμο="νικολάου"/>
Χρήση στοιχείων αντί ιδιοτήτων! Γιατί να αποφεύγετε τις ιδιότητες; Δεν μπορούν να περιέχουν πολλαπλές τιμές Δεν είναι εύκολα επεκτάσιμα Δεν περιγράφουν δομές Διαχειρίζονται δύσκολα από προγράμματα Είναι δύσκολος ο έλεγχός τους με βάση ένα DTD Πότε να χρησιμοποιείτε ιδιότητες; Για πληροφορίες που δεν είναι σχετικές με τα δεδομένα Για την ανάθεση ID στα στοιχεία
Κανόνες για τη δημιουργία ιδιοτήτων Μια προδιαγραφή ιδιότητας αποτελείται από ένα όνομα ακολουθούμενο από = και από την τιμή της ιδιότητας Το όνομα πρέπει να αρχίζει με γράμμα ή χαρακτήρα υπογράμμισης (_) και στη συνέχεια να ακολουθεί μηδέν ή άλλα γράμματα, ψηφία, τελείες (.), παύλες (-), ή χαρακτήρες υπογράμμισης (_) Σύμφωνα με την προδιαγραφή XML, τα ονόματα ιδιοτήτων που αρχίζουν με το πρόθεμα "xml" (σε οποιονδήποτε συνδυασμό κεφαλαίων ή πεζών) "διατίθενται μόνο για προτυποποίηση" Ένα συγκεκριμένο όνομα ιδιότητας μπορεί να εμφανιστεί μόνο μία φορά στην ίδια ετικέτα αρχής ή στην ετικέτα κενού στοιχείου (ενώ ένα στοιχείο μπορεί να διαθέτει υποστοιχεία με το ίδιο όνομα, δεν επιτρέπεται σε περισσότερες από μία ιδιότητές του να έχουν το ίδιο όνομα!) Η σειρά εμφάνισης των ιδιοτήτων ενός στοιχείου δεν παίζει κανένα ρόλο σε αντίθεση με τη σειρά εμφάνισης των στοιχείων
Ονόματα ιδιοτήτων Έγκυρα ονόματα ιδιοτήτων Μη έγκυρα ονόματα ιδιοτήτων <! -- Επανάληψη ονόματος ιδιότητας στην ίδια ετικέτα: --> <ΑΝΙΜΑΤΙΟΝ FileName=" Waldo1.ani" FileName="Waldo2.ani" > <LIST 1stPlace="Sam"> <!-- Δεν επιτρέπεται ψηφίο ως πρώτος χαρακτήρας --> <ΙΤΕΜ A: Category="cookware"> ΣΗΜΕΙΩΣΗ: Σύμφωνα με την προδιαγραφή της XML, η άνω και κάτω τελεία (:) χρησιμοποιείται στον προσδιορισμό χώρων ονομάτων (namespaces). Με τους χώρους ονομάτων διαφοροποιούνται στοιχεία που έχουν το ίδιο όνομα.
Κανόνες για έγκυρες τιμές ιδιοτήτων Η τιμή μιας ιδιότητας είναι μια σειρά χαρακτήρων που οριοθετείται από εισαγωγικά και είναι γνωστή ως αλφαριθμητικό εισαγωγικών ή κυριολεκτικό αλφαριθμητικό (string literal) Η ακολουθία μπορεί να οριοθετηθεί με τη χρήση απλών ( ) ή διπλών (") εισαγωγικών Η ακολουθία δεν μπορεί να περιλαμβάνει τον ίδιο χαρακτήρα εισαγωγικών που χρησιμοποιείται και στην οριοθέτησή της Η ακολουθία μπορεί να περιέχει αναφορές χαρακτήρων ή αναφορές σε γενικές εσωτερικές οντότητες Η ακολουθία δεν μπορεί να περιλαμβάνει το χαρακτήρα < Η ακολουθία δεν μπορεί να περιλαμβάνει το χαρακτήρα &, παρά μόνον ως αρχή μιας αναφοράς χαρακτήρα ή οντότητας.
Τιμές ιδιοτήτων Μη έγκυρες προδιαγραφές ιδιοτήτων <EMPLΟYEE Status=""downsized""> <! -- Όχι εισαγωγικά οριοθέτησης μέσα στο αλφαριθμητικό. --> <ALBUM Type="<CD>"> <! -- 'Οχι < μέσα στο αλφαριθμητικό. --> <WEATHER Forecast="Cold & Windy > <!-- Όχι & παρά μόνο στην αρχή μιας αναφοράς. --> Αν θέλετε να συμπεριλάβετε διπλά εισαγωγικά σε μια τιμή, τότε απλά εισαγωγικά για την οριοθέτηση <EMPLΟYEE Status= "downsized"'> <! -- Έγκυρη τιμή ιδιότητας --> Αν θέλετε να συμπεριλάβετε διπλά εισαγωγικά σε μια τιμή, τότε απλά εισαγωγικά για την οριοθέτηση <CANDIDATE name= W.T. Bill Bagley"> <! -- Έγκυρη τιμή ιδιότητας -->
Παραδείγματα Δημιουργία ενός στοιχείου που περιέχει 2 διαφορετικά attributes <pelatis num="12" paraggelies = "25"> KALOS PELATIS </pelatis> Δημιουργία ενός στοιχείου που περιέχει κενό tag <pelatis num="12" paraggelies = "25 ></pelatis>
Well-formed? Τμήμα 1 <myelement myattribute="value1 <= value2"/> Τμήμα 2 <myelement myattribute="value1 & value2"/> Τμήμα 3 <myelement myattribute="value1 > value2"/> Τμήμα 4 <myelement myattribute="value1'value2"/> NO!!! δεν επιτρέπεται < και & μέσα σε ιδιότητα NO!!! δεν επιτρέπεται < και & μέσα σε ιδιότητα YES! YES!
Τμήμα 1 <myelement myattribute="somevalue"/> Τμήμα 2 <myelement myattribute=somevalue/> Τμήμα 3 <myelement myattribute='somevalue'/> Τμήμα 4 <myelement myattribute="somevalue'/> Τμήμα 5 <myelement myattribute="some'value"/> Τμήμα 6 <myelement myattribute='some"value'/> Well-formed? YES! NO!!! YES! NO!!! YES! YES!
Μετατροπή περιεχομένου σε ιδιότητες Inventory04.xml Σε κάθε στοιχείο BOOK, να μετατρέψετε την πληροφορία του tag BINDING σε ιδιότητα με το όνομα binding Σε κάθε στοιχείο AUTHOR, να προσθέσετε ιδιότητα με όνομα Born για αποθήκευση ημερομηνίας γέννησης συγγραφέα
Προσθήκη σχολίων, εντολών επεξεργασίας & ενοτήτων CDATA Τα σχόλια, οι εντολές επεξεργασίας και οι ενότητες CDATA δεν είναι απαραίτητα για τη δημιουργία ενός σωστά διατυπωμένου (ή έγκυρου) εγγράφου XML. Μπορούν όμως να φανούν χρήσιμα! Με τα σχόλια, κάνουμε το έγγραφο πιο κατανοητό σε εκείνους που θα το διαβάσουν Με εντολές επεξεργασίας, αλλάζουμε τον τρόπο με τον οποίο μια εφαρμογή διαχειρίζεται ή εμφανίζει το έγγραφο Με ενότητες CDATA, συμπεριλαμβάνουμε στα δεδομένα χαρακτήρων ενός στοιχείου σχεδόν οποιονδήποτε συνδυασμό χαρακτήρων
Προσθήκη σχολίων Θυμηθείτε: «τα έγγραφα XML πρέπει να είναι αναγνώσιμα από τον άνθρωπο και σαφή» Τα σχόλια, όσα από αυτά είναι λογικά δομημένα και τοποθετημένα στα κατάλληλα σημεία μπορούν να αυξήσουν σημαντικά την αναγνωσιμότητα και τη σαφήνεια ενός εγγράφου XML
Η μορφή ενός σχολίου Το σχόλιο ξεκινάει με τους χαρακτήρες <!-- και τελειώνει με τους χαρακτήρας --> Ανάμεσα στα δύο όρια, όποιοι χαρακτήρες εκτός από διπλή παύλα (--), ακόμα και αριστερή αγκύλη (<) και εμπορικό "και" (&) Παράδειγμα συντακτικά σωστού σχολίου: <!-- Εδώ μπορείτε να βάλετε οποιοδήποτε κείμενο εκτός από διπλή παύλα. Οι χαρακτήρες < και & επιτρέπονται! -->
Πού μπορείτε να τοποθετήσετε σχόλια Σε οποιοδήποτε σημείο ενός εγγράφου XML έξω από άλλη σήμανση, π.χ. στον πρόλογο του εγγράφου: <?xml version="1.0"?> <!-- Ενα σχόλιο στον πρόλογο. --> <DOCELEMENT> Ενα πολύ απλό έγγραφο XML </DOCELEMENT> Μπορείτε να τα τοποθετήσετε μετά το στοιχείο εγγράφου: <?xml version="1.0"?> <DOCELEMENT> Ενα πολύ απλό έγγραφο XML. </DOCELEMENT> <!-- Αυτό το οχόλιο ακολουθεί το στοιχείο εγγράφου. -->
Πού μπορείτε να τοποθετήσετε σχόλια Μπορείτε επίσης να τα τοποθετήσετε στο περιεχόμενο ενός στοιχείου: <?xml version="1.0"?> <DOCELEMENT> <!-- Αυτό το σχόλιο περιέχεται στο στοιχείο εγγράφου. --> Ενα πολύ απλό έγγραφο XML. </DOCELEMENT>
Παράδειγμα σχολίου Σχόλιο τοποθετημένο στη σήμανση: <? xml version="1. 0"?> <DOCELEMENT <!-- Αυτό είναι ΕΓΚΥΡΟ σχόλιο? --> > Ενα πολύ απλό έγγραφο XML. </DOCELEMENT> ΟΧΙ!!!
Well-formed? Τμήμα 1 <!-- This is a comment -- quite useful one --> Τμήμα 2 <!-- This is a comment: <xml:comment > --> Τμήμα 3 <myelement myattribute="value1 <!-- anotherattribute="value2" - -> /> Τμήμα 4 <!-- This is a comment <--! This is my old comment--> --> NO!!! δεν μπορεί μέσα σε σχόλιο να έχει - - YES! NO!!! δεν μπορεί να είναι μέσα σε tag NO!!! δεν μπορούμε να έχουμε nested σχόλια
Προσθήκη ενοτήτων CDATA ΔΕΝ μπορούμε να προσθέτουμε κατευθείαν στα δεδομένα χαρακτήρων του περιεχομένου ενός στοιχείου αριστερή αγκύλη (<) ή "και" (&) Πώς όμως τα βάζουμε αν θέλουμε οπωσδήποτε? Χρησιμοποίηση αναφοράς χαρακτήρα (< ή &) ή προεπιλεγμένης αναφοράς γενικής οντότητας (< ή &) ΟΜΩΣ αν θέλουμε να προσθέσουμε πολλούς χαρακτήρες < ή &, δύσκολη η χρήση και η ανάγνωση των αναφορών. Οπότε? ΠΙΟ ΕΥΚΟΛΗ η τοποθέτηση του κειμένου σε ενότητα CDATA
Η μορφή μιας ενότητας CDATA Αρχίζει με τους χαρακτήρες <! [CDATA[ και τελειώνει με τους χαρακτήρες ]]> Ανάμεσα πληκτρολογούμε οποιουσδήποτε χαρακτήρες (μεταξύ των οποίων και οι < ή &) εκτός από τους ]]> (τέλος ενότητας CDATA) Όλοι οι χαρακτήρες μέσα σε μια ενότητα CDATA αντιμετωπίζονται ως κυριολεκτικό μέρος των δεδομένων περιεχομένου του στοιχείου, και όχι ως σήμανση XML Πάντα με κεφαλαία η λέξη CDATA!!!
Παραδείγματα <! [ CDATA[ Εδώ μπορείτε να πληκτρολογήσετε οποιουσδήποτε χαρακτήρες εκτός από δύο δεξιές αγκύλες και σύμβολο "μεγαλύτερο από". ]]> <A-SECTION> Παράδειγμα πολύ απλής σελίδας HTML: <! [ CDATA[ <HTML> <HEAD> <TITLE>R. Jones & Sons</TITLE> </HEAD> <B0DY> <P>Welcome to our home page! </P> </BODY> </HTML> ]]> </A-SECTI0N> Πηγαίος κώδικας ή σήμανση ως μέρος των πραγματικών δεδομένων χαρακτήρα ενός στοιχείου και όχι αρχή ένθετου στοιχείου το <HTML>
Παραδείγματα <script> <![CDATA[ function matchwo(a,b) { if (a < b && a < 0) then { return 1 } else { return 0 } } ]]> </ script > CDATA_example.xml
Πού μπορoύμε να τοποθετήσουμε ενότητες CDATA? Σε οποιοδήποτε σημείο εμφανίζονται δεδομένα χαρακτήρων δηλ. στο περιεχόμενο ενός στοιχείου αλλά όχι στη σήμανση της XML Παράδειγμα με σωστά τοποθετημένη ενότητα CDATA: <?xml version="1.0"?> <MUSICAL> <TITLE_PAGE> <! [ CDATA[ <Οklahoma! > By Rogers & Hammerstein ]]> </TITLE_PAGE> <!-- 'Αλλα στοιχεία εδώ... --> </MUSICAL>
Πού μπορoύμε να τοποθετήσουμε ενότητες CDATA? Check CDATA_example what.xml <?xml version="1.0"?> <! [ CDATA[ Illegal! Not within element content!! ]]> <DOC_ELEMENT> <SUB_ELEMENT <! [ CDATA[ Illegal inside markup! ]]> > sub-element content </SUB_ELEMENT> </DOC_ELEMENT>
Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων XML Δημιουργία well formed XML εγγράφου Παράδειγμα
Παρακάτω δίνεται ένα HTML έγγραφο. Για ποιο λόγο το έγγραφο αυτό δεν μπορεί να θεωρήθεί well-formed XML έγγραφο; Βρείτε τα σφάλματα και αλλάξτε τη σήμανση με τέτοιο τρόπο ώστε το έγγραφο να μετατραπεί σε well-formed. Το νέο έγγραφο θα πρέπει να περιέχει τα ίδια elements και attributes με το αρχικό. <html> <head> <meta name="informatics.creator" content="julian Rathke"> <meta name="informatics.subject" content="internet Tech Exercise 1"> </head> <title>example doc <body> <p><b><font face="arial,helvetica,univers,zurich BT"> <font size=-1>publications</b> <font></font> <ul> <li>publication A <li>publication B </ul> </body> </html>