Η Τεχνολογία XML – Μέρος 6ο
Παράδειγμα 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. Ακολουθεί ένα παράδειγμα.
minOccurs="1" maxOccurs="*" />
Αν ορίσουμε την τιμή 0 για την δήλωση minOccurs, το στοιχείο της διάταξης γίνεται προαιρετικό. Για να περιορίσουμε τον αριθμό των τιμών ενός στοιχείου, πρέπει να ορίσουμε μια τιμή για την δήλωση maxOccurs, όπως π.χ. 20.
Παράδειγμα 29 – Οι Ιδιότητες content, model και dt:type
Μπορούμε να χρησιμοποιήσουμε την ιδιότητα content ενός στοιχείου ElementType για να δηλώσουμε τον τύπο δεδομένων ενός στοιχείου της XML σαν τύπο κειμένου (textOnly) σε μια διάταξη (Schema). Τα στοιχεία που δηλώνονται σαν textOnly μπορούν να περιέχουν μόνο χαρακτήρες και όχι άλλα προκαθορισμένα στοιχεία. Η σύνταξη της ιδιότητας content είναι η εξής :
name=”όνομα_στοιχείου”
content=”textOnly” model=”closed” />
Το όνομα_στοιχείου είναι το όνομα του στοιχείου που θέλουμε να ορίσουμε σαν τύπο κειμένου. Οι διατάξεις (Schemas) προσφέρουν πιο συγκεκριμένους τύπους δεδομένων από τα DTD.
Ακολουθεί ένα παράδειγμα.
name="product" content="textOnly" model="closed" />
Η ιδιότητα content ενός ElementType μπορεί να έχει μια από τις εξής τιμές :
empty, κενό στοιχείο.
textOnly, στοιχεία που περιέχουν μόνο κείμενο.
elementOnly, στοιχεία που περιέχουν άλλα στοιχεία και όχι κείμενο.
mixed, στοιχεία που περιέχουν άλλα στοιχεία και κείμενο. Προκαθορισμένη επιλογή.
Αν δώσουμε την τιμή open στην ιδιότητα model και όχι την τιμή closed, θα επιτρέψουμε σ’ ένα στοιχείο διάταξης να μπορεί να περιέχει την ώρα εκτέλεσης μια τιμή κειμένου και ένα ή περισσότερα προκαθορισμένα στοιχεία. Καταργούμε δηλαδή τους περιορισμούς του στοιχείου. Ακολουθεί ένα παράδειγμα.
name="product" model="open" />
Μπορούμε να χρησιμοποιήσουμε την ιδιότητα dt:type για να ορίσουμε τον τύπο δεδομένων ενός στοιχείου σε boolean, integer, real, time ή date. Ακολουθεί ένα παράδειγμα.
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}" /> 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) και χρησιμοποιούμε την δήλωση idref” /> μέσα σε μια δήλωση … για να καθορίσουμε τον τύπο της ιδιότητας ενός στοιχείου.
Ακολουθεί ένα παράδειγμα δήλωσης μιας ιδιότητας για δεδομένα χαρακτήρων.
<?xml version="1.0"?> name="myName" ...> </Schema> name="attr1" dt:type="string" /> 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; }
Πηγή:
Αν βρήκατε το άρθρο μας χρήσιμο, θέλετε να μείνετε ενημερωμένοι για όλα τα νέα στο τομέα της τεχνολογίας καθώς και σε χρηστικά άρθρα, βοηθήστε μας κάνοντας like στην σελίδα μας στο Facebook πατώντας εδώ