Άσκηση 1 Δίνεται το παρακάτω DTD (Document Type Definition) αρχείο X.dtd : <!ELEMENT Α (Β+)> <!ELEMENT Β (C, D, E)> <!ELEMENT C (#PCDATA)> <!ELEMENT D (#PCDATA)> <!ELEMENT E (#PCDATA)> <!ATTLIST B F CDATA #REQUIRED> (a) Δώστε ένα παράδειγμα εφαρμογής, της οποίας τα XML αρχεία προδιαγράφονται από το παραπάνω DTD. Εξηγήστε κάθε ορισμό του παραπάνω DTD, καθώς και τους ιδιαίτερους περιορισμούς που επιβάλλονται στα στοιχεία των XML αρχείων. (b) Παρουσιάστε ένα valid XML αρχείο σύμφωνα με τον παραπάνω DTD ορισμό, περιλαμβάνοντας δύο αντικείμενα Β. (c) Παρουσιάστε το DOM δέντρο του XML αρχείου που παρουσιάσατε στο (b). (d) Παρουσιάστε το PHP αρχείο που θα κάνει validation του XML αρχείου σας, με βάση το DTD που σας δίνεται. Τι πρέπει να προστεθεί στο XML αρχείο σας, ώστε να γίνεται validation με χρήση του DTD (i) ενσωματωμένου στο XML και (ii) ως εξωτερικού αρχείου; Απάντηση Άσκησης 1 (a) Θα μπορούσε να προδιαγράφει XML αρχεία που περιέχουν το portfolio μετοχών κάποιου επενδυτή (element A), με κάθε «μετοχή» (element B) να περιλαμβάνει ως πληροφορία: το Χρηματιστήριο στο οποίο συναλλάσσεται η μετοχή (attribute F) και τα «σύμβολο», «όνομα», «τιμή» για κάθε μετοχή (elements C, D, E αντίστοιχα). Κάθε portfolio (element: A) έχει μία ή περισσότερες μετοχές (element: Β+). Κάθε μετοχή έχει ένα σύμβολο, ένα όνομα, μία τιμή (elements: C, D, E). Επίσης, κάθε μετοχή έχει την περιγραφή ενός Χρηματιστήριου (attribute: F). (b) Το αρχείο xml_askisi.xml : <A> <B F="nyse"> <C>ZCXM</C> <D>zacx corp</d> <E>28.875</E> </B> <B F="nasdaq"> <C>ZFFX</C> <D>zaffymat inc</d> <E>92.250</E> </B> </A>
(c) Document A B B Attribute: F C D E Attribute: F C D E nyse ZCXM zaxc 28.875 nasdaq ZFFX zaffymat 92.250 (d) Αρχείο validate.php : <?php?> $dom = new DOMDocument; $dom->load('xml_askisi.xml'); if ($dom->validate()) { echo "This document is valid!\n"; } (i) Για το DTD ενσωματωμένο, θα πρέπει να προστεθούν στην αρχή του XML αρχείου xml_askisi.xml, οι γραμμές: <!DOCTYPE A [ <!ELEMENT A (B+)> <!ELEMENT B (C, D, E)> <!ELEMENT C (#PCDATA)> <!ELEMENT D (#PCDATA)> <!ELEMENT E (#PCDATA)> <!ATTLIST B F CDATA #REQUIRED> ]> (ii) Για το DTD ως εξωτερικό αρχείο, θα πρέπει να προστεθεί στην αρχή του XML αρχείου xml_askisi.xml, η γραμμή: <!DOCTYPE A SYSTEM "X.dtd">
Άσκηση 2 Ένας φοιτητής ζητάει καθημερινά από τον web server του ΕΔΕΤ μια συγκεκριμένη σελίδα μέσα από ένα ιεραρχικό σύστημα caching πέντε επιπέδων. Η σελίδα αναζητείται πρώτα στο PC του, μετά (αν δεν βρεθεί στο PC του) σε έναν Η/Υ του τοπικού δικτύου του εργαστηρίου (LAN), στη συνέχεια (αν δεν βρεθεί στο PC του και στον Η/Υ του LAN) σε έναν Η/Υ του τμήματος του, στη συνέχεια (αν δεν βρεθεί στις προηγούμενες περιπτώσεις) σε έναν Η/Υ του πανεπιστημίου, και τέλος, στον Web Server του ΕΔΕΤ. Σχηματικά τα επίπεδα με σειρά ιεραρχίας (ή διαφορετικά με σειρά εγγύτητας στο φοιτητή) είναι τα παρακάτω: PC LAN (εργαστήριο) Τμήμα Πανεπιστήμιο Web Server (ΕΔΕΤ). Ο φοιτητής γνωρίζει ότι η σελίδα μπορεί να βρεθεί είτε από το PC του, είτε (αν δεν βρεθεί στο PC του) από έναν ενδιάμεσο υπολογιστή, ή τέλος από τον web server του ΕΔΕΤ. Στις τελευταίες 100 φορές που αναζήτησε τη σελίδα, παρατήρησε τα εξής: 8 φορές βρέθηκε κατά τις οποίες φορές χρειάστηκαν από περίπου 0.5 sec για να «κατεβεί» η σελίδα, 18 φορές βρέθηκε κατά τις οποίες φορές χρειάστηκαν από περίπου 2.3 sec για να «κατεβεί» η σελίδα, 20 φορές βρέθηκε κατά τις οποίες φορές χρειάστηκαν από περίπου 5.8 sec για να «κατεβεί» η σελίδα, 24 φορές βρέθηκε κατά τις οποίες φορές χρειάστηκαν από περίπου 6.9 sec για να «κατεβεί» η σελίδα, και 30 φορές βρέθηκε κατά τις οποίες φορές χρειάστηκαν από περίπου 15.5 sec για να «κατεβεί» η σελίδα. Ζητούνται τα παρακάτω: Ποια είναι η πιθανότητα η σελίδα να βρίσκεται: (i) στο PC του, (ii) στον Η/Υ του εργαστηρίου, (iii) στον Η/Υ του Τμήματος, (iv) στον Η/Υ του Πανεπιστημίου και (v) στον web server του ΕΔΕΤ; Απάντηση Άσκησης 2 Οι συμβολισμοί και η λογική του ερωτήματος, ακολουθούν αυτούς της Άσκησης Αυτοαξιολόγησης 6.3 (σελ. 159 και 220-221, Τόμος Β ). Ζητούνται τα h PC, h lab, h dept, h univ, h serv που είναι οι πιθανότητες να βρίσκεται η σελίδα στο PC του φοιτητή, στον Η/Υ του εργαστηρίου, στον Η/Υ του Τμήματος, στον Η/Υ του Πανεπιστημίου και στον web server του ΕΔΕΤ αντίστοιχα. Μας δίνονται δεδομένα από τα οποία μπορούμε να πάρουμε εύκολα τα P PC, P lab, P dept, P univ και P serv, δηλαδή, στο ιεραρχικό σύστημα caching της Άσκησης, τις πιθανότητες επιτυχούς ανεύρεσης της σελίδας στο PC του φοιτητή, στον Η/Υ του εργαστηρίου, στον Η/Υ του Τμήματος, στον Η/Υ του Πανεπιστημίου και στον web server του ΕΔΕΤ αντίστοιχα. Συγκεκριμένα, υπάρχουν 5 διαφορετικές περιπτώσεις επιτυχούς ανεύρεσης της σελίδας, με χρόνους απόκρισης 0,5 sec (8 φορές στις 100), 2.3 sec (18 φορές), 5.8 sec (20 φορές), 6.9 sec (24 φορές) και 15,5 sec (30 φορές), που αντιστοιχούν στην ανεύρεση της σελίδας από το PC του φοιτητή, τον Η/Υ του εργαστηρίου, τον Η/Υ του Τμήματος, τον Η/Υ του Πανεπιστημίου και τον web server του ΕΔΕΤ. Με βάση τα παραπάνω έχουμε:
P PC = 8/100 = 0.08 P lab = 18/100 = 0.18 P dept = 20/100 = 0.2 P univ = 24/100 = 0.24 και P serv = 30/100 = 0.3 Από τους τύπους που συνδέουν τα P με τα h στο ιεραρχικό σύστημα caching, ισχύει: h PC P 0.08 PC P h (1 P ) 0.18 h (1 0.08) h 0.196 lab lab PC lab lab P h (1 P P ) 0.2 h (1 0.08 0.18) h 0.27 dept dept PC lab dept dept P h (1 P P P ) 0.24 h (1 0.08 0.18 0.2) h 0.444 και univ univ PC lab dept univ univ P h (1 P P P P ) 0.3 h (1 0.08 0.18 0.2 0.24) h 1 serv serv PC lab dept univ serv serv Συνεπώς, οι ζητούμενες πιθανότητες είναι: (i) h PC = 0.08 για το PC (ii) h lab = 0.196 για τον Η/Υ του εργαστηρίου (iii) h dept = 0.27 για τον Η/Υ του Τμήματος (iv) h univ = 0.444 για τον Η/Υ του Πανεπιστημίου (v) h serv = 1 για τον web server του ΕΔΕΤ
Άσκηση 3 Δίνεται το παρακάτω XSL αρχείο xsl_askisi.xsl που έχει στόχο να μετασχηματίσει το αρχείο XML xml_askisi.xml που φτιάξατε στην Άσκηση 1: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0" > <xsl:template match="/"> <html> <body> <table border="4" bgcolor="green"> <xsl:for-each select="a/b"> <tr> <td><xsl:value-of select="c"/></td> <td><xsl:value-of select="d"/></td> <td><xsl:value-of select="@f"/></td> <td><xsl:value-of select="e"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> (a) Τι θα παρουσιαστεί στην οθόνη με την εφαρμογή του παραπάνω μετασχηματισμού στο XML αρχείο σας; Εξηγείστε τις λειτουργίες του παραπάνω XSL. (b) Παρουσιάστε το PHP αρχείο που επιτυγχάνει τον παραπάνω μετασχηματισμό server side. Απάντηση Άσκησης 3 (a) Με το μετασχηματισμό δημιουργείται ένα HTML αρχείο, το οποίο παρουσιάζει στον browser ένα table με πράσινο φόντο (<table border="4" bgcolor="green">). Σε κάθε γραμμή του πίνακα, θα εμφανίζονται με τη σειρά, οι τιμές των elements C, D, του attribute F και του element E, για όλα τα elements B. Όπως παρακάτω: ZCXM zacx corp nyse 28.875 ZFFX zaffymat inc nasdaq 92.250
(b) Το ΡΗΡ αρχείο transform_xml_xsl.php είναι το παρακάτω: <?php $xml_filename = "xml_askisi.xml"; $xsl_filename = "xsl_askisi.xsl"; $xml = new DOMDocument(); $xml->load($xml_filename); $xsl = new DOMDocument(); $xsl->load($xsl_filename);?> $proc = new XSLTProcessor(); $proc->importstylesheet($xsl); echo $proc->transformtoxml($xml);