63
XML – based technologies Αναγνωστόπουλος Ιωάννης - Λυκουρέντζου Ιωάννα

Ws13 2(2010-11)

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Ws13 2(2010-11)

XML – based technologies

Αναγνωστόπουλος Ιωάννης - Λυκουρέντζου Ιωάννα

Page 2: Ws13 2(2010-11)

Περιεχόµενα

XML Έλεγχος εγκυρότητας XML

DTD Schema

XML DOM Περαιτέρω δυνατότητες και τεχνολογίες της XML

XPath XSLT XPointer XLink XQuery

Web services µε τη βοήθεια των τεχνολογιών XML Web services WSDL SOAP RDF και OWL RSS WAP και WML

Page 3: Ws13 2(2010-11)

XML

Extensible Markup Language – Μία απλή έκδοση της sgml Σχεδιασµένη για να εισάγει την sgml στο διαδίκτυο

Μια µετα-γλώσσα (meta-language) Μια γλώσσα που παράγει γλώσσες

XHTML – η πιο πρόσφατη έκδοση της HTML VoiceXML – Για διαδραστική φωνητική επικοινωνία ανθρώπου –

υπολογιστή µέσω τηλεφώνου, PDA ή υπολογιστή

WSDL – για την περιγραφή των web services WAP και WML – γλώσσες σήµανσης (markup) για φορητές

συσκευές

RSS γλώσσες για τροφοδότες νεων (news feeds) RDF/OWL – για περιγραφή πόρων και οντολογιών

SMIL – για περιγραφή πολυµέσων στον Ιστό

Page 4: Ws13 2(2010-11)

Αναµενόµενα κέρδη

Αποθήκευση µια φορά και µορφοποίηση πολλές φορές

Ανεξαρτησία από υλικό – λογισµικό Αποθήκευση σε µορφή απλού κειµένου (plain text format) ∆ιευκόλυνση της µεταφοράς/ανταλλαγής δεδοµένων ανάµεσα σε

ασύµβατες κατά τα άλλα εφαρµογές

∆ιαθεσιµότητα των δεδοµένων σε µεγαλυτερο έυρος εφαρµογώναλλά και µέσων (PDAs, news feeds, voice machines)

Συγκέντρωση δεδοµένων µια φορά και ανταλλαγή πολλές φορές

Ταχύτερη εστιασµένη αναζήτηση

Μικρότερη συµφόρηση του δικτύου

Οι µηχανές αναζήτησης αναζητούν συγκεκριµένες ετικέτες (tags) στον κώδικα XML Ταχύτερα

Με µεγαλύτερη ακρίβεια

Page 5: Ws13 2(2010-11)

XML HTML

Χρησιµοποιεί tags ανάµεσα στο κείµενο... ...για να περιγράψει το layout της σελίδας <p> <b>Alan</b>, 42 years, <i>[email protected]</i> Σχεδιάστηκε ειδικά για να περιγράψει την παρουσίαση και όχι το

περιεχόµενο

XML Σχεδιάστηκε ειδικά για να περιγράψει το περιεχόµενο (content) και όχι την

παρουσίαση µιας σελίδας

Βασικές διαφορές από την HTML Μπορεί κανείς να ορίσει νέα tags κατά βούληση

Nested tags σε οποιοδήποτε βάθος

Ενα έγγραφο XML µπορεί προαιρετικά να περιέχει µια περιγραφή τηςγραµµατικής του

Τα tags δοµούν το περιεχόµενο <person><name>Kostas</name>…</person> Το πως θα εµφανιστούν ορίζεται ξεχωριστά από κάποιο stylesheet (XSL)

Page 6: Ws13 2(2010-11)

XML Ο ρόλος της XML

Προτάθηκε σαν µια markup γλώσσα περιγραφής εγγράφων

Καταγωγή απο την SGML (ψηφιακές βιβλιοθήκες) Εξελίσσεται όµως σε ένα παγκόσµιο πρότυπο για ανταλλαγή πληροφορίας

Βασικό συστατικό της XML είναι το element Τιµή του element Κείµενο που περικλείεται από ένα ζεύγος tags Εκτός από την λογική δοµή (elements), τα tags περιγράφουν και την φυσική

δοµή (entities)

<person>

<name>Alan</name>

<age>42</age>

<email>[email protected]</email>

<email>[email protected]</email>

</person>

Page 7: Ws13 2(2010-11)

XML – Elements/Attributes

ElementsPerson, firstname, lastnameAttributessex (value=“female”)

Οι ιδιότητες δεν µπορούν να περιέχουν πολλαπλέςτιµές (τα child elements µπορούν)

Οι ιδιότητες δεν πρέπει να αλλάζουν συχνά

Οι ιδιότητες δεν µπορούν να περιγράψουν δοµή (ταchild elements µπορούν)

Page 8: Ws13 2(2010-11)

Βασικά συνθετικά του

συντακτικού της XML

<animal>

<name language = “English”> Tiger </name>

<name language = “Latin”> Panthera tigris</name>

<weight> 500 pounds </weight>

</animal>

entity opening tagattributes

valuescontent

closing tagelements

<picture filename = “tiger.jpg” />

empty element, just an attribute

Page 9: Ws13 2(2010-11)

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 ορίζονται από τον χρήστη

Page 10: Ws13 2(2010-11)

XML - Παράδειγµα<a>

<b id="x1">

<c>Κώστας</c>

<c>Γιάννης</c>

</b>

<d/> <d/>

<b id="x2">

<c>Ηλίας</c>

</b>

</a>

a

b d b

c c c

Κώστας Γιάννης Ηλίας

Tree Structure

(instance)

id = x1 id = x2a

b d

c

*

id

*

Schema

(Document Type

Definition, DTD)

File Format

(Instance)

Page 11: Ws13 2(2010-11)

Παράδειγµα – XML ∆ένδρουRoot element

<bookstore>

Element:

<book>

Attribute:

“category”

Attribute:

“lang”

Element:

<title>

Element:

<author>Element:

<year>

Element:

<price>

Text:

Everyday Italian

Text:

Giada De

Laurentis

Text:

2005

Text:

30.00

ChildParent

Page 12: Ws13 2(2010-11)

Επιπλέον στοιχεία της XML

Στοιχεία που δεν χρειάζονται στην ανταλλαγήδεδοµένων

Σχόλια<!– this is a comment -->

Αρχική γραµµή<?xml version=“1.0”?>

Προαιρετικό: Document Type Definition (DTD) Ορίζει την γραµµατική του κειµένου

<?xml version=“1.0”?>

<!DOCTYPE name [markupdeclarations]>

<name>…</name>

Page 13: Ws13 2(2010-11)

XML – Name conflicts

Εφόσον τα ονόµατα των element στην XML δεν είναιπροκαθορισµένα (δεσµευµένα), ενδέχεται δύο διαφορετικά XML documents να χρησιµοποιούν το ίδιο element name

<table>

<tr>

<td>Apples</td>

<td>Bananas</td>

</tr>

</table>

<table>

<name>African Coffee Table</name>

<width>80</width>

<length>120</length>

</table>

ΗΤΜL κώδικαςΤο <table> δηλώνει

πίνακα της HTML

XML κώδικαςΤο <table> περιέχει πληροφορία

για ένα τραπέζι

Page 14: Ws13 2(2010-11)

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, όλα τα childelements µε το ίδιο namespace-prefix συνδέονται µε το ίδιο namespace

Το URI στο όνοµα ενός namespace δεν έχει link πουθενά! Χρησιµοποιείταιαυτή η αναπαράσταση γιατί είναι µοναδική

http://www.domain.com/ns/rivers/1.1

Page 15: Ws13 2(2010-11)

XML Namespaces -Παράδειγµα

<root>

<h:table xmlns:h="http://www.w3.org/TR/html4/"><h:tr><h:td>Apples</h:td><h:td>Bananas</h:td>

</h:tr></h:table>

<f:table xmlns:f="http://www.w3schools.com/furniture"><f:name>African Coffee Table</f:name><f:width>80</f:width><f:length>120</f:length>

</f:table>

</root>

Namespace για τoΗΤΜL Tag

Namespace γιατo ΧΜL Tag

Page 16: Ws13 2(2010-11)

Παράδειγµα

<table>

<tr>

<td>Apples</td>

<td>Bananas</td>

</tr>

</table>

<table>

<name>African Coffee Table</name>

<width>80</width>

<length>120</length>

</table>

Page 17: Ws13 2(2010-11)

Έλεγχος εγκυρότητας

XML

XML DTDXML Schema

Page 18: Ws13 2(2010-11)

DTD – Document Type Definition Προτάθηκε σαν µια γραµµατική για τα XML έγγραφα –

Χρησιµοποιείται για τον έλεγχο της εγκυρότητάς τους

Αν κάποιο έγγραφο XML αναφέρεται σε ένα DTD αλλά δεν τοακολουθεί, τότε το έγγραφο XML δεν γίνεται δεκτό ως έγκυρο

Σε κάποιο βαθµό µπορεί να θεωρηθεί ως σχήµα για δεδοµέναµορφοποιηµένα σε XML

Επιτρέπει Σε κάθε έγγραφο XML να έχει περιγραφή της δοµής του Σε ανεξάρτητες οµάδες χρηστών να συµφωνήσουν στη χρήση µίας

κοινής δοµής για την ανταλλαγή δεδοµένων

Σε µία εφαρµογή διαδικτύου να επικυρώσει τα δεδοµένα τα οποίαδέχεται

Πολλοί οργανισµοί δηµιουργούν DTDs για µία ευρεία γκάµαεφαρµογών (οικονοµικές/ιατρικές συναλλαγές κ.τ.λ)

Page 19: Ws13 2(2010-11)

∆ηλώσεις DTD

Εσωτερικές

Internal DOCTYPE declaration

<!DOCTYPE root-element [element declarations]>

Εξωτερικές

External DOCTYPE declaration

<!DOCTYPE root-element SYSTEM "filename">

Page 20: Ws13 2(2010-11)

element declarations

XML -Internal DoctypeDeclaration

<?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>

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend</body>

</note>

Internal DOCTYPE declaration

<!DOCTYPE root-element [element-declarations]>

root-element

Page 21: Ws13 2(2010-11)

XML - External DoctypeDeclaration

<?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>

External DOCTYPE declaration

<!DOCTYPE root-element SYSTEM "filename">

<!ELEMENT note (to,from,heading,body)>

<!ELEMENT to (#PCDATA)>

<!ELEMENT from (#PCDATA)>

<!ELEMENT heading (#PCDATA)>

<!ELEMENT body (#PCDATA)>

note.dtd

Page 22: Ws13 2(2010-11)

∆οµικά στοιχεία 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 >. Πρέπει να αντικαθίστανται µε &amp; &lt;

and &gt; CDDATA

Character data ∆εν εξετάζεται από τον parser

Page 23: Ws13 2(2010-11)

∆ήλωση 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-παιδιά πρέπεινα δηλώνονται µε την ακριβή σειρά εµφάνισής τους

Page 24: Ws13 2(2010-11)

∆ήλωση 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

Page 25: Ws13 2(2010-11)

<!ATTLIST element-name attribute-name attribute-type default-value> Παράδειγµα:

XML κώδικας: <payment type="check" /> DTD: <!ATTLIST payment type CDATA "check">

Attribute type (παραδείγµατα) CDATA Character data (en1|en2|..) Τιµή από µία αριθµηµένη λίστα

ID Μοναδικό id IDREF To id ενός άλλου element IDREFS Μία λίστα άλλων ids

Attribute value Value Η προκαθορισµένη τιµή του attribute C To attribute περιλαµβάνεται υποχρεωτικά

#IMPLIED Το attribute δεν περιλαµβάνεται υποχρεωτικά #FIXED value Η τιµη του attribute είναι προκαθορισµένη και σταθερή

∆ήλωση attributes

DTD:<!ATTLIST contact fax CDATA #IMPLIED>Έγκυρα XML:

1. <contact fax="555-667788" />2.<contact />

DTD:<!ATTLIST person numberCDATA #REQUIRED>Έγκυρο XML:

<person number="5677" />Άκυρο XML:

<person />

DTD:<!ATTLIST sender company CDATA #FIXED "Microsoft">Έγκυρο XML:<sender company="Microsoft" />Άκυρο XML:<sender company="W3Schools" />

Απαρίθµηση τιµών attributes<!ATTLIST element-name attribute-name (en1|en2|..) default-value> <!ATTLIST payment type (check|cash) "cash">

Page 26: Ws13 2(2010-11)

Χρήση attributes /elements

Η XML δεν ορίζει ξεκάθαρους κανόνες σχετικά µε το

πότε πρέπει να χρησιµοποιούνται attributes και πότεelements

Ωστόσο τα attributes ∆εν λαµβάνουν πολλαπλές τιµές

∆εν επεκτείνονται εύκολα

∆εν µπορούν να περιγράψουν δοµές

Σαν γενικό κανόνα: Τα metadata αποθηκεύονται σαν attributes (π.χ element id) Τα δεδοµένα αποθηκεύονται ως elements

Page 27: Ws13 2(2010-11)

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>

Page 28: Ws13 2(2010-11)

Παράδειγµα

<!ELEMENT product ((name, price, address))>

<!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)>

trompette.dtd

Page 29: Ws13 2(2010-11)

O κώδικας<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>

trompette

Page 30: Ws13 2(2010-11)

XML Schema Περιγράφει τη δοµή ενός εγγράφου XML Περισσότερες δυνατότητες από ότι το DTD

Γραµµένα σε γλώσσα XML-επεκτάσιµα (επαναχρησιµοποίησηενός schema σε άλλα)

Πιο επεκτάσιµα

Υποστηρίζουν namespaces Υποστηρίζουν τύπους δεδοµένων

Ιδιαίτερα η υποστήριξη τύπων δεδοµένων Καθιστά ευκολότερη την επικύρωση της ορθότητας των

δεδοµένων

Καθιστά ευκολότερη τη διατύπωση περιορισµών πάνω σταδεδοµένα

Καθιστά ευκολότερη τη µετατροπή ανάµεσα σε τύπουςδεδοµένων

H γλώσσα του XML Schema ονοµάζεται XML Schema Definition (XSD)

Page 31: Ws13 2(2010-11)

Παράδειγµα XML Schema

<?xml version="1.0"?>

<note>

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

Κώδικας XML

Page 32: Ws13 2(2010-11)

Παράδειγµα XML Schema

<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.mySite.com"

xmlns="http://www.mySite.com"

elementFormDefault="qualified">

<xs:element name="note">

<xs:complexType>

<xs:sequence>

<xs:element name="to" type="xs:string"/>

<xs:element name="from" type="xs:string"/>

<xs:element name="heading" type="xs:string"/>

<xs:element name="body" type="xs:string"/>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

XML Schema

complexType:Περιέχει και άλλα

elements

simpleType:∆εν περιέχει

άλλα elements

Στοιχείο - ρίζα Τα στοιχεία που χρησιµοποιεί

το schema προέρχονται από αυτό το namespace

Τα στοιχεία που δηµιουργεί

Το schema προέρχονται απόαυτό το namespace

Default namespace

Page 33: Ws13 2(2010-11)

XSD Simple Types - Elements

Περιέχουν µόνο κείµενο ή απλούς τύπους (boolean, string, date, κ.α)

∆εν µπορούν να περιέχουν άλλα elements ή attributes Μπορεί να περιοριστεί το περιεχόµενο σε συγκεκριµένο τύπο ή

να οριστεί έτσι ώστε να ακολουθεί συγκεκριµένο µοτίβο (pattern)

<lastname>Smith</lastname>

<age>40</age>

<id>12532</id>

<xs:element name="lastname" type="xs:string"/>

<xs:element name="age" type="xs:integer"/>

<xs:element name= "id" type= “xs:integer" fixed=“12532"

Υπάρχουν πολλοί built-in τύποιΠαραδείγµατα:

xs:string

xs:decimal xs:integer

xs:boolean

xs:date

xs: time

Επίσης default και fixed τιµές

Page 34: Ws13 2(2010-11)

XSD Simple Types - Attributes

Κάθε attribute δηλώνεται σαν simple type Tα simple elements δεν µπορούν να έχουν attributes. Τα elements ου έχουν

attributes θεωρούνται complex types

Παραδείγµατα built-in τύπων: xs:string

xs:decimal

xs:integer xs:boolean

xs:date

xs:time

<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"/>

default fixed Optional/required attributes(+use)

Page 35: Ws13 2(2010-11)

XSD Simple Types – Restrictions

Οι περιορισµοί χρησιµοποιούνται για να οριστούν οι αποδεκτές τιµές τωνattributes/elements

Περιορισµός κενών χαρακτήρων

<xs:element name=«weekday"><xs:simpleType><xs:restriction base="xs:integer"><xs:minInclusive value=“1"/><xs:maxInclusive value=«7"/>

</xs:restriction></xs:simpleType>

</xs:element>

Περιορισµός τιµής

<xs:element name="course"><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value=“Internet Programming"/><xs:enumeration value=“Databases"/><xs:enumeration value=“Information Visualization"/>

</xs:restriction></xs:simpleType>

</xs:element>

Περιορισµός οµάδας τιµών

<xs:element name="letter"><xs:simpleType>

<xs:restriction base="xs:string"><xs:pattern value="[a-z]"/></xs:restriction>

</xs:simpleType></xs:element>

Περιορισµός µοτίβου<xs:element name="address"><xs:simpleType><xs:restriction base="xs:string"><xs:whiteSpace value="collapse"/>

</xs:restriction></xs:simpleType>

</xs:element>

Επίσης

replace και

preserve

Page 36: Ws13 2(2010-11)

XSD Simple Types – Restrictions

Καθορίζει το χειρισµό του κενού χώρου (tabs, κενά, αλλαγές γραµµών) is handledwhiteSpace

Καθορίζει τον ακριβή αριθµό ψηφίων που επιτρέπονται. Πρέπει να είναι µεγαλύτερο ή

ίσο µε το 0totalDigits

Καθορίζει την ακριβή σειρά χαρακτήρων που επιτρέπονται.pattern

Ελάχιστος αριθµός χαρακτήρων ή στοιχείων λίστας που επιτρέπονται. Πρέπει να είναι

µεγαλύτερο ή ίσο µε 0.minLength

Κάτω όριο αριθµητικής τιµής (περιλαµβανοµένης αυτής της τιµής)minInclusive

Κάτω όριο αριθµητικής τιµήςminExclusive

Μέγιστος αριθµός χαρακτήρων ή στοιχείων λίστας που επιτρέπονται. Πρέπει να είναι

µεγαλύτερο ή ίσο µε 0.maxLength

Άνω όριο αριθµητικής τιµής (περιλαµβανοµένης αυτής της τιµής)maxInclusive

Άνω όριο αριθµητικής τιµήςmaxExclusive

Ακριβής αριθµός χαρακτήρων ή στοιχείων λίστας που επιτρέπονται. Πρέπει να είναι

µεγαλύτερο ή ίσο µε 0.length

Μέγιστος αριθµός επιτρεπτών δεκαδικών. Πρέπει να είναι µεγαλύτερο ή ίσο µε 0.fractionDigits

Λίστα αποδεκτών τιµώνenumeration

ΠεριγραφήΠεριορισµός

Page 37: Ws13 2(2010-11)

XSD-Complex Types Ένα complex element µπορεί να περιέχει άλλα elements ή attributes 4 είδη complex elements

Άδεια elements Elements που περιέχουν µόνο άλλα elements Elements που περιέχουν µόνο κείµενο

Elements που περιέχουν κείµενο και άλλα elements Όλοι οι προηγούµενοι τύποι µπορεί να περιέχουν και attributes

<person id=“Z8746"/>

<person>

<firstname>John</firstname>

<lastname>Smith</lastname>

</person>

<food type="dessert">Ice cream</food>

<description>

It happened on

<date lang=«english">04.10.09</date>

</description>

Παραδείγµατα

Page 38: Ws13 2(2010-11)

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"/><xs:element name="lastname" type="xs:string"/>

</xs:sequence></xs:complexType>

Απ’ευθείας

Με αναφορά

(επιτρέπει τη χρήση

του ίδιου complex type απόπολλά elements)

Page 39: Ws13 2(2010-11)

XSD Complex Types – Τρόποι ορισµού<person>

<firstname>John</firstname>

<lastname>Smith</lastname>

</person>

<xs:element name=“person" type="fullpersoninfo"/>

<xs:complexType name="personinfo"><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/>

</xs:sequence></xs:complexType>

<xs:complexType name="fullpersoninfo"><xs:complexContent><xs:extension base="personinfo"><xs:sequence><xs:element name="address" type="xs:string"/><xs:element name="city" type="xs:string"/><xs:element name="country" type="xs:string"/>

</xs:sequence></xs:extension>

</xs:complexContent></xs:complexType>

Επέκταση complex typeκαι προσθήκη επιπλέον

elements

Page 40: Ws13 2(2010-11)

XSD Complex Types -Empty Elements

Ένα κενό element δεν περιέχει κείµενο, µόνοattributes

<xs:element name="product">

<xs:complexType>

<xs:attribute name="prodid" type="xs:positiveInteger"/>

</xs:complexType>

</xs:element>

<product prodid="123" />

<xs:element name="product" type="prodtype"/>

<xs:complexType name="prodtype">

<xs:attribute name="prodid" type="xs:positiveInteger"/>

</xs:complexType>

Ή

Επιτρέπει τη χρήση

του ίδιου complex

type από πολλά

elements

Page 41: Ws13 2(2010-11)

XSD Complex Types -Μόνο Elements<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>

Τα elements

πρέπει να εµφανιστούν

Με τη συγκεκριµένη σειρά

που ορίστηκαν

<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>

Page 42: Ws13 2(2010-11)

XSD Complex Types - Μόνο Κείµενο

Προσθήκη τύπου simpleContent

<person country=“UK">John Smith</person>

<xs:element name=“person">

<xs:complexType>

<xs:simpleContent>

<xs:extension base="xs:integer">

<xs:attribute name="country" type="xs:string" />

</xs:extension>

</xs:simpleContent>

</xs:complexType>

</xs:element>

<xs:element name="shoesize" type=“person"/>

<xs:complexType name="person">

<xs:simpleContent>

<xs:extension base="xs:integer">

<xs:attribute name="country" type="xs:string" />

</xs:extension>

</xs:simpleContent>

</xs:complexType>

Ή

Page 43: Ws13 2(2010-11)

XSD Complex Types – Mixed περιεχόµενο

<letter>

Dear Mr.<name>John Smith</name>.

Your order <orderid>1032</orderid>

will be shipped on <shipdate>2001-07-13</shipdate>.

</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>

Κείµενο, attributes

και elements

Page 44: Ws13 2(2010-11)

XSD Complex Types – Indicators

Επιτρέπουν τον έλεγχο του πως εµφανίζονται ταelements σε έναν complex type Ενδείκτες σειράς:

All Εµφάνιση των elements σε οποιαδήποτε σειρά. Κάθεelement εµφανίζεται µόνο µία φορά.

Choice Μπορεί να εµφανιστεί µόνο ένα από τα elements Sequence Εµφάνιση των elements µε τη σειρά ορισµού

Ενδείκτες µέγιστου/ελάχιστου αριθµού εµφάνισης: maxOccurs Μέγιστες εµφανίσεις του element minOccurs Ελάχιστες εµφανίσεις του element

Ενδείκτες οµάδας: Group name Ορισµός οµάδας από element attributeGroup name Ορισµός οµάδας από attributes

Page 45: Ws13 2(2010-11)

XSD Complex Types – Indicators -Παραδείγµατα

<xs:element name="person">

<xs:complexType>

<xs:all>

<xs:element name="firstname" type="xs:string"/>

<xs:element name="lastname" type="xs:string"/>

</xs:all>

</xs:complexType>

</xs:element>

<xs:element name="person">

<xs:complexType>

<xs:sequence>

<xs:element name="full_name" type="xs:string"/>

<xs:element name="child_name" type="xs:string" maxOccurs="10"/>

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:group name="persongroup">

<xs:sequence>

<xs:element name="firstname" type="xs:string"/>

<xs:element name="lastname" type="xs:string"/>

<xs:element name="birthday" type="xs:date"/>

</xs:sequence>

</xs:group>

Page 46: Ws13 2(2010-11)

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>

Page 47: Ws13 2(2010-11)

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>

<title>Empire Burlesque</title><note>Special Edition</note><quantity>1</quantity><price>10.90</price>

</item><item>

<title>Hide your heart</title><quantity>1</quantity><price>9.90</price>

</item></shiporder>

Έστω ότι θέλουµε

να δηµιουργήσουµε

το XSD για αυτό

το xml

Page 48: Ws13 2(2010-11)

XSD – Παράδειγµα (2/3)

<?xml version="1.0" encoding="ISO-8859-1" ?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="shiporder">

<xs:complexType>

<xs:sequence>

<xs:element name="orderperson" type="xs:string"/>

<xs:element name="shipto">

<xs:complexType>

<xs:sequence>

<xs:element name="name" type="xs:string"/>

<xs:element name="address" type="xs:string"/>

<xs:element name="city" type="xs:string"/>

<xs:element name="country" type="xs:string"/>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

Page 49: Ws13 2(2010-11)

XSD – Παράδειγµα (3/3)<xs:element name="item" maxOccurs="unbounded">

<xs:complexType><xs:sequence>

<xs:element name="title" type="xs:string"/><xs:element name="note" type="xs:string" minOccurs="0"/><xs:element name="quantity" type="xs:positiveInteger"/><xs:element name="price" type="xs:decimal"/>

</xs:sequence></xs:complexType>

</xs:element></xs:sequence><xs:attribute name="orderid" type="xs:string" use="required"/>

</xs:complexType></xs:element>

Page 50: Ws13 2(2010-11)

Επικοινωνία µε εξυπηρετητή

XML DOM

Page 51: Ws13 2(2010-11)

ΧΜL Http Request

Αντικείµενο XMLHttpRequest Επικοινωνία µε τον εξυπηρετητή µέσω της

ιστοσελίδας

Παραδείγµατα: Ανανέωση σελίδας µε νέα δεδοµένα χωρίς

επαναφόρτωση (reloading) της σελίδας Αίτηση και παραλαβή νέων δεδοµένων από τον

εξυπηρετητή µετά τη φόρτωση της σελίδας

Επικοινωνία µε τον εξυπηρετητή στο παρασκήνιο

Page 52: Ws13 2(2010-11)

Το αντικείµενο

XMLHttpRequest

Με χρήση Javascript Στους σύγχρονους φυλλοµετρητές

var xmlhttp=new XMLHttpRequest()

Σε παλαιότερους φυλλοµετρητές Microsoft (IE 5/6) var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

Page 53: Ws13 2(2010-11)

XML Parser

Οι περισσότεροι φυλλοµετρητές έχουν ενσωµατωµένο XML-parser για την ανάγνωση και το χειρισµό της XML

O parser µετατρέπει την XML σε προσβάσιµο µέσω Javascriptαντικείµενο (XML DOM)

To XML DOM Document Object Model Αντιλαµβάνεται το έγγραφο ως δένδρο

Τρόπος πρόσβασης και χειρισµού εγγράφων XML :Περιέχειµεθόδους για τη διάσχιση ΧΜL δένδρων, για την πρόσθεση ή τηδιαγραφή κόµβων κ.τ.λ.

Ωστόσο, πριν µπορέσουµε να επεξεργαστούµε ένα έγγραφοXML αυτό πρέπει να φορτωθεί σε ένα αντικείµενο XML DOM αυτό το οποίο κάνει ο parser

Page 54: Ws13 2(2010-11)

Φόρτωση XML αρχείου

if (window.XMLHttpRequest)xhttp=new XMLHttpRequest();

else // Internet Explorer 5/6xhttp=new ActiveXObject("Microsoft.XMLHTTP");

xhttp.open("GET","books.xml",false);

xhttp.send("");

xmlDoc=xhttp.responseXML;

∆ηµιουργία αντικειµένου

επικοινωνίας µε εξυπηρετητή

Άνοιγµα του αντικειµένου XMLHTTP και φόρτωση του books.xml

Αποστολή αίτησης XML HTTP στονεξυπηρετητή

Η απάντηση ως αντικείµενο XML DOM

Page 55: Ws13 2(2010-11)

XML DOM-Παράδειγµα Αποστολή στοιχείων XML από τον

εξυπηρετητή και

απεικόνισή τους στον φυλλοµετρητή

<html>

<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()

else

xhttp=new ActiveXObject("Microsoft.XMLHTTP")

xhttp.open("GET","note.xml",false);

xhttp.send("");

xmlDoc=xhttp.responseXML;

Επικοινωνία µε server –φόρτωση του XML DOM

object

<note>

<to>Nick</to>

<from>John</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

Page 56: Ws13 2(2010-11)

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>

xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;∆ιάσχιση του XML DOMαντικειµένου.Εξαγωγή τιµής του content του πρώτου tag <to> Nick

∆ιάσχιση του HTML DOMαντικειµένου.Απόδοση τιµής στο content του πρώτου tag <to> Nick

document.getElementById("to").innerHTML

Page 57: Ws13 2(2010-11)

Περαιτέρω δυνατότητες

και τεχνολογίες της XML

Page 58: Ws13 2(2010-11)

Περαιτέρω τεχνολογίες

Με βάση τη γλώσσα XML δηµιουργήθηκαν διάφορεςτεχνολογίες οι οποίες µαςεπιτρέπουν τη µορφοποίηση καιεπεξεργασία των εγγράφων XML XPath XSLT XPointer XLink XQuery

Page 59: Ws13 2(2010-11)

XPath

Πλοήγηση στα elements και τα attributes τηςXML

Χρησιµοποιεί εκφράσεις (path expressions) για αυτή την πλοήγηση

Οµοιότητα αυτών των εκφράσεων µε τις

εκφράσεις πλοήγησης στο filesystem ενός

υπολογιστή

Περιέχει βιβλιοθήκες από standard functions

Page 60: Ws13 2(2010-11)

XSLT

EXtensible Stylesheet Language Γλώσσα µορφοποίησης εγγράφων XML ∆υνατότητες

Προσθήκης/αφαίρεσης, αναδιάταξης/ταξινόµησης, απεικόνισης/απόκρυψης elements και attributes στο αρχείο εξόδου (output file)

Page 61: Ws13 2(2010-11)

XLink

XML Linking Language Χρησιµοποιείται για τη δηµιουργία συνδέσµων σταέγγραφα XML

Κάθε element ενός XML εγγράφου µπορεί να γίνεισύνδεσµος

Υποστήριξη Απλών συνδέσµων (παρόµοιοι µε συνδέσµους HTML) Εκτεταµένων συνδέσµων (σύνδεση πολλών πόρων

ταυτόχρονα)

∆υνατότητα ορισµού των συνδέσµων έξω από τααρχεία που θα συνδεθούν

Page 62: Ws13 2(2010-11)

XPointer

XML Pointer Language Με την XLink µπορούµε να δηµιουργήσουµε

συνδέσµους στο έγγραφο XML Το XPointer επιτρέπει στους συνδέσµους να

«δείχνουν» σε συγκεκριµένα τµήµατα ενός

εγγράφου XML Χρησιµοποιεί εκφράσεις XPath για την

πλοήγηση µέσα σε ένα έγγραφο

Page 63: Ws13 2(2010-11)

XQuery

Η XQuery συνιστά για την XML ότι η SQL γιατις βάσεις δεδοµένων

Γλώσσα αναζήτησης σε XML δεδοµένα Μπορεί να χρησιµοποιηθεί:

Για την εξαγωγή πληροφορίας για χρήση σε έναweb service

Για την αναζήτηση σε έγγραφα Ιστού

Για τη δηµιουργία συνοπτικών αναφορών(summary reports) σχετικά µε δεδοµένα τα οποίαβρίσκονται αποθηκευµένα σε µία βάση XML