1. XML – based technologies
Αναγνωστόπουλος Ιωάννης - Λυκουρέντζου Ιωάννα
2. Περιεχόµενα
XML
Έλεγχος εγκυρότητας XML
DTD
Schema
XML DOM
Περαιτέρω δυνατότητες και τεχνολογίες της XML
XPath
XSLT
XPointer
XLink
XQuery
Web services µε τη βοήθεια των τεχνολογιών XML
Web services
WSDL
SOAP
RDF και OWL
RSS
WAP και WML
3. XML
Extensible Markup Language – Μία απλή έκδοση της sgml
Σχεδιασµένη για να εισάγει την sgml στο διαδίκτυο
Μια µετα-γλώσσα (meta-language)
Μια γλώσσα που παράγει γλώσσες
XHTML – η πιο πρόσφατη έκδοση της HTML
VoiceXML – Για διαδραστική φωνητική επικοινωνία ανθρώπου –
υπολογιστή µέσω τηλεφώνου, PDA ή υπολογιστή
WSDL – για την περιγραφή των web services
WAP και WML – γλώσσες σήµανσης (markup) για φορητές
συσκευές
RSS γλώσσες για τροφοδότες νεων (news feeds)
RDF/OWL – για περιγραφή πόρων και οντολογιών
SMIL – για περιγραφή πολυµέσων στον Ιστό
4. Αναµενόµενα κέρδη
Αποθήκευση µια φορά και µορφοποίηση πολλές φορές
Ανεξαρτησία από υλικό – λογισµικό
Αποθήκευση σε µορφή απλού κειµένου (plain text format)
∆ιευκόλυνση της µεταφοράς/ανταλλαγής δεδοµένων ανάµεσα σε
ασύµβατες κατά τα άλλα εφαρµογές
∆ιαθεσιµότητα των δεδοµένων σε µεγαλυτερο έυρος εφαρµογών
αλλά και µέσων (PDAs, news feeds, voice machines)
Συγκέντρωση δεδοµένων µια φορά και ανταλλαγή πολλές φορές
Ταχύτερη εστιασµένη αναζήτηση
Μικρότερη συµφόρηση του δικτύου
Οι µηχανές αναζήτησης αναζητούν συγκεκριµένες ετικέτες (tags)
στον κώδικα XML
Ταχύτερα
Με µεγαλύτερη ακρίβεια
5. XML
HTML
Χρησιµοποιεί tags ανάµεσα στο κείµενο...
...για να περιγράψει το layout της σελίδας
<p> <b>Alan</b>, 42 years, <i>agb@abc.com</i>
Σχεδιάστηκε ειδικά για να περιγράψει την παρουσίαση και όχι το
περιεχόµενο
XML
Σχεδιάστηκε ειδικά για να περιγράψει το περιεχόµενο (content) και όχι την
παρουσίαση µιας σελίδας
Βασικές διαφορές από την HTML
Μπορεί κανείς να ορίσει νέα tags κατά βούληση
Nested tags σε οποιοδήποτε βάθος
Ενα έγγραφο XML µπορεί προαιρετικά να περιέχει µια περιγραφή της
γραµµατικής του
Τα tags δοµούν το περιεχόµενο
<person><name>Kostas</name>…</person>
Το πως θα εµφανιστούν ορίζεται ξεχωριστά από κάποιο stylesheet (XSL)
6. XML
Ο ρόλος της XML
Προτάθηκε σαν µια markup γλώσσα περιγραφής εγγράφων
Καταγωγή απο την SGML (ψηφιακές βιβλιοθήκες)
Εξελίσσεται όµως σε ένα παγκόσµιο πρότυπο για ανταλλαγή πληροφορίας
Βασικό συστατικό της XML είναι το element
Τιµή του element Κείµενο που περικλείεται από ένα ζεύγος tags
Εκτός από την λογική δοµή (elements), τα tags περιγράφουν και την φυσική
δοµή (entities)
<person>
<name>Alan</name>
<age>42</age>
<email>alan@abc.com</email>
<email>abrown@mail.com</email>
</person>
7. XML – Elements/Attributes
Elements Οι ιδιότητες δεν µπορούν να περιέχουν πολλαπλές
Person, firstname, lastname τιµές (τα child elements µπορούν)
Attributes
sex (value=“female”) Οι ιδιότητες δεν πρέπει να αλλάζουν συχνά
Οι ιδιότητες δεν µπορούν να περιγράψουν δοµή (τα
child elements µπορούν)
8. Βασικά συνθετικά του
συντακτικού της XML
opening tag
entity attributes
<animal>
<name language = “English”> Tiger </name>
<name language = “Latin”> Panthera tigris
</name>
<weight> 500 pounds </weight>
</animal> values
content
closing tag
elements
<picture filename = “tiger.jpg” />
empty element, just an attribute
9. XML attributes
Ένα element µπορεί να έχει κανένα, ένα ή πολλά attributes
Περιγράφουν ιδιότητες (properties) του element
<product>
<name language=“French”>trompette no 6</name>
<price currency=“Euro”> 420.12 </price>
<address format=“XL1245” language=“French”>
<street>31 rue Croix-Bosset</street>
<zip>92874</zip>
</address>
</product>
Όπως και τα elements, τα attributes ορίζονται από τον χρήστη
10. XML - Παράδειγµα
<a>
<b id="x1"> a a
<c>Κώστας</c> id = x1 id = x2
<c>Γιάννης</c>
</b> b d b *
<d/> <d/>
<b id="x2">
<c>Ηλίας</c> id b d
c c c
</b>
</a>
*
Κώστας Γιάννης Ηλίας
c
File Format Tree Structure Schema
(Instance) (instance) (Document Type
Definition, DTD)
11. Παράδειγµα – XML ∆ένδρου
Root element
<bookstore>
Parent Child
Attribute: Element: Attribute:
“lang” <book> “category”
Element: Element: Element: Element:
<title> <author> <year> <price>
Text: Text: Text: Text:
Everyday Italian Giada De 2005 30.00
Laurentis
12. Επιπλέον στοιχεία της XML
Στοιχεία που δεν χρειάζονται στην ανταλλαγή
δεδοµένων
Σχόλια
<!– this is a comment -->
Αρχική γραµµή
<?xml version=“1.0”?>
Προαιρετικό: Document Type Definition (DTD)
Ορίζει την γραµµατική του κειµένου
<?xml version=“1.0”?>
<!DOCTYPE name [markupdeclarations]>
<name>…</name>
13. XML – Name conflicts
Εφόσον τα ονόµατα των element στην XML δεν είναι
προκαθορισµένα (δεσµευµένα), ενδέχεται δύο διαφορετικά XML
documents να χρησιµοποιούν το ίδιο element name
<table> <table>
<tr> <name>African Coffee Table</name>
<td>Apples</td> <width>80</width>
<td>Bananas</td> <length>120</length>
</tr> </table>
</table>
ΗΤΜL κώδικας XML κώδικας
Το <table> δηλώνει Το <table> περιέχει πληροφορία
πίνακα της HTML για ένα τραπέζι
14. XML Namespaces
Λύση… τα XML Namespaces
Τα ονόµατα των elements ενός αρχείου χαρακτηρίζονται από µια ετικέτα
(super label)
Έτσι, δύο conflicting elements πλέον έχουν διαφορετική ετικέτα και
εποµένως δεν υπάρχει περίπτωση σύγχυσης
Το label αυτό ονοµάζεται namespace και αποτελεί το όνοµα της συλλογής
των ονοµάτων του αρχείου
Το XML namespace attribute τοποθετείται στο αρχικό tag ενός element και έχει
την παρακάτω σύνταξη:
xmlns:namespace-prefix="namespaceURI"
Ή
xmlns=namespaceURI“ (obsolete)
Όταν ένα namespace καθορίζεται στο αρχικό tag ενός element, όλα τα child
elements µε το ίδιο namespace-prefix συνδέονται µε το ίδιο namespace
Το URI στο όνοµα ενός namespace δεν έχει link πουθενά! Χρησιµοποιείται
αυτή η αναπαράσταση γιατί είναι µοναδική
http://www.domain.com/ns/rivers/1.1
15. XML Namespaces -
Παράδειγµα
<root>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td> Namespace για τo
<h:td>Bananas</h:td> ΗΤΜL Tag
</h:tr>
</h:table>
<f:table xmlns:f="http://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name> Namespace για
<f:width>80</f:width>
<f:length>120</f:length> τo ΧΜL Tag
</f:table>
</root>
18. DTD – Document Type
Definition
Προτάθηκε σαν µια γραµµατική για τα XML έγγραφα –
Χρησιµοποιείται για τον έλεγχο της εγκυρότητάς τους
Αν κάποιο έγγραφο XML αναφέρεται σε ένα DTD αλλά δεν το
ακολουθεί, τότε το έγγραφο XML δεν γίνεται δεκτό ως έγκυρο
Σε κάποιο βαθµό µπορεί να θεωρηθεί ως σχήµα για δεδοµένα
µορφοποιηµένα σε XML
Επιτρέπει
Σε κάθε έγγραφο XML να έχει περιγραφή της δοµής του
Σε ανεξάρτητες οµάδες χρηστών να συµφωνήσουν στη χρήση µίας
κοινής δοµής για την ανταλλαγή δεδοµένων
Σε µία εφαρµογή διαδικτύου να επικυρώσει τα δεδοµένα τα οποία
δέχεται
Πολλοί οργανισµοί δηµιουργούν DTDs για µία ευρεία γκάµα
εφαρµογών (οικονοµικές/ιατρικές συναλλαγές κ.τ.λ)
20. XML -Internal Doctype
Declaration
Internal DOCTYPE declaration
<!DOCTYPE root-element [element-declarations]>
<?xml version="1.0"?> root-element
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)> element
<!ELEMENT heading (#PCDATA)> declarations
<!ELEMENT body (#PCDATA)>]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>
21. XML - External Doctype
Declaration
External DOCTYPE declaration
<!DOCTYPE root-element SYSTEM "filename">
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM “note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
note.dtd
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
22. ∆οµικά στοιχεία DTD
Elements
Μπορούν να περιέχουν κείµενο, άλλα elements ή να είναι άδεια
HTML element: <body>some text</body>
XML element:<message>some text</message>
Empty element: <br/>
Attributes
Παρέχουν επιπλέον πληροφορία σχετικά µε τα elements
Τοποθετούνται πάντοτε εσωτερικά ενός element
Συντάσσονται σε ζεύγη (name/value)
Παράδειγµα: <img src="computer.gif" />
PCDATA
Parsed character data
Εξετάζεται από τον parser
∆εν πρέπει να περιέχει χαρακτήρες: &, <, or >. Πρέπει να αντικαθίστανται µε & <
and >
CDDATA
Character data
∆εν εξετάζεται από τον parser
23. ∆ήλωση elements
∆ήλωση
<!ELEMENT element-name category>
ή
<!ELEMENT element-name (element-content)>
Empty element
<!ELEMENT element-name EMPTY>
Element µε PCDATA
<!ELEMENT element-name (#PCDATA)>
Παράδειγµα: <!ELEMENT from (#PCDATA)>
Element µε οποιοδήποτε περιεχόµενο
<!ELEMENT element-name ANY>
<!ELEMENT note ANY>
Elements µε elements-παιδιά
<!ELEMENT element-name (child1)>
ή
<!ELEMENT element-name (child1,child2,...)>
Παράδειγµα: <!ELEMENT note (to,from,heading,body)>
Τα elements-παιδιά πρέπεινα δηλώνονται µε την ακριβή σειρά εµφάνισής τους
24. ∆ήλωση elements
Ακριβώς µία εµφάνιση element
<!ELEMENT element-name (child-name)>
Παράδειγµα: <!ELEMENT note (message)>
Το element message πρέπει να υπάρχει ακριβώς µία φορά εντός του element note
Τουλάχιστον µία εµφάνιση
<!ELEMENT element-name (child-name+)>
Παράδειγµα: <!ELEMENT note (message+)>
Προαιρετική εµφάνιση-όσες φορές χρειαστεί
<!ELEMENT element-name (child-name*)>
Παράδειγµα: <!ELEMENT student ( course_left*)>
Προαιρετική εµφάνιση-µονάχα µία φορά
<!ELEMENT element-name (child-name?)>
<!ELEMENT student (diploma_thesis?)>
Είτε/είτε περιεχόµενο
Παράδειγµα: <!ELEMENT note (to,from,header,(message|body))>
Ποικίλλο περιεχόµενο
<!ELEMENT note (#PCDATA|to|from|header|message)*>
Μηδέν ή περισσότερες εµφανίσεις από τα elements to, from, header, message
25. ∆ήλωση attributes
<!ATTLIST element-name attribute-name attribute-type default-value>
Παράδειγµα:
XML κώδικας: <payment type="check" />
DTD: <!ATTLIST payment type CDATA "check">
Attribute type (παραδείγµατα)
DTD:
CDATA Character data <!ATTLIST person number
(en1|en2|..) Τιµή από µία αριθµηµένη λίστα CDATA #REQUIRED>
ID Μοναδικό id Έγκυρο XML:
IDREF To id ενός άλλου element <person number="5677" />
IDREFS Μία λίστα άλλων ids Άκυρο XML:
Attribute value <person />
Value Η προκαθορισµένη τιµή του attribute
C To attribute περιλαµβάνεται υποχρεωτικά
#IMPLIED Το attribute δεν περιλαµβάνεται υποχρεωτικά
#FIXED value Η τιµη του attribute είναι προκαθορισµένη και σταθερή
DTD:
DTD: <!ATTLIST sender company CDATA #FIXED "Microsoft">
<!ATTLIST contact fax CDATA #IMPLIED> Έγκυρο XML:
Έγκυρα XML: <sender company="Microsoft" />
1. <contact fax="555-667788" /> Άκυρο XML:
2.<contact /> <sender company="W3Schools" />
Απαρίθµηση τιµών attributes
<!ATTLIST element-name attribute-name (en1|en2|..) default-value>
<!ATTLIST payment type (check|cash) "cash">
26. Χρήση attributes/elements
Η XML δεν ορίζει ξεκάθαρους κανόνες σχετικά µε το
πότε πρέπει να χρησιµοποιούνται attributes και πότε
elements
στόσο τα attributes
∆εν λαµβάνουν πολλαπλές τιµές
∆εν επεκτείνονται εύκολα
∆εν µπορούν να περιγράψουν δοµές
Σαν γενικό κανόνα:
Τα metadata αποθηκεύονται σαν attributes (π.χ element id)
Τα δεδοµένα αποθηκεύονται ως elements
27. Validation errors - DTD
<?xml version="1.0" ?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<date>1/12/2008</date>
<to>Tove/to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget our meeting this weekend!</body>
</note>
28. Παράδειγµα
<!ELEMENT product ((name, price, address))> trompette.dtd
<!ELEMENT name (#PCDATA)>
<!ATTLIST name
language CDATA #FIXED "French">
<!ELEMENT price (#PCDATA)>
<!ATTLIST price
currency CDATA #FIXED "Euro">
<!ELEMENT address ((street, zip))>
<!ATTLIST address
format CDATA #FIXED "XL1245"
language CDATA #FIXED "French">
<!ELEMENT street (#PCDATA)>
<!ELEMENT zip (#PCDATA)>
29. O κώδικας
trompette
<product>
<name language=“French”>trompette no 6</name>
<price currency=“Euro”> 420.12 </price>
<address format=“XL1245” language=“French”>
<street>31 rue Croix-Bosset</street>
<zip>92874</zip>
</address>
</product>
30. XML Schema
Περιγράφει τη δοµή ενός εγγράφου XML
Περισσότερες δυνατότητες από ότι το DTD
Γραµµένα σε γλώσσα XML-επεκτάσιµα (επαναχρησιµοποίηση
ενός schema σε άλλα)
Πιο επεκτάσιµα
Υποστηρίζουν namespaces
Υποστηρίζουν τύπους δεδοµένων
Ιδιαίτερα η υποστήριξη τύπων δεδοµένων
Καθιστά ευκολότερη την επικύρωση της ορθότητας των
δεδοµένων
Καθιστά ευκολότερη τη διατύπωση περιορισµών πάνω στα
δεδοµένα
Καθιστά ευκολότερη τη µετατροπή ανάµεσα σε τύπους
δεδοµένων
H γλώσσα του XML Schema ονοµάζεται XML Schema Definition
(XSD)
31. Παράδειγµα XML Schema
<?xml version="1.0"?>
<note>
<to>Tove</to> Κώδικας XML
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
32. Παράδειγµα XML Schema XML Schema
Στοιχείο - ρίζα Τα στοιχεία που χρησιµοποιεί
το schema προέρχονται από αυτό το namespace
Τα στοιχεία που δηµιουργεί
<?xml version="1.0"?> Το schema προέρχονται από
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" αυτό το namespace
targetNamespace="http://www.mySite.com"
xmlns="http://www.mySite.com" complexType:
elementFormDefault="qualified"> Περιέχει και άλλα
elements
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/> simpleType:
<xs:element name="from" type="xs:string"/> ∆εν περιέχει
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/> άλλα elements
</xs:sequence>
</xs:complexType>
</xs:element> Default namespace
</xs:schema>
33. XSD Simple Types - Elements
Περιέχουν µόνο κείµενο ή απλούς τύπους (boolean, string, date,
κ.α)
∆εν µπορούν να περιέχουν άλλα elements ή attributes
Μπορεί να περιοριστεί το περιεχόµενο σε συγκεκριµένο τύπο ή
να οριστεί έτσι ώστε να ακολουθεί συγκεκριµένο µοτίβο (pattern)
Υπάρχουν πολλοί built-in τύποι <lastname>Smith</lastname>
Παραδείγµατα: <age>40</age>
xs:string <id>12532</id>
xs:decimal
xs:integer
xs:boolean
xs:date <xs:element name="lastname" type="xs:string"/>
xs: time <xs:element name="age" type="xs:integer"/>
<xs:element name= "id" type= “xs:integer" fixed=“12532"
Επίσης default και fixed τιµές
34. XSD Simple Types - Attributes
Κάθε attribute δηλώνεται σαν simple type
Tα simple elements δεν µπορούν να έχουν attributes. Τα elements ου έχουν
attributes θεωρούνται complex types
<lastname lang="EN">Smith</lastname>
<xs:attribute name="lang" type="xs:string"/>
<xs:attribute name="lang" type="xs:string" default="EN"/>
<xs:attribute name="lang" type="xs:string" fixed="EN"/>
<xs:attribute name="lang" type="xs:string" use="required"/>
Παραδείγµατα built-in τύπων:
default fixed Optional/required attributes
xs:string
(+use)
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time
36. XSD Simple Types – Restrictions
Περιορισµός Περιγραφή
enumeration Λίστα αποδεκτών τιµών
fractionDigits Μέγιστος αριθµός επιτρεπτών δεκαδικών. Πρέπει να είναι µεγαλύτερο ή ίσο µε 0.
length Ακριβής αριθµός χαρακτήρων ή στοιχείων λίστας που επιτρέπονται. Πρέπει να είναι
µεγαλύτερο ή ίσο µε 0.
maxExclusive Άνω όριο αριθµητικής τιµής
maxInclusive Άνω όριο αριθµητικής τιµής (περιλαµβανοµένης αυτής της τιµής)
maxLength Μέγιστος αριθµός χαρακτήρων ή στοιχείων λίστας που επιτρέπονται. Πρέπει να είναι
µεγαλύτερο ή ίσο µε 0.
minExclusive Κάτω όριο αριθµητικής τιµής
minInclusive Κάτω όριο αριθµητικής τιµής (περιλαµβανοµένης αυτής της τιµής)
minLength Ελάχιστος αριθµός χαρακτήρων ή στοιχείων λίστας που επιτρέπονται. Πρέπει να είναι
µεγαλύτερο ή ίσο µε 0.
pattern Καθορίζει την ακριβή σειρά χαρακτήρων που επιτρέπονται.
totalDigits Καθορίζει τον ακριβή αριθµό ψηφίων που επιτρέπονται. Πρέπει να είναι µεγαλύτερο ή
ίσο µε το 0
whiteSpace Καθορίζει το χειρισµό του κενού χώρου (tabs, κενά, αλλαγές γραµµών) is handled
37. XSD-Complex Types
Ένα complex element µπορεί να περιέχει άλλα elements ή attributes
4 είδη complex elements
Άδεια elements
Elements που περιέχουν µόνο άλλα elements
Elements που περιέχουν µόνο κείµενο
Elements που περιέχουν κείµενο και άλλα elements
Όλοι οι προηγούµενοι τύποι µπορεί να περιέχουν και attributes
Παραδείγµατα
<person id=“Z8746"/> <food type="dessert">Ice cream</food>
<person> <description>
<firstname>John</firstname> It happened on
<lastname>Smith</lastname> <date lang=«english">04.10.09</date>
</person> </description>
38. XSD Complex Types – Τρόποι ορισµού
<person>
<firstname>John</firstname>
<lastname>Smith</lastname>
</person>
<xs:element name=“person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/> Απ’ευθείας
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name=“person" type="personinfo"/>
Με αναφορά
<xs:complexType name="personinfo">
(επιτρέπει τη χρήση
<xs:sequence>
<xs:element name="firstname" type="xs:string"/> του ίδιου complex type από
<xs:element name="lastname" type="xs:string"/> πολλά elements)
</xs:sequence>
</xs:complexType>
40. XSD Complex Types-Empty
Elements
Ένα κενό element δεν περιέχει κείµενο, µόνο
attributes
<product prodid="123" />
<xs:element name="product">
<xs:complexType>
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>
</xs:element>
Ή
<xs:element name="product" type="prodtype"/> Επιτρέπει τη χρήση
του ίδιου complex
<xs:complexType name="prodtype">
<xs:attribute name="prodid" type="xs:positiveInteger"/> type από πολλά
</xs:complexType> elements
41. XSD Complex Types-Μόνο Elements
<person>
<firstname>John</firstname>
<lastname>Smith</lastname>
</person>
<xs:element name="person">
<xs:complexType>
<xs:sequence> Τα elements
<xs:element name="firstname" type="xs:string"/> πρέπει να εµφανιστούν
<xs:element name="lastname" type="xs:string"/> Με τη συγκεκριµένη σειρά
</xs:sequence> που ορίστηκαν
</xs:complexType>
</xs:element>
<xs:element name="person" type="persontype"/>
<xs:complexType name="persontype">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
43. XSD Complex Types – Mixed
περιεχόµενο
<letter>
Dear Mr.<name>John Smith</name>.
Your order <orderid>1032</orderid> Κείµενο, attributes
will be shipped on <shipdate>2001-07-13</shipdate>. και elements
</letter>
<xs:element name="letter">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="orderid" type="xs:positiveInteger"/>
<xs:element name="shipdate" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
44. XSD Complex Types – Indicators
Επιτρέπουν τον έλεγχο του πως εµφανίζονται τα
elements σε έναν complex type
Ενδείκτες σειράς:
All Εµφάνιση των elements σε οποιαδήποτε σειρά. Κάθε
element εµφανίζεται µόνο µία φορά.
Choice Μπορεί να εµφανιστεί µόνο ένα από τα elements
Sequence Εµφάνιση των elements µε τη σειρά ορισµού
Ενδείκτες µέγιστου/ελάχιστου αριθµού εµφάνισης:
maxOccurs Μέγιστες εµφανίσεις του element
minOccurs Ελάχιστες εµφανίσεις του element
Ενδείκτες οµάδας:
Group name Ορισµός οµάδας από element
attributeGroup name Ορισµός οµάδας από attributes
46. XSD Complex Types – Επέκταση µε µη
καθορισµένα elements
Τα στοιχεία <any> και anyAttribute επιτρέπουν την επέκταση του XML
εγγράφου µε elements και attributes που δεν ορίζονται από το σχήµα του
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:any minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
<xs:anyAttribute/>
</xs:complexType>
</xs:element>
47. XSD – Παράδειγµα (1/3)
<?xml version="1.0" encoding="ISO-8859-1"?>
<shiporder orderid="889923"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
<orderperson>John Smith</orderperson>
<shipto>
<name>Ola Nordmann</name>
<address>Langgt 23</address> Έστω ότι θέλουµε
<city>4000 Stavanger</city>
<country>Norway</country> να δηµιουργήσουµε
</shipto>
<item> το XSD για αυτό
<title>Empire Burlesque</title>
<note>Special Edition</note>
το xml
<quantity>1</quantity>
<price>10.90</price>
</item>
<item>
<title>Hide your heart</title>
<quantity>1</quantity>
<price>9.90</price>
</item>
</shiporder>
51. ΧΜL Http Request
Αντικείµενο XMLHttpRequest
Επικοινωνία µε τον εξυπηρετητή µέσω της
ιστοσελίδας
Παραδείγµατα:
Ανανέωση σελίδας µε νέα δεδοµένα χωρίς
επαναφόρτωση (reloading) της σελίδας
Αίτηση και παραλαβή νέων δεδοµένων από τον
εξυπηρετητή µετά τη φόρτωση της σελίδας
Επικοινωνία µε τον εξυπηρετητή στο παρασκήνιο
52. Το αντικείµενο
XMLHttpRequest
Με χρήση Javascript
Στους σύγχρονους φυλλοµετρητές
var xmlhttp=new XMLHttpRequest()
Σε παλαιότερους φυλλοµετρητές Microsoft
(IE 5/6)
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
53. XML Parser
Οι περισσότεροι φυλλοµετρητές έχουν ενσωµατωµένο XML-
parser για την ανάγνωση και το χειρισµό της XML
O parser µετατρέπει την XML σε προσβάσιµο µέσω Javascript
αντικείµενο (XML DOM)
To XML DOM
Document Object Model
Αντιλαµβάνεται το έγγραφο ως δένδρο
Τρόπος πρόσβασης και χειρισµού εγγράφων XML :Περιέχει
µεθόδους για τη διάσχιση ΧΜL δένδρων, για την πρόσθεση ή τη
διαγραφή κόµβων κ.τ.λ.
στόσο, πριν µπορέσουµε να επεξεργαστούµε ένα έγγραφο
XML αυτό πρέπει να φορτωθεί σε ένα αντικείµενο XML DOM
αυτό το οποίο κάνει ο parser
54. Φόρτωση XML αρχείου
if (window.XMLHttpRequest)
{ ∆ηµιουργία αντικειµένου
xhttp=new XMLHttpRequest(); επικοινωνίας µε εξυπηρετητή
} Άνοιγµα του αντικειµένου XMLHTTP
else // Internet Explorer 5/6 και φόρτωση του books.xml
{ Αποστολή αίτησης XML HTTP στον
xhttp=new ActiveXObject("Microsoft.XMLHTTP"); εξυπηρετητή
} Η απάντηση ως αντικείµενο XML
xhttp.open("GET","books.xml",false); DOM
xhttp.send("");
xmlDoc=xhttp.responseXML;
55. XML DOM-Παράδειγµα
Αποστολή στοιχείων XML από τον
<note>
εξυπηρετητή και
<to>Nick</to>
απεικόνισή τους στον φυλλοµετρητή <from>John</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
<html> </note>
<body>
<h1>Internal Note</h1>
<p><b>To:</b> <span id="to"></span><br />
<b>From:</b> <span id="from"></span><br />
<b>Message:</b> <span id="message"></span>
<script type="text/javascript">
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest()
Επικοινωνία µε server –
}
else φόρτωση του XML DOM
{ object
xhttp=new ActiveXObject("Microsoft.XMLHTTP")
}
xhttp.open("GET","note.xml",false);
xhttp.send("");
xmlDoc=xhttp.responseXML;
56. XML DOM-Παράδειγµα
document.getElementById("to").innerHTML=
xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
document.getElementById("from").innerHTML=
xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;
document.getElementById("message").innerHTML=
xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
</script>
</body>
</html>
∆ιάσχιση του XML DOM
xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue; αντικειµένου.
Εξαγωγή τιµής του content
του πρώτου tag <to> Nick
∆ιάσχιση του HTML DOM
document.getElementById("to").innerHTML αντικειµένου.
Απόδοση τιµής στο content
του πρώτου tag <to> Nick
58. Περαιτέρω τεχνολογίες
Με βάση τη γλώσσα XML
δηµιουργήθηκαν διάφορες
τεχνολογίες οι οποίες µας
επιτρέπουν τη µορφοποίηση και
επεξεργασία των εγγράφων XML
XPath
XSLT
XPointer
XLink
XQuery
59. XPath
Πλοήγηση στα elements και τα attributes της
XML
Χρησιµοποιεί εκφράσεις (path expressions)
για αυτή την πλοήγηση
Οµοιότητα αυτών των εκφράσεων µε τις
εκφράσεις πλοήγησης στο filesystem ενός
υπολογιστή
Περιέχει βιβλιοθήκες από standard functions
60. XSLT
EXtensible Stylesheet Language
Γλώσσα µορφοποίησης εγγράφων XML
∆υνατότητες
Προσθήκης/αφαίρεσης, αναδιάταξης/ταξινόµησης,
απεικόνισης/απόκρυψης elements και attributes
στο αρχείο εξόδου (output file)
61. XLink
XML Linking Language
Χρησιµοποιείται για τη δηµιουργία συνδέσµων στα
έγγραφα XML
Κάθε element ενός XML εγγράφου µπορεί να γίνει
σύνδεσµος
Υποστήριξη
Απλών συνδέσµων (παρόµοιοι µε συνδέσµους HTML)
Εκτεταµένων συνδέσµων (σύνδεση πολλών πόρων
ταυτόχρονα)
∆υνατότητα ορισµού των συνδέσµων έξω από τα
αρχεία που θα συνδεθούν
62. XPointer
XML Pointer Language
Με την XLink µπορούµε να δηµιουργήσουµε
συνδέσµους στο έγγραφο XML
Το XPointer επιτρέπει στους συνδέσµους να
«δείχνουν» σε συγκεκριµένα τµήµατα ενός
εγγράφου XML
Χρησιµοποιεί εκφράσεις XPath για την
πλοήγηση µέσα σε ένα έγγραφο
63. XQuery
Η XQuery συνιστά για την XML ότι η SQL για
τις βάσεις δεδοµένων
Γλώσσα αναζήτησης σε XML δεδοµένα
Μπορεί να χρησιµοποιηθεί:
Για την εξαγωγή πληροφορίας για χρήση σε ένα
web service
Για την αναζήτηση σε έγγραφα Ιστού
Για τη δηµιουργία συνοπτικών αναφορών
(summary reports) σχετικά µε δεδοµένα τα οποία
βρίσκονται αποθηκευµένα σε µία βάση XML