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

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

Jan 01, 2016

Download

Documents

dominick-hickey

Εισαγωγή στην XML. Μάρτιος 200 5 Γ. Σ. Σακελλάρης Τ. Α. Κοντογιώργης Ιατρική Πληροφορική Διδάσκων: Δ.Ι. Φωτιάδης. eXtensible Markup Language (XML). H XML είναι μια από τις τεχνολογίες που αναπτύχθηκαν με την εξέλιξη του Internet (infrastructure) - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Εισαγωγή στην  XML

1

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

Μάρτιος 2005

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

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

Page 2: Εισαγωγή στην  XML

2

eXtensible Markup Language (XML)

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

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

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

Page 3: Εισαγωγή στην  XML

3

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

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

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

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

Page 4: Εισαγωγή στην  XML

4

Γιατί XML ???

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

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

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

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

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

Page 5: Εισαγωγή στην  XML

5

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

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

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

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

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

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

Page 6: Εισαγωγή στην  XML

6

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

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

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

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

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

Page 7: Εισαγωγή στην  XML

7

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

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

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

εφαρμογών

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

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

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

Page 8: Εισαγωγή στην  XML

8

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

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

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

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

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

Tι είναι η XML?

Page 9: Εισαγωγή στην  XML

9

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

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

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

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

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

Page 10: Εισαγωγή στην  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

Page 11: Εισαγωγή στην  XML

11

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

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

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

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

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

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

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

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

Page 12: Εισαγωγή στην  XML

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

Page 13: Εισαγωγή στην  XML

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

Page 14: Εισαγωγή στην  XML

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

Page 15: Εισαγωγή στην  XML

15

XML dataparser

parserinterface

XML-basedapplication

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

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

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

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

XML Parser

Page 16: Εισαγωγή στην  XML

16

Document Type Definition (DTD)

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

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

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

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

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

Page 17: Εισαγωγή στην  XML

17

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

XML dataparser

parserinterface

XML-basedapplication

DTD

Page 18: Εισαγωγή στην  XML

18

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

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

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

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

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

Page 19: Εισαγωγή στην  XML

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;

Page 20: Εισαγωγή στην  XML

20

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

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

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

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

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

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

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

Page 21: Εισαγωγή στην  XML

21

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

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

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

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

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

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

Page 22: Εισαγωγή στην  XML

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 σε άλλο αρχείο ώστε να είναι διαθέσιμο από πολλά αρχεία.

Page 23: Εισαγωγή στην  XML

23

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

XML δεδομέναparser

parserinterface

XML-basedεφαρμογή

DTD

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

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

Page 24: Εισαγωγή στην  XML

24

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

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

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

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

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

Page 25: Εισαγωγή στην  XML

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 μοντέλα

Page 26: Εισαγωγή στην  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

Page 27: Εισαγωγή στην  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

Page 28: Εισαγωγή στην  XML

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 μορφή

Page 29: Εισαγωγή στην  XML

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

Page 30: Εισαγωγή στην  XML

30

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

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

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

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

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

Page 31: Εισαγωγή στην  XML

31

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

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

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

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

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

Page 32: Εισαγωγή στην  XML

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 επιτρέπουν να το κάνουμε απλά:

Page 33: Εισαγωγή στην  XML

33

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

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

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

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

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

Page 34: Εισαγωγή στην  XML

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 το κείμενο)

Page 35: Εισαγωγή στην  XML

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

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

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

Page 36: Εισαγωγή στην  XML

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

Page 37: Εισαγωγή στην  XML

37

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

XML δεδομέναparser

parserinterface

εφαρμογή

text

partorders

order

order

desc

part

quantity

delivery-date

Document “object”

DOM

Page 38: Εισαγωγή στην  XML

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

Page 39: Εισαγωγή στην  XML

39

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

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

Page 40: Εισαγωγή στην  XML

40

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

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

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

Page 41: Εισαγωγή στην  XML

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 (δεν υπάρχει

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

Page 42: Εισαγωγή στην  XML

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

Page 43: Εισαγωγή στην  XML

43

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

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

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

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

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

Page 44: Εισαγωγή στην  XML

44

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

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

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

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

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

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

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

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

Page 45: Εισαγωγή στην  XML

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>

Page 46: Εισαγωγή στην  XML

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 και άλλων εμπορικών πακέτων.

Page 47: Εισαγωγή στην  XML

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

Page 48: Εισαγωγή στην  XML

48

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

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

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

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

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

Page 49: Εισαγωγή στην  XML

49

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

Page 50: Εισαγωγή στην  XML

50

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

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

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

Page 51: Εισαγωγή στην  XML

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

Page 52: Εισαγωγή στην  XML

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

…...

Page 53: Εισαγωγή στην  XML

53

Ερωτήσεις

?