Download as pdf or txt
Download as pdf or txt
You are on page 1of 46

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ

ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

ΔΙΑΛΕΞΗ ΙΧ
ΔΟΜΗΜΕΝΑ ΕΓΓΡΑΦΑ ΙΣΤΟΥ
XML - eXtensible Markup Language

Τζήμας Γιάννης, Αναπληρωτής Καθηγητής

Μάθημα:

ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΩΝ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ


Το πρώτο πράγμα που πρέπει πάντα να κάνετε είναι να ρωτάτε το γιατί;

Σήμερα θα:
Κάνουμε μία πρώτη
εισαγωγή στη γλώσσα XML
και θα δούμε τη
χρησιμότητά της.

Ξεκινήσουμε να μαθαίνουμε
να δομούμε σωστά
XML έγγραφα.

2 9/12/2020
Και πιο αναλυτικά θα δούμε τα ακόλουθα:

Εισαγωγή: HTML και XML.

eXtensible Markup Language


(XML): δήλωση XML, στοιχεία,
χαρακτηριστικά, σχόλια,
οδηγίες επεξεργασίας.

Δόμηση XML εγγράφων.

Document Type Definition


(DTD).

3 9/12/2020
Σημασιολογικός Παγκόσμιος Ιστός

ΜΙΑ ΕΙΣΑΓΩΓΗ:
HTML VS XML

4 9/12/2020
Εισαγωγή

SGML (Standard Generalized Markup Language):


Διεθνές πρότυπο για τον ορισμό μεθόδων
αναπαράστασης πληροφοριών, οι οποίες είναι
ανεξάρτητες συσκευής και συστήματος και είναι
αναγνώσιμες από άνθρωπο και υπολογιστή.

Εφαρμογές SGML: Οι γλώσσες που είναι σύμφωνες


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

5 9/12/2020
Γιατί XML;

Παράδειγμα αναπαράστασης πληροφοριών


για ένα βιβλίο σε HTML και XML.
<h2> Εισαγωγή στον Σημασιολογικό <book>
Ιστό</h2> <title>Εισαγωγή στον
Σημασιολογικό Ιστό</title>
<i>από τους <b> Γ. Παπαδόπουλο</b>
και <b> Ι. Αντωνίου </b> </i> <author>Γ. Παπαδόπουλο </author>
<author>Ι. Αντωνίου</author>
Springer 2003<br>
ISBN 0385452564 <br> <publisher>Springer</publisher>
<year>2003</year>
<ISBN>0385452564</ISBN>

</book>

6 9/12/2020
H HTML

Hyper Text Markup Language: είναι μια γλώσσα


σήμανσης (markup).

Ένα HTML αρχείο είναι ένα αρχείο κειμένου που


περιέχει ετικέτες σήμανσης (markup tags).

Οι ετικέτες περιγράφουν στο πρόγραμμα


πλοήγησης πώς θα εμφανίζει τη σελίδα.

Τα HTML αρχεία έχουν κατάληξη htm ή html.

7 9/12/2020
HTML tags

Χρησιμοποιούνται για να δηλώσουν τα στοιχεία (elements) της


HTML.

Βρίσκονται μεταξύ των < και > π.χ. <tag_name>, <br>.

Συνήθως βρίσκονται σε ζεύγη, π.χ. <b> Semantic Web </b>, όπου η


πρώτη ονομάζεται ετικέτα αρχής και η δεύτερη ετικέτα τέλους.

Το κείμενο που βρίσκεται ανάμεσα στις ετικέτες αποτελεί το


περιεχόμενο του στοιχείου <tag_name> Content </tag_name>.

Δεν παίζουν ρόλο τα κεφαλαία στα ονόματα των ετικετών (δεν είναι
case sensitive).

Μπορεί να περιέχουν χαρακτηριστικά (attributes) που


προσδιορίζουν καλύτερα τα στοιχεία, π.χ. <body bgcolor="red">.

8 9/12/2020
H XML

eXtensible Markup Language: είναι μια γλώσσα


σήμανσης όπως η HTML.

Επεκτάσιμη: δεν έχει προκαθορισμένα tags, αλλά


αφήνει το χρήστη να ορίσει τα δικά του tags.

Είναι αυτό-περιγραφική γλώσσα.

Σχεδιάστηκε για να περιγράφει τα δεδομένα, όχι την


παρουσίαση τους.

Συμπληρώνει την HTML και δεν την


αντικαθιστά.

9 9/12/2020
Ομοιότητες HTML - XML

Είναι γλώσσες σήμανσης (markup): δίνουν τη δυνατότητα στο


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

Χρησιμοποιούν ετικέτες (tags).

Εύκολα κατανοητές από τον άνθρωπο.

10 9/12/2020
Διαφορές HTML - XML

HTML XML
καθορίζει τον τρόπο παρουσίασης του καθορίζει τη δομή του περιεχομένου
περιεχομένου. (DTD, XML Schema).

Διαθέτει προκαθορισμένο σύνολο Δεν έχει προκαθορισμένες ετικέτες, αλλά


ετικετών. αφήνει το χρήστη να ορίσει τις δικές του.

Οι ετικέτες συνήθως είναι σε ζεύγη αρχής Όλες οι ετικέτες πρέπει να κλείνουν,


- τέλους, αλλά μπορεί και όχι <br>. δηλαδή να είναι πάντα σε ζεύγη.

Δεν περιέχει δομικές πληροφορίες=> Είναι εύκολα κατανοητή από υπολογιστές


δύσκολα κατανοητή από υπολογιστές
(Αυτό δεν ισχύει για την HTML 5). Ξεχωρίζει το περιεχόμενο από την
μορφοποίηση.
Καθορίζει τη μορφοποίηση του
εγγράφου. Οι ετικέτες είναι case-sensitive.
Οι ετικέτες δεν είναι case-sensitive. Επιτρέπει τον ορισμό περιορισμών σε
τιμές π.χ. το έτος <year> πρέπει να είναι
τετραψήφιος αριθμός.

Χρησιμοποιείται και ως μια ενιαία μορφή


ανταλλαγής δεδομένων μεταξύ
εφαρμογών.
9/12/2020
Σημασιολογικός Παγκόσμιος Ιστός

H XML
ΑΠΟ ΠΙΟ ΚΟΝΤΑ

12 9/12/2020
Τι θα δούμε για την XML;

Δήλωση (XML declaration).

Στοιχεία (XML elements).

Χαρακτηριστικά (XML attributes).

Σχόλια (XML comments).

Οδηγίες επεξεργασίας.

13 9/12/2020
Δήλωση (XML declaration)

Αποτελείται από:
Δήλωση XML (XML declaration)
<?xml version=“1.0” [encoding=“UFT-16”?]>
<?xml version=“1.0” [encoding=“UFT-16”?
standalone = “no”]>

Και μια προαιρετική αναφορά σε εξωτερικά


έγγραφα:
<!DOCTYPE book SYSTEM “book.dtd”>
- οι δομικές πληροφορίες
βρίσκονται στο τοπικό
αρχείο book.dtd.

14 9/12/2020
Στοιχεία (XML elements)

Αναπαριστούν τις κύριες έννοιες στις οποίες


αναφέρεται το XML έγγραφο π.χ. μαθητής, μάθημα,
βιβλίο.

Ένα στοιχείο αποτελείται από μια ετικέτα ανοίγματος,


το περιεχόμενο και μια ετικέτα κλεισίματος.
π.χ. <student>Γιάννης Παπαδόπουλος</student>

Το όνομα των ετικετών ορίζονται από το χρήστη.


Περιορισμοί:
1. Πρώτος χαρακτήρας ετικέτας: γράμμα ή χαρακτήρας
υπογράμμισης (underscore) ‘_’ ή άνω και κάτω τελεία ‘:’.
2. Δε μπορεί να αρχίζει με οποιοδήποτε συνδυασμό κεφαλαίων-
μικρών της ακολουθίας ‘XML’ π.χ. ‘Xml’, ‘xML’.

15 9/12/2020
Στοιχεία (XML elements)

Το περιεχόμενο μπορεί να είναι κείμενο ή άλλα


στοιχεία (XML elements) ή τίποτα.
<lecturer>
<name>Αντώνης Παππάς</name>
<phone>+302612925555</phone>
</lecturer>

Αν δεν υπάρχει περιεχόμενο, τότε το στοιχείο


αποκαλείται κενό (empty).
<lecturer></lecturer> ή συντετμημένα ως
<lecturer/>

16 9/12/2020
Χαρακτηριστικά (XML attributes)

Χαρακτηριστικό (XML attribute): είναι ένα ζεύγος


ονόματος - τιμής μέσα στην ετικέτα ανοίγματος
κάποιου στοιχείου:
<order orderNo=“23456” customer=“Α. Φράγκου” date=“15
Ιουνίου,2002”>
<item itemNo=“a528” quantity=“1”/>
<item itemNo=“c817” quantity=“3”/>
</order>

Εκφράζουν κάποια ιδιότητα ενός στοιχείου: ακόμη


και ένα κενό στοιχείο μπορεί να περιέχει ιδιότητες
με τη μορφή των χαρακτηριστικών:
<lecturer name=“Αντώνης Αντωνίου” phone=“6998745213”/>

17 9/12/2020
Χαρακτηριστικά (XML attributes)

Το προηγούμενο παράδειγμα θα μπορούσε να


γραφτεί και ως εξής:
Τα χαρακτηριστικά
αντικαταστάθηκαν από τα
<order> αντίστοιχα ένθετα στοιχεία.
<orderNo>23456</orderNo>
<customer> Α. Φράγκου
</customer> Η επιλογή χρήσης ένθετων
στοιχείων ή χαρακτηριστικών
<date>15 Ιουνίου,2002 είναι συνήθως θέμα προτίμησης.
</date>
<item>
<itemNo>a528</itemNo> Είναι προτιμότερο να
χρησιμοποιούμε στοιχεία γιατί:
<quantity>1</quantity>
Τα χαρακτηριστικά δε μπορούν
</item> να έχουν πολλαπλές τιμές.
<item> Δεν μπορούν να εκφράσουν
<itemNo>c817</itemNo> δομές πατέρα – παιδιού.
<quantity>3</quantity>
</item> Τα χαρακτηριστικά ΔΕΝ μπορούν
</order> να είναι ένθετα.
18 9/12/2020
Σχόλια (XML comments)

Το σχόλιο είναι ένα τμήμα κειμένου που αγνοείται


από το συντακτικό αναλυτή (parser).

<!-- Αυτό είναι ένα σχόλιο -->

19 9/12/2020
Οδηγίες Επεξεργασίας

Οι οδηγίες επεξεργασίας (Processing Instructions, PI)


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

Η γενική μορφή είναι:


<?target instruction ?>
π.χ. <?stylesheet type=“text/css” href=“mystyle.css” ?>

Κατά μία έννοια, οι οδηγίες επεξεργασίας παρέχουν


διαδικαστικές δυνατότητες σε ένα κατά τα άλλα δηλωτικό
περιβάλλον.

20 9/12/2020
Σημασιολογικός Παγκόσμιος Ιστός

ΔΟΜΗΣH
XML ΕΓΓΡΑΦΩΝ

21 9/12/2020
Δόμηση XML εγγράφων

Κανόνες Δόμησης.

Δενδρικό Μοντέλο
Δόμησης.

Τρόποι Ορισμού Δόμησης:


DTD, XML Schema.

22 9/12/2020
Κανόνες Δόμησης XML εγγράφων

Ένα έγγραφο XML είναι σωστά δομημένο, αν είναι συντακτικά


σωστό.

Μερικοί βασικοί συντακτικοί κανόνες είναι:

Υπάρχει μόνο ένα εξωτερικό στοιχείο στο έγγραφο, το οποίο λέγεται στοιχείο
ρίζα (root element).

Κάθε στοιχείο περιέχει μια ετικέτα ανοίγματος και μία αντίστοιχη ετικέτα
κλεισίματος.

Οι ετικέτες δεν πρέπει να επικαλύπτονται


ΛΑΘΟΣ: <author><name>Lee Hong</author></name>
ΣΩΣΤΟ: <author><name>Lee Hong </name> </author>

Τα χαρακτηριστικά μέσα σε ένα στοιχείο έχουν μοναδικά


ονόματα.

Τα ονόματα των στοιχείων και των ετικετών πρέπει να είναι


επιτρεπτά.

23 9/12/2020
Δενδρικό Μοντέλο Δόμησης

Είναι εφικτό να αναπαραστήσουμε τα σωστά


δομημένα XML έγγραφα ως δένδρα.

Κανόνες:
Υπάρχει ακριβώς μια ρίζα.
Δεν υπάρχουν κύκλοι.
Κάθε κόμβος έχει ακριβώς ένα γονέα (πλην της ρίζας).
Κάθε κόμβος έχει μια ετικέτα.
Η σειρά των στοιχείων είναι σημαντική.

24 9/12/2020
Δενδρικό Μοντέλο Δόμησης
Παράδειγμα
<?xml version=“1.0” encoding=“UTF-16”?>
<!DOCTYPE email SYSTEM “email.dtd”>
<email>
<head>
<from name=“Michael Maher”
address=michaelmaher@cs.gu.edu.au”/>
<to name=“GrigorisAntoniou”
address=grigoris@cs.unibremen.de”/>
<subject>where is the draft?</subject>
</head>
<body> Grigori, where is the draft paper
you promised me?
</body>
</email>

25 9/12/2020
Δενδρικό Μοντέλο Δόμησης - Προβλήματα

Δεν είναι δυνατόν το να αναπαραστήσουν το


γεγονός πως η σειρά των στοιχείων (elements)
είναι σημαντική, ενώ των χαρακτηριστικών
(attributes) όχι.
Ισοδύναμες αναπαραστάσεις:
<person lastname=“Woo” firstname=“Jason”/>
<person firstname=“Jason” lastname=“Woo”/>

Δεν υπάρχει διάκριση τύπων κόμβων


(στοιχείων, χαρακτηριστικών κ.λ.π.).

26 9/12/2020
Ορισμός Δόμησης

Ανάγκη για χρήση κοινού «λεξιλογίου» στοιχείων και


χαρακτηριστικών για την «επικοινωνία» διαφορετικών
εφαρμογών.

Ορισμός ονομάτων στοιχείων και χαρακτηριστικών που θα


χρησιμοποιηθούν.

Ορισμός δομής των στοιχείων και χαρακτηριστικών (π.χ. ποιες οι


επιτρεπόμενες τιμές των χαρακτηριστικών, ποια στοιχεία μπορούν να
εμφανίζονται μέσα σε άλλα στοιχεία κλπ).

Αν υπάρχουν τέτοιες δομικές πληροφορίες, έχουμε


βελτιωμένη δυνατότητα επικύρωσης των εγγράφων.

Έγκυρο XML έγγραφο: όταν είναι σωστά δομημένο,


χρησιμοποιεί δομικές πληροφορίες και τις εφαρμόζει.

27 9/12/2020
Τρόποι Ορισμού Δόμησης

DTD (Document Type Definition)


Παλαιότερος.
Πιο περιορισμένος.

XML Schema
Νεώτερος.
Πλουσιότερος κυρίως όσον αφορά τον ορισμό
τύπων δεδομένων.

28 9/12/2020
Σημασιολογικός Παγκόσμιος Ιστός

DTD:
DOCUMENT
TYPE DEFINITION
29 9/12/2020
DTD (Document Type Definition)

Το DTD καθορίζει ως ένα ‘πρότυπο’ (template) το τι μπορεί να


υπάρχει σε ένα έγγραφο XML.

Έχει ως στόχο να προδιαγράψει τα έγκυρα elements και


attributes που μπορούν να χρησιμοποιηθούν σε ένα έγγραφο
XML.

Παράδειγμα ενός στοιχείου <lecturer> και του αντίστοιχου


DTD.

<lecturer> <!ELEMENT lecturer (name,


<name> I. Προκοπίου </name> phone)>
<phone>+302612934555</phone> <!ELEMENT name (#CDATA)>
</lecturer> <!ELEMENT phone (#CDATA)>

30 9/12/2020
DTD (Document Type Definition)

Το DTD δεν είναι υποχρεωτικό.

Το DTD μπορεί να είναι είτε εσωτερικό, μέσα στο ίδιο το


έγγραφο, είτε εξωτερικό σε ξεχωριστό αρχείο.
ΕΣΩΤΕΡΙΚΟ DTD
<?xml version="1.0“ standalone=“no”?> ΕΞΩΤΕΡΙΚΟ DTD
<!DOCTYPE note [ <?xml version="1.0”
<!ELEMENT note (to, from, heading, standalone=“no”?>
body)> <!DOCTYPE note SYSTEM "note.dtd">
<!ELEMENT to (#CDATA)> <note>
<!ELEMENT from (#CDATA)> <to>chr</to>
<!ELEMENT subject (#CDATA)> <from>Alex</from>
<!ELEMENT body (#CDATA)> <subject>Reminder</subject>
]> <body>Prepare an XML
<note> presentation</body>
<to>chr</to> </note>]>
<from>Alex</from>
<subject>Reminder</subject>
<body>Prepare an XML presentation</body>
</note>

Είναι προτιμότερο να χρησιμοποιούμε εξωτερικά DTD, επειδή


οι ορισμοί τους μπορούν να χρησιμοποιηθούν σε παραπάνω
από ένα έγγραφα = > επαναχρησιμοποίηση (reusability) και
διατήρηση συνέπειας (consistency). 31 9/12/2020
Σωστά Δομημένο vs. Έγκυρο XML έγγραφο

Σωστά δομημένο (well-formed) θεωρείται ένα XML


έγγραφο όταν συμμορφώνεται με τους
συντακτικούς κανόνες της XML.

Έγκυρο (valid) θεωρείται ένα XML έγγραφο όταν


είναι σωστά δομημένο και επιπλέον
συμμορφώνεται με τους κανόνες ενός DTD.

32 9/12/2020
Τι προδιαγράφει ένα DTD;

Στοιχεία (elements): τα βασικά δομικά στοιχεία


ενός εγγράφου XML.

Χαρακτηριστικά (attributes): τα χαρακτηριστικά-


ιδιότητες των στοιχείων.

Οντότητες (entities): μεταβλητές που αφορούν


συγκεκριμένο κείμενο.

33 9/12/2020
DTD - Στοιχεία

Πως ορίζεται ένα στοιχείο;


<!ELEMENT element-name (element-content)>

Παράδειγμα
<!ELEMENT example (#CDATA)>

element-name element-content

34 9/12/2020
DTD - Στοιχεία

Μπορούμε να ορίσουμε την ιεραρχία των στοιχείων ενός


XML εγγράφου.
<!ELEMENT lecturer (name, phone)>
Παράδειγμα: <!ELEMENT name (#CDATA)>
<!ELEMENT phone (#CDATA)>

Τα στοιχεία lecturer, name και phone μπορούν να χρησιμοποιηθούν


μέσα στο έγγραφο.

<!ELEMENT lecturer (name, phone)>:


Ένα στοιχείο τύπου lecturer περιέχει ένα στοιχείο name και ένα
στοιχείο phone, με αυτή τη σειρά.

<!ELEMENT name (#CDATA)>, <!ELEMENT phone (#CDATA)>:


Τα στοιχεία τύπου name και phone μπορούν να έχουν οποιοδήποτε
περιεχόμενο.

35 9/12/2020
DTD – Στοιχεία: Παραδείγματα

<!ELEMENT lecturer (name, phone)>:


Ένα στοιχείο τύπου lecturer περιέχει ένα στοιχείο name και ένα
στοιχείο phone, με αυτή τη σειρά.

<!ELEMENT lecturer (name|phone)>:


Ένα στοιχείο τύπου lecturer περιέχει είτε ένα στοιχείο name, είτε ένα
στοιχείο phone.

<!ELEMENT lecturer ((name, phone) |(phone, name))>:


Ένα στοιχείο τύπου lecturer περιέχει ένα στοιχείο name και ένα
στοιχείο phone με οποιαδήποτε σειρά - προβληματικό για πολλά
στοιχεία.

36 9/12/2020
DTD – Στοιχεία: Πως Ορίζεται ένα Στοιχείο;

Πως ορίζεται ένα στοιχείο;


<!ELEMENT note (to, from, subject, body)>
<!ELEMENT to (#CDATA)>
<!ELEMENT from (#CDATA)>
<!ELEMENT subject (#CDATA)>
<!ELEMENT body (#CDATA)>

Ορίζοντας μία μόνο εμφάνιση ενός element


<!ELEMENT note (from)>
Ορίζοντας τουλάχιστον μία εμφάνιση ενός element
<!ELEMENT note (to+)>
Ορίζοντας μηδέν ή περισσότερες εμφανίσεις ενός element
<!ELEMENT note (attachment*)>
Ορίζοντας μία ή καμία εμφάνιση ενός element
<!ELEMENT note (attachment?)>
Ορίζοντας συνδυασμούς των ανωτέρω:
<!ELEMENT note (to+, from, subject, message*)>

Διαβάζεται ως: το στοιχείο note πρέπει να διαθέτει τουλάχιστον ένα στοιχείο to, ακριβώς
ένα στοιχείο from, ακριβώς ένα στοιχείο subject και μηδέν ή περισσότερα στοιχεία
message.

37 9/12/2020
DTD – Τελεστές Πληθικότητας

Τελεστές πληθικότητας (cardinality operators):

?: εμφάνιση καμία ή μία


*: εμφάνιση καμία ή περισσότερες
+: εμφάνιση μία ή περισσότερες

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


ακριβώς μία εμφάνιση.

38 9/12/2020
DTD – Χαρακτηριστικά

Εκτός από τον ορισμό των στοιχείων, πρέπει να ορίσουμε και τα


χαρακτηριστικά (attributes).

Αυτό επιτυγχάνεται μέσω μιας λίστας χαρακτηριστικών:

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

<!ATTLIST element-name attribute-name attribute-type value-type>

Παράδειγμα: <!ELEMENT square EMPTY>


<!ATTLIST square width CDATA "0">

Όνομα στοιχείου Όνομα Τύπος Τύπος τιμής


χαρακτηριστικού χαρακτηριστικού

Στο έγγραφο XML θα έχουμε: <square width=“123”></square>

39 9/12/2020
DTD – Τύποι Χαρακτηριστικών

Τύποι χαρακτηριστικών (attribute types): είναι παρόμοιοι με


τους τύπους δεδομένων, αλλά ο αριθμός τους είναι πολύ
περιορισμένος.

Ορισμένοι βασικοί τύποι:


CDATA: αλφαριθμητικό (ακολουθία χαρακτήρων).
ID: μοναδικό όνομα σε ολόκληρο το XML έγγραφο.
IDREF/IDREFS: αναφορά/ες σε άλλο/α στοιχείο/α με
χαρακτηριστικό ID, το οποίο έχει την ίδια τιμή με το
χαρακτηριστικό IDREF.
(v1|…|vn): απαρίθμηση όλων των δυνατών τιμών.
π.χ. <!ATTLIST note priority (high | standard | low)
“standard">

40 9/12/2020
DTD – Χαρακτηριστικά – Παράδειγμα

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


τύπων IDREF, IDREFS.

<!ELEMENT family (person*)> <family>


<person id=“bob” mother=“mary”
<!ELEMENT person (name)> father=“peter”>
<!ELEMENT name (#CDATA)> <name>Bob Marley</name>
<!ATTLIST person </person>
id ID #REQUIRED <person id=“bridget” mother=“mary”>
<name>Bridget Marley</name>
mother IDREF #IMPLIED </person>
father IDREF #IMPLIED <person id=“mary” children=“bob
children IDREFS #IMPLIED> bridget”>
<name>Mary Poppins</name>
</person>
<person id=“peter” children=“bob
bridget”>
<name>Peter Marley</name>
</person>
</family>
41 9/12/2020
DTD – Χαρακτηριστικά – Τύποι Τιμών

Υπάρχουν τέσσερις βασικοί τύποι τιμών: <!ELEMENT order (item+)>


<!ATTLIST order
#REQUIRED : το χαρακτηριστικό αυτό orderNo ID #REQUIRED
πρέπει να υπάρχει σε κάθε εμφάνιση του Customer CDATA #REQUIRED
στοιχείου στο έγγραφο XML. date CDATA #REQUIRED>
<!ELEMENT item EMPTY>
<!ATTLIST item
#IMPLIED: προαιρετική εμφάνιση itemNo
quantity
ID #REQUIRED
CDATA #REQUIRED
χαρακτηριστικού (π.χ. σχόλια). department CDATA #FIXED “Athens”
comments CDATA #IMPLIED>

#FIXED “value”: Κάθε στοιχείο πρέπει να


έχει αυτό το χαρακτηριστικό, που έχει πάντα
την τιμή που δίνεται μετά από τον τύπο
#FIXED στο DTD.
*Μια τιμή που δίνεται μέσα στο έγγραφο XML
δεν έχει νόημα, γιατί υπερισχύει η
προκαθορισμένη τιμή.

“value”: ορίζει μια προεπιλεγμένη τιμή


χαρακτηριστικού .
*Αν ο χρήστης ορίσει διαφορετική τιμή μέσα
στο έγγραφο XML, τότε αυτή υπερισχύει
έναντι της προεπιλεγμένης.
42 9/12/2020
DTD – Οντότητες

Πώς ορίζεται μια οντότητα;


<!ENTITY entity-name "entity-value">

Παίζουν διάφορους ρόλους:


Δεσμευτικό θέσης επαναλαμβανόμενων χαρακτήρων.
Τμήμα εξωτερικών δεδομένων.
Μέρος δήλωσης στοιχείων.
Τυπική χρήση: σαν σταθερές (constants).

Παράδειγμα: έστω πως σε ένα έγγραφο XML έχει αρκετές επισημάνσεις


σχετικές με τα πνευματικά δικαιώματα.

<!ENTITY writer “Albert Camus”>


<!ENTITY copyright “Copyright 1962”>

Στο έγγραφο XML μπορούμε να έχουμε


<author>&writer;&copyright;</author>

Πλέον μπορούμε να χρησιμοποιούμε την αναφορά στην οντότητα


&copyright, όπου χρειάζεται να περιληφθούν τα πνευματικά δικαιώματα.
43 9/12/2020
DTD – Παράδειγμα

<!ELEMENT email (head, body)>


<!ELEMENT head (from, to+, cc*, subject)>
<!ELEMENT from EMPTY> Ένα στοιχείο head περιέχει ένα
<!ATTLIST from στοιχείο from, τουλάχιστον ένα
name CDATA #IMPLIED στοιχείο to, κανένα ή περισσότερα
address CDATA #REQUIRED> στοιχεία cc και ένα στοιχείο subject, με
<!ELEMENT to EMPTY> τη συγκεκριμένη σειρά.
<!ATTLIST to
name CDATA #IMPLIED Στα στοιχεία from, to και cc, δεν
address CDATA #REQUIRED> απαιτείται το χαρακτηριστικό name.
<!ELEMENT cc EMPTY> Αντίθετα, το χαρακτηριστικό address
<!ATTLIST cc είναι πάντα απαραίτητο.
name CDATA #IMPLIED
address CDATA #REQUIRED>
<!ELEMENT subject (#CDATA)> Ένα στοιχείο body περιέχει ένα
<!ELEMENT body (text, attachment*)> στοιχείο text, το οποίο πιθανότατα
<!ELEMENT text (#CDATA)> ακολουθείται από έναν αριθμό
<!ELEMENT attachment EMPTY> στοιχείων attachment.
<!ATTLIST attachment
Encoding (mime|binhex) “mime” Το χαρακτηριστικό encoding ενός
file CDATA #REQUIRED> στοιχείου attachment πρέπει να έχει
είτε την τιμή mime είτε την τιμή binhex,
εκ των οποίων η πρώτη είναι
προεπιλεγμένη.

44 9/12/2020
DTD – Παράδειγμα

Δυνατότητα αναδρομικών ορισμών:

<!ELEMENT bintree((bintree root bintree) | emptytree)>

Η παραπάνω δήλωση ορίζει δυαδικά δέντρα: ένα δυαδικό


δέντρο είναι το κενό δέντρο, ή αποτελείται από ένα αριστερό
υποδέντρο, μία ρίζα, και ένα δεξί υποδέντρο.

45 9/12/2020
Ερωτήσεις

Το υλικό των διαφανειών προήλθε από τη σημαντική συνεισφορά της Β. Γκαντούνα, MSc.
46 9/12/2020

You might also like