Κατανεμημένες Εφαρμογές και Ηλεκτρονικό Εμπόριο -> XML -> Τί είναι η XML;
{Main Text}

2 Τί είναι η XML;

Η XML δεν είναι μία σημειακή γλώσσα όπως η HTML, είναι μία γλώσσα που χρησιμοποιείται για την περιγραφή μίας σημειακής γλώσσας. Ο τεχνικός όρος μιας τέτοιας γλώσσας είναι μετα-γλώσσα. Χρησιμοποιώντας την XML ένας προγραμματιστής μπορεί να προσδιορίσει τις σημειακές γλώσσες που περιγράφουν ηλεκτρονικά κυκλώματα, πληροφορίες για ανταλλαγή ηλεκτρονικών δεδομένων, τα αρχεία που παράγονται από τους διακομιστές Web, μηχανικά μέρη αεροσκαφών και ούτω καθεξής. Ένας προγραμματιστής καθορίζει μία συγκεκριμένη γλώσσα χρησιμοποιώντας την XML κι ένα εργαλείο, στην συνέχεια παίρνει τ' αρχεία XML που περιέχουν κείμενα σ΄ αυτήν την γλώσσα και εκτελεί μία επεξεργασία όπως η μετατροπή τους σε αρχεία MS Word ή σε κάποια άλλη μορφή που μπορεί να παρουσιαστεί από προγράμματα γραφικών.

XML και browsers
Τα αρχεία XML μπορούν να υπάρξουν αυτούσια ή να ενσωματωθούν σε HTML και στην συνέχεια να εμφανισθούν στον browser. Ο Internet Explorer 5 επιτρέπει στ΄ αρχεία XML να συμπεριληφθούν σε μια ιστοσελίδα με την χρήση επιθεμάτων XML. Ένα αρχείο XML που είναι ενταγμένο σε μια σελίδα HTML ονομάζεται νησί δεδομένων.

2.1 Η ιστορία της XML

Οι ρίζες της XML μπορούν ν' αναζητηθούν στην εκρηκτική ανάπτυξη του Παγκόσμιου Ιστού στα μέσα της δεκαετίας του 1990 και στους πολέμους των browser που έλαβαν χώρα μεταξύ της Microsoft Corporation και της Netscape Corporation, όπου καθεμιά από αυτές πάλευε για την απόλυτη κυριαρχία.

Καθώς το Web γινόταν όλο και πιο μεγάλο, και όλο και περισσότεροι χρήστες το χρησιμοποιούσαν, άρχισαν ν' ανακαλύπτονται από τους προγραμματιστές, που χρησιμοποιούσαν HTML, διάφορα προβλήματα:

Εξαιτίας αυτών των προβλημάτων η Κοινοπραξία Παγκόσμιου Ιστού, η ομάδα που ελέγχει την διαδικασία τυποποίησης του Ιστού, αποφάσισε το 1996 ν' αναπτύξει μία σημειακή γλώσσα που μελλοντικά θα υποσκέλιζε την HTML. Τα στόχοι αυτής της γλώσσας ήταν:

Το 1998 η γλώσσα, XML, παρουσιάστηκε παγκόσμια ως μία τελευταία υπόδειξη της Κοινοπραξίας Παγκόσμιου Ιστού. Σαν αποτέλεσμα, έγινε μία σταθερά για το Internet. Βασιζόταν στην γλώσσα επεξεργασίας κειμένων SGML, η οποία αποτέλεσε την έμπνευση για την HTML. Ο ρόλος της XML συνοψίζεται στο Σχήμα 8.1, το οποίο παρουσιάζει την σχέση της με άλλες μορφές αποθήκευσης και παρουσίασης.

Κοινοπραξία Παγκόσμιου Ιστού

XSL
Θα συναντήσετε συχνά το ακρώνυμο XSL στην λογοτεχνία που αφορά την XML. Το XSL προέρχεται από το eXtensible Style Language. Πρόκειται για μία γλώσσα που καθορίζει το πώς παρουσιάζονται τα δεδομένα μέσα σ' ένα βασιζόμενο σε XML αρχείο. Μπορεί, επίσης, να χρησιμοποιηθεί για τον καθορισμό του πώς ένα αρχείο XML μπορεί να μετατραπεί σ' ένα αρχείο εκφραζόμενο σε κάποια άλλη γλώσσα όπως η σε φόρμα ενός επεξεργαστή κειμένου όπως το rtf.

2.2 Ένα παράδειγμα γλώσσας βασιζόμενης σε XML

πριν να κοιτάξουμε την XML σε λεπτομέρεια αξίζει να σκιαγραφήσουμε μερικές από τις έννοιές της και να περιγράψουμε μία εφαρμογή που αφορά την ανάπτυξή της. Πρώτα οι έννοιες.

2.2.1 Έννοιες

Η XML χρησιμοποιείται για τον προσδιορισμό μιας σημειακής γλώσσας. Η σημειακή γλώσσα περιέχει στοιχεία μαρκαρισμένα με επιθέματα. Για παράδειγμα, τα στοιχεία <PRODUCTNAME> και </PRODUCTNAME> μπορεί να περιγράφει το όνομα ενός προϊόντος σ΄ έναν κατάλογο λιανικού εμπορίου. Για παράδειγμα:

<PRODUCTNAME> CoatBlueWool </PRODUCTNAME>

Εδώ έχουμε δύο επιθέματα, το ένα από αυτά ληκτικό </PRODUCTNAME>, με το PRODUCTNAME στοιχείο CoatBlueWool κλεισμένο ανάμεσά τους. Κάθε επίθεμα σχετίζεται μ΄ ένα ληκτικό επίθεμα. Στοιχεία μπορεί να εγκλείονται ανάμεσά τους, για παράδειγμα

<PRODUCT>
<PRODUCTNAME> CoatBlue</PRODUCTNAME>
<PRODUCTPRICE> 34000</PRODUCTPRICE>
..
</PRODUCT>

παρουσιάζει λεπτομέρειες "φιλοξενούμενα" ανάμεσα στα επιθέματα PRODUCT.

Ένα στοιχείο μπορεί να σχετίζεται μ΄ ένα ιδιοχαρακτηριστικό  που καθορίζεται στο εναρκτήριο επίθεμα. Ένα ιδιοχαρακτηριστικό είναι δεδομένα που παρέχουν πληροφορίες που διαφοροποιούν ελαφρώς ένα στοιχείο από ένα άλλο που περιγράφεται με τα ίδια επιθέματα. Για παράδειγμα, ένα στοιχείο που σχετίζεται με το επίθεμα <PRODUCT> μπορεί να έχει ένα ιδιοχαρακτηριστικό που να μας πληροφορεί για το ταχυδρομικό βάρος, ώστε όταν αποσταλεί σ' έναν πελάτη να μπορεί να υπολογιστεί η συνολική τιμή της παραγγελίας (προϊόν + τέλη). Ένα παράδειγμα ιδιοχαρακτηριστικού παρουσιάζεται παρακάτω:

<PRODUCT POSTAGE = "Heavy">

Εδώ το στοιχείο PRODUCT έχει το ιδιοχαρακτηριστικό "Heavy" που υποδεικνύει ότι κατατάσσεται στα βαρέα αντικείμενα και διαφοροποιείται από άλλα προϊόντα που κατατάσσονται σε άλλες ταχυδρομικές κατηγορίες. Τον ιδιοχαρακτηριστικών προηγείται ένα ίσον και εσωκλείονται σε εισαγωγικά.

2.2.2 Μία εφαρμογή

Πριν ν' αναλύσουμε την XML αξίζει να δούμε ένα απλό παράδειγμα της τεχνολογίας στην πράξη. Το 1999-2000 ανέπτυξα ένα λεξικό του Internet για τις Εκδόσεις του Πανεπιστημίου Oxford. Ένα από τα προβλήματα που συνάντησα είναι ότι, νέες ορολογίες δημιουργούνται σχεδόν καθημερινά και μια έντυπη έκδοση του λεξικού θα θεωρούνταν ξεπερασμένη πολύ γρήγορα. Οι Εκδόσεις κι εγώ αποφασίσαμε ότι ο μόνος τρόπος να αποφευχθεί αυτό ήταν η έκδοση ενός έντυπου αρχείου  σε συνδυασμό με μία έκδοση σε HTML, που ο αγοραστής θα μπορούσε να χρησιμοποιήσει στον υπολογιστή του/της. Ένας ιστοχώρος θα παρείχε, σε τακτική βάση, όλα τα νεότερα στοιχεία για την HTML έκδοση του λεξικού.

Ανέπτυξα τις καταχωρήσεις χρησιμοποιώντας μία απλή σημειακή γλώσσα XML. Ένα παράδειγμα μιας από τις καταχωρήσεις του λεξικού παρουσιάζεται παρακάτω. Το επιμελήθηκα λίγο εισάγοντας λευκά διάχωρα για να δείξω την πρόχειρη δομή του. Η καταχώριση του λεξικού πρέπει να περιλαμβάνει την καταχώρηση κειμένου, τους συνδέσμους για άλλες καταχωρήσεις μέσα στο λεξικό και  μία λίστα με εξωτερικές καταχωρήσεις  σε ιστοχώρους που σχετίζονται με την καταχώρηση.

<ENTRY>
<ENTRYNAME>Cookie</ENTRYNAME>
<ENTRYTEXT>

Ένα cookie είναι ένας φάκελος αποθηκευμένος στον υπολογιστή πελάτη, ο οποίος χρησιμοποιεί το 

<INLINK filename = "Browser.htm"> BROWSER</INLINK>.

Αρχικά έχει τοποθετηθεί εκεί από το 

<INLINK filename = "Server.htm">SERVER</INLINK>

και χρησιμοποιείται για την αποθήκευση πληροφοριών που μπορεί να χρειαστούν κατά τη διάρκεια μίας συνεδρίας μ΄ έναν browser ή κατά την διάρκεια πολλών συνεδριών. Μία χρήση των cookies είναι να αναγνωρίζουν τους χρήστες και να προετοιμάζουν ρυθμισμένες ιστοσελίδες γι' αυτούς. Για παράδειγμα, ένα μπορεί να χρησιμοποιηθεί για την αποθήκευση της ταυτότητας κάποιου που χρησιμοποίησε έναν

<INLINK filename = "ECommerce.htm">ECOMMERCE</INLINK>

ιστοχώρο, στον οποίο πωλείται ένα προϊόν, παίρνοντας  τα στοιχεία της πιστωτικής κάρτας και το όνομα του χρήστη.  Αυτό το cookie μπορεί στην συνέχεια να διαβαστεί από τον διακομιστή την επόμενη φορά που ο αγοραστής θα χρησιμοποιήσει τον browser για να προσωποποιήσει έναν χαιρετισμό και για να τον απαλλάξει από την επίπονη διαδικασία της επανάληψης της εισαγωγής των στοιχείων της πιστωτικής κάρτας. Μια άλλη χρήση του cookie είναι σε 

<INLINK filename = "Etailing.htm">ETAILING</INLINK>

ιστοχώρους όπου το cookie διατηρεί τα περιεχόμενα του

<INLINK filename = "Shopping Cart.htm"> SHOPPING CART</INLINK>.

Τα cookies χρησιμοποιούνται επειδή το

<INLINK filename = "HTTP.htm">HTTP</INLINK>

είναι ένα πρωτόκολλο χωρίς καταστάσεις: κάθε μήνυμα που αποστέλλεται από τον browser σε HTTP δεν έχει γνώση των προηγούμενων μηνυμάτων. Το όνομα cookie προέρχεται από τις

<INLINK filename = "UNIX.htm">UNIX</INLINK>

ολότητες που ονομάζονται μαγικά cookies. Πρόκειται για δεδομένα που είναι συνημμένα στον χρήστη ή στο πρόγραμμα και αλλάζουν ανάλογα με τις ενέργειες του χρήστη του προγράμματος. Μερικές φορές τα cookies αναφέρονται ως 

<INLINK filename = "Persistent Cookie.htm">PERSISTENT COOKIE</INLINK>s

γιατί παραμένουν σ' έναν υπολογιστή για μεγάλο χρονικό διάστημα αντί να παραμείνουν μόνο για μια συνεδρία. Δείτε επίσης το 

<INLINK filename = "Applet.htm">APPLET</INLINK>

και

<INLINK filename = "Server API.htm"> SERVER API</INLINK>.

</ENTRYTEXT>

<LIST>
<LISTITEM>
An <EXLINK href = "http://www.cookiecentral.com/">
excellen t magazine </EXLINK> devoted to cookies
</LISTITEM>

<LISTITEM>
A <EXLINK href = "http://www.epic.org/privacy/
Internet/cookies/">good set of links</EXLINK> on cookies.
</LISTITEM>

<LISTITEM>
<EXLINK href = "http://www.webdeveloper.com/hotstuff/ show_cookies.html">A tool</EXLINK> που σας επιτρέπει να ελέγξετε τί cookies σχετίζονται μ΄ έναν ιστοχώρο.

</LISTITEM>

<LISTITEM>
An article which looks at the
<EXLINK href = "http://ignitiondesign.com/journal
/cookies/">pros and cons of cookies </EXLINK>.
</LISTITEM>

</LIST>

</ENTRY>

Αυτό αντιστοιχεί στην παρακάτω καταχώρηση της έντυπης έκδοσης του λεξικού. Οι όροι που αναφέρονται με κεφαλαία είναι καταχωρημένοι στο λεξικό ενώ η λέξη LINKS στο τέλος υποδεικνύει ότι η Web έκδοση του λεξικού έχει ορισμένους εξωτερικούς συνδέσμους που σχετίζονται μ' αυτήν την καταχώρηση.

Το cookie είναι ένα αρχείο αποθηκευμένο στον υπολογιστή πελάτη που χρησιμοποιεί τον BROWSER. Αρχικά τοποθετείται εκεί από τον SERVER και χρησιμοποιείται για την αποθήκευση πληροφοριών που ίσως χρειαστούν σε μια συνεδρία με τον browser ή σε διάφορες συνεδρίες. Μία χρήση των cookies είναι η αναγνώριση των πελατών και η προετοιμασία ρυθμισμένων ιστοσελίδων γι' αυτούς. Για παράδειγμα ένα cookie μπορεί να χρησιμοποιηθεί για την αποθήκευση της ταυτότητας κάποιου που έκανε χρήση ενός ιστοχώρου ECOMMERCE που πουλά ορισμένα προϊόντα παίρνοντας τα στοιχεία της πιστωτικής κάρτας και το όνομα του χρήστη. Αυτό το cookie μπορεί στην συνέχεια να διαβαστεί από τον διακομιστή που θα χρησιμοποιήσει ο αγοραστής την επόμενη φορά ώστε να προσωποποιήσει έναν χαιρετισμό και να τον απαλλάξει από την επίπονη διαδικασία της επανάληψης της εισαγωγής των στοιχείων της πιστωτικής κάρτας. Μια άλλη χρήση των cookie είναι στους ιστοχώρους ETAILING όπου το cookie διατηρεί τα περιεχόμενα του SHOPPING CART. Τα cookies χρησιμοποιούνται επειδή η HTTP είναι ένα πρωτόκολλο χωρίς καταστάσεις: κάθε μήνυμα που αποστέλλεται από τον browser σε HTTP δεν έχει γνώση κανενός από τα προηγούμενα μηνύματα. Το όνομα cookie προέρχεται από την ολότητα ονόματι μαγικό cookie. Πρόκειται για δεδομένα συνημμένα σ' έναν χρήστη ή σ' ένα πρόγραμμα που αλλάζουν ανάλογα με τις ενέργειες του χρήστη του προγράμματος. Μερικές φορές τα cookies αναφέρονται ως PERSISTENT COOKIEs επειδή παραμένουν σ' έναν υπολογιστή για μεγάλο χρονικό διάστημα αντί να παραμείνουν μόνο για μια συνεδρία. Δείτε επίσης το APPLET και το SERVER API. LINKS.

Το πρώτο πράγμα που προσέχει κανείς σ' αυτό το ελάχιστη σημειακή γλώσσα είναι ότι έχει κάποια από τα χαρακτηριστικά της HTML, στο ότι τα επιθέματα εσωκλείονται μέσα σε αγκύλες και ότι κάθε επίθεμα, για παράδειγμα <LIST>, έχει ένα αντίστοιχο ληκτικό επίθεμα. Στην περίπτωση του <LIST> είναι το </LIST>. Μια άλλη ομοιότητα με την HTML είναι το γεγονός ότι κάποια από τα στοιχεία σχετίζονται με ιδιοχαρακτηριστικά, για παράδειγμα το επίθεμα <EXLINK> σχετίζεται μ' ένα ιδιοχαρακτηριστικό που είναι ένα URL. Στην περίπτωση του <EXLINK> το όνομα της τιμής είναι href. Το EXLINK αντιπροσωπεύει έναν εξωτερικό σύνδεσμο στο λεξικό Web, όπου ένας τέτοιος σύνδεσμος δείχνει προς έναν εξωτερικό ιστοχώρο σχετικό με την καταχώρηση.

Οι ομοιότητες τελειώνουν εδώ: μερικά από τα παραπάνω επιθέματα δεν είναι μέρος των επιθεμάτων της HTML. Το στοιχείο που προσδιορίζεται από το επίθεμα <ENTRY> αναφέρεται σε μια καταχώρηση του λεξικού, το στοιχείο που προσδιορίζεται από το επίθεμα <ENTRYNAME> αναφέρεται στο όνομα της καταχώρησης στο λεξικό, το στοιχείο που προσδιορίζεται από το επίθεμα <ENTRYTEXT> αναφέρεται στο κείμενο που περιγράφει το όνομα, το στοιχείο που προσδιορίζεται από το επίθεμα <INLINK> αναφέρεται στον υπερσύνδεσμο ενός άλλου αντικειμένου του λεξικού, με το  απλό ιδιοχαρακτηριστικό filename να διατηρεί το όνομα του αρχείου στο οποίο περιέχεται η καταχώρηση, το στοιχείο που προσδιορίζεται από το επίθεμα <LIST> εισάγει ορισμένα αντικείμενα λίστας που περιλαμβάνουν συνδέσμους για ιστοχώρους, οι οποίοι είναι σχετικοί με την καταχώρηση, και το στοιχείο που προσδιορίζει το επίθεμα <LISTITEM> σκιαγραφεί τ' αντικείμενα μιας τέτοιας λίστας με το ιδιοχαρακτηριστικό href να υποδεικνύει το URL του ιστοχώρου.

Αυτό είναι ένα απλό παράδειγμα αρχείου σε XML. Όταν ετοίμαζα το λεξικό έγραψα μία σειρά προγραμμάτων που είχαν πρόσβαση στο αρχείο που περιελάμβανε τις καταχωρήσεις: ένα πρόγραμμα παρήγαγε ένα αρχείο MS Word στο οποίο το όνομα της καταχώρησης και το κείμενο εμφανίζονταν μαζί με μια διευκρίνιση για το αν υπήρχαν καθόλου εξωτερικοί σύνδεσμοι, σχετικοί με την καταχώρηση. Ένα άλλο πρόγραμμα παρήγαγε έναν ιστοχώρο στον οποίο κάθε καταχώρηση περιέχονταν σ' έναν αρχείο με άγκιστρα που την διασταύρωναν με άλλες καταχωρήσεις και εξωτερικούς ιστοχώρους, σχετικούς με την καταχώρηση, και ένα τρίτο πρόγραμμα έλεγχε αν όλοι οι εσωτερικοί σύνδεσμοι αναφέρονταν σε κομμάτια του λεξικού.

Αξίζει να σημειώσουμε σ' αυτό το σημείο ότι η XML είναι πιο αυστηρή από την HTML, για παράδειγμα τα επιθέματα εξαρτώνται από την περίπτωση και τα ληκτικά επιθέματα είναι υποχρεωτικά.

Παρατηρείστε πώς τα επιθέματα παρέχουν πληροφορίες για ένα αρχείο: οποιοδήποτε πρόγραμμα έχει πρόσβαση σ' ένα αρχείο θα γνωρίζει, για παράδειγμα, ότι το <ENTRYNAME> καθορίζει το όνομα μιας καταχώρησης στο λεξικό αντί του ορισμού της καταχώρησης.

MathML
Ένα από τα μεγαλύτερα προβλήματα που αντιμετώπισαν οι τεχνολόγοι Web ήταν η ανικανότητα του Παγκόσμιου Ιστού να εμφανίζει μαθηματικά και το γεγονός ότι αν και μερικά μαθηματικά επιθέματα είχαν καθοριστεί για την HTML, είχαν εφαρμοστεί μόνο σε πειραματικούς browsers. Η Κοινοπραξία Παγκόσμιου Ιστού χρηματοδότησε ένα πρόγραμμα, το οποίο ανέπτυξε μία μαθηματική σημειακή γλώσσα γνωστή ως MathML. Ήταν η πρώτη εφαρμογή της τεχνολογίας XML. Αρχίζει να υποστηρίζεται σε μαθηματικά πακέτα όπως τα Mathematica και Maple.

Τα προγράμματα ήταν αρκετά εύκολο ν' αναπτυχθούν γιατί χρησιμοποίησα λογισμικό που περιγράφεται παρακάτω στο κεφάλαιο, συγκεκριμένα έναν λεκτικό αναλυτή χωρίς επικύρωση

 

XSL
Σχήμα 8.1
Η σχέση μεταξύ της XML και των μέσων αποθήκευσης
SGML
XML πόροι
Οι πόλεμοι των browser

Στο βιβλίο αυτό θα χρησιμοποιήσω τον όρο "αρχείο XML" για να αναφερθώ σε αρχεία όπως αυτά που παρουσιάζονται εδώ