Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ιαχείριση εδομένων στον Παγκόσμιο Ιστό

Σχετικά έγγραφα
3. Επερώτηση XML Εγγράφων: Η Γλώσσα XPath

Μητρώο [.gr] Οδηγός ιασύνδεσης. Αξιοποίησης του Εξυπηρετητή EPP. Έκδοση 2.0. [ EPP Server Connection and Use Guide ]

5. Επερώτηση XML Εγγράφων: Εισαγωγή στη Γλώσσα XQuery

Μητρώο [.gr] Οδηγός ιασύνδεσης. Αξιοποίησης του Εξυπηρετητή EPP. Έκδοση 3.0. [ EPP Server Connection and Use Guide ]

Σημασιολογικός Ιστός (Semantic Web) - XML

ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ - XML

Εισαγωγή(στη(γλώσσα(XML(

XML Schemas. (Primer) (Structures) (Datatypes)

Μοντέλο. για ημι-δομημένα μημ δεδομένα. Ημι-δομημένα δεδομένα XML DTD XML Schema

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #2

Γλωσσική Τεχνολογία. Εισαγωγικό Φροντιστήριο

Σημασιολογικός Ιστός (Semantic Web) - XML

Αντικειμενοστρεφής Προγραμματισμός

ΝΤUA. Τεχνολογία Πολυμέσων

Σημασιολογικός Ιστός (Semantic Web) - XML

ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ

Γλώσσες Σήµανσης (Markup Languages) Τεχνολογία ιαδικτύου και Ηλεκτρονικό Εµπόριο

Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών. ΗΥ-561 Διαχείριση Δεδομένων στο Παγκόσμιο Ιστό Βασίλης Χριστοφίδης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρότυπα Γεγονότων. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Βασικά Στοιχεία της Java

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 5: XML. Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

Εισαγωγικό Φροντιστήριο

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

Δομημένη Αναπαράσταση Πληροφοριών

Βάσεις Δεδομένων ΙΙ. Διάλεξη 5 η XML και ΒΔ στο Διαδίκτυο

Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΕΙΣΑΓΩΓΙΚΟ ΦΡΟΝΤΙΣΤΗΡΙΟ

ΥΠΗΡΕΣΙΑ «TAXISNET» - ΗΛΕΚΤΡΟΝΙΚΗ ΥΠΟΒΟΛΗ ΤΩΝ ΦΟΡΟΛΟΓΙΚΩΝ ΔΗΛΩΣΕΩΝ ΓΙΑ ΤΟ ΤΜΗΜΑ ΕΣΩΤΕΡΙΚΩΝ ΠΡΟΣΟΔΩΝ ΚΑΙ ΤΗΝ ΥΠΗΡΕΣΙΑ ΦΟΡΟΥ ΠΡΟΣΤΙΘΕΜΕΝΗΣ ΑΞΙΑΣ ΤΟΥ

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Mεταβλητές (variables) και Σταθερές (constants)

Βασικά Στοιχεία της Java

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

Αντικειμενοστρεφής Προγραμματισμός

Εισαγωγή XML: Extensible Markup Language Ορίστηκε από το WWW Consortium (W3C) ως συµπλήρωµα της HTML. εν σχεδιάστηκε για βάσεις δεδοµένων αλλά για δια

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Γλωσσική Τεχνολογία. HTML/XML Processing HTTP Services

A ΜΕΡΟΣ. 1 program Puppy_Dog; 2 3 begin 4 end. 5 6 { Result of execution 7 8 (There is no output from this program ) 9 10 }

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006

Φροντιστήριο 1ο Εισαγωγή στο FLEX. Flex. Regular Expressions (1/4)

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Τα web services του παρατηρητηρίου τιμών ακολουθούν λογική REST και απαντούν σε GET requests ως ακολούθως:

Wrapper Classes, Abstract Classes and Interfaces

ΠΕΙΡΑΜΑΤΙΚΗ ΜΕΛΕΤΗ ΣΥΓΚΡΙΣΗΣ ΥΠΗΡΕΣΙΩΝ ΔΙΑΔΙΚΤΥΟΥ ΣΤΑ ΠΛΑΙΣΙΑ ΤΗΣ ΣΥΝΤΗΡΗΣΗΣ ΥΠΗΡΕΣΙΟΚΕΝΤΡΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙΔΙΚΕΥΣΗΣ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

Αντικειµενοστρεφής Προγραµµατισµός

Ει αγωγή η Fortran.

extensible Markup Language: XML

Web Services. και SOAP

Εισαγωγή στον Προγραμματισμό

Δομημένος Προγραμματισμός (ΤΛ1006)

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ - XML

Μορφοποίηση υπό όρους : Μορφή > Μορφοποίηση υπό όρους/γραμμές δεδομένων/μορφοποίηση μόο των κελιών που περιέχουν/

Δεδομένα, τελεστές, είσοδος/έξοδος

Ψηφιακή ανάπτυξη. Course Unit #1 : Κατανοώντας τις βασικές σύγχρονες ψηφιακές αρχές Thematic Unit #1 : Τεχνολογίες Web και CMS

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

ΝΤUA. Τεχνολογία Πολυμέσων

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών Οδηγός Εργαστηρίου ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Βασικά της γλώσσας JAVA

Διάγραμμα Κλάσεων. Class Diagram

Προγραμματισμός ΙΙ (Java) 3. Διαχείριση πολλαπλών αντικειμένων

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων

Προγραμματισμός Η/Υ (ΤΛ2007 )

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Use Cases: μια σύντομη εισαγωγή. Heavily based on UML & the UP by Arlow and Neustadt, Addison Wesley, 2002

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Regular Expressions ΓΛΩΣΣΙΚΉ ΤΕΧΝΟΛΟΓΊΑ

The Simply Typed Lambda Calculus

<address>αδριανείου 2, Νέο Ψυχικό, 11525, Αθήνα</adderss> <address>

Υπολογισμός - Εντολές Ελέγχου

Στόχος της παρουσίασης

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

IBM DB2, Microsoft SQL Server. Εαρινό Εξάμηνο

Ανάπτυξη Οντολογικής Γνώσης για Τεκμηρίωση Οπτικοακουστικού Περιεχομένου ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

02 Αντικειμενοστρεφής Προγραμματισμός

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

ΗΥ-150. Προγραμματισμός

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Θεωρία Πληροφορίας - Κώδικες. Γιαννακόπουλος Θεόδωρος

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Graphical XML Schema

Εργαστήριο Σημασιολογικού Ιστού

Εισαγωγή στη C# και. Σημειώσεις Σεμιναρίου Επιμέλεια: Βασίλης Κόλιας. το.net 4.0

Εισαγωγή στον Προγραμματισμό

Σχεδιασμός Βάσεων Δεδομένων

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

IT & Networking DEVELOPING Essential Python 3. Κωδικός Σεμιναρίου / Code

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Transcript:

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 9. XML Schema ιαχείριση εδομένων στον Παγκόσμιο Ιστό Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων Τετάρτη 11 Ιαν 2017

Απαιτήσεις για XML Schema Αποτελεί την πρόταση (2001) του W3C για να αντικαταστήσει το DTD Αμέσως μετά την έγκριση της XML (και του DTD) ως W3C recommendation Xml Schema Requirements από το XML Schema Working Group (1999) Σχεδιαστικές αρχές Περισσότερο εκφραστικό από DTD Χρήση του XML notation Self-describing XML Schema W3C Recommendation (2001) Απλότητα Part 1: Structures Part 2: Datatypes Τεχνικές απαιτήσεις Υποστήριξη namespaces Τύποι δεδομένων που ορίζονται από το χρήστη Κληρονομικότητα (όπως σε αντικειμενοστρεφή μοντέλα) Evolution σχημάτων Embedded documentation Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 2

Τύποι και Δηλώσεις Ορισμός simple type Ορίζει μια οικογένεια από Unicode text strings Ισοδύναμα: περιγράφει text χωρίς markup Ορισμός complex type Ορίζει ένα content και attribute model Ισοδύναμα: περιγράφει text που μπορεί να περιέχει markup ήλωση element Συσχετίζει ένα element name με ένα simple ή complex type ήλωση attribute Συσχετίζει ένα attribute name με ένα simple type Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 3

Απλό Παράδειγμα Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 4

Δείγμα Έγκυρου XML Αρχείου Το παρακάτω element student ικανοποιεί όλους τους περιορισμούς που θέτει το προηγούμενο XML Schema Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 5

Παράδειγμα: XML Γλώσσα για Business Cards (1) Instance document john_doe.xml <b:card xmlns:b="http://businesscard.org"> <b:name>john Doe</b:name> <b:title>ceo, Widget Inc.</b:title> <b:email>john.doe@widget.com</b:email> <b:phone>(202) 555-1414</b:phone> <b:logo b:uri="widget.gif"/> </b:card> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 6

Παράδειγμα: XML Γλώσσα για Business Cards (2) Schema business_card.xsd <schema xmlns="http://www.w3.org/2001/xmlschema" xmlns:b="http://businesscard.org" targetnamespace="http://businesscard.org"> <element name="card" type="b:card_type"/> <element name="name" type="string"/> <element name="title" type="string"/> <element name="email" type="string"/> <element name="phone" type="string"/> <element name="logo" type="b:logo_type"/> <attribute name="uri" type="anyuri"/> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 7

Παράδειγμα: XML Γλώσσα για Business Cards (3) <complextype name="card_type"> <sequence> <element ref="b:name"/> <element ref="b:title"/> <element ref="b:email"/> <element ref="b:phone" minoccurs="0"/> <element ref="b:logo" minoccurs="0"/> </sequence> <complextype name="logo_type"> <attribute ref= b:uri" use="required"/> </schema> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 8

Σύνδεση Σχήματος με Instance Target namespace <b:card xmlns:b="http://businesscard.org xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://businesscard.org business_card.xsd"> <b:name>john Doe</b:name> <b:title>ceo, Widget Inc.</b:title> <b:email>john.doe@widget.com</b:email> <b:phone>(202) 555-1414</b:phone> <b:logo b:uri="widget.gif"/> </b:card> Schema document Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 9

Δηλώσεις Element και Attribute Παραδείγματα <element name="serialnumber" type="nonnegativeinteger"/> <attribute name= alcohol" type= r:percentage"/> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 10

Απλοί Τύποι Δεδομένων string: any Unicode string boolean: true, false, 1, 0 decimal: 3.1415 float: 6.02214199E23 double: 42E970 datetime: 2004-09-26T16:29:00-05:00 time: 16:29:00-05:00 date: 2004-09-26 hexbinary: 48656c6c6f0a base64binary: SGVsbG8K anyuri: http://www.brics.dk/ixwt/ QName: rcp:recipe, recipe Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 11

Παραγωγή Απλών Τύπων (1) Restriction Constraining facets length maxinclusive minlength maxexclusive maxlength mininclusive minexclusive pattern enumeration totaldigits whitespace fractiondigits Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 12

Παραδείγματα <simpletype name="score_from_0_to_100"> <restriction base="integer"> <mininclusive value="0"/> <maxinclusive value="100"/> </restriction> </simpletype> <simpletype name="percentage"> <restriction base="string"> <pattern value="([0-9] [1-9][0-9] 100)%"/> </restriction> </simpletype> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 13

Παραγωγή Απλών Τύπων (2) Λίστα <simpletype name="integerlist"> <list itemtype="integer"/> </simpletype> Αντιστοιχεί σε λίστες ακεραίων οι οποίοι χωρίζονται από whitespace Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 14

Παραγωγή Απλών Τύπων (3) Ένωση <simpletype name="boolean_or_decimal"> <union> <simpletype> <restriction base="boolean"/> </simpletype> <simpletype> <restriction base="decimal"/> </simpletype> </union> </simpletype> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 15

Built-In Derived Simple Types normalizedstring token language Name NCName ID IDREF integer nonnegativeinteger unsignedlong long int short byte... Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 16

Complex Types with Complex Contents Content model ως regular expressions Element reference <element ref= name /> Concatenation <sequence>... </sequence> Union (ExclusiveOr) <choice>... </choice> All (σαν το sequence, όμως δεν ενδιαφέρει η σειρά εμφάνισης) <all>... </all> Element wildcard: <any namespace=... processcontents=... /> Attribute reference: <attribute ref=... /> Attribute wildcard: <anyattribute namespace=... processcontents=... /> Cardinalities: minoccurs, maxoccurs, use Mixed content: mixed= true Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 17

Παράδειγμα <element name="order" type="n:order_type"/> <attribute name= id type= unsignedint /> <complextype name="order_type" mixed="true"> <choice> <element ref="n:address"/> <sequence> <element ref="n:email" minoccurs="0" maxoccurs="unbounded"/> <element ref="n:phone"/> </sequence> </choice> <attribute ref= n:id" use="required"/> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 18

Παραγωγή Complex Types με Simple Content <complextype name="category"> <simplecontent> <extension base="integer"> <attribute ref= r:class /> </extension> </simplecontent> Element με περιεχόμενο έναν ακέραιο και προαιρετικά attribute που λέγεται class <complextype name="restricted_category"> <simplecontent> <restriction base="n:category"> <totaldigits value="3"/> <attribute ref= r:class" use="required"/> </restriction> </simplecontent> <complextype name="extended_category"> <simplecontent> <extension base="n:category"> <attribute ref= r:kind"/> </extension> </simplecontent> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 19

Παραγωγή Complex Types με Complex Content <complextype name="basic_card_type"> <sequence> <element ref="b:name"/> </sequence> <complextype name="extended_type"> <complexcontent> <extension base= "b:basic_card_type"> <sequence> <element ref="b:title"/> <element ref="b:email" minoccurs="0"/> </sequence> </extension> </complexcontent> <complextype name="further_derived"> <complexcontent> <restriction base="b:extended_type"> <sequence> <element ref="b:name"/> <element ref="b:title"/> <element ref="b:email"/> </sequence> </restriction> </complexcontent> Προσοχή: το restriction δεν είναι το αντίθετο του extension Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 20

Global vs. Local Descriptions Global (toplevel) style: <element name="card type="b:card_type"/> <element name="name type="string"/> <complextype name="card_type"> <sequence> <element ref="b:name"/>... </sequence> Local (inlined) style: <element name="card"> <complextype> inlined <sequence> <element name="name" type="string"/>... </sequence> </element> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 21

Global vs. Local Descriptions Τα local type definitions είναι ανώνυμα Άρα δεν μπορούμε να αναφερόμαστε σε αυτά Τα local element/attribute declarations μπορούν να γίνουν overload Μια απλή μορφή context-sensitivity Ιδιαίτερα χρήσιμο για attributes! Μόνο globally declared elements μπορεί να είναι σημεία εκκίνησης για επικύρωση (π.χ. roots) Τα local definitions επιτρέπουν ένα εναλλακτικό μηχανισμό namespace semantics Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 22

Απαιτήσεις σε Complex Types ύο δηλώσεις elements με το ίδιο name που εμφανίζονται στο ίδιο complex type πρέπει να έχουν ίδιο τύπο <complextype name= some_type"> <choice> <element name= foo" type= string"/> <element name= foo" type= integer"/> </choice> Αυτή η απαίτηση επιτρέπει αποδοτική υλοποίηση Το all μπορεί να περιέχει element (π.χ. όχι sequence) Επομένως δεν μπορούμε να χρησιμοποιήσουμε το all για να λύσουμε το πρόβλημα με το comment στην RecipeML Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 23

Namespaces <schema targetnamespace="......> Μη παραδοσιακές χρήσεις namespaces Prefixes χρησιμοποιούνται και σε ορισμένα attribute values! Qualified vs. Unqualified Locals Εάν ενεργοποιηθούν, το όνομα ενός locally declared element ή attribute στο instance document δεν πρέπει να έχει namespace prefix (π.χ. το empty namespace URI) Ένα τέτοιο attribute ή element ανήκει στο element που έχει δηλωθεί στο global definition Μπορούμε να αλλάζουμε τη default συμπεριφορά χρησιμοποιώντας elementformdefault="qualified" Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 24

Qualified vs. Unqualified Locals Αν ενεργοποιηθεί το unqualified locals ε βάζουμε namespace prefix στο locally declared element ή attribute Ανήκει στο element που το περιβάλλει στο global definition Αν ενεργοποιηθεί το qualified locals Ένα locally declared attribute πρέπει να έχει namespace prefix elementformdefault, attributeformdefault qualified ή unqualified (default) Συνίσταται η χρήση <schema> elementformdefault= qualified </schema> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 25

Παράδειγμα Επιλέγοντας unqualified local attributes (default), μπορούμε να γράψουμε <complextype name="logo_type"> <attribute name= uri" type= anyuri use="required"/> Αντί για <element name="logo" type="b:logo_type"/> <attribute name="uri" type="anyuri"/>... <complextype name="logo_type"> <attribute ref= b:uri" use="required"/> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 26

Παράγωγοι Τύποι και Subsumption Υποθέτοντας ότι T είναι ένας τύπος Τ- παράγεται από τον Τ με restriction Τ+ παράγεται από τον Τ με extension Subsumption: όταν χρειαζόμαστε ένα instance του Τ Ένα Τ- instance μπορεί να χρησιμοποιηθεί στη θέση του (προφανές) Ένα Τ+ instance μπορεί να χρησιμοποιηθεί στη θέση του Εάν το instance έχει xsi:type= T+ (με xmlns:xsi="http://www.w3.org/2001/xmlschema-instance") Derivation, Instantiation και Subsumption μπορούν να περιοριστούν με final, abstract και block Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 27

Substitution Groups Αν υποθέσουμε ότι το D παράγεται από το Β (με ένα αριθμό βημάτων) Ε D είναι μια δήλωση element με τύπο D, και E B είναι μια δήλωση element με τύπο Β Εάν το Ε D είναι substitution group του E B, τότε ένα element Ε D μπορεί να χρησιμοποιηθεί οποτεδήποτε απαιτείται ένα Ε Β Subsumption με βάση δηλώσεις elements, όχι με βάση τύπους Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 28

Uniqueness, Keys, References <element name="w:widget" xmlns:w="http://www.widget.org"> <complextype>... <key name="my_widget_key"> <selector xpath="w:components/w:part"/> <field xpath="@manufacturer"/> <field xpath="w:info/@productid"/> </key> <keyref name="annotation_references" refer="w:my_widget_key"> <selector xpath=".//w:annotation"/> <field xpath="@manu"/> <field xpath="@prod"/> </keyref> </element> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 29

Άλλα Χαρακτηριστικά του XML Schema Groups Nil values Annotations Defaults and whitespace Modularization Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 30

RecipeML με XML Schema (1) <schema xmlns="http://www.w3.org/2001/xmlschema" xmlns:r="http://www.brics.dk/ixwt/recipes" targetnamespace="http://www.brics.dk/ixwt/recipes" elementformdefault="qualified"> <element name="collection"> <complextype> <sequence> <element name="description" type="string"/> <element ref="r:recipe" minoccurs="0" maxoccurs="unbounded"/> </sequence> <unique name="recipe-id-uniqueness"> <selector xpath=".//r:recipe"/> <field xpath="@id"/> </unique> <keyref name="recipe-references" refer="r:recipe-id-uniqueness"> <selector xpath=".//r:related"/> <field xpath="@ref"/> </keyref> </element> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 31

RecipeML με XML Schema (2) <element name="recipe"> <complextype> <sequence> <element name="title" type="string"/> <element name="date" type="string"/> <element ref="r:ingredient" minoccurs="0" maxoccurs="unbounded"/> <element ref="r:preparation"/> <element name="comment" type="string" minoccurs="0"/> <element ref="r:nutrition"/> <element ref="r:related" minoccurs="0" maxoccurs="unbounded"/> </sequence> <attribute name="id" type="nmtoken"/> </element> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 32

RecipeML με XML Schema (3) <element name="ingredient"> <complextype> <sequence minoccurs="0"> <element ref="r:ingredient" minoccurs="0" maxoccurs="unbounded"/> <element ref="r:preparation"/> </sequence> <attribute name="name" use="required"/> <attribute name="amount" use="optional"> <simpletype> <union> <simpletype> <restriction base="r:nonnegativedecimal"/> </simpletype> <simpletype> <restriction base="string"> <enumeration value="*"/> </restriction> </simpletype> </union> </simpletype> </attribute> <attribute name="unit" use="optional"/> </element> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 33

RecipeML με XML Schema (4) <element name="preparation"> <complextype> <sequence> <element name="step" type="string minoccurs="0 maxoccurs="unbounded"/> </sequence> </element> <element name="nutrition"> <complextype> <attribute name="calories" type="r:nonnegativedecimal use="required"/> <attribute name="protein" type="r:percentage" use="required"/> <attribute name="carbohydrates" type="r:percentage" use="required"/> <attribute name="fat" type="r:percentage" use="required"/> <attribute name="alcohol" type="r:percentage" use="optional"/> </element> <element name="related"> <complextype> <attribute name="ref" type="nmtoken" use="required"/> </element> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 34

RecipeML με XML Schema (5) <simpletype name="nonnegativedecimal"> <restriction base="decimal"> <mininclusive value="0"/> </restriction> </simpletype> <simpletype name="percentage"> <restriction base="string"> <pattern value="([0-9] [1-9][0-9] 100)%"/> </restriction> </simpletype> </schema> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 35

Προβλήματα με XML Schema Ακόμη και το XML Schema έχει περιορισμένη εκφραστικότητα calories should contain a non-negative number protein should contain a value on the form N% where N is between 0 and 100; comment should be allowed to appear anywhere in the contents of recipe unit should only be allowed in an elements where amount is also present nested ingredient elements should only be allowed when amount is absent Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 36

Περιορισμοί του XML Schema (1) 1. Οι λεπτομέρειες είναι εξαιρετικά πολύπλοκες 2. Οι δηλώσεις είναι κυρίως context-insensitive 3. Είναι αδύνατο να γραφεί μια πλήρης XML Schema περιγραφή του XML Schema 4. Όταν έχουμε mixed content, δεν μπορούν να επιβληθούν περιορισμοί στα character data 5. Τα unqualified local elements συνιστούν κακή πρακτική Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 37

Περιορισμοί του XML Schema (2) 6. εν υποστηρίζει απαίτηση για συγκεκριμένο root element 7. Τα element defaults δεν περιέχουν markup 8. To type είναι υπερβολικά πολύπλοκο 9. Ο xsi:type είναι προβληματικός 10.Τα simple type definitions είναι μη ευέλικτα Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 38

Ισχυρά Σημεία του XML Schema Υποστήριξη namespaces Τύποι δεδομένων (built-in και derived) Modularization Μηχανισμός παραγωγής τύπων Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 39

Πηγές Αναφοράς Anders Moller and Michael I. Schwartzbach An Introduction to XML and Web Technologies Addison-Wesley, January 2006, 568pp XML Schema Part 1: Structures http://www.w3.org/tr/xmlschema-1/ XML Schema Part 2: Datatypes http://www.w3.org/tr/xmlschema-2/ Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 40