ΕΡΓΑΣΤΗΡΙΟ Ηλεκτρονικού Εμπορίου Ε-Επιχειρείν ΕΡΓΑΣΤΗΡΙΟ Ηλεκτρονικού Εμπορίου Ε-Επιχειρείν Java APIs για Web Services: ΧΜL και JSP Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Γράψιμο ενός απλού αρχείου XML <?xml version='1.0' encoding='utf-8'?> Προσδιορίζει το έγγραφο ως έγγραφο XML που προσαρμόζεται στην έκδοση 1.0 της προδιαγραφής XML, και λέει ότι χρησιμοποιεί οκτάμπιτο Unicode <!-- A SAMPLE set of slides --> Προσθήκη ενός σχολίου <slideshow> ...</slideshow> Καθορισμός του στοιχείου ρίζας <slideshow title="Sample Slide Show" date="Date of publication" author="Yours Truly" > Προσθήκη των ιδιοτήτων σε ένα στοιχείο Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Γράψιμο ενός απλού αρχείου XML Στα ονόματα για ετικέττα ή ιδιότητα, μπορούμε να χρησιμοποιούμε τις παύλες (“-”), τις υπογραμμίσεις (“_”), τις άνω και κάτω τελείες (“:”), και τις τελείες (“.”) εκτός από τους χαρακτήρες και τους αριθμούς. Αντίθετα από την HTML, οι τιμές για τις ιδιότητες XML είναι πάντα μέσα σε εισαγωγικά (“ “), και οι πολλαπλές τιμές δεν χωρίζονται ποτέ από κόμματα. Οι άνω και κάτω τελείες πρέπει να χρησιμοποιηθούν με προσοχή ή να αποφευχθούν συνολικά, επειδή χρησιμοποιούνται κατά τον καθορισμό των namespaces. <!-- TITLE SLIDE --> <slide type="all"> <title>Wake up to WonderWidgets! </title> </slide> Επιτρέπονται τα ιεραρχικά δομημένα στοιχεία, δηλαδή ένα στοιχείο μπορεί να περιλάβει άλλα στοιχεία. Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Στοιχεία & Ιδιότητες του slide Διαφορά μεταξύ αυτών που είναι προτιμότερο να ορίζονται ως στοιχεία (title) και αυτών που είναι καταλληλότερα ως ιδιότητες (type). Ο τίτλος είναι κάτι που το ακροατήριο θα δει. Έτσι είναι ένα στοιχείο. Ο τύπος, αφ' ετέρου, είναι κάτι που δεν εμφανίζεται. Έτσι είναι μια ιδιότητα. Άλλος τρόπος διάκρισης: ένα στοιχείο είναι ένας περιέκτης, όπως ένα μπουκάλι. Ο τύπος είναι ένα χαρακτηριστικό του περιέκτη (είναι ψηλό ή στενό). Ο τίτλος είναι ένα χαρακτηριστικό του περιεχομένου (νερό, γάλα, ή τσάι). Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Προσθήκη κειμένου τύπου HTML Αφού η XML αφήνει να καθορίσουμε οποιεσδήποτε ετικέτες θέλουμε, χρειάζεται κάποιες φορές να καθορίσουμε ένα σύνολο ετικετών που μοιάζουν με την HTML (τα πρότυπα XHTML κάνουν ακριβώς αυτό...) Ο ακόλουθος κώδικας καθορίζει ένα slide με μερικά στοιχεία που χρησιμοποιούν μια ετικέτα τύπου HTML, την <em>, για έμφαση (παρουσιάζεται συνήθως ως γραμμένο με πλάγια στοιχεία κείμενο): <!-- OVERVIEW --> <slide type="all"> <title>Overview</title> <item>Why <em>WonderWidgets</em> are great</item> <item>Who <em>buys</em> WonderWidgets</item> </slide> Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Προσθήκη ενός κενού στοιχείου ... <item>Why <em>WonderWidgets</em> are great</item> <item/> <item>Who <em>buys</em> WonderWidgets</item> Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Δρ. Χρήστος Κ. Γεωργιάδης - 2003 Οδηγίες επεξεργασίας ... <!-- PROCESSING INSTRUCTION --> <?my.presentation.Program QUERY="exec, tech, all"?> Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Χειρισμός των ειδικών χαρακτήρων Προκαθορισμένες οντότητες & & < > " " ... <slide type="exec"> <title>Financial Forecast</title> <item>Market Size < predicted</item> <item>Anticipated Penetration</item> <item>Expected Revenues</item> <item>Profit Margin </item> </slide> ‘ ' Market Size < predicted Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Χειρισμός κειμένου με πλήθος ειδικών χαρακτήρων (CDATA section) … <item><![CDATA[Diagram: frobmorten <------------ fuznaten | <3> ^ | <1> | <1> = fozzle V | <2> = framboze staten--------------------+ <3> = frenzle <2> ]]></item> Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Δρ. Χρήστος Κ. Γεωργιάδης - 2003 Βασικοί ορισμοί DTD ? 0 ή 1 * 0 ή πολλά + 1 ή πολλά <!ELEMENT slideshow (slide+)> <!ELEMENT slide (title, item*)> <!ELEMENT title (#PCDATA)> <!ELEMENT item (#PCDATA | item)* > PCDATA: parsed character data – κείμενο CDATA: character data – κείμενο που δεν υπόκειται σε ανάλυση από τον parser |: ή (or) mixed-content model Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Ειδικές τιμές στοιχείων στο DTD Δύο ειδικές τιμές: ANY ή EMPTY. Η ANY προδιαγραφή δείχνει ότι το στοιχείο μπορεί να περιλάβει οποιοδήποτε άλλο καθορισμένο στοιχείο, ή PCDATA. Μια τέτοια προδιαγραφή χρησιμοποιείται συνήθως για το στοιχείο ρίζας ενός γενικής χρήσης εγγράφου XML. Η EMPTY προδιαγραφή δείχνει ότι το στοιχείο δεν περιέχει κανένα περιεχόμενο. Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Δρ. Χρήστος Κ. Γεωργιάδης - 2003 Αναφορά στο XML του DTD Ο καθορισμός τύπου DTD μπορεί να είναι σε ένα ξεχωριστό αρχείο από το έγγραφο XML: <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE slideshow SYSTEM "slideshow1a.dtd"> <slideshow … Όταν δεν υπάρχει ένα πρόθεμα όπως το http:/ ή το file:/, η διαδρομή για το αρχείο DTD είναι σχετική με τη θέση του εγγράφου XML. Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Καθορισμός των ιδιοτήτων στο DTD <!ELEMENT slideshow (slide+)> <!ATTLIST slideshow title CDATA #REQUIRED date CDATA #IMPLIED author CDATA "unknown” > <!ELEMENT slide (title, item*)> Η ετικέτα DTD ATTLIST αρχίζει τη σειρά ορισμών ιδιοτήτων Κάθε ιδιότητα καθορίζεται από μια σειρά τριών χωρισμένων με διάστημα τιμών. Κόμματα και άλλοι διαχωριστές δεν επιτρέπονται. Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Καθορισμός των ιδιοτήτων στο DTD Το πρώτο στοιχείο σε κάθε γραμμή είναι το όνομα της ιδιότητας Το δεύτερο στοιχείο δείχνει τον τύπο των στοιχείων Το τρίτο στοιχείο καθορίζει την προεπιλεγμένη τιμή (αν υπάρχει), και δηλώνει εάν η ιδιότητα απαιτείται ή όχι. #REQUIRED Η τιμή της ιδιότητας πρέπει να προσδιοριστεί #IMPLIED Η τιμή δεν απαιτείται να προσδιοριστεί, και τότε η εφαρμογή θα έχει μια προεπιλογή τιμή “defaultValue” Η προεπιλεγμένη τιμή, αν δεν προσδιορίζεται τιμή στο έγγραφο #FIXED “fixedValue” Η τιμή. Αν το έγγραφο προσδιορίζει τιμή, πρέπει να είναι αυτή η ίδια. Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Δρ. Χρήστος Κ. Γεωργιάδης - 2003 Τύποι Ιδιοτήτων (value1 | value2 | ..) Κατάλογος τιμών που χωρίζονται από κάθετες γραμμές CDATA Unparsed data – κείμενο ID Ένα όνομα, που δεν έχει καμιά άλλη ID ιδιότητα IDREF Μια αναφορά σε ένα ID, αλλού προσδιορισμένο IDREFS Ένας κατάλογος χωρισμένος με διαστήματα, που περιέχει μια ή περισσότερες αναφορές ταυτότητας ENTITY Το όνομα μιας οντότητας που καθορίζεται στο DTD ENTITIES Ένας κατάλογος οντοτήτων NMTOKEN Ένα έγκυρο όνομα XML που αποτελείται από γράμματα, αριθμούς, “-”, “_” και “:” NMTOKENS Ένας κατάλογος ονομάτων XML NOTATION Όνομα μιας DTD-διευκρινισμένης σημείωσης, σε μη-XML μορφή (προς κατάργηση...) Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Καθορισμός των ιδιοτήτων στο DTD – Αναφορά σε Δυαδικές οντότητες ... <!ELEMENT slide (image?, title, item*)> <!ATTLIST slide type (tech | exec | all) #IMPLIED > <!ELEMENT title (#PCDATA)> <!ELEMENT image EMPTY> <!ATTLIST image alt CDATA #IMPLIED src CDATA #REQUIRED type CDATA "image/gif” > Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Καθορισμός των οντοτήτων στο DTD <!DOCTYPE slideshow SYSTEM "slideshow1b.dtd" [ <!ENTITY product "WonderWidget"> <!ENTITY products "WonderWidgets"> ]> <slideshow title="&product; Slide Show" date="Date of publication” ... <slide type="all"> <title>Wake up to &products;!</title> … <title>Overview</title> <item>Why <em>&products;</em> are great</item> Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Πρόσθετες χρήσιμες οντότητες Εδώ είναι διάφορα άλλα χρήσιμα παραδείγματα για τους ορισμούς οντοτήτων: <!ENTITY ldquo ""> <!-- Left Double Quote --> <!ENTITY rdquo ""> <!-- Right Double Quote --> <!ENTITY trade ""> <!-- Trademark Symbol (TM) --> <!ENTITY rtrade "®"> <!-- Registered Trademark (R) --> <!ENTITY copyr "©"> <!-- Copyright Symbol --> Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Αναφορά σε εξωτερικές οντότητες ... <!ENTITY products "WonderWidgets"> <!ENTITY copyright SYSTEM "copyright.xml"> ]> <!-- COPYRIGHT SLIDE --> <slide type="all"> <item>©right;</item> </slide> copyright.xml <!-- A SAMPLE copyright --> This is the standard copyright message that Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Καθορισμός παραμετρικής οντότητας Λόγω ετικέτας <em> όχι επικύρωση Γενικά προτιμούμε να έχουμε πρόσβαση σε ολόκληρη τη ποικιλία των τύπου HTML ετικετών Έτσι, χρήση υπάρχοντος DTD για XHTML Ιδανική λύση: παραμετρική οντότητα: slideshow2.dtd <!-- Defines the %inline; declaration --> <!ENTITY % xhtml SYSTEM "xhtml.dtd"> %xhtml; <!ELEMENT title (%inline;)*> <!ELEMENT item (%inline; | item)* > Αρχείο xhtml.dtd Δρ. Χρήστος Κ. Γεωργιάδης - 2003
Επίλυση σύγκρουσης ονομασίας στο DTD ... <!ELEMENT slide (image?, slide-title?, item*)> <!ELEMENT slide-title (%inline;)*> στο XML <slide-title>Overview</slide-title> Δρ. Χρήστος Κ. Γεωργιάδης - 2003