Εισαγωγή στην XML Μάρτιος 2005 Γ. Σ. Σακελλάρης Τ. Α. Κοντογιώργης 4/3/2017 Εισαγωγή στην XML Μάρτιος 2005 Γ. Σ. Σακελλάρης Τ. Α. Κοντογιώργης Ιατρική Πληροφορική Διδάσκων: Δ.Ι. Φωτιάδης
eXtensible Markup Language (XML) H XML είναι μια από τις τεχνολογίες που αναπτύχθηκαν με την εξέλιξη του Internet (infrastructure) Το ακρώνυμο “XML” χρησιμοποιείται για να περιγράψει μια αναπτυσσόμενη οικογένεια από standards και software tools Η XML αποτελεί πλέον το standard για την αναπαράσταση και αποθήκευση των δεδομένων που κινούνται μέσω του Internet
Περιεχόμενα Παρουσίασης Εισαγωγή Τι είναι η XML Κανόνες γλώσσας, βασική επεξεργασία XML Ορίζοντας γραμματικές της γλώσσας DTDs, schemas, and namespaces XML επεξεργασία Parsers and parser interfaces XML-based εργαλεία επεξεργασίας XML messaging Συμπεράσματα
4/3/2017 Γιατί XML ??? Internet: Αποτελείται από ένα σύνολο εφαρμογών που επικοινωνούν μεταξύ τους Οι εφαρμογές ανταλλάσσουν δεδομένα με αυθαίρετη δομή και μορφοποίηση τα οποία πρέπει να στη συνέχεια να επεξεργαστούν Πρόβλημα: Απαιτείται ένα κοινό πρότυπο στην αναπαράσταση των δεδομένων Πολλές φορές η εφαρμογή ενδιαφέρεται όχι για τα ίδια τα δεδομένα αλλά για τη σημασία τους και που αυτά αναφέρονται (metaknowledge) Πρόβλημα: Θέλουμε μια μέθοδο να δημιουργούμε μεταδεδομένα
Markup Languages Ο όρος Markup αναφέρεται σε ένα σύνολο από ενδείξεις/παρατηρήσεις που αναφέρονται και περιγράφουν τη δεδομένα ενός κειμένου Πρόκειται για οδηγούς στο τρόπο με τον οποίο πρέπει να ερμηνευτούν τα περιεχόμενα του κειμένου Μια συλλογή τέτοιων ενδείξεων, που ακολουθούν καθορισμένο συντακτικό και γραμματική, μπορεί να θεωρηθεί γλώσσα Μία Markup γλώσσα προσδίδει πληροφορία για τα περιεχόμενα ενός κειμένου Οι Markup Languages είναι μια μέθοδος για να δημιουργούμε μεταδεδομένα (metadata)
Ιστορία των Markup Languages 4/3/2017 Ιστορία των Markup Languages To 1969 η ΙΒΜ κατασκεύασε την GML, τη πρώτη «σύγχρονη» markup γλώσσα Από τη GML προήλθε η SGML η οποία το 1986 έγινε ISO standard για αποθήκευση και ανταλλαγή δεδομένων Το 1991 όταν αναπτύχθηκε η HTML αποτέλεσε μια εφαρμογή της SGML Η ταχύτατη ανάπτυξη του Web και οι περιορισμένες δυνατότητες της HTML γέννησαν την XML στα τέλη των ’90s.
HTML Έχει συγκεκριμένη δομή Περιορισμένο αριθμό από tags κατά συνέπεια μπορούμε να αναπαραστήσουμε συγκεκριμένη πληροφορία Υπάρχουν browsers (ΙΕ, Netscape,….) Απλή, εύκολη στην εκμάθηση Περιορισμένες δυνατότητες στην ανάπτυξη εφαρμογών Βασική διαφορά με την XML: Ένα XML αρχείο ορίζει αυστηρά που αρχίζει (start tag) και που τελειώνει (end tag) κάθε κομμάτι του κειμένου, δίνοντας έτσι ξεχωριστό νόημα στα περιεχόμενα των tags.
4/3/2017 Tι είναι η XML? Ένα συντακτικό για κωδικοποίηση δεδομένων κειμένου (words, phrases, numbers, ...) Είναι text-based. H XML γράφεται χρησιμοποιώντας printable χαρακτήρες (όχι binary data) Επεκτάσιμη (Extensible). Η XML σου επιτρέπει να ορίσεις τα δικά σου elements (essentially data types), με βάση ορισμένους συντακτικούς κανόνες Κοινό format. Τα δεδομένα που κωδικοποιούνται σε XML μετατρέπονται σε έναν standard τύπο εγγράφου τον οποίο μπορεί να διαβάσει και να επεξεργαστεί οποιαδήποτε εφαρμογή που υποστηρίζει XML τεχνολογία. XML is a markup language -- that is, a way of writing tags that mark the parts of a data file or document, and divide it into component parts (paragraphs, numbers. Etc.). This not much different from binary data formats, except that all the tags in XML are written (as must the data content) using printable characters. For example, <mytag> is an example of an XML tag, while <myTag> some data </myTag> is an example of an XML element (a basic unit in an XML. document). XML is extensible in that you can create any element “name” (e.g., myTag) that you want -- provided you obey the XML syntax rules (I.e., the rules defining how you write and position tags). These syntax rules ensure that all XML processing software will identically handle a given XML document -- which is what makes XML data universal. XML data is also called self-describing data, since the markup defining how the data is organized is part of the document (and not external to it). Εάν μπορείς να το διαβάσεις και να το επεξεργαστείς τότε μπορεί να το κάνει οποιοσδήποτε
Τι δεν είναι η XML Δεν είναι γλώσσα προγραμματισμού 4/3/2017 Τι δεν είναι η XML Δεν είναι γλώσσα προγραμματισμού Δεν είναι ένα λογισμικό Δεν είναι περιβάλλον ανάπτυξης λογισμικού Δεν είναι εργαλείο ανάπτυξης ιστιοσελίδων
Ένα απλό παράδειγμα XML Declaration (“this is XML”) 4/3/2017 Ένα απλό παράδειγμα XML Declaration (“this is XML”) Binary encoding used in file <?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 something else . . . </partorders> Here’s a simple example of an XML document -- in this case a made-up document describing information related to ordering parts (from a factory, for example). Note how the tags are written --surrounded by angle brackets. Tags of the form <Tag> always have a matching end tag of the form </Tag> -- this is one of the syntax rules. Tags that don’t have ends (and don’t have stuff inside them) can be written as <Tag /> -- with a special trailing slash. That’s another syntax rule. The start and end tag, plus the stuff in between, is called an “element” -- and is the basic component part of an XML document. These must be organized hierarchically -- again one of the syntax rules. Elements can be assigned properties, called attributes, by putting the attribute and its value in the start tag, as in <order ref=“xyxxy” >
Goals of XML 1. Απλή (όπως η HTML – αλλά όχι τόσο απλή) 4/3/2017 Goals of XML 1. Απλή (όπως η HTML – αλλά όχι τόσο απλή) Συγκεκριμένοι συντακτικοί κανόνες, για τον περιορισμό συντακτικών λαθών. η σύνταξη ορίζει την δομή (ιεραρχική), και ονοματίζει δομημένα κομμάτια (element names) – είναι αυτο-χαρακτηριζόμενα δεδομένα 2. Επεκτάσιμη (σε αντίθεση με την HTML) Μπορείς να δημιουργήσεις την δικιά σου γλώσσα από tags/elements Η αυστηρότητα του συντακτικού εξασφαλίζει την εγκυρότητα της επεξεργασίας 3. Σχεδιασμένη για ένα κατανεμημένο περιβάλλον (όπως η HTML) 4. Μπορεί να ‘αναμείξει’ διαφορετικούς τύπους δεδομένων (σε αντίθεση με την HTML) XML was built on the experiences of the Web and on the demands people were placing on it. First, XML needed to be simple, since that’s what made HTML so successful. But, it needed to be stricter, so that the errors that kept cropping up in HTML could be properly detected. Second, it needed to be extensible -- people need to be able to create their own tags/elements, so XML needed to support that. It also needed to support mixed vocabularies -- for example, if you have an XML document, and I have and XML document, we should be able to merge them together (and compensate for the fact that we both have tags named <data>, but that mean different things!) And it had to work well on the web, where data is distributed all over the place. Thus the language (and the processing model) can’t count on things all being on someone’s own PC!
Βασικά συνθετικά του συντακτικού της XML entity opening tag attributes <animal> <name language = “English”> Tiger </name> <name language = “Latin”> Panthera tigris </name> <weight> 500 pounds </weight> </animal> values closing tag elements content <picture filename = “tiger.jpg”/> empty element, just an attribute
Ιεραρχικό Μοντέλο Δεδομένων – XML δέντρο <partorders xmlns="..."> <order date="..." ref="..."> <desc> ..text.. </desc> <part /> <quantity /> <delivery-date /> </order> <order ref=".." .../> </partorders> text partorders order desc part quantity delivery-date date= ref= xmlns= text
XML Επεξεργασία xml-simple.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> <to account="65123222" /> </transfers> xml-simple.xml
XML Parser O parser πρέπει να πιστοποιήσει ότι τα XML δεδομένα είναι ορισμένα συντακτικός σωστά. Όπως λέμε τα δεδομένα να είναι well-formed Η ελάχιστη απαίτηση για να ‘είναι’ XML Ένας parser πρέπει να σταματά την επεξεργασία αν τα δεδομένα δεν είναι well-formed (καλός ορισμένα) π.χ., σταμάτα την επεξεργασία και “throw an exception” στη XML-based εφαρμογή. XML data parser interface XML-based application
Document Type Definition (DTD) H XML δίνει τη δυνατότητα στο χρήστη να δηλώσει το ρόλο κάθε element στο κείμενο με formal τρόπο μέσω πρόσθετων συντακτικών εντολών Το σύνολο αυτών των εντολών συνθέτουν έναν DTD O DTD δεν είναι απαραίτητος Όταν χρησιμοποιείται, ο parser μπορεί αν ελέγξει την λογική ορθότητα στη δομή του κειμένου σύμφωνα με τον DTD O DTD επιβάλει επιπλέον κανόνες για την well-formed δομή του κειμένου
Μοντέλο Επεξεργασίας ενός XML Parser interface parser XML data XML-based application DTD
XML Parsers, DTDs, και Εσωτερικές Οντότητες Ο parser επεξεργάζεται το περιεχόμενο του DTD, αναγνωρίζει τις εσωτερικές οντότητες, και ελέγχει αν κάθε οντότητα είναι καλός ορισμένη (well-formed). Στο περιεχόμενο του DTD ορίζονται σαφής συντακτικοί κανόνες τους οποίους πρέπει να ακολουθεί το XML αρχείο. O parser τότε αντικαθιστά κάθε εμφάνιση αναφοράς ‘entity reference’ από το αναφερόμενο entity Το “αλλαγμένο” data object γίνεται διαθέσιμο στην εφαρμογή XML
XML: Εισαγωγή DTD Document Type Declaration (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> Internal Entity δήλωση Entity αναφορά &name; xml-simple-intEntity.xml
XML Parsers και Εξωτερικές Οντότητες O parser επεξεργάζεται τα περιεχόμενα του DTD και αναγνωρίζει τα εξωτερικά entities Αντικαθιστά κάθε εμφάνιση ενός entity reference από την αναφερόμενη οντότητα, και το επαναλαμβάνει για όλες τις οντότητες Τι συμβαίνει αν δεν μπορεί να βρει μια οντότητα? Εξαρτάται από τον τύπο της εφαρμογής ή του parser Υπάρχουν δύο τύποι XML parsers Ένας που πρέπει να ανακτά όλες τις οντότητες, και ένας που μπορεί να τις αγνοήσει (εάν δεν μπορεί να τις βρει)
Οι 2 τύποι XML parsers Validating parser (Επικύρωσης) Πρέπει να ανακτήσουν όλες τις οντότητες και να επεξεργαστούν τα περιεχόμενα όλων των DTDs. Τερματίζουν την επεξεργασία και επιστρέφουν επιτυχία ή αποτυχία. Οι parsers επίσης ελέγχουν για τη συμβατότητα του XML κειμένου με το DTD ως προς άλλες παραμέτρους, όπως για παράδειγμα συντακτικοί κανόνες Non-validating parser (Μη επικύρωσης parser) Ο parser πιστοποιεί απλά ότι τα δεδομένα είναι well-formed XML H συμπεριφορά της εφαρμογής εξαρτάται από τον τύπο του parser
XML Επεξεργασία: Εξωτερικά Entities Ιδέα: βάλε το entity σε άλλο αρχείο ώστε να είναι διαθέσιμο από πολλά αρχεία. ορισμός External Entity <?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> Location δοθείσα από ένα URL xml-simple-extEntity.xml
Μοντέλο λειτουργίας XML Parser interface parser XML δεδομένα XML-based εφαρμογή Η συμπεριφορά εξαρτάται από την φύση του parser DTD Πολλοί parsers μπορούν να λειτουργήσουν είτε με validating είτε με non-validating τρόπο
Περιεχόμενα Τι είναι η XML Ορίζοντας διαλέκτους XML επεξεργασία Κανόνες τις γλώσσας, βασικές έννοιες Ορίζοντας διαλέκτους DTDs, schemas, and namespaces XML επεξεργασία Parsers και parser interfaces XML-based εργαλεία επεξεργασίας XML messaging Συμπεράσματα
Πως ορίζουμε γραμματική μιας γλώσσας Δύο τρόποι: 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 μοντέλα
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
“Εξωτερικό” DTD Αναφορά χρησιμοποιώντας μεταλλαγή του DOCTYPE: <!DOCTYPE transfers SYSTEM "http://www.foo.org/hereitis/simple.dtd” > <transfers> <fundsTransfer date="20010923T12:34:34Z"> . . . As with previous example . . . . . . </transfers> simple.dtd
XML Schemas Ένας ορισμός για τον καθορισμό κανόνων σε XML κείμενα (γραμματική) Specs: http://www.w3.org/XML/Schema Best-practice: http://www.xfront.com/BestPracticesHomepage.html Χρησιμοποιεί XML (όχι ειδική DTD σύνταξη) για τον ορισμό των κανόνων. Τα Schemas είναι πιο ‘δυνατα’ από τα DTDs – μπορούν να ορίσουν τύπους δεδομένων όπως ακέραιοι, ημερομηνίες, πραγματικοί αριθμοί, etc. Χρησιμοποιούνται συχνά για επικύρωση τύπων και ή για συσχέτιση ER σχημάτων με XΜL μοντέλα Το επόμενο slide δείχνει τα DTD σε Schema μορφή
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: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
XML Namespaces(1/2) http://www.domain.com/ns/rivers/1.1 Tα ονόματα των elements ενός αρχείου χαρακτηρίζονται από μια ετικέτα (super label) Το label αυτό ονομάζεται namespace και αποτελεί το όνομα της συλλογής των ονομάτων του αρχείου Το όνομα ενός namespace παίρνει τη μορφή ενός URL, το δεν έχει link πουθενά! Χρησιμοποιείται αυτή η αναπαράσταση γιατί είναι μοναδική http://www.domain.com/ns/rivers/1.1
XML Namespaces(2/2) Τα οποία είναι, ονόματα element ή attribute Είναι ένας τρόπος για να ορίσουμε διαφορετικές διαλέκτους γλώσσας, αποτελούμενο από ονόματα που έχουν συγκεκριμένη σημασιολογία και νόημα. Χρησιμοποιούμε ένα ειδικό xmlns attribute για να ορίσουμε το namespace. Το namespace δίνεται σαν ένα URL string
Ανάμειξη γλωσσών και διαλέκτων 4/3/2017 Ανάμειξη γλωσσών και διαλέκτων Τα namespaces επιτρέπουν να το κάνουμε απλά: <?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> Default ‘space’ is xhtml So how do you mix different types? There’s a special mechanism called XML namespaces that lets you do this. Basically you define (using an xmlns attribute) a special prefix for each language (or a default “empty” prefix for the default language for a document -- for example, in the above, the ‘default’ tags have no prefix and come from the ‘http://www.w3.org/1999/xhtml1’ namespace). Then you just plop the prefix in front of the element or attribute names from the language you want to refer to. And bingo -- you can mix and match 2 or more languages any way you want. mt: υποδεικνύει τον ‘χώρο’ mathml (κάποια γλώσσα)
Περιεχόμενα Τι είναι η XML XML επεξεργασία XML messaging Συμπεράσματα Κανόνες τις γλώσσας, βασικές έννοιες Ορίζοντας διαλέκτους DTDs, schemas, and namespaces XML επεξεργασία Parsers και parser interfaces XML-based εργαλεία επεξεργασίας XML messaging Συμπεράσματα
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 το κείμενο)
XML Επεξεργασία: SAX A) 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 Μειονεκτήματα Πρέπει να κάνεις πολλά μόνος σου Δεν είναι πολύ χρήσιμο αν χρειάζεται να μεταβάλεις δυναμικά το κείμενο, οπότε χρειάζεται να είναι φορτωμένο όλο στην μνήμη
XML Επεξεργασία: DOM B) 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
DOM Parser Μοντέλο Επεξεργασίας 4/3/2017 DOM Parser Μοντέλο Επεξεργασίας text partorders order desc part quantity delivery-date Document “object” DOM XML δεδομένα parser interface εφαρμογή
Μερικοί 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
Μερικά benchmarks για parsers: http://www-106.ibm.com/developerworks/xml/library/x-injava/index.html
Γενικά SAX γρηγορότερος xDOM πιο αργός SAX stream επεξεργασία xDOM επεξεργασία αντικειμένου
XML Επεξεργασία: XSLT D) 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 (δεν υπάρχει αναγνώριση λαθών)
XSLT μοντέλο επεξεργασίας D) XSLT μοντέλο επεξεργασίας schema XSLT processor XSLT style sheet in XML parser XML data in data out (XML) XML parser schema document “objects” for data and style sheet text partorders order desc part quantity delivery-date xza foo bee
Περιεχόμενα Τι είναι η XML XML επεξεργασία XML messaging Συμπεράσματα Κανόνες τις γλώσσας, βασικές έννοιες Ορίζοντας διαλέκτους DTDs, schemas, and namespaces XML επεξεργασία Parsers και parser interfaces XML-based εργαλεία επεξεργασίας XML messaging Συμπεράσματα
XML Messaging Χρησιμοποιούμε XML σαν format για αποστολή μηνυμάτων μεταξύ συστημάτων Τα πλεονεκτήματα είναι: Κοινό συντακτικό, self-describing Μπορούν να χρησιμοποιήσουν κοινό/υπάρχον μηχανισμό για να μεταφερθούν XML δεδομένα (HTTP, HTTPS, SMTP (email), MQ, IIOP/(CORBA), JMS, ….) Απαιτήσεις Κοινές πηγές συντακτικών (απαιτείται χρήση [namespace] ) για αναγνώριση διαλέκτων Κοινό πρωτόκολλο Μειονεκτήματα Ασύγχρονη μεταφορά Τα μηνύματα θα είναι πολύ πιο μεγάλα από τα binary δεδομένα (10x ή περισσότερο) [αλλά μπορεί να γίνει συμπίεση]
Standard για τη μεταφορά μηνυμάτων XML over HTTP Χρησιμοποιείται HTTP πρωτόκολλο για την μεταφορά XML messages POST /path/to/interface.pl HTTP/1.1 Referer: http://www.foo.org/myClient.html User-agent: db-server-olk Accept-encoding: gzip Accept-charset: iso-8859-1, utf-8, ucs Content-type: application/xml; charset=utf-8 Content-length: 13221 . . . <?xml version=“1.0” encoding=“utf-8” ?> <message> . . . Markup in message . . . </message>
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 και άλλων εμπορικών πακέτων.
XML Messaging + Processing 4/3/2017 XML Messaging + Processing XML as a universal format for data exchange Place order XML using SOAP over HTTP SOAP interface Application Supplier SOAP API Factory SOAP XML/ EDI Supplier Transport HTTP(S) SMTP other ... Supplier Here’s a simplified example of how these languages work in the a real-world application. A factory sends parts orders (as XML messages) to the suppliers. The suppliers return (in XML) messages that provide an appropriate response. This is really just EDI. The advantages to the business are cost and breadth. Costs are reduced because the software (XML + other) and networking (Internet) cost much less than proprietary EDI systems (proprietary software and networks). Breadth is accomplished because many more suppliers (and companies) can afford to go onto such a network, so the number of participants can grow enormously, leading to economies of scale. And, once you have lots of parties, you can add new business models (portal brokers, B-B brokers, group buying, etc.) Response XML using SOAP over HTTP
Περιεχόμενα Τι είναι η XML Ορίζοντας διαλέκτους Κανόνες τις γλώσσας, βασικές έννοιες Ορίζοντας διαλέκτους DTDs, schemas, and namespaces XML επεξεργασία Parsers και parser interfaces XML-based εργαλεία επεξεργασίας XML messaging Συμπεράσματα
4/3/2017 Συμπεράσματα Η XML είναι μια σχετικά νέα και ταχύτατα αναπτυσσόμενη τεχνολογία που έχει καθιερωθεί σαν πρότυπο για τη μοντελοποίηση και επεξεργασία των δεδομένων που διακινούνται στο Internet Περιλαμβάνει αρκετά πρότυπα και λογισμικό που επιτρέπουν τη χρήση της σε ευρεία κλίμακα Παίζει πρωταγωνιστικό ρόλο στη σύγχρονη μορφή του διαδικτύου - ενοποιώντας τις web-based εφαρμογές - συμβάλλοντας στη δημιουργία ενός επιπέδου μετά-γνώσης (semantic web)
4/3/2017 Συμπεράσματα Τα επιτεύγματα της XML μπορούν να συνοψιστούν στα παρακάτω: Καθιέρωσε ένα κοινό format στη μοντελοποίηση των web δεδομένων Εισήγαγε στη πράξη την έννοια της αυτοπεριγραφής σε ένα block δεδομένων (meta-data) Τα δεδομένα πλέον δεν είναι κατανοητά μόνο από υπολογιστές αλλά προορίζονται και για χρήστες Καθιέρωσε ένα κοινό πρότυπο στην επεξεργασία και ερμηνεία των δεδομένων από τις εφαρμογές του Internet
XML Editors XML Spy XML Notepad XML Pro 4/3/2017 XML Editors XML Spy XML editor http://www.xmlspy.com/download.html XML Notepad Microsoft XML Notepad http://msdn.microsoft.com/xml/notepad/download.asp XML Pro http://www.vervet.com/demo.html IE5.0 or above. Tutorials on XML/XSL/DTD/XML Schemas www.w3schools.com
XML: σύνολο ορισμένων προτύπων W3C rec industry std XML: σύνολο ορισμένων προτύπων W3C draft ‘Open’ std XML Core XML 1.0 XML names Xfragment RDF Canonical Xpath MathML APIs XSLT Xpointer XML base SMIL 1 & 2 JDOM SVG JAXP Xlink Infoset XSL …... DOM 1 XML signature XHTML 1.0 DOM 2 XHTML events XML query …. DOM 3 XML schema Xforms XHTML basic SAX 1 SAX 2 Modularized XHTML SOAP UDDI Biztalk FinXML XML-RPC CSS 1 IFX ebXML dirXML WSDL CSS 2 WDDX XMI FpML 100's more .... CSS 3 ... ... ... Style Protocols Web Services Application areas
4/3/2017 Ερωτήσεις ?