Η Τεχνολογία XML – Μέρος 3ο
Παράδειγμα 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 στοιχείου, μπορούμε να χρησιμοποιήσουμε κάποιο από τα εξής :
(#PCDATA), ένας μόνο χαρακτήρας.
(#PCDATA)*, κανένας ή περισσότεροι χαρακτήρες.
(element01), μία επανάληψη του στοιχείου element01.
(element01+), μία ή περισσότερες επαναλήψεις του στοιχείου element01.
(element01?), καμία ή περισσότερες επαναλήψεις του στοιχείου element01.
(element01, element02), μία επανάληψη καθενός από τα στοιχεία element01 και element02.
(element01 | element02), μία επανάληψη ενός από τα στοιχεία element01 ή element02.
(#PCDATA | element01)*, είτε μία επανάληψη του στοιχείου element01 ή πολλοί χαρακτήρες.
EMPTY, κενό, χωρίς περιεχόμενο.
ANY, οποιοδήποτε περιεχόμενο.
Παράδειγμα 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 …)>
Οι δηλώσεις των ιδιοτήτων μπορεί να έχουν τις εξής προκαθορισμένες τιμές :
#REQUIRED, η ιδιότητα πρέπει να έχει μια τιμή.
#IMPLIED, η ιδιότητα δεν είναι απαραίτητο να έχει μια τιμή.
“τιμή”, προεπιλεγμένη τιμή.
#FIXED “τιμή”, σταθερή τιμή.
Παράδειγμα 15 – Δήλωση ενός Υποχρεωτικού Στοιχείου
Μπορούμε να δημιουργήσουμε έναν κανόνα επικύρωσης για να βεβαιωθούμε ότι ένα συγκεκριμένο στοιχείο σχετίζεται με μία μόνο τιμή. Ακολουθεί ένα παράδειγμα :
<!ELEMENT product (name, price, stock, quantity)>
Τα περιεχόμενα στοιχεία μπορούν να έχουν τις εξής μορφές :
element, πρέπει να υπάρχει μία μόνο τιμή γι’ αυτό το στοιχείο.
element+, μπορούν να υπάρχουν μία ή περισσότερες τιμές γι’ αυτό το στοιχείο.
element*, μπορούν να υπάρχουν καμία ή περισσότερες τιμές γι’ αυτό το στοιχείο.
Ακολουθούν παραδείγματα :
<!ELEMENT customer (order)> <!ELEMENT customer (order+)> <!ELEMENT customer (order*)>
Πηγή:
Αν βρήκατε το άρθρο μας χρήσιμο, θέλετε να μείνετε ενημερωμένοι για όλα τα νέα στο τομέα της τεχνολογίας καθώς και σε χρηστικά άρθρα, βοηθήστε μας κάνοντας like στην σελίδα μας στο Facebook πατώντας εδώ