ΚΕΝΤΡΟ ΠΛΗ.ΝΕ.Τ. Ν. ΦΛΩΡΙΝΑΣ

Η Τεχνολογία XML

 

Παράδειγμα 1 - Εισαγωγή στην XML

Για να δημιουργήσουμε ένα XML έγγραφο, μπορούμε να χρησιμοποιήσουμε έναν απλό επεξεργαστή κειμένου σε μορφή ASCII, όπως είναι το Σημειωματάριο (Notepad) των Windows, και να το αποθηκεύσουμε με την επέκταση .xml. Τα αρχικά XML σημαίνουν eXtensible Markup Language, δηλ. Εκτεταμένη Γλώσσα Σήμανσης. Η πρώτη εντολή που πρέπει να γράψουμε για να δημιουργήσουμε ένα XML έγγραφο είναι η εξής :

<?xml version="1.0"?>

Ολα τα XML έγγραφα πρέπει να έχουν τα εξής χαρακτηριστικά :

Το πρώτο μας XML έγγραφο είναι το εξής :

<?xml version="1.0"?>

<GREETING>

        Hallo from Florina

</GREETING>

Περιέχει ένα XML στοιχείο με μια ετικέτα αρχής και μια ετικέτα τέλους και ένα κείμενο σαν περιεχόμενο. Η ιδιότητα version δηλώνει την έκδοση (τυποποίηση) της XML που χρησιμοποιούμε, που εδώ είναι η 1.0.

 

Παράδειγμα 2 - Πιστοποίηση ενός XML Εγγράφου

Για να ελέγξουμε αν ένα XML έγγραφο έχει συντακτικά λάθη, χρησιμοποιούμε έναν XML αναλυτή (parser). Υπάρχουν οι αναλυτές επικύρωσης, οι οποίοι ελέγχουν την σύνταξη των XML εγγράφων και επιβεβαιώνουν ότι τα XML δεδομένα ταιριάζουν με τους κανόνες επικύρωσης των DTD (Document Type Definition) εγγράφων, και οι αναλυτές μη επικύρωσης, οι οποίοι ελέγχουν την σύνταξη των XML εγγράφων αλλά δεν επιβεβαιώνουν τα XML έγγραφα με τα DTD έγγραφα ή τις διατάξεις.

Αν ένα XML έγγραφο είναι σωστά γραμμένο, θα εμφανισθεί στο παράθυρο του φυλλομετρητή, κατά κανόνα του Internet Explorer καθώς ο Netscape Navigator δεν παρέχει ακόμη πλήρη υποστήριξη για την XML. Υπάρχει ο XML αναλυτής (parser) επικύρωσης MSXML, που είναι ενσωματωμένος στον Internet Explorer 5.0, και ο οποίος εμφανίζει το XML έγγραφο, αν αυτό είναι σωστό και δεν έχει συντακτικά λάθη. Για να εμφανίσουμε τα δεδομένα της XML με μια ωραία μορφή, δηλ. χωρίς τις ετικέτες (tags), πρέπει να δημιουργήσουμε έναν XML επεξεργαστή που να περιγράφει αναλυτικά την εμφάνιση των δεδομένων.

Ο Internet Explorer 5.0 αναγνωρίζει την επέκταση .xml και ο ενσωματωμένος αναλυτής MSXML ξέρει πώς να μεταφράσει και να εμφανίσει ένα σωστό XML έγγραφο. Εκτός από τον MSXML αναλυτή, που υπάρχει ενσωματωμένος στον Internet Explorer 5.0, μπορούμε να συνδεθούμε από το Internet με τον δικτυακό τόπο ενός άλλου αναλυτή ή να τον φορτώσουμε σαν πρόγραμμα στον δίσκο μας και σ' ένα πεδίο κειμένου να γράψουμε το όνομα του XML αρχείου που θέλουμε να επικυρώσουμε. Κάνουμε κλικ σ' ένα πλήκτρο εντολής με ετικέτα Validate και ο αναλυτής θα επιστρέψει τα λάθη του XML αρχείου, αν  φυσικά υπάρχουν.

 

Παράδειγμα 3 - Ενας Απλός XML Επεξεργαστής

Για να μπορέσουμε να επεξεργαστούμε τα δεδομένα ενός XML εγγράφου, πρέπει να δημιουργήσουμε έναν XML επεξεργαστή, δηλ. έναν κώδικα που μπορεί να προσπελάσει, να χειριστεί και να εμφανίσει τα XML δεδομένα. Υπάρχουν οι εξής τέσσερις κατηγορίες XML επεξεργαστών :

Τα παραπάνω θα τα δούμε αναλυτικότερα στην πορεία και προς το παρόν θα δούμε πώς μπορούμε να δημιουργήσουμε ένα απλό φύλλο στυλ (CSS) και πώς να το συνδέσουμε μ' ένα XML έγγραφο. Τα διαδοχικά φύλλα στυλ (CSS) είναι ο πιο απλός και με περιορισμένες δυνατότητες XML επεξεργαστής που μπορούμε να δημιουργήσουμε.

Σ' έναν επεξεργαστή κειμένου όπως το Notepad, γράφουμε το παρακάτω κείμενο και το αποθηκεύουμε με όνομα style.css :

GREETING

{

        display: block;

        color: blue

}

Το παραπάνω στυλ θα εφαρμοσθεί σ' ένα XML στοιχείο που ονομάζεται GREETING. Δημιουργούμε κι ένα XML έγγραφο που θέλουμε να εμφανίσουμε χρησιμοποιώντας κανόνες φύλλων στυλ, ως εξής :

<?xml version="1.0"?>

<?xml-stylesheet type="text/css" href="style.css"?>

<GREETING>

        Hallo from Florina

</GREETING>

Προσθέσαμε μια εντολή φύλλου στυλ στο XML έγγραφο, όπου καθορίζουμε το αρχείο φύλλου στυλ που θέλουμε να χρησιμοποιήσουμε για να εφαρμοσθεί στα XML δεδομένα. Αν ανοίξουμε τώρα το XML έγγραφο με τον Internet Explorer, θα δούμε τα XML δεδομένα χωρίς τις ετικέτες (tags) και με το χρώμα κειμένου και τα άλλα χαρακτηριστικά που έχουμε καθορίσει στο αρχείο φύλλου στυλ.

 

Παράδειγμα 4 - Η XML Δήλωση

Υπάρχει ένα ειδικό είδος εντολής επεξεργασίας που ονομάζεται XML δήλωση και πρέπει να αποτελεί την πρώτη γραμμή σ' ένα XML έγγραφο. Η σύνταξή της είναι ως εξής :

<?xml version="versionNumber"

[encoding="encodingValue"]

[standalone="yes | no"]?>

Το versionNumber είναι ο αριθμός της XML προδιαγραφής που πρέπει να ακολουθεί το XML έγγραφο που θα δημιουργήσουμε, το encodingValue είναι μια προαιρετική τιμή που δηλώνει το σύνολο χαρακτήρων Unicode του κειμένου του XML εγγράφου, με προεπιλογή την UTF-8 (αμερικανικά αγγλικά) και η προαιρετική ιδιότητα standalone παίρνει μόνο μία από τις τιμές yes ή no, ανάλογα με το αν το XML έγγραφο δεν εξαρτάται από άλλα XML έγγραφα για να είναι έγκυρο ή όχι, αντίστοιχα. Η εξ ορισμού τιμή είναι yes, δηλ. το XML έγγραφο δεν εξαρτάται από άλλα XML έγγραφα.

 

Παράδειγμα 5 - Το Στοιχείο Ρίζα (Root Element)

Κάθε έγκυρο XML έγγραφο πρέπει να έχει ένα και μόνο ένα στοιχείο ρίζα (root element), το οποίο περιέχει (περικλείει) όλα τα άλλα στοιχεία του εγγράφου. Το στοιχείο ρίζα βρίσκεται στην κορυφή της ιεραρχίας των δεδομένων ενός XML εγγράφου και λογικά και συντακτικά.

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

<?xml version="1.0"?>

<Florina>

    <!- - Δηλώσεις άλλων στοιχείων - ->

</Florina>

 

Παράδειγμα 6 - Τα Σχόλια (Comments) στην XML

Είδαμε στο προηγούμενο παράδειγμα πώς μπορούμε να γράψουμε σχόλια (comments) σ' ένα XML έγγραφο. Η XML θεωρεί σαν σχόλιο ο,τιδήποτε υπάρχει ανάμεσα στα σύμβολα <!- - και - ->. Πρέπει να έχουμε υπόψη μας ότι τα σχόλια πρέπει να γράφονται μετά από την XML δήλωση, δεν μπορούν να τοποθετηθούν μέσα σε XML κωδικούς και δεν μπορούν να είναι ένθετα.

 

Παράδειγμα 7 - Δηλώσεις Αλλων Στοιχείων Δεδομένων

Για να περιγράψουμε την δομή των στοιχείων δεδομένων στην XML, πρέπει να τοποθετήσουμε ένθετα στοιχεία μέσα σ' άλλα στοιχεία. Ολα τα στοιχεία δεδομένων πρέπει να περιέχονται μέσα στο στοιχείο ρίζας του εγγράφου. Η σύνταξη για την δήλωση στοιχείων δεδομένων που δεν είναι ρίζα είναι η εξής :

    <element1 [attribute]>

        [<element2 [attribute]>

        </element2>]

    </element1>

Το element1 είναι το στοιχείο δεδομένων που περιέχει ένα ή περισσότερα άλλα στοιχεία δεδομένων και το προαιρετικό element2 είναι ένα στοιχείο δεδομένων που περιέχεται μέσα σ' ένα άλλο στοιχείο δεδομένων. Το attribute (ιδιότητα) είναι προαιρετικό και είναι ένα σύνολο από ζευγάρια ονομάτων και τιμών που καθορίζουν τις συγκεκριμένες ιδιότητες ενός στοιχείου. Δεν πρέπει να υπάρχουν κενά μέσα στο όνομα ενός στοιχείου δεδομένων.

Ακολουθεί ένα παράδειγμα.

<?xml version="1.0"?>

<Nomos_Florinas>

    <Eparxia_Florinas>

            <Prespes> Λίμνη Μικρή Πρέσπα </Prespes>

                     <Small_Prespes> Αγιος Αχίλλειος </Small_Prespes>

            <Prespes> Λίμνη Μεγάλη Πρέσπα </Prespes>

    </Eparxia_Florinas>

    <Eparxia_Amyntaiou>

            <Nymfeo> Αρκτούρος </Nymfeo>

            <Nymfeo> Νίκειος Σχολή </Nymfeo>

    </Eparxia_Amyntaiou>

</Nomos_Florinas>

 

Παράδειγμα 8 - Οι Ιδιότητες (Attributes) των Στοιχείων

Μπορούμε να δηλώσουμε μια ιδιότητα (attribute) στην ετικέτα αρχής ενός στοιχείου για να το κάνουμε να ξεχωρίζει από άλλα στοιχεία δεδομένων με το ίδιο όνομα, με την εξής σύνταξη :

    <elementName

        [attributeName1="attribute1Value"]

        [attributeName2="attribute2Value"]

        ...

        [attributeNameN="attributeNValue"]> elementValue

    </elementName>

Τα ονόματα των ιδιοτήτων πρέπει να ξεκινούν μ' ένα γράμμα ή με τον χαρακτήρα _ και μπορούν να περιέχουν γράμματα, ψηφία και τους χαρακτήρες _, - και τελεία (.). Οι τιμές των ιδιοτήτων πρέπει να περικλείονται σε μονά ή διπλά εισαγωγικά και μπορούν να περιέχουν οποιαδήποτε δεδομένα χαρακτήρων.

Ακολουθεί ένα παράδειγμα.

<?xml version="1.0"?>

<Florinas_Products>

    <product name="sweet" code="100"> Γλυκά κουταλιού

    </product>

</Florinas_Products>

 

Παράδειγμα 9 - Οι Προκαθορισμένες Οντότητες

Για να μπορέσουμε να ορίσουμε δεδομένα σ' ένα XML έγγραφο που να περιέχουν ειδικούς χαρακτήρες, όπως είναι οι <, >, & ', και ", η XML ορίζει προκαθορισμένες οντότητες (predefined entities) για να τους διαφοροποιήσει από τους ίδιους χαρακτήρες που έχουν ειδική σημασία στην XML.

Η XML υποστηρίζει τις εξής πέντε προκαθορισμένες οντότητες :

Ακολουθεί ένα παράδειγμα.

<saler name="James &amp; Johnson"> </saler>

 

Παράδειγμα 10 - Ειδικές Εντολές Επεξεργασίας

Μπορούμε να περάσουμε ειδικές εντολές επεξεργασίας μιας εφαρμογής από ένα XML έγγραφο σ' έναν XML επεξεργαστή, χρησιμοποιώντας μια δομή που ονομάζεται εντολή επεξεργασίας και που έχει την εξής σύνταξη :

<?εφαρμογή παράμετροι?>

Για παράδειγμα, το

<?xml-stylesheet type="text/xsl" href="prog01.xsl"?>

καλεί μια λειτουργική μονάδα που παρέχει υποστήριξη για την XSL.

Οι εντολές επεξεργασίας γράφονται μετά την XML δήλωση.

 

Παράδειγμα 11 - Μη Τυπικό Κείμενο

Είδαμε προηγουμένως πώς μπορούμε να συμπεριλάβουμε σ' ένα XML έγγραφο ειδικούς χαρακτήρες, όπως είναι οι < και >. Αν, όμως, πρέπει να συμπεριλάβουμε έναν μεγάλο αριθμό από ειδικούς χαρακτήρες, είναι προτιμότερο να χρησιμοποιήσουμε την ενότητα CDATA που έχει σχεδιαστεί ειδικά γι' αυτήν την χρήση.

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

Η σύνταξη της ενότητα CDATA είναι η εξής :

<![CDATA[ ... κείμενο ... ]]>

Το κείμενο μπορεί να περιέχει ό,τι χαρακτήρες θέλουμε και δεν ελέγχεται από τον XML αναλυτή.

 

Παράδειγμα 12 - Δήλωση ενός Εσωτερικού (Inline) DTD

Μπορούμε να ορίσουμε ειδικούς τύπους δεδομένων για κάθε στοιχείο ενός XML εγγράφου, χρησιμοποιώντας έναν ορισμό τύπου εγγράφου, που καλείται Document Type Definition (DTD). Τα DTD αναφέρονται και σαν λεξικά (dictionaries), επειδή ορίζουν ένα κοινό σύνολο από δομημένα στοιχεία και ιδιότητες.

Για παράδειγμα, μπορούμε να χρησιμοποιήσουμε ένα DTD για να ορίσουμε ότι ένα XML έγγραφο να μπορεί να περιέχει μόνο δεδομένα χαρακτήρων. Μπορούμε να συμπεριλάβουμε το κείμενο ενός DTD μέσα στο XML έγγραφο (inline DTD), κάτι που είναι χρήσιμο όταν δεν πρόκειται να εφαρμόσουμε αυτό το DTD και σ' άλλα XML έγγραφα, ή μπορούμε να αποθηκεύσουμε το κείμενο ενός DTD σαν ένα εξωτερικό αρχείο (external DTD) και να αναφερθούμε σ' αυτό μέσα από ένα XML έγγραφο.

Για να δημιουργήσουμε ένα εσωτερικό (inline) DTD χρησιμοποιούμε την εξής σύνταξη :

<!DOCTYPE rootElement [

        κανόνεςDTD

]>

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

Στο παρακάτω παράδειγμα χρησιμοποιούμε την λέξη κλειδί #PCDATA για να δηλώσουμε ότι το στοιχείο ρίζα Florina πρέπει να περιέχει μόνο χαρακτήρες.

<?xml version="1.0"?>

<!DOCTYPE Florina [

    <!ELEMENT Florina (#PCDATA)>

]>

<Florina>

    Hallo from Florina!

</Florina>

Ολα τα στοιχεία ενός XML εγγράφου πρέπει να σχετίζονται με μια αντίστοιχη DTD δήλωση. Η δήλωση του παραπάνω στοιχείου στο DTD περιγράφει τον κανόνα επικύρωσης που ισχύει γι' αυτό το στοιχείο. Για να δηλώσουμε τον τύπο ενός XML στοιχείου, μπορούμε να χρησιμοποιήσουμε κάποιο από τα εξής :

 

Παράδειγμα 13 - Δήλωση ενός Εξωτερικού (External) DTD

Αν θέλουμε να εφαρμόσουμε ένα DTD σε πολλά XML έγγραφα, θα πρέπει να το αποθηκεύσουμε σαν ένα ξεχωριστό, εξωτερικό αρχείο και να αναφερόμαστε σ' αυτό μέσα από ένα XML έγγραφο με την δήλωση DOCTYPE σε συνδυασμό με την λέξη κλειδί SYSTEM. Έτσι, πολλά XML έγγραφα μπορούν να αναφέρονται στο ίδιο DTD αρχείο, χωρίς να χρειάζεται να κάνουμε αντιγραφή των ίδιων κανόνων επικύρωσης.

Η σύνταξη για να αναφερθούμε σ' ένα εξωτερικό (external) DTD αρχείο είναι η εξής :

<!DOCTYPE rootElement SYSTEM "αρχείοdtd">

Το rootElement είναι το στοιχείο ρίζα του XML εγγράφου στο οποίο εφαρμόζεται το εξωτερικό DTD αρχείο και το αρχείοdtd είναι το όνομα του εξωτερικού DTD αρχείου. Συμβατικά, όλα τα DTD αρχεία έχουν επέκταση .dtd.

<?xml version="1.0"?>

<!DOCTYPE Florina SYSTEM "file01.dtd">

<Florina>

    Hallo from Florina!

</Florina>

Αν το DTD αρχείο βρίσκεται σ' έναν άλλον φάκελο, πρέπει να χρησιμοποιήσουμε μια δήλωση σαν την εξής :

<!DOCTYPE Florina SYSTEM "/DTDfiles/file01.dtd">

Μπορούμε να προσθέσουμε και σχόλια (comments) σ' ένα DTD αρχείο, ως εξής :

<!- - ... κείμενο σχολίου ... - ->

 

Παράδειγμα 14 - Δήλωση ενός Στοιχείου Container

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

<!ELEMENT στοιχείοContainer (περιεχόμενοΣτοιχείο1, περιεχόμενοΣτοιχείο2 ...)>

Οι δηλώσεις των ιδιοτήτων μπορεί να έχουν τις εξής προκαθορισμένες τιμές :

 

Παράδειγμα 15 - Δήλωση ενός Υποχρεωτικού Στοιχείου

Μπορούμε να δημιουργήσουμε έναν κανόνα επικύρωσης για να βεβαιωθούμε ότι ένα συγκεκριμένο στοιχείο σχετίζεται με μία μόνο τιμή. Ακολουθεί ένα παράδειγμα :

<!ELEMENT product (name, price, stock, quantity)>

Τα περιεχόμενα στοιχεία μπορούν να έχουν τις εξής μορφές :

Ακολουθούν παραδείγματα :

<!ELEMENT customer (order)>

<!ELEMENT customer (order+)>

<!ELEMENT customer (order*)>

 

Παράδειγμα 16 - Δήλωση ενός Προαιρετικού Στοιχείου

Μπορούμε να δηλώσουμε ένα προαιρετικό στοιχείο χρησιμοποιώντας τον χαρακτήρα ? και μπορούμε να δηλώσουμε ένα στοιχείο container που να περιέχει και υποχρεωτικά και προαιρετικά στοιχεία. Ακολουθεί ένα παράδειγμα.

<!ELEMENT customer (order+, name, address*, phone?)>

 

Παράδειγμα 17 - Δήλωση Ιδιοτήτων

Μπορούμε να δηλώσουμε έναν κανόνα επικύρωσης που να ορίζει ότι η ιδιότητα ενός XML στοιχείου μπορεί να περιέχει μόνο χαρακτήρες. Προς τον σκοπό αυτό χρησιμοποιούμε την λέξη κλειδί CDATA και η σύνταξη για να δηλώσουμε μια ιδιότητα (attribute) ενός XML στοιχείου (element) είναι η εξής :

<!ATTLIST όνομα_στοιχείου όνομα_ιδιότητας CDATA (#REQUIRED | #IMPLIED)>

Το όνομα_στοιχείου που υπάρχει μετά από την λέξη κλειδί ATTLIST πρέπει να ταιριάζει με το όνομα ενός στοιχείου που έχει ορισθεί προηγουμένως και έτσι αποτελεί καλή πρακτική να δηλώνουμε την λίστα των ιδιοτήτων ενός στοιχείου αμέσως μετά την δήλωση του στοιχείου.

Το επόμενο παράδειγμα ορίζει μια λίστα ιδιοτήτων για ένα XML στοιχείο με όνομα car, όπου η ιδιότητα color είναι υποχρεωτική, ενώ η ιδιότητα length είναι προαιρετική. Και οι δύο ιδιότητες περιορίζονται σε χαρακτήρες δεδομένων.

<!ATTLIST car color CDATA #REQUIRED length CDATA #IMPLIED>

 

Παράδειγμα 18 - Ορισμός Οντοτήτων

Μπορούμε να χρησιμοποιήσουμε την λέξη κλειδί ENTITY για να περιορίσουμε την τιμή μιας ιδιότητας ενός XML στοιχείου σ' ένα εξωτερικό αρχείο δεδομένων. Την ώρα της εκτέλεσης, οι μόνοι τύποι δεδομένων που επιτρέπονται για ένα στοιχείο που έχει δηλωθεί σαν ENTITY είναι αυτοί που έχουν ορισθεί στο αρχείο DTD με την δήλωση <!ENTITY>. Η σύνταξη για να δηλώσουμε μια οντότητα είναι η εξής :

<!ATTLIST όνομα_στοιχείου όνομα_ιδιότητας ENTITY (#REQUIRED | #IMPLIED)>

Η λέξη κλειδί ENTITY δηλώνει μια εξωτερική πηγή δεδομένων. Ακολουθεί ένα παράδειγμα, όπου σ' ένα DTD αρχείο ορίζουμε μια οντότητα με όνομα PIC1, που είναι ένα αρχείο εικόνας gif, και την ιδιότητα image που σχετίζεται με το αυτοκίνητο σαν οντότητα :

<!ENTITY PIC1 SYSTEM "car01.gif" NDATA GIF>

<!ATTLIST car image ENTITY #IMPLIED>

Μέσα στο XML έγγραφο ορίζουμε το στοιχείο και την ιδιότητά του :

<car image="PIC1">

 

Παράδειγμα 19 - Η Λέξη Κλειδί NMTOKEN

Μπορούμε να χρησιμοποιήσουμε την λέξη κλειδί NMTOKEN για να περιορίσουμε την τιμή της ιδιότητας ενός XML στοιχείου μ' ένα μόνο διακριτικό (token). Για να περιορίσουμε την τιμή σ' ένα σύνολο από ξεχωριστά διακριτικά, μπορούμε να χρησιμοποιήσουμε την λέξη κλειδί NMTOKENS. Η σύνταξη είναι η εξής :

<!ATTLIST όνομα_στοιχείου όνομα_ιδιότητας NMTOKEN (#REQUIRED | #IMPLIED)>

Η λέξη κλειδί NMTOKEN ξεχωρίζει τα πεζά από τα κεφαλαία γράμματα και η τιμή της ιδιότητας στην οποία αναφέρεται πρέπει να είναι μία μόνο λέξη και χωρίς κενά. Ακολουθεί ένα παράδειγμα.

<!ELEMENT car (make, capacity)>

<!ATTLIST car plate_number NMTOKEN #REQUIRED>

 

Παράδειγμα 20 - Τιμές Ιδιοτήτων από Λίστα Επιλογής

Μπορούμε να ορίσουμε έναν κανόνα επικύρωσης για να περιορίσουμε την τιμή μιας ιδιότητας της XML σε μια λίστα που περιέχει έτοιμες επιλογές. Η σύνταξη για να δηλώσουμε μια λίστα επιλογής για μια XML ιδιότητα είναι η εξής :

<!ATTLIST όνομα_στοιχείου όνομα_ιδιότητας (επιλογή1 | επιλογή2 | επιλογή3 ) (#REQUIRED | #IMPLIED)>

Ακολουθεί ένα παράδειγμα.

<!ATTLIST car make (Ford | Skoda | Citroen) #REQUIRED>

 

Παράδειγμα 21 - Η Λέξη Κλειδί ID

Χρησιμοποιούμε την λέξη κλειδί ID για να περιορίσουμε μια ιδιότητα ώστε να δέχεται μοναδικές τιμές σε μια XML εφαρμογή την ώρα εκτέλεσης (μοναδικό αναγνωριστικό ή πρωτεύον κλειδί). Η σύνταξη είναι η εξής :

<!ATTLIST όνομα_στοιχείου όνομα_ιδιότητας ID #REQUIRED>

Ακολουθεί ένα παράδειγμα.

<!ATTLIST car serial_no ID #REQUIRED>

 

Παράδειγμα 22 - Η Λέξη Κλειδί IDREF

Χρησιμοποιούμε την λέξη κλειδί IDREF για να αναφερθούμε σ' έναν κανόνα επικύρωσης και να είμαστε έτσι σίγουροι ότι η τιμή μιας XML ιδιότητας ταιριάζει με την τιμή μιας ιδιότητας που έχει ορισθεί προηγουμένως (αναφορά αναγνωριστικού ή ξένο κλειδί). Η σύνταξη είναι η εξής :

<!ATTLIST όνομα_στοιχείου όνομα_ιδιότητας IDREF (#REQUIRED | #IMPLIED)>

Ακολουθεί ένα παράδειγμα.

<!ATTLIST car serial_no ID #REQUIRED>

<!ATTLIST ford number IDREF #IMPLIED>

Σύμφωνα με τον παραπάνω DTD κώδικα, η ιδιότητα serial_no έχει αποδεκτές μόνο μοναδικές τιμές και η ιδιότητα number πρέπει να έχει μια από τις τιμές που δόθηκαν προηγουμένως στην ιδιότητα serial_no.

 

Παράδειγμα 23 - Δημιουργία Παραμετρικής Οντότητας

Μπορούμε να ορίσουμε ένα ειδικό κείμενο, που αποκαλείται παραμετρική οντότητα (parameter entity), και να αναφερόμαστε σ' αυτό πολλές φορές μέσα από ένα DTD αρχείο. Στην ουσία δημιουργούμε μια συντόμευση για ένα μεγάλο ή περίπλοκο κείμενο που εμφανίζεται πολλές φορές μέσα σ' ένα DTD αρχείο. Πρέπει να δηλώσουμε μια παραμετρική οντότητα πριν την χρησιμοποιήσουμε και είναι σωστό να την δηλώνουμε στην αρχή του DTD αρχείου.

Για να δηλώσουμε μια παραμετρική οντότητα χρησιμοποιούμε την λέξη κλειδί <!ENTITY> και το σύμβολο % μ' ένα κενό πριν και ένα κενό μετά. Για ένα εσωτερικό στοιχείο παραμέτρου, η σύνταξη είναι η εξής :

<!ENTITY % όνομα "κείμενο αντικατάστασης">

Για μια εξωτερική παραμετρική οντότητα, πρέπει να καθορίσουμε το DTD αρχείο στο οποίο βρίσκεται το κείμενο αντικατάστασης, ως εξής :

<!ENTITY % όνομα SYSTEM "αρχείο.dtd">

Ακολουθεί ένα παράδειγμα.

<!ENTITY % answer "(yes | no)">

Την ώρα της εκτέλεσης, θα αντικατασταθεί το όνομα αναφοράς %answer; με το κείμενο αντικατάστασης "(yes | no)".

 

Παράδειγμα 24 - Δημιουργία Γενικής Οντότητας

Εκτός από τις παραμετρικές οντότητες, μπορούμε να χρησιμοποιήσουμε και μια γενική οντότητα (general entity) και να αναφερόμαστε σ' αυτήν μέσα σ' ένα XML αρχείο. Στην ουσία δημιουργούμε μια συντόμευση για ένα μεγάλο ή περίπλοκο κείμενο που εμφανίζεται πολλές φορές μέσα σ' ένα XML αρχείο.

Για να δηλώσουμε μια γενική οντότητα χρησιμοποιούμε την λέξη κλειδί <!ENTITY>, το όνομα της οντότητας και το κείμενο αντικατάστασης. Για μια εσωτερική γενική οντότητα, η σύνταξη είναι η εξής :

<!ENTITY όνομα "κείμενο αντικατάστασης">

Για μια εξωτερική παραμετρική οντότητα, πρέπει να καθορίσουμε το XML αρχείο στο οποίο βρίσκεται το κείμενο αντικατάστασης, ως εξής :

<!ENTITY όνομα SYSTEM "αρχείο.dtd">

Ακολουθεί ένα παράδειγμα.

<!ENTITY flo "Prefecture of Florina">

Την ώρα της εκτέλεσης, θα αντικατασταθεί το όνομα αναφοράς "&flo;" με το κείμενο αντικατάστασης "Prefectue of Florina".

Για να ξεκαθαρίσουμε λίγο τα πράγματα με τους τέσσερις τύπους οντοτήτων, πρέπει να έχουμε υπόψη μας ότι ορίζουμε και τους τέσσερις τύπους οντοτήτων σ' ένα DTD αρχείο με την ετικέτα <!ENTITY> ή στην ενότητα <!DOCTYPE> ενός XML αρχείου.

Οι γενικές οντότητες αναφέρονται μέσα σε XML αρχεία με το & και το σύμβολο ; (&entityName;), ενώ οι παραμετρικές οντότητες αναφέρονται μέσα σε DTD αρχεία με το % και το σύμβολο ; (%entityName;). Οι εσωτερικές οντότητες ορίζουν ένα κείμενο αντικατάστασης στο ίδιο το έγγραφο που αναφέρει αυτές τις οντότητες, ενώ οι εξωτερικές οντότητες με την λέξη κλειδί SYSTEM αναφέρονται σ' ένα κείμενο ανατικατάστασης που βρίσκεται σ' ένα εξωτερικό έγγραφο.

 

Παράδειγμα 25 - Δημιουργία Σήμανσης (Notation)

Με την δήλωση μιας σήμανσης (notation), μπορούμε να αναφερθούμε σ' έναν εξωτερικό τύπο δεδομένων που σχετίζεται με μια εξωτερική γενική οντότητα. Ενας εξωτερικός τύπος δεδομένων είναι ένας τύπος δεδομένων μη XML, όπως ένα αρχείο .gif ή ένα αρχείο .doc, και μια εξωτερική οντότητα είναι ένα DTD στοιχείο που το χρησιμοποιούμε για να βρίσκουμε εξωτερικούς τύπους δεδομένων που χρησιμοποιούνται σε XML έγγραφα.

Η σύνταξη για την δήλωση μιας notation είναι η εξής :

<!NOTATION όνομα SYSTEM "τύπος αρχείου">

Το name είναι το όνομα της σήμανσης notation και ο τύπος αρχείου είναι μια τιμή που μπορεί να αναγνωρίσει ένας XML επεξεργαστής και να την επεξεργαστεί την ώρα εκτέλεσης.

Ακολουθεί ένα παράδειγμα.

<!NOTATION GIF SYSTEM "image/gif">

Το GIF είναι το όνομα της σήμανσης notation και το image/gif είναι ο τύπος δεδομένων. Οι σημάνσεις (notation) περιγράφουν την μορφή αρχείων δεδομένων που δεν είναι XML, ενώ οι οντότητες (entities) παρέχουν συνδέσεις στην φυσική θέση των μη XML δεδομένων.

Για να δηλώσουμε τώρα μια εξωτερική γενική οντότητα ώστε να συμπεριλάβουμε ένα αρχείο που περιέχει μη XML δεδομένα, όπως ένα αρχείο jpeg ή ένα αρχείο pdf, πρέπει πρώτα να δηλώσουμε μια ιδιότητα notation. Η σύνταξη είναι η εξής :

<!ENTITY όνομα_οντότητας SYSTEM "όνομα_αρχείου" NDATA όνομα_notation>

Η σήμανση θα πρέπει να έχει ήδη ορισθεί στο DTD αρχείο. Ακολουθεί ένα παράδειγμα.

<!NOTATION GIF SYSTEM "image/gif">

<!ENTITY P1 SYSTEM "../images/florina.gif" NDATA GIF>

 

Παράδειγμα 26 - Δήλωση ενός Αρχείου Διάταξης (Schema)

Μια διάταξη (schema) είναι μια δήλωση που περιέχει κανόνες επικύρωσης (validation rules) για να μπορέσουμε να περιορίσουμε τις τιμές δεδομένων XML. Αποτελούν μια εναλλακτική λύση για τους ορισμούς τύπου εγγράφων (DTD) και έχουν τα εξής πλεονεκτήματα :

Το MSXML προσφέρει επί του παρόντος την καλύτερη υποστήριξη για τις διατάξεις. Η σύνταξη για την δημιουργία μιας διάταξης είναι η εξής :

<Schema

    name="όνομα_διάταξης"

    xmlns="urn:schemas-microsoft-com:xml-data"

    xmlns:dt="urn:schemas-microsoft-com:datatypes">

</Schema>

Για να βάλουμε σχόλια (comments) σε μια διάταξη, χρησιμοποιούμε την γνωστή σύνταξη :

<!- - κείμενο σχολίου - ->

Ειδικά για τις διατάξεις (Schemas), η Microsoft υποστηρίζει ένα ειδικό στοιχείο, το <description>, για να σχολιάσουμε τον κώδικα μιας διάταξης, ως εξής :

<description> Η Φλώρινα βρίσκεται στην Δυτική Μακεδονία </description>

 

Παράδειγμα 27 - Τοποθέτηση Στοιχείων μέσα σε Διάταξη (Schema)

Μπορούμε να δημιουργήσουμε σχέσεις container σε μια διάταξη. Τα στοιχεία container αποτελούνται από ένα ή περισσότερα άλλα προκαθορισμένα στοιχεία. Η σύνταξη για να δημιουργήσουμε ένα στοιχείο container μέσα σε μια διάταξη Schema είναι η εξής :

<Schema

    ...>

    <ElementType name="όνομα_XML_στοιχείου_container" content="eltOnly" model="closed">

        <element type="όνομα_περιεχόμενου_στοιχείου1">

        <element type="όνομα_περιεχόμενου_στοιχείου2">

        ...

    </ElementType>

    ...

</Schema>

Για κάθε στοιχείο δεδομένων ενός XML εγγράφου πρέπει να δηλώσουμε ένα ElementType στην διάταξη και με το ίδιο όνομα κατά προτίμηση.

 

Παράδειγμα 28 - Οι Δηλώσεις minOccurs και maxOccurs

Μπορούμε να δημιουργήσουμε έναν κανόνα επικύρωσης για ένα στοιχείο μιας διάταξης (Schema) ώστε να είμαστε σίγουροι ότι σχετίζεται με μία μόνο ή με περισσότερες τιμές κατά την ώρα εκτέλεσης. Προς τον σκοπό αυτό χρησιμοποιούμε τις δηλώσεις minOccurs και maxOccurs, όπου η πρώτη αναφέρεται στον ελάχιστο αριθμό τιμών που μπορεί να υπάρχουν γι' αυτό το στοιχείο την ώρα εκτέλεσης (προεπιλογή=1) και η δεύτερη αναφέρεται στον μέγιστο αριθμό τιμών που μπορεί να υπάρχουν γι' αυτό το στοιχείο την ώρα εκτέλεσης (προεπιλογή=1 και το * δηλώνει πολλές τιμές).

Η σύνταξη είναι ως εξής :

<element type="τύπος_στοιχείου"

        [minOccurs="1"]

        [maxOccurs="{1 | *} "] />

Ο τύπος_στοιχείου πρέπει να ταιριάζει με το όνομα ενός στοιχείου που έχουμε ήδη ορίσει σαν ElementType. Ακολουθεί ένα παράδειγμα.

<element type="car" minOccurs="1" maxOccurs="*" />

Αν ορίσουμε την τιμή 0 για την δήλωση minOccurs, το στοιχείο της διάταξης γίνεται προαιρετικό. Για να περιορίσουμε τον αριθμό των τιμών ενός στοιχείου, πρέπει να ορίσουμε μια τιμή για την δήλωση maxOccurs, όπως π.χ. 20.

 

Παράδειγμα 29 - Οι Ιδιότητες content, model και dt:type

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα content ενός στοιχείου ElementType για να δηλώσουμε τον τύπο δεδομένων ενός στοιχείου της XML σαν τύπο κειμένου (textOnly) σε μια διάταξη (Schema). Τα στοιχεία που δηλώνονται σαν textOnly μπορούν να περιέχουν μόνο χαρακτήρες και όχι άλλα προκαθορισμένα στοιχεία. Η σύνταξη της ιδιότητας content είναι η εξής :

<ElementType name="όνομα_στοιχείου"

        content="textOnly" model="closed" />

Το όνομα_στοιχείου είναι το όνομα του στοιχείου που θέλουμε να ορίσουμε σαν τύπο κειμένου. Οι διατάξεις (Schemas) προσφέρουν πιο συγκεκριμένους τύπους δεδομένων από τα DTD.

Ακολουθεί ένα παράδειγμα.

<ElementType name="product" content="textOnly" model="closed" />

Η ιδιότητα content ενός ElementType μπορεί να έχει μια από τις εξής τιμές :

Αν δώσουμε την τιμή open στην ιδιότητα model και όχι την τιμή closed, θα επιτρέψουμε σ' ένα στοιχείο διάταξης να μπορεί να περιέχει την ώρα εκτέλεσης μια τιμή κειμένου και ένα ή περισσότερα προκαθορισμένα στοιχεία. Καταργούμε δηλαδή τους περιορισμούς του στοιχείου. Ακολουθεί ένα παράδειγμα.

<ElementType name="product" model="open" />

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα dt:type για να ορίσουμε τον τύπο δεδομένων ενός στοιχείου σε boolean, integer, real, time ή date. Ακολουθεί ένα παράδειγμα.

<ElementType name="product_price" content="textOnly" dt:type="fixed, 10.2" model="closed" />

 

Παράδειγμα 30 - Δήλωση Ιδιότητας για μια Διάταξη (Schema)

Για να μπορέσουμε να δηλώσουμε μια ιδιότητα για μια διάταξη (Schema), πρέπει πρώτα να δηλώσουμε έναν τύπο ιδιότητας (AttributeType), με την εξής σύνταξη :

<AttributeType

        default="προκαθορισμένη_τιμή"

        dt:type="τύπος_δεδομένων"

        dt:values="απαριθμητές_τιμές"

        name="idref"

        required="{yes | no}" />

<attribute type ="idref" />

Το dt:type καθορίζει τον τύπο δεδομένων της ιδιότητας και μπορεί να έχει μια από τις τιμές entity, entities, enumeration, id, idref, idrefs, nmtoken, nmtokens, notation, int, bool ή string. Το dt:values καθορίζει τις απαριθμητές τιμές όταν το dt:type είναι απαριθμητή τιμή (enumeration) και οι απαριθμητές τιμές πρέπει να χωρίζονται με κενά ανάμεσά τους. Το name είναι το όνομα της ιδιότητας για να μπορούμε να αναφερόμαστε σ' αυτήν και το required καθορίζει αν απαιτείται μια τιμή γι' αυτή την ιδιότητα την ώρα εκτέλεσης.

Οι ιδιότητες τύπου nmtoken ξεχωρίζουν από τις ιδιότητες τύπου string στο ότι τα string μπορεί να περιέχουν κενά, ενώ οι έγκυρες ιδιότητες τύπου nmtoken όχι. Οι ιδιότητες τύπου nmtoken χρησιμοποιούνται συνήθως σαν πρωτεύοντα και ξένα κλειδιά. Η δήλωση μιας ιδιότητας με τύπο id την κάνει να μπορεί να δέχεται μόνο μοναδικές τιμές σε μια XML εφαρμογή (πρωτεύον κλειδί), ενώ η δήλωση με τύπο idref την κάνει να είναι μια αναφορά αναγνωριστικού ή ξένο κλειδί, σε σχέση βέβαια με μια άλλη δήλωση του τύπου id.

Οι δηλώσεις των ιδιοτήτων γίνονται μετά από την δήλωση της διάταξης (Schema) και χρησιμοποιούμε την δήλωση <attribute type="idref" /> μέσα σε μια δήλωση <ElementType ... > ... </ElementType> για να καθορίσουμε τον τύπο της ιδιότητας ενός στοιχείου.

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

<?xml version="1.0"?>

<Schema name="myName"

        ...>

</Schema>

<AttributeType name="attr1" dt:type="string" />

<ElementType name="element1" content="textOnly" model="closed">

        <attribute type="attr1" />

</ElementType>

 

Παράδειγμα 31 - Δημιουργία Διαδοχικών Φύλλων Στυλ (CSS)

Μπορούμε να δημιουργήσουμε ένα διαδοχικό φύλλο στυλ (Cascading Style Sheet, CSS) για να μορφοποιήσουμε και να εμφανίσουμε XML στοιχεία δεδομένων. Με τα CSS, μπορούμε να ξεχωρίσουμε τα δεδομένα από τις λεπτομέρειες της παρουσίασής τους, όπως είναι το μέγεθος της γραμματοσειράς, το χρώμα και η θέση.

Η σύνταξη για την δήλωση ενός κανόνα CSS είναι η εξής :

όνομα_XML_στοιχείου

{

        ιδιότητα : τιμή;

}

Για παράδειγμα, δημιουργούμε ένα αρχείο κειμένου με όνομα file01.css και καταχωρούμε τον εξής κανόνα για ένα XML στοιχείο :

element01

{

        display : block;

        font-family : Arial, sans-serif;

}

Σ' αυτό το παράδειγμα, οι CSS κανόνες εμφανίζουν τις XML τιμές ξεχωριστά (display:block) και σ' ένα από τα στυλ γραμματοσειρών Arial ή san-serif.

Για να προσθέσουμε σχόλια (comments) σ' ένα αρχείο CSS, χρησιμοποιούμε την εξής σύνταξη :

/* κείμενο σχολίου */

Τα σχόλια για τα CSS μπορούν να επεκτείνονται σε πολλές γραμμές αλλά δεν μπορούν να είναι ένθετα (nested).

Στα CSS, οι επιλογές που έχουμε ορίσει για ένα στοιχείο container εφαρμόζονται σ' όλα τα στοιχεία που περιέχει, αλλά μπορούμε να ορίσουμε και διαφορετικές επιλογές εμφάνισης για κάθε μεμονωμένο περιεχόμενο στοιχείο. Στο παρακάτω παράδειγμα, το στοιχείο element01 είναι το στοιχείο container και τα στοιχεία element02 και element03 περιέχονται σ' αυτό και κληρονομούν τα χαρακτηριστικά του element01 αλλά έχουν και τα δικά τους χαρακτηριστικά.

element01

{

        display : block;

        font-family : Arial, sans-serif;

}

element02

{

        display : block;

        font-size : large;

        font-weight : bold;

        color : red;

        border-top : 2px solid #225566;

        border-bottom : 2px solid #00FF11;

        background-color : #AACCFF;

}

element03

{

        display : block;

        margin-bottom : 2em;

        margin-left : 4em;

        margin-top : 1em;

}

 

Παράδειγμα 32 - Κανόνες Στυλ για Παράβλεψη Στοιχείων

Μπορούμε να χρησιμοποιήσουμε κανόνες φύλλων στυλ για να παραβλέψουμε συγκεκριμένα XML στοιχεία, με την εξής σύνταξη :

όνομα_στοιχείου_1, όνομα_στοιχείου_2

{

        display : none;

}

Η παράβλεψη των XML στοιχείων είναι χρήσιμη όταν ελέγχουμε ένα φύλλο στυλ.

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

 

Παράδειγμα 33 - Σύνδεση Φύλλου Στυλ μ' ένα XML Αρχείο

Μπορούμε να επισυνάψουμε ένα φύλλο στυλ σ' ένα XML έγγραφο και την ώρα εκτέλεσης, το MSXML εφαρμόζει τους κανόνες του φύλλου στυλ για να μορφοποιήσει και να εμφανίσει τα XML δεδομένα. Η σύνταξη για να συνδέσουμε ένα XML έγγραφο μ' ένα αρχείο φύλλου στυλ είναι η εξής:

<?xml-stylesheet type="τύπος_φύλλου_στυλ" href="όνομα_αρχείου_φύλλου_στυλ"?>

Ο τύπος_φύλλου_στυλ είναι ο ΜΙΜΕ τύπος του φύλλου στυλ που θέλουμε να εφαρμόσουμε στο XML έγγραφο και μπορεί να έχει τις εξής δύο έγκυρες τιμές : text/css, για ένα φύλλο στυλ, και text/xsl, για ένα XML φύλλο στυλ.

Το όνομα_αρχείου_φύλλου_στυλ είναι το όνομα του εγγράφου του φύλλου στυλ που θέλουμε να επισυνάψουμε, όπως π.χ. file01.css.

Ακολουθεί ένα παράδειγμα.

<?xml version="1.0"?>

<?xml-stylesheet type="text/css" href="file01.css"?>

Οταν καθορίζουμε τους κανόνες εμφάνισης των δεδομένων ξεχωριστά από τα ίδια τα δεδομένα, έχουμε μεγάλη ευελιξία στην παρουσίαση των δεδομένων, αντί να χρησιμοποιούμε αυτούς τους κανόνες μέσα σ' ένα XML έγγραφο. Ετσι, το ίδιο XML έγγραφο μπορεί να έχει τρία διαφορετικά CSS έγγραφα, ένα για τους πελάτες χονδρικής, ένα για τους πελάτες λιανικής και ένα για τους εργαζόμενους.

Για κάθε νέα ομάδα που θα πρέπει να εμφανισθεί με διαφορετική μορφοποίηση, μπορούμε πολύ απλά να δημιουργήσουμε ένα νέο CSS έγγραφο, χωρίς να επέμβουμε καθόλου στο XML αρχείο.

 

Παράδειγμα 34 - Η Ιδιότητα display

Με την ιδιότητα display των φύλλων στυλ μπορούμε να ορίσουμε πώς ακριβώς θέλουμε να εμφανίζεται το κείμενο σ' ένα XML έγγραφο. Η σύνταξη της ιδιότητας display είναι η εξής :

όνομα_στοιχείου

{

        display : μορφή;

}

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

 

Παράδειγμα 35 - Οι Ιδιότητες Γραμματοσειρών

Με την ιδιότητα font-family μπορούμε να ορίσουμε τις γραμματοσειρές ή τις κατηγορίες γραμματοσειρών που θέλουμε να χρησιμοποιήσουμε για κάποιο στοιχείο. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ font-family : επιλογή1, επιλογή2, ... }

Μπορούμε να δηλώσουμε συγκεκριμένα ονόματα ενός ή περισσοτέρων γραμματοσειρών, όπως Arial, Courier, TimesRoman, ή γενικές κατηγορίες γραμματοσειρών. Υπάρχουν οι εξής πέντε κατηγορίες γραμματοσειρών :

Πρέπει να έχουμε υπόψη μας ότι οι ιδιότητες family κληρονομούνται, έτσι αν δεν έχει ορισθεί άλλη γραμματοσειρά, θα χρησιμοποιηθεί η γονική. Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        font-family : Arial, Times, sans-serif

}

Με την ιδιότητα font-size μπορούμε να ορίσουμε το ύψος (μέγεθος) για κάποιο στοιχείο. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ font-size : επιλογή_μεγέθους; }

Η επιλογή_μεγέθους μπορεί να ανήκει σε μια από τις εξής κατηγορίες :

Πρέπει να έχουμε υπόψη μας ότι οι ιδιότητες font-size κληρονομούνται, έτσι αν δεν έχει ορισθεί άλλη γραμματοσειρά, θα χρησιμοποιηθεί η γονική. Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        font-family : Arial, Times, sans-serif;

        font-size : 20pt

}

Με την ιδιότητα font-style μπορούμε να ορίσουμε το στυλ (κανονικό ή πλάγιο) για κάποιο στοιχείο. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ font-style : επιλογή_στυλ; }

Η επιλογή_στυλ μπορεί να ανήκει σε μια από τις εξής κατηγορίες :

Πρέπει να έχουμε υπόψη μας ότι οι ιδιότητες font-style κληρονομούνται, έτσι αν δεν έχει ορισθεί άλλη γραμματοσειρά, θα χρησιμοποιηθεί η γονική. Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        font-family : Arial, Times, sans-serif;

        font-style : italic

}

 

Με την ιδιότητα font-weight μπορούμε να ορίσουμε το πάχος της γραμματοσειράς για κάποιο στοιχείο. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ font-weight : τιμή; }

Η τιμή μπορεί να ανήκει σε μια από τις εξής δύο κατηγορίες :

Πρέπει να έχουμε υπόψη μας ότι οι ιδιότητες font-weight κληρονομούνται, έτσι αν δεν έχει ορισθεί άλλη γραμματοσειρά, θα χρησιμοποιηθεί η γονική. Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        font-size : large;

        font-weight : 600

}

Με την ιδιότητα font-variant μπορούμε να προσθέσουμε ειδική έμφαση σε κάποιο στοιχείο. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ font-variant : τιμή; }

Η τιμή έχει τις εξής δύο επιλογές :

Πρέπει να έχουμε υπόψη μας ότι οι ιδιότητες font-variant κληρονομούνται, έτσι αν δεν έχει ορισθεί άλλη γραμματοσειρά, θα χρησιμοποιηθεί η γονική. Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        font-style : italic;

        font-variant : small-caps

}

Υπάρχει και η δυνατότητα να ορίσουμε μαζί πολλές ιδιότητες γραμματοσειράς σε μια δήλωση με την ιδιότητα font. Οι ιδιότητες αυτές είναι οι style, variant, weight, size και family.

Πρέπει να έχουμε υπόψη μας ότι οι ιδιότητες font κληρονομούνται, έτσι αν δεν έχει ορισθεί άλλη γραμματοσειρά, θα χρησιμοποιηθεί η γονική. Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        font : normal normal normal 12pt Times, serif;

}

 

Παράδειγμα 36 - Η Ιδιότητα color

Με την ιδιότητα color μπορούμε να εφαρμόσουμε χρώμα σε γραμματοσειρές. Πρέπει να έχουμε υπόψη μας ότι οι ιδιότητες color κληρονομούνται, έτσι αν δεν έχει ορισθεί άλλο χρώμα, θα χρησιμοποιηθεί το χρώμα του γονικού στοιχείου.

Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ color : χρώμα; }

Για το χρώμα έχουμε τις εξής επιλογές :

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        font-style : italic;

        font-weight : bold;

        color : green

}

 

Παράδειγμα 37 - Οι Ιδιότητες Κειμένου

Με την ιδιότητα text-transform μπορούμε να ρυθμίσουμε τα πεζά και τα κεφαλαία γράμματα για κάποιο στοιχείο. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ text-transform : στυλ; }

Το στυλ μπορεί να έχει μια από τις εξής τέσσερις τιμές :

Πρέπει να έχουμε υπόψη μας ότι οι ιδιότητες text-transform κληρονομούνται, έτσι αν δεν έχει ορισθεί κάποια άλλη τιμή, θα χρησιμοποιηθεί η τιμή του γονικού στοιχείου.

Ακολουθεί ένα παράδειγμα.

name

{

        display : inline;

        color : green;

        text-transform : capitalize

}

Με την ιδιότητα text-decoration μπορούμε να διακοσμήσουμε το κείμενο ενός στοιχείου. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ text-decoration : στυλ; }

Το στυλ μπορεί να έχει μια από τις εξής πέντε τιμές :

Πρέπει να έχουμε υπόψη μας ότι η ιδιότητα text-decoration δεν κληρονομείται.

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        color : green;

        text-transform : capitalize;

        text-decoration : underline

}

Υπάρχει και η ιδιότητα text-shadow για να δημιουργήσουμε εφέ σκιάς για ένα κείμενο, αλλά δεν χρησιμοποιείται ευρέως.

Με την ιδιότητα line-height μπορούμε να ρυθμίσουμε την κατακόρυφη απόσταση των στοιχείων. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ line-height : τιμή; }

Η τιμή μπορεί να ανήκει σε μια από τις εξής τρεις κατηγορίες :

Πρέπει να έχουμε υπόψη μας ότι η ιδιότητα line-height κληρονομούνται, έτσι αν δεν έχει ορισθεί κάποια άλλη τιμή, θα χρησιμοποιηθεί η τιμή του γονικού στοιχείου.

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        color : red;

        line-height : 200%

}

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα text-align για να ελέγξουμε τον τρόπο στοίχισης των στοιχείων. Η ιδιότητα αυτή υποστηρίζει μόνο τα στοιχεία που έχουν την τιμή block για την ιδιότητά τους display. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ text-align : τιμή; }

Η τιμή μπορεί να ανήκει σε μια από τις εξής τέσσερις γνωστές επιλογές :

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        line-height : 3.5;

        text-align : center

}

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα letter-spacing για να αυξήσουμε ή να ελαττώσουμε την απόσταση μεταξύ των χαρακτήρων των λέξεων ενός στοιχείου. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ letter-spacing : τιμή; }

Η τιμή μπορεί να ανήκει σε μια από τις εξής τρεις κατηγορίες :

Μπορούμε να χρησιμοποιήσουμε και αρνητικές τιμές για να μειώσουμε την απόσταση μεταξύ των χαρακτήρων.

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        text-decoration : underline;

        line-spacing : 10px

}

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα word-spacing για να αυξήσουμε ή να ελαττώσουμε την απόσταση μεταξύ των λέξεων ενός στοιχείου. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ word-spacing : τιμή; }

Η τιμή μπορεί να ανήκει σε μια από τις εξής τρεις κατηγορίες :

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

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        text-decoration : underline;

        word-spacing : 1 mm

}

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα text-indent για να ορίσουμε την εσοχή της πρώτης γραμμής του κειμένου ενός στοιχείου. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ text-indent : τιμή; }

Η τιμή μπορεί να ανήκει σε μια από τις εξής τρεις κατηγορίες :

Πρέπει να έχουμε υπόψη μας ότι η ιδιότητα αυτή κληρονομείται.

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        text-decoration : underline;

        text-indent : 3em

}

Για να δημιουργήσουμε μια κρεμαστή εσοχή, δηλ. μια εσοχή σ' όλες τις γραμμές μιας παραγράφου εκτός από την πρώτη, πρέπει να δώσουμε μια αρνητική τιμή στην ιδιότητα text-indent.

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα vertical-align για να μετατρέψουμε στοιχεία σε εκθέτες ή δείκτες. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ vertical-align : τιμή; }

Η τιμή μπορεί να ανήκει σε μια από τις εξής πέντε επιλογές :

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        text-transform : capitalize;

        vertical-align : super

}

 

Παράδειγμα 38 - Το Μοντέλο Πλαισίου

Για να εμφανίσει το CSS όλα τα στοιχεία πρέπει να χρησιμοποιήσουμε ένα μοντέλο πλαισίου.

 

Παράδειγμα 39 - Το Χρώμα Φόντου

Για να εφαρμόσουμε χρώμα φόντου σ' ένα στοιχείο, χρησιμοποιούμε την ιδιότητα background-color, με την εξής σύνταξη :

όνομα_στοιχείου

{ background-color : τιμή; }

Η τιμή μπορεί να ανήκει σε μια από τις εξής επιλογές :

Πρέπει να έχουμε υπόψη μας ότι η ιδιότητα αυτή δεν κληρονομείται, δηλ. τα στοιχεία παιδιά δεν κληρονομούν αυτόματα το χρώμα φόντου των γονικών τους στοιχείων. Αλλά, επειδή η προκαθορισμένη επιλογή είναι η transparent, αν ένα στοιχείο παιδί δεν έχει ένα δικό του φόντο, θα φαίνεται το φόντο του γονικού του στοιχείου.

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        text-align : center;

        background-color : olive

}

 

Παράδειγμα 40 - Η Εικόνα Φόντου

Για να ορίσουμε μια εικόνα σαν φόντο σ' ένα στοιχείο, χρησιμοποιούμε την ιδιότητα background-image, με την εξής σύνταξη :

όνομα_στοιχείου

{ background-image : τοποθεσία; }

Η τοποθεσία μπορεί να ανήκει σε μια από τις εξής επιλογές :

Πρέπει να έχουμε υπόψη μας ότι οι εικόνες φόντου δεν κληρονομούνται, αλλά αν έχουμε μια εικόνα φόντου και ένα χρώμα φόντου, η εικόνα τοποθετείται πάνω από το χρώμα, έτσι ώστε το χρώμα να φαίνεται μόνο μέσα από τα διαφανή τμήματα της εικόνας.

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        line-height : 2em;

        background-image : url("florina01.gif")

}

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα background-repeat για να επαναλάβουμε μια εικόνα φόντου (παράθεση), με την εξής σύνταξη :

όνομα_στοιχείου

{ background-image : τοποθεσία; background-repeat : τιμή; }

Η τιμή μπορεί να ανήκει σε μια από τις εξής επιλογές :

Πρέπει να έχουμε υπόψη μας ότι η ιδιότητα αυτή δεν κληρονομείται.

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        letter-spacing : 15px;

        background-image : url("florina01.gif");

        background-repeat : repeat-x

}

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα background-position για να αλλάξουμε την θέση μιας μια εικόνας φόντου, με την εξής σύνταξη :

όνομα_στοιχείου

{ background-position : τοποθεσία; }

Η τοποθεσία μπορεί να ανήκει σε μια από τις εξής επιλογές :

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        letter-spacing : 15px;

        background-image : url("florina01.gif");

        background-position : top center

}

Πρέπει να έχουμε υπόψη μας ότι είναι προτιμότερο να χρησιμοποιούμε σχετικές τιμές για την τοποθέτηση των εικόνων και όχι απόλυτες.

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα background-attachment για να διατηρήσουμε μια εικόνα φόντου σταθερή στην οθόνη, ακόμα κι αν ο χρήστης κυλήσει την σελίδα. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ background-attachment : τιμή; }

Η τιμή μπορεί να ανήκει σε μια από τις εξής δύο επιλογές :

Πρέπει να έχουμε υπόψη μας ότι η ιδιότητα αυτή δεν κληρονομείται.

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        text-decoration : underline;

        background-image : url("florina01.gif");

        background-attachment : fixed

}

 

Παράδειγμα 41 - Το Περίγραμμα (border)

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα border-style για να ορίσουμε το είδος του περιγράμματος που θέλουμε να προσθέσουμε σ' ένα στοιχείο. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ border-style : τιμή; }

Η τιμή μπορεί να ανήκει σε μια από τις εξής επιλογές :

Πρέπει να έχουμε υπόψη μας ότι η ιδιότητα αυτή δεν κληρονομείται.

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        text-align : center;

        border-style : groove

}

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα border-width για να ορίσουμε το πλάτος ενός περιγράμματος που έχουμε προσθέσει σ' ένα στοιχείο. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ border-width : τιμή; }

Η τιμή μπορεί να ανήκει σε μια από τις εξής επιλογές :

Πρέπει να έχουμε υπόψη μας ότι η ιδιότητα αυτή δεν κληρονομείται.

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        text-align : center;

        border-style : ridge

        border-width : thick

}

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα border-color για να ορίσουμε το χρώμα ενός περιγράμματος που έχουμε προσθέσει σ' ένα στοιχείο. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ border-color : χρώμα; }

Το χρώμα μπορεί να ανήκει σε μια από τις εξής επιλογές :

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        text-align : center;

        border-style : ridge

        border-width : thick;

        border-color : green

}

 

Παράδειγμα 42 - Η Αναπλήρωση (padding)

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα padding για να ορίσουμε τον κενό χώρο που θα υπάρχει ανάμεσα σ' ένα στοιχείο και στο περίγραμμά του (αναπλήρωση, padding). Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ padding : μέγεθος; }

Το μέγεθος μπορεί να ανήκει σε μια από τις εξής επιλογές :

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        text-indent : -2em;

        border-style : ridge;

        border-width : thick;

        padding : 3em

}

 

Παράδειγμα 43 - Τα Περιθώρια (margins)

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα margin για να ορίσουμε την περιοχή που υπάρχει μεταξύ του περιγράμματος και της άκρης ενός στοιχείου (περιθώριο, margin). Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ margin : μέγεθος; }

Το μέγεθος μπορεί να ανήκει σε μια από τις εξής επιλογές :

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        text-indent : -2em;

        border-style : inset;

        border-width : medium;

        margin : 2em

}

 

Παράδειγμα 44 - Το Πλάτος ενός Στοιχείου

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα width για να ορίσουμε το πλάτος ενός στοιχείου, δηλαδή το συνολικό πλάτος που θα καταλαμβάνουν τα περιεχόμενα, η αναπλήρωση και η περιοχή περιγράμματος ενός στοιχείου. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ width : τιμή; }

Η τιμή μπορεί να ανήκει σε μια από τις εξής επιλογές :

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

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        text-indent : -2em;

        border-style : inset;

        border-width : medium;

        margin : 1em;

        padding : 2ex;

        width : 3in

}

 

Παράδειγμα 45 - Το Υψος ενός Στοιχείου

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα height για να ορίσουμε το ύψος ενός στοιχείου, δηλαδή το συνολικό ύψος που θα καταλαμβάνουν τα περιεχόμενα, η αναπλήρωση και η περιοχή περιγράμματος ενός στοιχείου. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ height : τιμή; }

Η τιμή μπορεί να ανήκει σε μια από τις εξής επιλογές :

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

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        text-indent : -2em;

        border-style : inset;

        border-width : medium;

        margin : 1em;

        padding : 2ex;

        width : 2in;

        height : 3em

}

 

Παράδειγμα 46 - Η Ιδιότητα float

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα float για να ορίσουμε αν ένα στοιχείο θα εμφανίζεται αριστερά ή δεξιά από το στοιχείου που το ακολουθεί. Χρησιμοποιούμε συνήθως αυτήν την ιδιότητα για να τοποθετούμε εικόνες δίπλα σε κείμενο. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ float : κατεύθυνση; }

Η κατεύθυνση μπορεί να ανήκει σε μια από τις εξής επιλογές :

Πρέπει να έχουμε υπόψη μας ότι η ιδιότητα αυτή δεν κληρονομείται.

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        text-indent : -2em;

        border-style : inset;

        border-width : medium;

        float : left;

}

 

Παράδειγμα 47 - Η Ιδιότητα clear

Μπορούμε να χρησιμοποιήσουμε την ιδιότητα clear για να ορίσουμε αν ένα στοιχείο θέλουμε να μην στοιχίζεται δίπλα σε κινητά στοιχεία. Η σύνταξη είναι η εξής :

όνομα_στοιχείου

{ clear : κατεύθυνση; }

Η κατεύθυνση μπορεί να ανήκει σε μια από τις εξής επιλογές :

Πρέπει να έχουμε υπόψη μας ότι η ιδιότητα αυτή δεν κληρονομείται.

Ακολουθεί ένα παράδειγμα.

name

{

        display : block;

        text-indent : -2em;

        border-style : inset;

        border-width : medium;

        clear : right;

}

 

Παράδειγμα 48 - Τα Φύλλα Στυλ XSL

Για να δημιουργήσουμε ένα φύλλο στυλ της XML (XSS, XML Style Sheet), πρέπει να χρησιμοποιήσουμε την γλώσσα XSL (eXtensible Style Language) για να φορτώσουμε τα δεδομένα της XML σ' ένα μοντέλο, να τα χειριστούμε, να τα μορφοποιήσουμε και να τα εμφανίσουμε. Η σύνταξη είναι η εξής :

<?xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

        ...

</xsl:stylesheet>

Η χρήση των φύλλων στυλ XSS για την μορφοποίηση και την εμφάνιση των XML δεδομένων έχει πολλά πλεονεκτήματα σε σχέση με την χρήση των φύλλων στυλ CSS, όπως το ότι με τα XSS μπορούμε να συνδέουμε XML δεδομένα σ' ένα πρότυπο, να μορφοποιούμε και να εμφανίζουμε XML ιδιότητες και στοιχεία και όχι μόνο στοιχεία και ακόμη με τα XSS μπορούμε να έχουμε δυναμική εμφάνιση των δεδομένων.

Τα αρχεία φύλλων στυλ XSS τα αποθηκεύουμε με την επέκταση .xsl και μπορούμε να εισάγουμε σχόλια (comments) με τους γνωστούς οριοθέτες (delimiters) <!- - και - ->. Με την χρήση της XSL μπορούμε να μετασχηματίσουμε ένα XML έγγραφο σ' ένα HTML έγγραφο που περιέχει XML δεδομένα.

 

Παράδειγμα 49 - Μορφοποίηση και Εμφάνιση Δεδομένων

Μπορούμε να ορίσουμε κανόνες σ' ένα XSS για να δημιουργήσουμε ένα XML στοιχείο, ως εξής :

<xsl:οδηγία>

        κανόνας

</xsl:οδηγία>

Η οδηγία μπορεί να έχει μια από τις εξής μορφές :

Ακολουθεί ένα παράδειγμα.

<?xml version="1.0"?>
<HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<BODY>
    <xsl:for-each select="product/food">
                <xsl:value-of select="name"/>
                <xsl:value-of select="price"/>
                <xsl:value-of select="description"/>
                (<xsl:value-of select="date"/> per sempre)
    </xsl:for-each>
</BODY>
</HTML>

Για να μορφοποιήσουμε τις XML ιδιότητες, χρησιμοποιούμε τον χαρακτήρα @, ως εξής  :

<xsl:value-of select="name"/>
<xsl:value-of select="@name_code"/>

Παράδειγμα 50 - Ταξινόμηση Δεδομένων

Για να ταξινομήσουμε XML δεδομένα με την XSL δυναμικά την ώρα εκτέλεσης, χρησιμοποιούμε την εξής σύνταξη :

<xsl:for-each select="στοιχείο1" order-by="στοιχείο2;στοιχείο3"

        ...

</xsl:for-each>

Το στοιχείο1 είναι το όνομα του XML στοιχείου container και το στοιχείο2 είναι το όνομα του περιεχόμενου XML στοιχείου, σύμφωνα με το οποίο θέλουμε να ταξινομήσουμε τα δεδομένα. Μπορούμε να χρησιμοποιήσουμε και ένα ακόμη στοιχείο3 για επιπλέον ταξινόμηση στην περίπτωση που υπάρχουν ίσες τιμές στο στοιχείο2.

Εξ ορισμού, η ταξινόμηση είναι αλφαβητική και σε αύξουσα σειρά. Για να ορίσουμε φθίνουσα ταξινόμηση, χρησιμοποιούμε το σύμβολο - πριν από τον όνομα του στοιχείου. Ακολουθεί ένα παράδειγμα.

<xsl:for-each select="product/food" order-by="name;-price"

        <xsl:value-of select="name"/>

        <xsl:value-of select="price"/>

</xsl:for-each>

 

Παράδειγμα 51 - Η Εντολή if στα Φύλλα Στυλ XSL

Μπορούμε να χρησιμοποιήσουμε την εντολή if στα φύλλα στυλ XSL για να αλλάξουμε την μορφοποίηση μόνο ορισμένων στοιχείων την ώρα εκτέλεσης. Η σύνταξη είναι η εξής :

<xsl:if

        test="συνθήκη">

        ...

</xsl:if>

Αν η συνθήκη είναι αληθής, θα εμφανισθούν τα περιεχόμενα του xsl:if.

Ακολουθεί ένα παράδειγμα.

<xsl:for-each select="price"

        <xsl:if test="@coin[.='drs']"> (Drachmas) </xsl:if>

        <xsl:if test="@coin[.='euro']"> (Euro) </xsl:if>

</xsl:for-each>

Η XSL δεν υποστηρίζει ακόμη την εντολή else, αλλά υποστηρίζει μια παραλλαγή της, που είναι η choose-when-otherwise.

 

Παράδειγμα 52 - Σύνδεση Αρχείων XML και XSL

Μπορούμε να δημιουργήσουμε ένα ξεχωριστό αρχείο XML και ένα ξεχωριστό αρχείο XSL και να τα συνδυάσουμε την ώρα εκτέλεσης, με την εξής σύνταξη :

<?xml-stylesheet type="text/xsl" href="όνομα_αρχείου_xsl"?>

Ακολουθεί ένα παράδειγμα.

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="simple.xsl"?>

 

Παράδειγμα 53 - Οι Νησίδες Δεδομένων (Data Islands)

Μπορούμε να χρησιμοποιήσουμε το tag <XML> μέσα σε κώδικα της HTML για να μπορέσουμε να έχουμε πρόσβαση σε XML δεδομένα μέσα από την HTML. Ενα έγγραφο της XML που είναι ενσωματωμένο μέσα σ' ένα έγγραφο της HTML ονομάζεται νησίδα δεδομένων (data island). Μπορούμε να δημιουργούμε και να έχουμε πρόσβαση σε νησίδες δεδομένων με την HTML και την JavaScript.

Εκτός από το να δημιουργούμε νησίδες δεδομένων, μπορούμε να χρησιμοποιήσουμε μια γλώσσα συγγραφής σεναρίων (script), όπως είναι η JavaScript, η VBScript ή η JScript, για να φορτώσουμε ένα XML έγγραφο μέσα σ' ένα HTML έγγραφο καθώς και τις μεθόδους του μοντέλου αντικειμένου εγγράφου (DOM) της XML.

Για να δημιουργήσουμε μια νησίδα δεδομένων της XML μέσα σ' ένα HTML αρχείο, χρησιμοποιούμε την εξής σύνταξη :

<XML

        ID="όνομα_νησίδας"

        SRC="όνομα_αρχείου_xml">

</XML>

Η ιδιότητα ID είναι το όνομα που δίνουμε στη νησίδα δεδομένων και την χρησιμοποιούμε για να μπορούμε να προσπελάσουμε τα στοιχεία που περιέχονται σε μια νησίδα δεδομένων, ενώ η ιδιότητα SRC είναι το όνομα του εγγράφου της XML που θέλουμε να φορτώσουμε. Μπορούμε να μην χρησιμοποιήσουμε την ιδιότητα SRC και να γράψουμε απευθείας τον κώδικα XML για μια νησίδα δεδομένων ανάμεσα στα tags <XML>   και </XML> (inline δήλωση).

Αφού έχουμε δηλώσει και φορτώσει μια νησίδα δεδομένων με την ετικέτα <XML>, μπορούμε να την προσπελάσουμε και να εμφανίσουμε τα περιεχόμενά της μ' ένα σενάριο (script) από τις γλώσσες JavaScript, VBScript ή JScript.

Για να μπορέσουμε να έχουμε πρόσβαση στα XML στοιχεία που περιέχονται σε μια νησίδα δεδομένων, χρησιμοποιούμε την ιδιότητα documentElement ενός μοντέλου αντικειμένου του XML εγγράφου. Η ιδιότητα αυτή αντιπροσωπεύει το στοιχείο ρίζα (root element) του XML εγγράφου και έτσι με την βοήθειά του μπορούμε να προσπελάσουμε όλα τα δεδομένα που περιέχονται σε μια νησίδα δεδομένων. Περικλείουμε τις εντολές μέσα στις ετικέτες <script> και </script>. Ακολουθεί ένα παράδειγμα.

<hmtl>

        <body>

            <xml ID="xmlid01" SRC="file01.xml"> </xml>

                <script>

                        document.write(xmlid01.documentElement.text);

                </script>

        </body>

</html>

Η μέθοδος document.write() εμφανίζει όλα τα περιεχόμενα της νησίδας δεδομένων xmlid01 στην ιστοσελίδα την ώρα εκτέλεσης.

 

Παράδειγμα 54 - Προσπέλαση Στοιχείων Εγγράφου

Μπορούμε να προσπελάσουμε τα XML στοιχεία μιας νησίδας δεδομένων και να τα εμφανίσουμε ξεχωριστά. Χρησιμοποιούμε την ιδιότητα childNodes του XML DOM, η οποία περιέχει μια λίστα απ' όλα τα στοιχεία παιδιά (κόμβους) ενός XML στοιχείου.

Για να έχουμε πρόσβαση στα XML δεδομένα μιας νησίδας δεδομένων, γράφουμε ένα script για να προσπελάσουμε το XML DOM. Μπορούμε να κάνουμε ανακύκλωση στα δεδομένα με μια από τις εντολές for, while ή do ... while. Χρησιμοποιούμε την ιδιότητα length για να βρούμε τον αριθμό των στοιχείων παιδιών που περιέχονται σ' ένα γονικό στοιχείο.

Ακολουθεί ένα παράδειγμα προσπέλασης των στοιχείων παιδιών ενός κόμβου με την εντολή for.

<hmtl>

        <body>

            <xml ID="xmlid01" SRC="file01.xml"> </xml>

                <script>

                        var number = xmlid01.XMLDocument.documentElement.childNodes.length;

                        for (var i=0; i<number; i++) {

                                 document.writeln(xmlid01.XMLDocument.documentElement.childNodes.

                                        item(i).text);

                        }

                </script>

        </body>

</html>

Η σύνταξη των εντολών while και do ... while είναι η εξής :

while (συνθήκη) {

        ... εντολές ...

}

 

do

{

        ... εντολές ...

} while (συνθήκη)

Αλλες ιδιότητες που μπορούμε να χρησιμοποιήσουμε για να έχουμε πρόσβαση σε XML στοιχεία είναι οι εξής :

Ολες οι ιδιότητες και οι μέθοδοι που μπορούμε να χρησιμοποιήσουμε για να μπορέσουμε να προσπελάσουμε τα XML στοιχεία αποτελούν μέρος του μοντέλου αντικειμένου εγγράφου (DOM).

 

Παράδειγμα 55 - Σύνδεση XML Δεδομένων με Πίνακα της HTML

Μπορούμε να συνδέσουμε ένα έγγραφο της XML με τον κώδικα μιας HTML σελίδας και να εμφανίσουμε τα στοιχεία της XML μέσα σ' έναν πίνακα (table) της HTML και με την μορφοποίηση που θέλουμε. Προς τον σκοπό αυτό, χρησιμοποιούμε την ιδιότητα DATASRC για να συνδέσουμε ένα στοιχείο της HTML με μια νησίδα δεδομένων της XML και την ιδιότητα DATAFLD για να συνδέσουμε ένα στοιχείο της HTML μ' ένα συγκεκριμένο πεδίο της νησίδας δεδομένων.

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

<hmtl>

        <body>

            <xml ID="xmlid01" SRC="file01.xml"> </xml>

            <table border="2" DATASRC="#xmlid01" DATAFLD="products">

            <tr>

                    <td><span DATAFLD="name"></td>

                    <td><span DATAFLD="price"></td>

                    <td><span DATAFLD="date"></td>

            </tr>

                </table>

        </body>

</html>

 

Παράδειγμα 56 - Προσπέλαση XML Δεδομένων με το DOM

Μπορούμε να φορτώσουμε XML δεδομένα μέσα από τον κώδικα ενός HTML αρχείου, χρησιμοποιώντας μια γλώσσα συγγραφής σεναρίων (script), όπως είναι η JavaScript, η VBScript ή η JScript και μετά να αποκτήσουμε πρόσβαση στα στοιχεία αυτού του εγγράφου χρησιμοποιώντας το XML DOM.

Για να ενσωματώσουμε ένα XML έγγραφο μέσα στον κώδικα ενός HTML αρχείου, χρησιμοποιούμε το tag <XML> για να δημιουργήσουμε μια νησίδα δεδομένων.

Ακολουθεί ένα παράδειγμα.

<html>

        <head>

                <script>

                        function xml01() {

                                var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

                                xmlDoc.load(url.value);

                                var listofNodes = xmlDoc.documentElement.childNodes;

                                var currentNode = listofNodes.nextNode();

                                var count = 0;

                                while (currentNode != null) {

                                        count++;

                                        document.write("<br>");

                                        document.write("product " + count + " : " + currentNode.text);

                                        currentNode = listofNodes.nextNode();

                                }

                        }

                </script>

        </head>

        <body>

                <p>

                <input type="text" size="20" id="url">

                <input type="button" value="Φόρτωση του XML αρχείου"

                        onclick="javascript:xml01()">

                </p>

                <div id=results></div>

        </body>

</html>

Για να μπορέσουμε να χρησιμοποιήσουμε τα αντικείμενα, ιδιότητες, μεθόδους και συμβάντα που υπάρχουν στο XML DOM, πρέπει πρώτα να δημιουργήσουμε ένα στιγμιότυπο ενός ActiveX αντικειμένου με τον τελεστή new.

Με την μέθοδο load() μπορούμε να φορτώσουμε τα περιεχόμενα ενός XML αρχείου από τον δίσκο. Η μέθοδος επιστρέφει μια boolean τιμή true αν επιτύχει η φόρτωση, αλλιώς επιστρέφει false.

Για να μπορέσουμε να προσπελάσουμε τα XML στοιχεία, χρησιμοποιούμε τις εξής μεθόδους και ιδιότητες :

Στο παραπάνω παράδειγμα, ο βρόχος while διασχίζει τα στοιχεία του XML εγγράφου xmlDoc και εμφανίζει το κείμενο που περιέχουν την ώρα εκτέλεσης.

Για να μπορέσουμε να επεξεργαστούμε και τις ιδιότητες (attributes) ενός XML εγγράφου, υπάρχουν οι εξής μέθοδοι :

Η αντίστοιχη εντολή της VBScript για να δημιουργήσουμε ένα στιγμιότυπο ενός XML αντικειμένου είναι η εξής :

        Set xmlDoc = CreateObject("Microsoft.XMLDOM")

 

Παράδειγμα 57 - Δημιουργία και Επεξεργασία XML Στοιχείων με το DOM

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

Για να προσθέσουμε ένα στοιχείο σ' ένα XML έγγραφο, ακολουθούμε τα εξής βήματα :

Ακολουθεί ένα παράδειγμα για προσθήκη στοιχείου.

var newElement = xmlDoc.createElement("element01");

xmlDoc.documentElement.childNodes.item(2).appendChild(newElement);

today = new Date();

xmlDoc.documentElement.childNodes.item(2).lastChild.text = today;

Στο παραπάνω παράδειγμα, έχουμε προσθέσει ένα νέο στοιχείο και έχουμε ορίσει σαν τιμή του την τρέχουσα ημερομηνία.

Ακολουθεί ένα παράδειγμα για διαγραφή και τροποποίηση στοιχείου.

var firstElement = xmlDoc.documentElement.childNodes.item(0);

firstElement.removeChild(firstElement.childNodes.item(0));

var listOfPrices = xmlDoc.documentElement.getElementsByTagName("price");

for (var i=0; i<listOfPrices.length; i++) {

        if (listOfPrices.item(i).text = = "5") {

                var oldPrice = listOfPrices.item(i);

                var newPrice = oldPrice;

                newPrice.text = "100";

                oldPrice = newPrice;

        }

}

 

Παράδειγμα 58 - Οι XML Συνδέσεις (Links)

Με τις XML συνδέσεις μπορούμε να συσχετίζουμε (συνδέουμε) XML έγγραφα μεταξύ τους, όπως με τις HTML συνδέσεις μπορούμε να συσχετίζουμε HTML έγγραφα μεταξύ τους. Η σύνταξη για να συνδέσουμε XML στοιχεία είναι η εξής :

<όνομα_σύνδεσης xlink:type="τύπος_σύνδεσης"

xlink:href="έγγραφο_σύνδεσης">

        κείμενο_σύνδεσης

</όνομα_σύνδεσης>

Το όνομα_σύνδεσης είναι το όνομα που δίνουμε σε μια σύνδεση, ο τύπος_σύνδεσης μπορεί να έχει μια από τις τιμές simple, extended, locator, arc, resource, title ή none, το έγγραφο_σύνδεσης είναι το URL (απόλυτο ή σχετικό) του εγγράφου προορισμού και το κείμενο_σύνδεσης είναι το κείμενο που θέλουμε να συσχετίσουμε με την σύνδεση.

Ακολουθεί ένα παράδειγμα.

<florina xlink:type="simple" xlink:href="florina.xml"> Σύνδεσμος για την Φλώρινα

</florina>

 

Παράδειγμα 59 - Εργαλεία Επεξεργασίας XML Κώδικα

Μπορούμε να δημιουργήσουμε και να επεξεργαστούμε XML αρχεία με ειδικά προγράμματα, όπως τα εξής :

 

back.gif (9867 bytes)

Επιστροφή