Εισαγωγή στην xml

53
1 Εισαγωγή στην XML Μάρτιος 2005 Γ. Σ. Σακελλάρης Τ. Α. Κοντογιώργης Ιατρική Πληροφορική Διδάσκων: Δ.Ι. Φωτιάδης

Upload: dominick-hickey

Post on 01-Jan-2016

44 views

Category:

Documents


0 download

DESCRIPTION

Εισαγωγή στην XML. Μάρτιος 200 5 Γ. Σ. Σακελλάρης Τ. Α. Κοντογιώργης Ιατρική Πληροφορική Διδάσκων: Δ.Ι. Φωτιάδης. eXtensible Markup Language (XML). H XML είναι μια από τις τεχνολογίες που αναπτύχθηκαν με την εξέλιξη του Internet (infrastructure) - PowerPoint PPT Presentation

TRANSCRIPT

1

Εισαγωγή στην XML

Μάρτιος 2005

Γ. Σ. ΣακελλάρηςΤ. Α. Κοντογιώργης

Ιατρική ΠληροφορικήΔιδάσκων: Δ.Ι. Φωτιάδης

2

eXtensible Markup Language (XML)

H XML είναι μια από τις τεχνολογίες που αναπτύχθηκαν με την εξέλιξη του Internet (infrastructure)

Το ακρώνυμο “XML” χρησιμοποιείται για να περιγράψει μια αναπτυσσόμενη οικογένεια από standards και software tools

Η XML αποτελεί πλέον το standard για την αναπαράσταση και αποθήκευση των δεδομένων που κινούνται μέσω του Internet

3

Περιεχόμενα Παρουσίασης Εισαγωγή Τι είναι η XML Κανόνες γλώσσας, βασική επεξεργασία XML Ορίζοντας γραμματικές της γλώσσας

– DTDs, schemas, and namespaces XML επεξεργασία

– Parsers and parser interfaces– XML-based εργαλεία επεξεργασίας

XML messaging Συμπεράσματα

4

Γιατί XML ???

Internet: Αποτελείται από ένα σύνολο εφαρμογών που επικοινωνούν μεταξύ τους

Οι εφαρμογές ανταλλάσσουν δεδομένα με αυθαίρετη δομή και μορφοποίηση τα οποία πρέπει να στη συνέχεια να επεξεργαστούν

Πρόβλημα: Απαιτείται ένα κοινό πρότυπο στην αναπαράσταση των δεδομένων

Πολλές φορές η εφαρμογή ενδιαφέρεται όχι για τα ίδια τα δεδομένα αλλά για τη σημασία τους και που αυτά αναφέρονται (metaknowledge)

Πρόβλημα: Θέλουμε μια μέθοδο να δημιουργούμε μεταδεδομένα

5

Markup Languages Ο όρος Markup αναφέρεται σε ένα σύνολο από

ενδείξεις/παρατηρήσεις που αναφέρονται και περιγράφουν τη δεδομένα ενός κειμένου

Πρόκειται για οδηγούς στο τρόπο με τον οποίο πρέπει να ερμηνευτούν τα περιεχόμενα του κειμένου

Μια συλλογή τέτοιων ενδείξεων, που ακολουθούν καθορισμένο συντακτικό και γραμματική, μπορεί να θεωρηθεί γλώσσα

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

Οι Markup Languages είναι μια μέθοδος για να δημιουργούμε μεταδεδομένα (metadata)

6

Ιστορία των Markup Languages

To 1969 η ΙΒΜ κατασκεύασε την GML, τη πρώτη «σύγχρονη» markup γλώσσα

Από τη GML προήλθε η SGML η οποία το 1986 έγινε ISO standard για αποθήκευση και ανταλλαγή δεδομένων

Το 1991 όταν αναπτύχθηκε η HTML αποτέλεσε μια εφαρμογή της SGML

Η ταχύτατη ανάπτυξη του Web και οι περιορισμένες δυνατότητες της HTML γέννησαν την XML στα τέλη των ’90s.

7

HTML Έχει συγκεκριμένη δομή Περιορισμένο αριθμό από tags κατά συνέπεια

μπορούμε να αναπαραστήσουμε συγκεκριμένη πληροφορία

Υπάρχουν browsers (ΙΕ, Netscape,….) Απλή, εύκολη στην εκμάθηση Περιορισμένες δυνατότητες στην ανάπτυξη

εφαρμογών

Βασική διαφορά με την XML: Ένα XML αρχείο ορίζει αυστηρά που αρχίζει (start tag)

και που τελειώνει (end tag) κάθε κομμάτι του κειμένου,

δίνοντας έτσι ξεχωριστό νόημα στα περιεχόμενα των tags.

8

Εάν μπορείς να το διαβάσεις και να το επεξεργαστείς τότεμπορεί να το κάνει οποιοσδήποτε

Ένα συντακτικό για κωδικοποίηση δεδομένων κειμένου (words, phrases, numbers, ...)

Είναι text-based. H XML γράφεται χρησιμοποιώντας printable χαρακτήρες (όχι binary data)

Επεκτάσιμη (Extensible). Η XML σου επιτρέπει να ορίσεις τα δικά σου elements (essentially data types), με βάση ορισμένους συντακτικούς κανόνες

Κοινό format. Τα δεδομένα που κωδικοποιούνται σε XML μετατρέπονται σε έναν standard τύπο εγγράφου τον οποίο μπορεί να διαβάσει και να επεξεργαστεί οποιαδήποτε εφαρμογή που υποστηρίζει XML τεχνολογία.

Tι είναι η XML?

9

Τι δεν είναι η XML

Δεν είναι γλώσσα προγραμματισμού

Δεν είναι ένα λογισμικό

Δεν είναι περιβάλλον ανάπτυξης λογισμικού

Δεν είναι εργαλείο ανάπτυξης ιστιοσελίδων

10

Ένα απλό παράδειγμα

<?xml version="1.0" encoding="iso-8859-1"?> <partorders xmlns=“http://myco.org/Spec/partorders”> <order ref=“x23-2112-2342” date=“25aug1999-12:34:23h”> <desc> Gold sprockel grommets, with matching hamster </desc> <part number=“23-23221-a12” /> <quantity units=“gross”> 12 </quantity> <deliveryDate date=“27aug1999-12:00h” /> </order> <order ref=“x23-2112-2342” date=“25aug1999-12:34:23h”> . . . Order something else . . . </order></partorders>

XML Declaration (“this is XML”) Binary encoding used in file

11

Goals of XML1. Απλή (όπως η HTML – αλλά όχι τόσο απλή)

– Συγκεκριμένοι συντακτικοί κανόνες, για τον περιορισμό συντακτικών λαθών.

– η σύνταξη ορίζει την δομή (ιεραρχική), και ονοματίζει δομημένα κομμάτια (element names) – είναι αυτο-χαρακτηριζόμενα δεδομένα

2. Επεκτάσιμη (σε αντίθεση με την HTML)– Μπορείς να δημιουργήσεις την δικιά σου γλώσσα από

tags/elements – Η αυστηρότητα του συντακτικού εξασφαλίζει την

εγκυρότητα της επεξεργασίας

3. Σχεδιασμένη για ένα κατανεμημένο περιβάλλον (όπως η HTML)

4. Μπορεί να ‘αναμείξει’ διαφορετικούς τύπους δεδομένων (σε αντίθεση με την HTML)

12

Βασικά συνθετικά του συντακτικού της XML<animal> <name language = “English”> Tiger </name><name language = “Latin”> Panthera tigris </name>

<weight> 500 pounds </weight></animal>

opening tag

closing tag

elements

attributes

values

content

<picture filename = “tiger.jpg”/>

empty element, just an attribute

entity

13

Ιεραρχικό Μοντέλο Δεδομένων – XML δέντρο

text

partorders

order

order

desc

part

quantity

delivery-date

date=

ref=

date=

ref=

xmlns=

<partorders xmlns="...">

<order date="..."

ref="...">

<desc> ..text..

</desc>

<part />

<quantity />

<delivery-date />

</order>

<order ref=".." .../>

</partorders>

text

14

XML Επεξεργασία<?xml version="1.0" encoding="utf-8" ?><transfers> <fundsTransfer date="20010923T12:34:34Z"> <from type="intrabank"> <amount currency="USD"> 1332.32 </amount> <transitID> 3211 </transitID> <accountID> 4321332 </accountID> <acknowledgeReceipt> yes </acknowledgeReceipt> </from> <to account="132212412321" /> </fundsTransfer> <fundsTransfer date="20010923T12:35:12Z"> <from type="internal"> <amount currency="CDN" >1432.12 </amount> <accountID> 543211 </accountID> <acknowledgeReceipt> yes </acknowledgeReceipt> </from> <to account="65123222" /> </fundsTransfer></transfers>

xml-simple.xml

15

XML dataparser

parserinterface

XML-basedapplication

O parser πρέπει να πιστοποιήσει ότι τα XML δεδομένα είναι ορισμένα συντακτικός σωστά.

Όπως λέμε τα δεδομένα να είναι well-formed– Η ελάχιστη απαίτηση για να ‘είναι’ XML

Ένας parser πρέπει να σταματά την επεξεργασία αν τα δεδομένα δεν είναι well-formed (καλός ορισμένα)

– π.χ., σταμάτα την επεξεργασία και “throw an exception” στη XML-based εφαρμογή.

XML Parser

16

Document Type Definition (DTD)

H XML δίνει τη δυνατότητα στο χρήστη να δηλώσει το ρόλο κάθε element στο κείμενο με formal τρόπο μέσω πρόσθετων συντακτικών εντολών

Το σύνολο αυτών των εντολών συνθέτουν έναν DTD

O DTD δεν είναι απαραίτητος Όταν χρησιμοποιείται, ο parser μπορεί αν ελέγξει

την λογική ορθότητα στη δομή του κειμένου σύμφωνα με τον DTD

O DTD επιβάλει επιπλέον κανόνες για την well-formed δομή του κειμένου

17

Μοντέλο Επεξεργασίας ενός XML Parser

XML dataparser

parserinterface

XML-basedapplication

DTD

18

Ο parser επεξεργάζεται το περιεχόμενο του DTD, αναγνωρίζει τις εσωτερικές οντότητες, και ελέγχει αν κάθε οντότητα είναι καλός ορισμένη (well-formed).

Στο περιεχόμενο του DTD ορίζονται σαφής συντακτικοί κανόνες τους οποίους πρέπει να ακολουθεί το XML αρχείο.

O parser τότε αντικαθιστά κάθε εμφάνιση αναφοράς ‘entity reference’ από το αναφερόμενο entity

Το “αλλαγμένο” data object γίνεται διαθέσιμο στην εφαρμογή XML

XML Parsers, DTDs, και Εσωτερικές Οντότητες

19

XML: Εισαγωγή DTD<?xml version="1.0" encoding="utf-8" ?>

<!DOCTYPE transfers [ <!-- Here is an internal entity that encodes a bunch of markup that we'd otherwise use in a document --> <!ENTITY messageHeader "<header> <routeID> info generic to message route </routeID> <encoding>how message is encoded </encoding> </header> " >]><transfers> &messageHeader; <fundsTransfer date="20010923T12:34:34Z"> <from type="intrabank"> . . . Content omitted . . . </transfers>

xml-simple-intEntity.xml

Document Type Declaration (DTD)

Internal Entity δήλωση

Entity αναφορά &name;

20

XML Parsers και Εξωτερικές Οντότητες O parser επεξεργάζεται τα περιεχόμενα του

DTD και αναγνωρίζει τα εξωτερικά entities

Αντικαθιστά κάθε εμφάνιση ενός entity reference από την αναφερόμενη οντότητα, και το επαναλαμβάνει για όλες τις οντότητες

Τι συμβαίνει αν δεν μπορεί να βρει μια οντότητα?

Εξαρτάται από τον τύπο της εφαρμογής ή του parser

– Υπάρχουν δύο τύποι XML parsers– Ένας που πρέπει να ανακτά όλες τις οντότητες,

και ένας που μπορεί να τις αγνοήσει (εάν δεν μπορεί να τις βρει)

21

Οι 2 τύποι XML parsers Validating parser (Επικύρωσης)

– Πρέπει να ανακτήσουν όλες τις οντότητες και να επεξεργαστούν τα περιεχόμενα όλων των DTDs. Τερματίζουν την επεξεργασία και επιστρέφουν επιτυχία ή αποτυχία.

– Οι parsers επίσης ελέγχουν για τη συμβατότητα του XML κειμένου με το DTD ως προς άλλες παραμέτρους, όπως για παράδειγμα συντακτικοί κανόνες

Non-validating parser (Μη επικύρωσης parser)

– Ο parser πιστοποιεί απλά ότι τα δεδομένα είναι well-formed XML

H συμπεριφορά της εφαρμογής εξαρτάται από τον τύπο του parser

22

XML Επεξεργασία: Εξωτερικά Entities

<?xml version="1.0" encoding="utf-8" ?>

<!DOCTYPE transfers [ . . . <!ENTITY messageHeader SYSTEM "http://www.somewhere.org/dir/head.xml" >

]><transfers> &messageHeader; <fundsTransfer date="20010923T12:34:34Z"> <from type="intrabank"> . . . Content omitted . . . </transfers> xml-simple-extEntity.xml

ορισμόςExternal Entity

Location δοθείσα από ένα URL

Ιδέα: βάλε το entity σε άλλο αρχείο ώστε να είναι διαθέσιμο από πολλά αρχεία.

23

Μοντέλο λειτουργίας XML Parser

XML δεδομέναparser

parserinterface

XML-basedεφαρμογή

DTD

Η συμπεριφορά εξαρτάταιαπό την φύση του parser

Πολλοί parsers μπορούν να λειτουργήσουν είτε μεvalidating είτε με non-validating τρόπο

24

Περιεχόμενα Τι είναι η XML

– Κανόνες τις γλώσσας, βασικές έννοιες Ορίζοντας διαλέκτους

– DTDs, schemas, and namespaces XML επεξεργασία

– Parsers και parser interfaces– XML-based εργαλεία επεξεργασίας

XML messaging Συμπεράσματα

25

Πως ορίζουμε γραμματική μιας γλώσσας Δύο τρόποι:

– XML Document Type Declaration (DTD) – μέρος του XML specification.

– XML Schema – XML specification, επιτρέπει περισσότερο ‘δυνατούς’ ορισμούς (τύπους δεδομένων,....)

Δύο κατηγορίες XML δεδομένων:– Well-formed Όταν ένα ΧΜL document είναι

συντακτικά σωστό– Valid(Έγκυρο) Ένα ΧΜL document το οποίο είναι και

well- formed και συνεπές με ένα συγκεκριμένο DTD (or Schema)

Τι ορίζουν τα DTDs και τα schema:– Ορίζουν elements και attributes ονόματα, ιεραρχικά

φωλιασμένους κανόνες, περιεχόμενα των elements/περιορισμούς

Τα XML Schemas είναι πιο ισχυρά από τα DTDs. Χρησιμοποιούνται συχνά για type validation ή για συσχέτιση ER σχημάτων με XML μοντέλα

26

DTD (σαν μέρος ενός document)<!DOCTYPE transfers [ <!ELEMENT transfers (fundsTransfer)+ > <!ELEMENT fundsTransfer (from, to) > <!ATTLIST fundsTransfer date CDATA #REQUIRED> <!ELEMENT from (amount, transitID?, accountID, acknowledgeReceipt ) > <!ATTLIST from type (intrabank|internal|other) #REQUIRED> <!ELEMENT amount (#PCDATA) > . . . Omitted DTD content . . . <!ELEMENT to EMPTY > <!ATTLIST to account CDATA #REQUIRED>]><transfers> <fundsTransfer date="20010923T12:34:34Z"> . . . As with previous example . . .

xml-simple-valid.xml

27

“Εξωτερικό” DTD

<!DOCTYPE transfers SYSTEM "http://www.foo.org/hereitis/simple.dtd” >

<transfers> <fundsTransfer date="20010923T12:34:34Z"> . . . As with previous example . . . . . .</transfers>

Αναφορά χρησιμοποιώντας μεταλλαγή του DOCTYPE:

Το DTD αρχείο πρέπει να είναι διαθέσιμο.

simple.dtd

28

XML Schemas Ένας ορισμός για τον καθορισμό κανόνων σε XML

κείμενα (γραμματική)Specs: http://www.w3.org/XML/SchemaBest-practice: http://www.xfront.com/BestPracticesHomepage.html

Χρησιμοποιεί XML (όχι ειδική DTD σύνταξη) για τον ορισμό των κανόνων.

Τα Schemas είναι πιο ‘δυνατα’ από τα DTDs – μπορούν να ορίσουν τύπους δεδομένων όπως ακέραιοι, ημερομηνίες, πραγματικοί αριθμοί, etc.

Χρησιμοποιούνται συχνά για επικύρωση τύπων και ή για συσχέτιση ER σχημάτων με XΜL μοντέλα

Το επόμενο slide δείχνει τα DTD σε Schema μορφή

29

XML Schema έκδοση του DTD (μέρος)<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="accountID" type="xs:string"/> <xs:element name="acknowledgeReceipt" type="xs:string"/> <xs:complexType name="amountType"> <xs:simpleContent> <xs:restriction base="xs:string"> <xs:attribute name="currency" use="required"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="USD"/> . . . (some stuff omitted) . . . </xs:restriction> </xs:simpleType> </xs:attribute> </xs:restriction> </xs:simpleContent> </xs:complexType> <xs:complexType name="fromType"> <xs:sequence> <xs:element name="amount" type="amountType"/> <xs:element ref="transitID" minOccurs="0"/> <xs:element ref="accountID"/> <xs:element ref="acknowledgeReceipt"/> </xs:sequence> . . .

simple.xsd

30

XML Namespaces(1/2) Tα ονόματα των elements ενός αρχείου

χαρακτηρίζονται από μια ετικέτα (super label) Το label αυτό ονομάζεται namespace και αποτελεί

το όνομα της συλλογής των ονομάτων του αρχείου Το όνομα ενός namespace παίρνει τη μορφή ενός

URL, το δεν έχει link πουθενά! Χρησιμοποιείται αυτή η αναπαράσταση γιατί είναι μοναδική

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

31

XML Namespaces(2/2) Μηχανισμός για αναγνώριση διαφορετικών

‘χώρων’ για XML ονόματα

–Τα οποία είναι, ονόματα element ή attribute

Είναι ένας τρόπος για να ορίσουμε διαφορετικές διαλέκτους γλώσσας, αποτελούμενο από ονόματα που έχουν συγκεκριμένη σημασιολογία και νόημα.

Χρησιμοποιούμε ένα ειδικό xmlns attribute για να ορίσουμε το namespace. Το namespace δίνεται σαν ένα URL string

32

Ανάμειξη γλωσσών και διαλέκτων<?xml version= "1.0" encoding= "utf-8" ?>

<html xmlns="http://www.w3.org/1999/xhtml1" xmlns:mt="http://www.w3.org/1998/mathml” ><head> <title> Title of XHTML Document </title></head><body><div class="myDiv"> <h1> Heading of Page </h1> <mt:mathml> <mt:title> ... MathML markup . . . </mt:mathml> <p> more html stuff goes here </p></div> </body></html>

mt: υποδεικνύει τον ‘χώρο’ mathml (κάποια γλώσσα)

Default ‘space’is xhtml

Τα namespaces επιτρέπουν να το κάνουμε απλά:

33

Περιεχόμενα Τι είναι η XML

– Κανόνες τις γλώσσας, βασικές έννοιες Ορίζοντας διαλέκτους

– DTDs, schemas, and namespaces XML επεξεργασία

– Parsers και parser interfaces– XML-based εργαλεία επεξεργασίας

XML messaging Συμπεράσματα

34

XML Software XML parser – Διαβάζουν ένα XML αρχείο, ψάχνουν για

συντακτικούς (και πιθανόν DTD/Schema) περιορισμούς, και κάνουν τα δεδομένα διαθέσιμα σε μια εφαρμογή. Υπάρχουν 3 βασικά parser APIs

– SAX Simple API to XML (event-based)– DOM Document Object Model (object/tree based)– JDOM Java Document Object Model (object/tree

based)

XML parsers και software διαθέσιμα για όλα σχεδόν τα λειτουργικά (Unix, Windows, OS/390 or Z/OS, etc.)

SAX-based parsers είναι γρήγοροι (τόσο γρήγορο όσο το streaming των δεδομένων)

DOM πιο αργό, απαιτήσεις σε μνήμη (δημιουργεί in-memory το κείμενο)

35

XML Επεξεργασία: SAXA) SAX: Simple API for XML

– http://www.megginson.com/SAX/index.html– Είναι event-based – Ο Parser αναφέρει events κάθε φορά που ‘βλέπει’ ένα

tag/attribute/text node/unresolved external entity/other– Ο προγραμματιστής βάζει “event handlers” για να δεσμεύσει

αυτό το event report

Πλεονεκτήματα– Εύκολο στην χρήση– Πολύ γρήγορο (μικρό χρόνος επεξεργασίας πριν το parsing)– Χαμηλές απαιτήσεις μνήμης (δεν φορτώνεται ολόκληρο το

έγγραφο στην μνήμη)– Μπορεί να φορτώσει μέχρι και αρχεία μεγέθους gigabyte

Μειονεκτήματα– Πρέπει να κάνεις πολλά μόνος σου– Δεν είναι πολύ χρήσιμο αν χρειάζεται να μεταβάλεις

δυναμικά το κείμενο, οπότε χρειάζεται να είναι φορτωμένο όλο στην μνήμη

36

XML Επεξεργασία: DOMB) DOM: Document Object Model

– http://www.w3.org/DOM/– O Parser δημιουργεί ένα in-memory δέντρο σύμφωνα με το

κείμενο– Το DOM interface ορίζει μεθόδους για πρόσβαση και τροποποίηση

του δέντρου

Πλεονεκτήματα– Χρήσιμο για δυναμική τροποποίηση και πρόσβαση του ‘δέντρου’

(κειμένου)– Χρήσιμο σε ερωτήσεις (i.e. looking for data) τα οποία εξαρτώνται

από την δομή του κειμένου [π.χ. element.childNode("2").getAttributeValue("boobie")]

– Κοινό interface για πολλές γλώσσες προγραμματισμού (C++, Java, ...)

Μειονεκτήματα– Μπορεί να γίνει αργό (χρειάζεται να παράγει το δέντρο), και

μπορεί να χρειάζεται πολύ μνήμη– Το DOM interface στο προγραμματισμό είναι δύσχρηστο, δεν είναι

‘πολύ’ object oriented

37

DOM Parser Μοντέλο Επεξεργασίας

XML δεδομέναparser

parserinterface

εφαρμογή

text

partorders

order

order

desc

part

quantity

delivery-date

Document “object”

DOM

38

Μερικοί XML Parsers (OS/390’s) Xerces (C++; Apache Open Source)

http://xml.apache.org/xerces-c/index.html XML toolkit (Java and C+++; Commercial license)

http://www-1.ibm.com/servers/eserver/zseries/software/xml/I believe the Java version uses XML4j, IBM’s Java Parser.

The latest version is always found at: http://www.alphaworks.ibm.com

XML for C++ (IBM; based on Xerces; Commercial license)

http://www.alphaworks.ibm.com/tech/xml4c XMLBooster (parsers for COBOL, C++ …; Commercial

license; don’t know much about it; OS/390? [dunno])http://www.xmlbooster.com/Has free trial download,: can see if it is any good ;-)

XML4Cobol (don’t know much about it, any COBOL85 is fine)

http://www.xml4cobol.com

www.xmlsoftware.com/parsers/ -- Good generic list of parsers

39

Μερικά benchmarks για parsers:

http://www-106.ibm.com/developerworks/xml/library/x-injava/index.html

40

Γενικά– SAX γρηγορότερος xDOM πιο αργός– SAX λιγότερη μνήμη xDOM περισσότερη

μνήμη– SAX stream επεξεργασία xDOM επεξεργασία

αντικειμένου

41

XML Επεξεργασία: XSLTD) XSLT eXtensible Stylesheet Language --

Transformations– http://www.w3.org/TR/xslt– Μια XM Lγλώσσα για επεξεργασία XML κειμένου– Κάνει μετασχηματισμούς δέντρων – είσοδος: XML και XSLT

style sheet, και παράγει ένα νέο XML document με διαφορετική δομή

– Η επεξεργασία γίνεται με βάση προκαθορισμένους κανόνες (patterns => actions)

Πλεονεκτήματα– Χρήσιμο για μετασχηματισμούς δέντρων – ευκολότερο από

το DOM ή SAX– Μπορεί να χρησιμοποιηθεί για ερώτηση/εύρεση στο κείμενο

(το XSLT ‘βγάζει’ το κομμάτι που θέλουμε)

Μειονεκτήματα– Μπορεί να είναι αργό για μεγάλα documents ή stylesheets– Είναι δύσκολο να κάνεις debug σε stylesheets (δεν υπάρχει

αναγνώριση λαθών)

42

XSLT μοντέλο επεξεργασίας D) XSLT μοντέλο επεξεργασίας

XSLT style sheet in

XMLparser

XSLT processor

document “objects” fordata and style sheet

XMLparser

XML data in

text

partorders

order

order

desc

part

quantity

delivery-date

partorders

xza

order

foo bee

data out (XML)

schema

schema

43

Περιεχόμενα Τι είναι η XML

– Κανόνες τις γλώσσας, βασικές έννοιες Ορίζοντας διαλέκτους

– DTDs, schemas, and namespaces XML επεξεργασία

– Parsers και parser interfaces– XML-based εργαλεία επεξεργασίας

XML messaging Συμπεράσματα

44

XML Messaging Χρησιμοποιούμε XML σαν format για αποστολή

μηνυμάτων μεταξύ συστημάτων Τα πλεονεκτήματα είναι:

– Κοινό συντακτικό, self-describing– Μπορούν να χρησιμοποιήσουν κοινό/υπάρχον

μηχανισμό για να μεταφερθούν XML δεδομένα (HTTP, HTTPS, SMTP (email), MQ, IIOP/(CORBA), JMS, ….)

Απαιτήσεις– Κοινές πηγές συντακτικών (απαιτείται χρήση

[namespace] ) για αναγνώριση διαλέκτων– Κοινό πρωτόκολλο

Μειονεκτήματα– Ασύγχρονη μεταφορά– Τα μηνύματα θα είναι πολύ πιο μεγάλα από τα binary

δεδομένα (10x ή περισσότερο) [αλλά μπορεί να γίνει συμπίεση]

45

Standard για τη μεταφορά μηνυμάτων XML over HTTP

– Χρησιμοποιείται HTTP πρωτόκολλο για την μεταφορά XML messages

POST /path/to/interface.pl HTTP/1.1Referer: http://www.foo.org/myClient.htmlUser-agent: db-server-olkAccept-encoding: gzipAccept-charset: iso-8859-1, utf-8, ucsContent-type: application/xml; charset=utf-8Content-length: 13221. . .

<?xml version=“1.0” encoding=“utf-8” ?><message>

. . . Markup in message . . .

</message>

46

Standards για message format XML-RPC

http://www.xmlrpc.com– Πολύ απλός τρόπος για κωδικοποίηση

συναρτήσεων/μεθόδων, κλήση και πέρασμα παραμέτρων σε XML message.

SOAP (Simple object access protocol) http://www.soapware.org

– Πιο σύνθετος wrapper, ο οποίος επιτρέπει να ορίσεις schemas για interfaces - πιο πολύπλοκοι κανόνες για handling/proxying των messages, etc.

• Υποστηρίζεται από το Microsoft .NET, και υπάρχει σε νέες εκδόσεις του Websphere και άλλων εμπορικών πακέτων.

47

XML Messaging + Processing

FactorySupplier

Supplier

Supplier

Place orderXML using

SOAP over HTTP

ResponseXML using

SOAP over HTTP

SOAP interface

SOAP

Transport

XML/EDI

HTTP(S)SMTPother ...

Application

SOAP API

• XML as a universal format for data exchange

48

Περιεχόμενα Τι είναι η XML

– Κανόνες τις γλώσσας, βασικές έννοιες Ορίζοντας διαλέκτους

– DTDs, schemas, and namespaces XML επεξεργασία

– Parsers και parser interfaces– XML-based εργαλεία επεξεργασίας

XML messaging Συμπεράσματα

49

Συμπεράσματα Η XML είναι μια σχετικά νέα και ταχύτατα αναπτυσσόμενη τεχνολογία που έχει καθιερωθεί σαν πρότυπο για τη μοντελοποίηση και επεξεργασία των δεδομένων που διακινούνται στο Internet Περιλαμβάνει αρκετά πρότυπα και λογισμικό που επιτρέπουν τη χρήση της σε ευρεία κλίμακα Παίζει πρωταγωνιστικό ρόλο στη σύγχρονη μορφή του διαδικτύου - ενοποιώντας τις web-based εφαρμογές - συμβάλλοντας στη δημιουργία ενός επιπέδου μετά-γνώσης (semantic web)

50

Συμπεράσματα

Τα επιτεύγματα της XML μπορούν να συνοψιστούν στα παρακάτω:

Καθιέρωσε ένα κοινό format στη μοντελοποίηση των web δεδομένων Εισήγαγε στη πράξη την έννοια της αυτοπεριγραφής σε ένα block δεδομένων (meta-data) Τα δεδομένα πλέον δεν είναι κατανοητά μόνο από υπολογιστές αλλά προορίζονται και για χρήστες Καθιέρωσε ένα κοινό πρότυπο στην επεξεργασία και ερμηνεία των δεδομένων από τις εφαρμογές του Internet

51

XML Spy XML editor http://www.xmlspy.com/download.html

XML NotepadMicrosoft XML Notepad http://msdn.microsoft.com/xml/notepad/download.asp

XML ProXML editor http://www.vervet.com/demo.html

IE5.0 or above.

Tutorials on XML/XSL/DTD/XML Schemas www.w3schools.com

XML Editors

52

SAX 1

XML: σύνολο ορισμένων προτύπων

XML 1.0 XML names

Xpath

XSLT

XSL

DOM 1

‘Open’ std

MathML

SMIL 1 & 2

SVG

XHTML 1.0

Modularized XHTML

XHTMLbasic

Xforms

Canonical

XMLsignature

XML base

Xlink

Xpointer

XML query ….

Infoset

XML schema

RDF

Xfragment

XHTMLevents

SOAP UDDI FinXML

dirXMLXML-RPC

100's more ....

SAX 2

DOM 2

DOM 3

CSS 1

CSS 2

CSS 3

JDOM

JAXP

WSDLIFX

FpML ...

ebXML

Biztalk

WDDX XMI...

...

APIs

Style Protocols Web Services Application areas

XML Core

W3C rec

W3C draft

industry std

…...

53

Ερωτήσεις

?