eXtensible Markup Language (XML) και XML Schema Γιώργος Θάνος Παρασκευή 31 Οκτωβρίου 2008
eXtensible Markup Language Σχεδιάστηκε για την αποθήκευση και μεταφορά δεδομένων. Η γλώσσα είναι κατά κανόνα αυτοπεριγραφική. Δεν υπάρχουν προδιαγεγραμένα tags. Κάθε δημιουργός υποχρεούται να ορίσει τα δικά του. Στην XML βασίζονται ευρέως γνωστά και χρησιμοποιούμενα standards, όπως : XHTML Web Services (SOAP, WSDL) RSS SVG (Scalable Vector Graphics) XBRL Διαφάνεια 2
XML Tree ( παράδειγμα ) Tove Jani Don’t forget! Remember to visit the dentist 2008 January 08 Διαφάνεια 3 Root Element Child Element Attribute
XML – Συντακτικοί κανόνες (1/2) Όλα τα XML elements πρέπει να κλείνουν σωστά This is a paragraph Τα XML tags είναι case sensitive This is incorrect But this is correct Τα XML στοιχεία πρέπει να έχουν τη σωστή σειρά This text is bold and italic ( ΛΑΘΟΣ !) This text is bold and italic Απαραίτητη η ύπαρξη root element Οι τιμές των attributes πρέπει να περιέχονται σε μονά (‘’) ή διπλά (“”) εισαγωγικά. Διαφάνεια 4
XML – Συντακτικοί κανόνες (2/2) Χαρακτήρες με ειδική σημασία στην XML είναι αναγκαίο να αντικαθίστανται με ειδικούς συνδυασμούς χαρακτήρων. Σχόλια Διαφάνεια 5 Συνδυασμός χαρακτήρων ΣύμβολοΠεριγραφή <<less than >>greater than &&ersand ''apostrophe ""quotation mark
XML – Συντακτικές και σημασιολογικές απαιτήσεις Προκειμένου το XML κείμενο να είναι αποδεκτό απαιτείται : Η XML είναι σωστή συντακτικά με βάση τους κανόνες που προαναφέρθηκαν. Ένα ορθό κείμενο υπακούει σε συγκεκριμένους σημασιολο - γικούς κανόνες, προκειμένου να έχει νόημα η πληροφορία που απεικονίζει. Οι κανόνες κατά κανόνα απεικονίζονται σε ένα αρχείο XMLSchema ή DTD. Η επιβεβαίωση της ορθής σύνταξης της XML γίνεται Φορτώνοντας το αρχείο σε ενα XML capable browser. Με χρήση online εργαλείων για verification. Επεξεργαζόμενοι το περιεχόμενο της XML με μία γλώσσα προγραμματισμού ( π. χ PHP, Perl, Java, Python, C++). Διαφάνεια 6
XML Namespaces(1/4) Συχνά εμφανίζεται σύγχιση σε σχέση με το σημασιο - λογικό περιεχόμενο το tags και των attributes σε ένα XML κείμενο. Διαφάνεια 7 Apples Bananas Bob Dylan The freewheelin Desire Η σύγχυση μπορεί να αποφευχθεί χρησιμοποιώντας ένα πρόθεμα (prefix) για κάθε attribute. Το συγκεκριμένο πρόθεμα συνδέεται με κάποιο σημασιολογικό περιεχόμενο που είναι το XML Namespace.
XML Namespaces(2/4) xmlns:h=“ xmlns:n=“urn:catalog:music:gthanos” Κάθε namespace ορίζει μοναδικά το σημασιολογικό περιεχόμενο των επιμέρους τμημάτων του κειμένου XML. Στοιχεία (elements) περισσοτέρων του ενός XML name- space μπορούν να συνηπάρχουν σε ένα XML κείμενο. Διαφάνεια 8 Apples Bananas Bob Dylan The freewheelin Desire
XML Namespaces(3/4) Η ορισμός ενός Namespace ακολουθεί την παρακάτω σύνταξη xmlns:prefix=“URI” Το URI ορίζεται ως ένα string που απεικονίζει μοναδικά μία οντότητα στο Internet. Μπορεί να είναι URL ή URN URL : URN: urn:issn: issn Ένα Namespace μπορεί να ορίζεται είτε στο root element του XML κειμένου, είτε στο αρχικό XML element που χρησιμοποιεί το συγκεκριμένο Namespace. Διαφάνεια 9
XML Namespaces(4/4) Διαφάνεια 10 (α) Ορισμός του Namespace στο root XML element (β) Ορισμός του Namespace στο XML element που χρησι- μοποιεί το συγκεκριμένο Namespace.
XML Schemas in general Το XML Schema περιγράφει τους περιορισμούς στη δομή ενός κειμένου XML επιπλέον των περιορισμών ορθής σύνταξης που επιβάλει η γλώσσα. Το XML Schema περιγράφει την δομή ενός κειμένου XML και των περιορισμών που έχει αυτό. Γλώσσες που περιγράφουν XML Schemata DTD (Document Type Definition) RelaxNG (OASIS Standard) XML Schema (W3C Standard) Διαφάνεια 11
XML Schema (W3C) - Εισαγωγή Πηγή : Διαφάνεια 12 (α) Το αρχικό XML κείμενο. (β) Το XML Schema που περιγράφει το παραπάνω κείμενο
XML Schema (W3C) – element Πηγή : Διαφάνεια 13 xmlns:xs= Περιγραφή του namespace που χρησιμοποιείται. Πρόκειται για το namespace που ορίζεται από το W3C. targetNamespace= Περιγραφή του target namespace, δηλ του default namespace του XML κειμένου που περιγράφει το συγκεκρμένο σχήμα. xmlns= Περιγραφή του default namespace για το σχήμα. Κατά κανόνα δεν απουσιάζει elementFormDefault="qualified“ Όλα τα στοιχεία που περιέχονται στο συγκεκριμένο σχήμα πρέπει να ανήκουν σε συγκεκριμένο namespace.
XML Schema (W3C) – Simple Elements Elements που περιέχουν μόνο text. Όχι, άλλα nested στοιχεία ή attributes. Ορισμός ενός Simple XML element Παραδείγματα Τα πλέον κοινά datatypes Διαφάνεια 14 xs:stringxs:decimal xs:integerxs:boolean xs:datexs:time
XML Schema (W3C) – XSD Attributes Τα Simple Elements δεν διαθέτουν attributes. Κάθε attribute όμως λογίζεται ως Simple Element. Η σύνταξη για ένα attribute δίνεται παρακάτω : Παράδειγμα : Πηγή : Διαφάνεια 15
XML Schema (W3C) – XSD Restrictions Οι περιορισμοί μπορούν να εκφραστούν με χρήση regular expressions Περισσότερα σχετικά με XSD Restrictions, θα βρείτε εδώ : Διαφάνεια 16
XML Schema (W3C) – Complex Elements empty elements elements that contain only other elements John Smith elements that contain only text Ice cream elements that contain both other elements and text It happened on Πηγή : Διαφάνεια 17
XML Schema (W3C) – Empty Elements and Elements Only Elements Πηγή : Διαφάνεια 18 XML XML Schema XML XML Schema
XML Schema (W3C) – Simple Content and Mixed Content Eements Διαφάνεια 19 XML XML Schema XML XML Schema
XML Schema (W3C) – Simple Content vs. Complex Content (1/2) Τα simpleContent και complexContent χρησιμοποιού - νται για να ορίσουν extensions ή restrictions σε υπάρχοντες τύπους αντικειμένων. Τα simpleContent elements δηλώνουν ότι για ένα στοιχείο τύπου Simple Element θα οριστεί κάποια επέκταση ή περιορισμός. Πηγή : Διαφάνεια 20 XML XML Schema
XML Schema (W3C) – Simple Content vs. Complex Content(2/2) Τα complexContent elements δηλώνουν ότι για ένα στοιχείο τύπου Complex Element θα οριστεί κάποια επέκταση ή περιορισμός. Διαφάνεια 21 XML XML Schema
XML Schema (W3C) – Άσκηση : Δημιουργίας ενός σχήματος. Φτιάξτε το XML Schema του XML αρχείου που επιστρέφεται από το URL Η απάντηση δίνεται on-line μαζί με τις παρουσιάσεις του μαθήματος. Πηγή : Διαφάνεια 22
Επιβεβαιώνοντας ένα XML αρχείο σε σχέση με το XML Schema Use online verification machines όπως Τα περισσότερα online εργαλεία αναμένουν να βρουν το σχήμα online. Χρήση γλώσσας προγραμματισμού ( π. χ. java) Περισσότερα πληροφορίες μπορείτε να βρείτε path/ ή path/ age-summary.html age-summary.html Διαφάνεια 23
Επιβεβαιώνοντας ένα XML αρχείο σε σχέση με το XML Schema ( χρήση Java) Πηγή : java.sun.com Διαφάνεια 24 // parse an XML document into a DOM tree DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document document = parser.parse(new File("instance.xml")); // create a SchemaFactory capable of understanding WXS schemas SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); // load a WXS schema, represented by a Schema instance Source schemaFile = new StreamSource(new File("mySchema.xsd")); Schema schema = factory.newSchema(schemaFile); // create a Validator instance, which can be used to validate an instance document Validator validator = schema.newValidator(); // validate the DOM tree try { validator.validate(new DOMSource(document)); } catch (SAXException e) { // instance document is invalid! } XMLConstants.W3C_XML_SCHEMA_NS_URIW3C XML Schema 1.0 XMLConstants.RELAXNG_NS_URIRELAX NG 1.0
eXtensible Markup Language (XML) και XML Schema Ερωτήσεις ; Διαφάνεια 25