ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ - XML

Σχετικά έγγραφα
Σημασιολογικός Ιστός (Semantic Web) - XML

Σημασιολογικός Ιστός (Semantic Web) - XML

Μια εισαγωγή στην XSL

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 6: XSL. Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

BibConvert μετατροπές LOM

Δικησοκενηρικά Πληροθοριακά Σσζηήμαηα

Γλώσσες Σήµανσης (Markup Languages) Τεχνολογία ιαδικτύου και Ηλεκτρονικό Εµπόριο

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

ΕΠΛ 012 Εισαγωγή στο Παγκόσμιο Πλέγμα Πληροφοριών

Σημασιολογικός Ιστός (Semantic Web) - XML

3. Επερώτηση XML Εγγράφων: Η Γλώσσα XPath

Τεχνολογίες Διαδικτύου (Εξασκηθείτε στην HTML)

Διαδίκτυο και Εφαρμογές 2η Άσκηση Μετασχηματισμοί XML και XSL. Γιαννέλος Γιάννης ΑΜ: Μαρινέλλης Γιώργος ΑΜ:

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

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 5: XML. Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ - XML

Εισαγωγή στον Παγκόσμιο ιστό και στη γλώσσα Html. Χρ. Ηλιούδης

Περιεχόμενα. Λίγα λόγια από το συγγραφέα... 7

Σημασιολογικός Ιστός (Semantic Web) - XML

Δομημένη Αναπαράσταση Πληροφοριών

Γαβαλάς αµιανός

Τεχνολογίες Διαδικτύου - Εργαστήριο 1 ο

Πληροφορική Τμήμα Σχεδιασμού & Τεχνολογίας Ξύλου & Επίπλου Αντώνιος Καραγεώργος Ευανθία Τσιλιχρήστου. Μάθημα 5 ο Τεχνολογίες Διαδικτύου: HTML I

ΕΙΣΑΓΩΓΗ ΣΤΗΝ HTML. Decode, ISSEL. Θεοδόσης Σουργκούνης Αντώνης Χρυσόπουλος Στέλιος Μόσχογλου

Εισαγωγή XML: Extensible Markup Language Ορίστηκε από το WWW Consortium (W3C) ως συµπλήρωµα της HTML. εν σχεδιάστηκε για βάσεις δεδοµένων αλλά για δια

Σημασιολογικός Ιστός (Semantic Web) - XML

Πτυχιακή Εργασία. Σχεδιασμός & ανάπτυξη δικτυακής εφαρμογής οργάνωσης και διαχείρισης αεροδρομίου με χρήση λογισμικού ανοιχτού κώδικα

ΝΤUA. Τεχνολογία Πολυμέσων

Σπουδές CAD, Πληροφορικής, Οικονομίας, Διοίκησης και D.T.P. με Σύστημα διδασκαλίας facetoface

Άσκηση 1. Απάντηση Άσκησης 1

Hyper Text Markup Language (HTML) που σημαίνει γλώσσα σήμανσης υπερκειμένου.

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

Περιεχόμενα. Γαβαλάς Δαμιανός Τρέχον status της HTML

Α ΛΥΚΕΙΟΥ - ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΪΟΣ 2019 ΕΝΔΕΙΚΤΙΚΕΣ ΕΡΩΤΗΣΕΙΣ ΚΑΤΑΝΟΗΣΗΣ

ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ - XML

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 9η Διάλεξη: Η γλώσσα XML

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

<a href=" στο κείμενο</a>.

ΔΟΜΗΜΕΝΗ ΑΝΑΠΑΡΑΣΤΑΣΗ ΠΛΗΡΟΦΟΡΙΩΝ

Σπουδές CAD, Πληροφορικής, Οικονομίας, Διοίκησης και D.T.P. με Σύστημα διδασκαλίας facetoface

Βασίλειος Κοντογιάννης ΠΕ19

<HTML> <HEAD> <TITLE> <BODY>

Άσκηση 6 Επαναληπτική Άσκηση HTML

ΕΙΣΑΓΩΓΗ ΣΤΗΝ HTML ΣΧΟΛΙΚΟ ΒΙΒΛΙΟ ΚΕΦΑΛΑΙΟ 11 Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής)

Επιλέγουμε την καρτέλα Εισαγωγή (Insert), και από την περιοχή της κορδέλας Σελίδες (Pages) επιλέγουμε την εντολή Εξώφυλλο (Cover Page) όπως

2. Επιλέξτε την σωστή ετικέτα HTML που προσφέρει το μεγαλύτερο φόντο κειμένου. <head> <heading> <h6> <h1>

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ HTML

Μαθηματικά Λογισμικά και Γλώσσες Αναπαράστασης Γνώσης

Βαρβάκειο Πρότυπο Γυμνάσιο

Η γλώσσα XHTML: διαφορές με HTML, μετατροπή

5. Επερώτηση XML Εγγράφων: Εισαγωγή στη Γλώσσα XQuery

ΝΤUA. Τεχνολογία Πολυμέσων

Κεφάλαιο 11: Εισαγωγή στην HTML. Εφαρμογές Πληροφορικής Κεφ. 11 Καραμαούνας Πολύκαρπος

11. Η γλώσσα HTML Πίνακες, Λίστες, Φόρμες

ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ - XML

1. <body> 2. <header> 3. <h1> My Page </h1> 4. </header> 5. <section>

Cascading Style Sheets

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : / id ot.com /

2. ΕΙΣΑΓΩΓΗ ΣΤΗΝ HTML ΓΙΩΡΓΟΣ ΓΙΑΝΝΑΚΑΚΗΣ, ΜΑΝΩΛΗΣ ΤΣΙΚΝΑΚΗΣ

Διαδίκτυο: Ιστορία, Δομή, Υπηρεσίες

Στην τεχνολογία των CSS, οι κανόνες στυλ (style

Σταύρος Καουκάκης Ευτύχιος Βαβουράκης

7-22 Οκτωβρίου Μία γιορτή δημιουργίας με κώδικα. Europe Code Week

Εφαρμοσμένη Πληροφορική ΙΙ (Ε) To Ολοκληρωμένο Περιβάλλον Ανάπτυξης (Integrated Development Environment-IDE) Netbeans 8

Βάσεις Δεδομένων ΙΙ. Διάλεξη 5 η XML και ΒΔ στο Διαδίκτυο

κεφάλαιο 3 Η ΓΛΩΣΣΑ XML Εισαγωγή

ΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Ψηφιακή τυπογραφία με δυναμική διαχείριση δεδομένων και χρήση CSS

Τι είναι η HTML; Τί είναι οι ετικέτες (tags); Πώς είναι μια ετικέτα (tag);

Διάλεξη 3η HTML intermediate

DOM. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Σχεδιασμός και Ανάπτυξη Ιστοσελίδων ΙΙ ΙΕΚ ΤΡΙΑΝΔΡΙΑΣ ΓΡΑΦΙΣΤΑΣ ΕΝΤΥΠΟΥ ΚΑΙ ΗΛΕΚΤΡΟΝΙΚΩΝ ΜΕΣΩΝ. CSS - Cascading Style Sheets

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

Σε αυτό το µάθηµα θα ασχοληθούµε µε τη βελτίωση της εµφάνισης ενός ιστοτόπου, αλλά και τον εύκολο χειρισµό όλων των αλλαγών στην εµφάνιση της σελίδας

Γιώργος Χρ. Μακρής. Σύγχρονες Γλώσσες Σήμανσης του Διαδικτύου. Αναπαράσταση Μαθηματικών κειμένων στο διαδίκτυο. Η Γλώσσα MathML

CSS. Εισαγωγή & Βασικές έννοιες. Cascading Style Sheets. Επικαλυπτόμενα φύλλα στυλ

Searching and Downloading OpenStreetMap Data

Επαναληπτική Άσκηση ΕΤΙΚΕΤΕΣ HTML

Εργαστήριο #10 (Ε10) 1

ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ - XML

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

Java & Java EE 3o Μέρος: Διασφάλιση ασφάλειας σε εφαρμογές Java Enterprise Edition. Κακαρόντζας Γεώργιος

Η γλώσσα HTML. Επιμέλεια: Δέγγλερη Σοφία

Η Βίβλος των CSS. Εισαγωγή στα CSS

Θέματα Προγραμματισμού Διαδικτύου ~ CSS ~

Βασίλειος Κοντογιάννης ΠΕ19

NetBeans και σχετικά προγράμματα. Κακαρόντζας Γεώργιος Κέντρο Αριστείας Ανοιχτού Λογισμικού ΑΠΘ 1ο Θερινό Σχολείο Κώδικα

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

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

Εισαγωγή σε HTML και CSS. Παναγιώτης Τσαρχόπουλος

Εισαγωγή στην XML (μέρος 1 ο ) Χρήστος Ηλιούδης

Δημοσίευση στο Διαδίκτυο

Ετικέτες HTML. <!-->: Τα σχόλια χρησιμοποιούνται για να γράφουμε σημειώσεις μέσα στον

Σε αυτό το μάθημα θα ασχοληθούμε με τη βελτίωση της εμφάνισης ενός ιστοτόπου, αλλά και τον εύκολο χειρισμό όλων των αλλαγών τις οποίες επιθυμούμε να

Ποιες είναι οι κύριες ετικέτες που χρησιμοποιεί η HTML για την περιγραφή της συνολικής δομής μιας ιστοσελίδας;

Βάσεις ιαδικτύου. Θέματα. Εισαγωγή στην XML. Ευρετήρια για την Ανάκτηση Κειμένων. Ο αλγόριθμος HITS. είναι η XML. Παράδειγμα XML

Εισαγωγή στην HTML (1)

JOOMLA CMS ΒΑΣΙΚΗ ΠΑΡΑΜΕΤΡΟΠΟΙΗΣΗ (PART I)

Java & Java EE 1o Μέρος: Servlets και Java Server Pages. Κακαρόντζας Γεώργιος

Τι είναι ένα σύστημα διαχείρισης περιεχομένου;

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ - XML Εργαστήρια 5-6 Στουγιάννου Ελευθερία estoug@unipi.gr

Περιεχόμενα Πέμπτου - Έκτου Εργαστηριακού Μαθήματος XML XSLT XPath Ασκήσεις Ερωτήσεις

extensible Stylesheet Language - XSL Η XSL είναι μια γλώσσα που «λέει» σε έναν browser πώς να επεξεργαστεί ένα XML αρχείο και να εμφανίσει τα δεδομένα XML. Συγκεκριμένα, η XSL επιτρέπει (α) την επιλογή των δεδομένων της XML που θέλουμε να εμφανισθούν, (β) την παρουσίασή τους με οποιαδήποτε σειρά ή διάταξη, (γ) την τροποποίησή τους και (δ) την προσθήκη πληροφοριών. Αποτελεί μέθοδο πολύ πιο ισχυρή και ευέλικτη από τη χρήση CSS. Ενώ το φύλλο στυλ CSS επιτρέπει απλώς τη μορφοποίηση κάθε στοιχείου XML, το φύλλο στυλ XSL δίνει τη δυνατότητα πλήρους ελέγχου του αποτελέσματος. Κομμάτι της XML αποτελεί η XSLT (XSL Transform) που χρησιμοποιείται για να μετατρέψει ένα XML έγγραφο σε ένα άλλο XML έγγραφο που μπορεί να αναγνωριστεί από έναν browser, όπως ένα HTML ή ένα (X)HTML έγγραφο. Η XSL είναι κάτι περισσότερο από μια Style Sheet γλώσσα. Αποτελείται από τρία μέλη: Την XSLT που είναι μια γλώσσα για την μετατροπή των XML εγγράφων Την XPath που είναι μια γλώσσα για την πλοήγηση στα XML έγγραφα Την XSL-FO που είναι μια γλώσσα για την μορφοποίηση των XML εγγράφων Η XSLT χρησιμοποιεί την XPath για να βρει πληροφορία σε ένα XML έγγραφο. Η XPath χρησιμοποιείται για την πλοήγηση στα elements και τα attributes των XML εγγράφων.

Μια γενική άποψη της XSLT Μετατροπή XML documents σε άλλες μορφές αρχείων: (X)HTML (Saxon) PDF ZIP TEXT - XML

Extensible HyperText Markup Language (XHTML) Η Extensible HyperText Markup Language (XHTML) είναι σχεδόν ταυτόσημη με την HTML 4.01, αλλά επίσης είναι σύμφωνη και με την αυστηρή σύνταξη της XML. Αυτή η συμμόρφωση κάνει την XHTML μία αυστηρά δομημένη γλώσσα σήμανσης (markup language). Ένα έγγραφο γραμμένο σε XHTML θα πρέπει να είναι καλά διατυπωμένο ( well-formed ) και συνεπώς, θα πρέπει να ερμηνεύεται και να εμφανίζεται στους φυλλομετρητές με τον τρόπο με τον οποίο οι συγγραφείς του επιθυμούν. Μερικές από τις πιο σημαντικές απαιτήσεις της XHTML είναι: Τα στοιχεία πρέπει να είναι κατάλληλα εμφωλευμένα. Τα στοιχεία θε πρέπει πάντα να κλείνουν. Τα στοιχεία και οι ιδιότητες θα πρέπει να είναι γραμμένα με μικρά γράμματα. Οι τιμές των ιδιοτήτων θα πρέπει να είναι σε εισαγωγικά. Τα έγγραφα θα πρέπει να έχουν τρία κύρια μέρη: ορισμός DOCTYPE, Τμήμα κεφαλής (head section), και τμήμα σώματος (body section)

Κάποια βασικά βήματα σύνδεσης XML- XSL αρχείων (1/3) Ας υποθέσουμε ότι έχουμε το people.xml με τα στοιχεία ορισμένων ανθρώπων όπως φαίνεται παρακάτω και θέλουμε να παρουσιάσουμε τα δεδομένα αυτά σε ένα πίνακα στο browser δημιουργώντας κατάλληλα το people.xsl και ενώνοντας τα δύο αρχεία. Σύνδεση του XML doc με το XSLT file

Κάποια βασικά βήματα σύνδεσης XML- XSL αρχείων (2/3) Για να φτιάξουμε το people.xsl πρέπει πρώτα να προσθέσουμε το Namespace (μέρος του xsl φαίνεται παρακάτω). Πρόσθεσε το Namespace Το Namespace prefix xsl: χρησιμοποιείται για να αναγνωριστούν τα xsl statements Που θα γίνουν processed. Αν ένα statement δεν έχει το xsl:, τότε αντιγράφεται στην έξοδο χωρίς να γίνει processed. Προσοχή: το XSLT πρέπει να είναι valid (stop tag </xsl:stylesheet>)

Κάποια βασικά βήματα σύνδεσης XML- XSL αρχείων (3/3) Έπειτα στο people.xsl πρέπει να ακολουθήσουμε τα παρακάτω βήματα (μέρος του xsl φαίνεται παρακάτω), κ.ο.κ. 1 2 3 Επέλεξε όλα τα elements από το root: template match= / Επέλεξε όλα τα Person tags: <xsl:for-each select= people/person > Επέλεξε την τιμή του ΝΑΜΕ element: <xsl:value-of select= name />

XSLT XPath - Δενδροειδής Δομή Η XPath είναι ένα συστατικό της XSLT. Μία γλώσσα για να αναγνωρίζουμε τα elements/attributes σε ένα XML document.

XPath Expressions (1/6) /library /library/book /library/book/@name /library/book[@name="the Fourth Civilization"] /library/book[1] //book[2] <library> <book name="c++ How to Program" /> <book name="the Fourth Civilization" /> </library>

XPath Expressions (2/6) /library /library/book /library/book/@name /library/book[@name="the Fourth Civilization"] /library/book[1] //book[2] <library> <book name="c++ How to Program" /> <book name="the Fourth Civilization" /> </library>

XPath Expressions (3/6) /library /library/book /library/book/@name /library/book[@name="the Fourth Civilization"] /library/book[1] //book[2] <library> <book name="c++ How to Program" /> <book name="the Fourth Civilization" /> </library> Σημείωση: Ένας browser μπορεί να χρησιμοποιήσει και να εμφανίζει τιμές των attributes σε ένα XSL αρχείο. Η σύνταξη είναι @attributename.

XPath Expressions (4/6) /library /library/book /library/book/@name /library/book[@name="the Fourth Civilization"] /library/book[1] //book[2] <library> <book name="c++ How to Program" /> <book name="the Fourth Civilization" /> </library>

XPath Expressions (5/6) /library /library/book /library/book/@name /library/book[@name="the Fourth Civilization"] /library/book[1] //book[2] <library> <book name="c++ How to Program" /> <book name="the Fourth Civilization" /> </library>

XPath Expressions (6/6) /library /library/book /library/book/@name /library/book[@name="the Fourth Civilization"] /library/book[1] //book[2] <library> <book name="c++ How to Program" /> <book name="the Fourth Civilization" /> </library>

XPath Node Selectors (1/4) /library/* /library/book[1]/text() /library/node()[1]. <library> <!-- comment --> <book>the Principles of Computer Hardware</book> <book name="the Fourth Civilization" /> </library>

XPath Node Selectors (2/4) /library/* /library/book[1]/text() /library/node()[1]. <library> <!-- comment --> <book>the Principles of Computer Hardware</book> <book name="the Fourth Civilization" /> </library>

XPath Node Selectors (3/4) /library/* /library/book[1]/text() /library/node()[1]. <library> <!-- comment --> <book>the Principles of Computer Hardware</book> <book name="the Fourth Civilization" /> </library>

XPath Node Selectors (3/4) /library/* /library/book[1]/text() /library/node()[1]. <library> <!-- comment --> <book>the Principles of Computer Hardware</book> <book name="the Fourth Civilization" /> </library> Σημείωση: Μπορείτε να χρησιμοποιήσετε το Plugin του Notepad++, XML Tools για να ελέγξετε αρχικά την εγκυρότητα ενός xml αρχείου και έπειτα να δείτε τα XPaths που υπάρχουν στο αρχείο αυτό.

Άσκηση 1 σε XPath (1/3) Δίνεται το παρακάτω XML document. <?xml version="1.0" encoding="iso-8859-1"?> <bookstore> <book isbn="111111" cat="fiction"> <title lang="chn">harry Potter</title> <price unit="usd">79.99</price> </book> <book isbn="222222" cat="textbook"> <title lang="eng">learning XML</title> <price unit="usd">69.95</price> </book> <book isbn="333333" cat="textbook"> <title lang="eng">intro. to Databases</title> <price unit="usd">39.00</price> </book> </bookstore>

Άσκηση 1 σε XPath (2/3) Συμπληρώστε την XPath Expression χρησιμοποιώντας Node Selectors. Description Selects the document root node. Selects the bookstore element node. Selects all book element nodes. Selects all price element nodes. Selects all lang attribute nodes. Selects text nodes of all price element nodes. Select all child nodes of book element nodes. Select all attribute nodes. XPath Expression

Άσκηση 1 σε XPath Λύση (3/3) Description Selects the document root node. / /. Selects the bookstore element node. Selects all book element nodes. Selects all price element nodes. Selects all lang attribute nodes. Selects text nodes of all price element nodes. Select all child nodes of book element nodes. Select all attribute nodes. XPath Expression /bookstore./bookstore /bookstore/book //book bookstore/book/price //price //@lang //price/text() /bookstore/book/* //book/* //@*

XSL - Παράδειγμα <?xml-stylesheet type="text/xsl" href="class.xsl"?>

Βασικοί Κανόνες Δομής XSL Η πρώτη γραμμή του XSL αρχείου δείχνει ότι το XSL είναι γραμμένο στην XML. Η γραμμή: <?xml version= 1.0?> <xsl:stylesheet xmlns:xsl= http://www.w3.org/tr/wd-xsl > «λέει» στον browser ότι αυτό το αρχείο είναι XSL stylesheet. Εναλλακτικά, μπορούμε να χρησιμοποιήσουμε μια από τις παρακάτω συνώνυμες εντολές: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> Συνδέουμε ένα XML αρχείο με το XSL αρχείο με την εντολή: <?xml-stylesheet type="text/xsl" href="class.xsl"?>

XSL Κανόνες: XSL Template & Value-of Το XSL Style Sheet αποτελείται από ένα ή περισσότερα σύνολα κανόνων που ονομάζονται templates. Το <xsl:template> element δημιουργεί templates. Η match attribute χρησιμοποιείται για να συνδέσει ένα template με ένα XML element κι έχει τιμή μια XPath έκφραση (είναι σαν να πλοηγούμαστε σε ένα σύστημα φακέλων, όπου υπάρχει / πηγαίνουμε σε υποφακέλους). Όταν αυτή έχει τιμή /, προσδιορίζει όλο το XML έγγραφο. Κάθε template περιέχει κανόνες που πρόκειται να εφαρμοστούν όταν ένα element ταιριάζει με το path που παίρνει σαν τιμή το attribute match. Επομένως, το παρακάτω template, σημαίνει ότι οι κανόνες που βρίσκονται ανάμεσα στο tag αρχής και τέλους πρέπει να εφαρμοστούν στο root element (σε όλο το XML έγγραφο). <xsl:template match= / > XPath </xsl:template> Το <xsl:value-of> element χρησιμοποιείται για να εξάγει την τιμή ενός XML element και να την προσθέσει στην έξοδο, ενώ έχει τιμή μια XPath έκφραση. <xsl:value-of select= class/title > <xsl:value-of select= class/students/student/name/first > Π.Χ. <xsl:value-of select= class/students/student/major/@decided >

XSL Άσκηση 1 (1/3) Δίνεται το XML αρχείο note.xml: <?xml version="1.0"?> <note> <from>john</from> <to>merry</to> <message title="reminder" >Do nοt forget me</message> </note> Αντιγράψτε το και ανοίξτε το με έναν browser της επιλογής σας.

XSL Άσκηση 1 (2/3) Ζητείται να γράψετε ένα XSL stylesheet για το note, το οποίο να εμφανίζει το παρακάτω μήνυμα: There was a message from John to Merry with title Reminder. Διευκρινήσεις: Το όνομα John είναι γραμμένο με bold και το όνομα Merry με italic. Ονομάστε το stylesheet με όνομα note.xsl Προσθέστε στο note.xml την γραμμή που καθοδηγεί τον browser στο note.xsl. <?xml-stylesheet type = "text/xsl" href="note.xsl"?> Τέλος, ανοίξτε εκ νέου το note.xml με έναν browser της επιλογής σας.

XSL Άσκηση 1 (3/3) note.xsl

XSL Άσκηση 2 (1/2) Χρησιμοποιήστε το note.xml της άσκησης 1: <?xml version="1.0"?> <note> <from>john</from> <to>merry</to> <message title="reminder" >Do nοt forget me</message> </note> Ζητείται να γράψετε ένα XSL stylesheet (note2.xsl), το οποίο να εμφανίζει το note.xml στην παρακάτω μορφή (HTML table): Διευκρινήσεις: 1. Οι τίτλοι στον πίνακα είναι bold. 2. Ο πίνακας έχει border=5 και cellpadding=5. 3. Ονομάστε το νέο αρχείο note2.xsl.

XSL Άσκηση 2 Λύση (2/2) note2.xsl

XSL Κανόνες: XSL for-each & if Το <xsl:for-each> element χρησιμοποιείται για να κάνει επανάληψη (looping), και έχει τιμή μια XPath έκφραση. Επίσης, δίνει τη δυνατότητα να φιλτράρουμε την επιλογή μας, πχ.: <xsl:for-each select="library/book[price='14']"> που σημαίνει ότι, μας βγάζει τα δεδομένα για τα βιβλία που έχουν τιμή 14. Το <xsl:if> element βάζει μια συνθήκη. Με άλλα λόγια, επιτρέπει να ανακτήσουμε υπό συνθήκη την τιμή των των elements ή attributes, πχ.: <xsl:if test= PRICE > 15"> που σημαίνει ότι, εμφανίζει εκείνα τα δεδομένα που έχουν τιμή μεγαλύτερη από 15.

XSL Άσκηση 3 (1/3) Κατεβάστε το αρχείο class.xml και το αρχείο class.xsl. Ανοίξτε το αρχείο class.xml με έναν browser της επιλογής σας. Το αποτέλεσμα που θα δείτε είναι το παρακάτω:

XSL Άσκηση 3 (2/3) Ζητείται να τροποποιήσετε το αρχείο class.xsl έτσι ώστε, από όλους τους students που έχουν major (decided = "y") να εμφανίσετε σε unordered list το κείμενο των στοιχείων <majorname>. Υπενθύμιση: Το HTML συντακτικό για την unordered list: <UL> <LI> </LI> <LI> </LI> </UL> Το αποτέλεσμα θα πρέπει να είναι το παρακάτω (class2.xsl):

XSL Άσκηση 3 Λύση (3/3) class2.xsl

XSL Άσκηση 4 (1/5) Κατεβάστε το αρχείο student-major.xml και το αρχείο student-major.xsl. Ανοίξτε το αρχείο student-major.xml με έναν browser της επιλογής σας. Το αποτέλεσμα που θα δείτε είναι το παρακάτω:

XSL Άσκηση 4 (2/5) Ζητείται να τροποποιήσετε το αρχείο student-major.xsl έτσι ώστε, να παρουσιάσετε το αρχείο student-major.xml σαν έναν πίνακα με μια στήλη για τα student names και μια άλλη για τα major. Αν ο student δεν έχει καθόλου major, τότε να εμφανίζεται η φράση Ν/Α στην στήλη των major. Υπενθύμιση: Το HTML συντακτικό για τον πίνακα είναι: <TABLE BORDER = n > <TR> <TH> header </TH> </TR> <TR> <TD> data</td> </TR> </TABLE> Θα χρησιμοποιήσετε <xsl:for-each> και δύο <xsl:if> μέσα σε αυτό.

XSL Άσκηση 4 (3/5) Το αποτέλεσμα θα πρέπει να είναι το παρακάτω (student-major2.xsl):

XSL Άσκηση 4 Λύση (4/5) student-major2.xsl Α ΤΡΟΠΟΣ

XSL Άσκηση 4 Λύση (5/5) student-major2.xsl Β ΤΡΟΠΟΣ

XSL Κανόνες: XSL sort & choose Το <xsl:sort> element ταξινομεί την έξοδο, και το προσθέτουμε ανάμεσα στο <xsl:for-each> element και στο <xsl:template> element. Η τιμή της select attribute δείχνει βάσει ποιου element θα γίνει η ταξινόμηση, πχ.: <xsl:sort select= PRICE"/> που σημαίνει ότι ταξινομεί τα δεδομένα βάσει της τιμής. Το element <xsl:choose> χρησιμοποιείται σε συνδυασμό με τα <xsl:when>, <xsl:otherwise> για να δηλώσει πολλές συνθήκες και συντάσσεται ως εξής: <xsl:choose> <xsl:when test="expression">... some output... </xsl:when> <xsl:otherwise>... some output... </xsl:otherwise> </xsl:choose>

XSL Κανόνες: XSL apply-templates Το element <xsl:apply-templates> δημιουργεί ένα template για το τρέχον element ή για τα child nodes του τρέχοντος element. Προσθέτοντας μία select attribute στο <xsl:apply-templates> element, προωθούμε μόνο το child element, στο οποίο ταιριάζει η τιμή της attribute. Μπορούμε να χρησιμοποιήσουμε την select attribute για να προσδιορίσουμε τη σειρά, με την οποία τα child nodes προωθούνται. Μπορεί να χρησιμοποιηθεί ως εναλλακτική του <xsl:for-each>.

XSL Άσκηση 5 (1/4) Δίνεται το παρακάτω XML αρχείο, lunch_menu.xml:

XSL Άσκηση 5 (2/4) Ζητείται να φτιαχτεί ο παρακάτω πίνακας, ώστε να πληρούνται τα παρακάτω κριτήρια: Η επικεφαλίδα Lunch Menu είναι h2. Ο πίνακας έχει border=1. Το χρώμα της πρώτης γραμμής του πίνακα είναι lightblue. Οι γραμμές του πίνακα είναι ταξινομημένες με βάση το όνομα (name).

XSL Άσκηση 5 Λύση (3/4) lunch_menu.xsl:

XSL Άσκηση 5 Λύση (4/4) Δεν ξεχνάμε να προσθέσουμε την παρακάτω εντολή στο lunch_menu.xml, ώστε να γίνει η σύνδεσή του με το lunch_menu.xml: <?xml-stylesheet type="text/xsl" href="lunch_menu.xsl"?>

XSL Άσκηση 6 (1/2) Τροποποιείστε το αρχείο της άσκησης 5, lunch_menu.xsl, έτσι ώστε να επιλέξετε όλα τα food με name Cheese Burger και να έχετε το παρακάτω αποτέλεσμα:

XSL Άσκηση 6 Λύση (2/2) lunch_menu2.xsl:

Μέρος του depcourses.xml (ένα δείγμα, όχι ολόκληρο το αρχείο) XSL Άσκηση 7 (1/6) Δίνεται ένα σύνολο δεδομένων XML (κατεβάστε το depcourses.xml από τον Εύδοξο) που αποτυπώνει έναν κατάλογο μαθημάτων. Από τα δεδομένα πληροφορούμαστε ότι υπάρχουν πολλά τμήματα, κάθε ένα έχει το δικό του πρόεδρο, κάποια μαθήματα και καθηγητές ή/και λέκτορες που τους έχουν ανατεθεί να διδάσκουν τα μαθήματα.

XSL Άσκηση 7 (2/6) 1 ο Ζητούμενο: Γράψτε ένα XSLT Query, το οποίο θα επιστρέφει μία λίστα με τους τίτλους των Τμημάτων (department titles). Η λύση σας θα πρέπει να ακολουθεί το παρακάτω stylesheet: <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match=...>... template body... </xsl:template>... more templates as needed... </xsl:stylesheet> ΛΥΣΗ: <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="department"> <Title><xsl:value-of select="title" /></Title> </xsl:template> </xsl:stylesheet>

XSL Άσκηση 7 (3/6) 2ο Ζητούμενο: Γράψτε ένα XSLT Query, το οποίο θα επιστρέφει μία λίστα με στοιχεία των Τμημάτων (department elements) με κανένα attribute και δύο υποστοιχεία (subelements): τον τίτλο του Τμήματος (department title) και ολόκληρη τη δομή υποστοιχείων για τον Πρόεδρο (Chair). Η λύση σας θα πρέπει να ακολουθεί το παρακάτω stylesheet: <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match=...>... template body... </xsl:template>... more templates as needed... </xsl:stylesheet> Το <xsl:copy-of> element δημιουργεί ένα αντίγραφο του τρέχοντος κόμβου. Κόμβοι Namespace, παιδιά-κόμβοι, και attributes του τρέχοντος κόμβου αυτομάτως αντιγράφονται όλα. ΛΥΣΗ: <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="department"> <Department> <Title><xsl:value-of select="title" /></Title> <xsl:copy-of select="chair" /> </Department> </xsl:template> </xsl:stylesheet>

XSL Άσκηση 7 (4/6) 3ο Ζητούμενο: Γράψτε το XPATH, έτσι ώστε να επιστρέφονται όλα τα elements Title (και για τα Τμήματαdepartments- και για τα μαθήματα-courses-). Σημείωση: Η λύση σας θα πρέπει να κάνει και αναφορά στο xml αρχείο doc ("depcourses.xml ") που θα έχει πρόσβαση στα δεδομένα. Απάντηση: doc("depcourses.xml")//title 4ο Ζητούμενο: Γράψτε το XPATH, έτσι ώστε να επιστρέφονται τα επίθετα (last names) όλων των Προέδρων των Τμημάτων. Σημείωση: Η λύση σας θα πρέπει να κάνει και αναφορά στο xml αρχείο doc ("depcourses.xml ") που θα έχει πρόσβαση στα δεδομένα. Απάντηση: doc("depcourses.xml")//chair/professor/last_name

XSL Άσκηση 7 (5/6) 5ο Ζητούμενο: Γράψτε το XPATH, έτσι ώστε να επιστρέφονται οι τίτλοι των μαθημάτων με συμμετοχή (enrollement) μεγαλύτερη από 500. Σημείωση: Η λύση σας θα πρέπει να κάνει και αναφορά στο xml αρχείο doc ("depcourses.xml ") που θα έχει πρόσβαση στα δεδομένα. Απάντηση: doc("depcourses.xml")//course[@enrollment > 500]/Title 6ο Ζητούμενο: Γράψτε το XPATH, έτσι ώστε να επιστρέφονται οι τίτλοι των Τμημάτων που έχουν κάποιο μάθημα που έχει ως προαπαιτούμενο το "CS106B". Σημείωση: Η λύση σας θα πρέπει να κάνει και αναφορά στο xml αρχείο doc ("depcourses.xml ") που θα έχει πρόσβαση στα δεδομένα. Απάντηση: doc("depcourses.xml")//department[course/prerequisites/prereq = "CS106B"]/Title

XSL Άσκηση 7 (6/6) 7ο Ζητούμενο: Γράψτε το XPATH, έτσι ώστε να επιστρέφονται τα επίθετα των Καθηγητών/Λεκτόρων που χρησιμοποιούν το μεσαίο αρχικό γράμμα ονόματος (middle initial). Αγνοήστε τις διπλές τιμές αν υπάρχουν. Σημείωση: Η λύση σας θα πρέπει να κάνει και αναφορά στο xml αρχείο doc ("depcourses.xml ") που θα έχει πρόσβαση στα δεδομένα. Απάντηση: doc("depcourses.xml")//(lecturer Professor)[Middle_Initial]/Last_Name 8ο Ζητούμενο: Γράψτε το XPATH, έτσι ώστε να επιστρέφεται το σύνολο (ο αριθμός) των μαθημάτων που έχουν ένα cross-listed μάθημα (π.χ. που έχουν το "Cross-listed" στην περιγραφή τους). Σημείωση: Η λύση σας θα πρέπει να κάνει και αναφορά στο xml αρχείο doc ("depcourses.xml ") που θα έχει πρόσβαση στα δεδομένα. Απάντηση: count(doc("depcourses.xml")//course[contains(description, "Cross-listed")]/Title)

CSS και XSL Παράδειγμα (1/2) 1. Δημιουργήστε ένα XML file με το ακόλουθο περιεχόμενο και σώστε το (tutorials.xml).

CSS και XSL Παράδειγμα (2/2) 2. Δημιουργήστε ένα αρχείο με το ακόλουθο περιεχόμενο και σώστε το με το όνομα tutorials.xsl στο ίδιο directory με το XML file και ανοίξτε το xml αρχείο στο browser.

Ερώτηση 1 σε XSL (1/3) Επιλέξτε ποιο από τις παρακάτω τέσσερεις επιλογές αποτελεί σωστό XSLT stylesheet για να εξάγει Transformation Results ταξινομημένα με την τιμή του attribute «Password» για το παρακάτω XML Έγγραφο. XML Document : <?xml version="1.0" encoding="utf-8"?> <UserList> <UserID Password="xxxxxx" Delete="1">User01</UserID> <UserID Password="zzzzzz" Delete="0">User02</UserID> <UserID Password="xyzxyz" Delete="0">User03</UserID> <UserID Password="yyyyyy" Delete="0">User04</UserID> </UserList> Transformation Results : User01/User03/User04/User02/

Ερώτηση 1 σε XSL (2/3) a. <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="text" /> <xsl:template match="/"> <xsl:sort select="@password" data-type="text" /> <xsl:apply-templates select="userlist/userid" /> </xsl:template> <xsl:template match="userid"> <xsl:value-of select="." /><xsl:text>/</xsl:text> </xsl:template> </xsl:stylesheet> b. <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="text" /> <xsl:template match="/"> <xsl:apply-templates select="userlist/userid" /> <xsl:sort select="@password" data-type="text" /> </xsl:template> <xsl:template match="userid"> <xsl:value-of select="." /><xsl:text>/</xsl:text> </xsl:template> </xsl:stylesheet>

Ερώτηση 1 σε XSL (3/3) c. <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="text" /> <xsl:template match="/"> <xsl:apply-templates select="userlist/userid"> <xsl:sort select="@password" data-type="text" /> </xsl:apply-templates> </xsl:template> <xsl:template match="userid"> <xsl:value-of select="." /><xsl:text>/</xsl:text> </xsl:template> </xsl:stylesheet> d. <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="text" /> <xsl:template match="/"> <xsl:apply-templates select="userlist/userid" /> </xsl:template> <xsl:template match="userid"> <xsl:sort select="@password" data-type="text"> <xsl:value-of select="." /><xsl:text>/</xsl:text> </xsl:sort> </xsl:template> </xsl:stylesheet> Σωστή Απάντηση: c

Ερώτηση 2 σε XSL (1/2) Επιλέξτε ποιο από τις παρακάτω τέσσερεις επιλογές αποτελεί σωστό αποτέλεσμα μετάφρασης (transformation result) όταν εφαρμοστεί το παρακάτω XSLT Stylesheet στο παρακάτω XML Έγγραφο. XML Document : <?xml version="1.0" encoding="utf-8"?> <UserList> <UserID Password="xxxxxx" authority="administrator">user01</userid> <UserID Password="zzzzzz" authority="general">user02</userid> <UserID Password="xyzxyz" authority="system">user03</userid> <UserID Password="yyyyyy" authority="general">user04</userid> </UserList> XSLT Stylesheet : <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <SystemUserList> <xsl:apply-templates select="userlist/userid" /> </SystemUserList> </xsl:template> <xsl:template match="userid"> <xsl:if test="@authority='system'"> <UserID><xsl:value-of select="text()" /></UserID> <xsl:element name="authority"><xsl:value-of select="@authority" /></xsl:element> </xsl:if> </xsl:template> </xsl:stylesheet>

Ερώτηση 2 σε XSL (2/2) a. <?xml version="1.0" encoding="utf-8"?> <UserID>User03</UserID> <authority>system</authority> b. <?xml version="1.0" encoding="utf-8"?> <SystemUserList> <UserID>User03</UserID> </SystemUserList> c. <?xml version="1.0" encoding="utf-8"?> <SystemUserList> <authority>system</authority> <UserID>User03</UserID> </SystemUserList> d. <?xml version="1.0" encoding="utf-8"?> <SystemUserList> <UserID>User03</UserID> <authority>system</authority> </SystemUserList> Σωστή Απάντηση: d

Ερωτήσεις??