Αναπαράςταςθ Γνϊςθσ ςτον Παγκόςμιο Ιςτό Ενότθτα 2: XML Δομθμζνα Ζγγραφα Ιςτοφ, Μζροσ 5 ο XSLT Ιωάννθσ Χατηθλυγεροφδθσ Πολυτεχνικι χολι Σμιμα Μθχ/κϊν Η/Τπολογιςτϊν & Πλθροφορικισ
Περιεχόμενα ενότθτασ Μζροσ 4 ο XSLT Διαμόρφωςθ / Μεταςχθματιςμόσ XML 1. Χριςθ Φφλλων Επάλλθλων τυλ (Cascading Style Sheets- CSS) 2. Με δζςμευςθ δεδομζνων-χριςθ Αντικειμζνου Προζλευςθσ Δεδομζνων (Data Source Object-DSO) 3. Μζςω Μοντζλου Αντικειμζνων Δεδομζνων (Data Object Model-DOM) 4. Γλϊςςα Φφλλων τυλ-μεταςχθματιςμοφ (XSL-XSLT) 2/33
Φφλλα Επαλλιλων τυλ (CSS) Είναι ζνα αρχείο (xxx.css) που περιζχει εντολζσ μορφοποίθςθσ εγγράφων XML. Προςαρτάται ςτο αρχείο XML. Ζνα ζγγραφο XML με προςαρτθμζνο css μπορεί να ανοίξει κατ ευκείαν από τον φυλλομετρθτι (browser). Πλεονεκτιματα o Ευελιξία και ςυντθρθςιμότθτα (προςαρμογι εμφάνιςθσ ανάλογα με τθν εφαρμογι, ζνα css για ομάδα εγγράφων) Μειονεκτιματα o Δεν επιτρζπει αλλαγι μορφισ ι διάταξθσ του περιεχομζνου o Δεν επιρζπει πρόςβαςθ ςε ιδιότθτεσ, οντότθτεσ, εντολζσ επεξεργαςίασ και άλλα μζρθ του εγγράφου XML o Δεν ζχει δυνατότθτεσ επεξεργαςίασ του περιεχομζνου 3/33
Φφλλα Επαλλιλων τυλ(css) Διαδικαςία o Δθμιουργία αρχείου css o φνδεςθ με το ζγγραφο XML Γενική μορφή: <?xml-stylsheet type="text/css" href=cssfilepath?> Π.χ. <?xml-stylsheet type="text/css" href="http://aigroup.ceid.upatras.gr/mycss.css"?> ή <?xml-stylsheet type="text/css" href="mycss.css"?> (ςτον ίδιο κατάλογο) o Μποροφν να ςυμπεριλθφκοφν περιςςότερα του ενόσ css ςτο ίδιο ζγγραφο. Προτεραιότθτα δίνεται ςτο τελευταίο. 4/33
Φφλλα Επαλλιλων τυλ(css) Αρχείο: library.xml <?xml version ="1.0"?> <?xml-stylesheet type="text/css" ref="library.css"?> <library> <book> <title>artificial Intelligence</title> <author>patrick Winston</author> <pages>550</pages> </book> <book> <title>intelligent Agents</title> <author>michael Jennings</author> <pages>240</pages> </book> </library> Εμφάνιςθ: Artificial Intelligence Patrick Winston 550 Intelligent Agents Michael Jennings 240 Αρχείο: library.css book { display: block; margin-top: 12pt; font-size: 10pt } title { font-style: italic } author { font-weight: bold } 5/33
Με Δζςμευςθ Δεδομζνων (DSO) υνδζεται ζνα ζγγραφο XML με μια ςελίδα HTML (ςτοιχεία HTML ςυνδζονται με ςτοιχεία XML, ϊςτε τα ςτοιχεία HTML να εμφανίηουν αυτόματα τα περιεχόμενα των ςτοιχείων XML). Λειτουργεί ςε ζγγραφα XML που ζχουν ςυμμετρικι δομι (ςαν τυπικι βάςθ δεδομζνων: ςφνολο εγγραφϊν που περιζχουν ςυγκεκριμζνα πεδία). 6/33
Με Δζςμευςθ Δεδομζνων (DSO) Π.χ: <book> <title>artificial Intelligence</title> <author>patrick Winston</author> <pages>550</pages> </book> <book> <title>intelligent Agents</title> <author>michael Jennings</author> <pages>240</pages> </book> 7/33
Με Δζςμευςθ Δεδομζνων (DSO) Διαδικαςία o φνδεςθ εγγράφου XML ςτθ ςελίδα HTML <xml id="dsobook" src="book.xml"> </xml> υμπερίλθψθ όλου του κειμζνου του εγγράφου XML ςτο ζγγραφο HTML o Δζςμευςθ ςτοιχείων HTML ςε ςτοιχεία XML Δζςμευςθ δεδομζνων πίνακα: TABLE (αφορά όλεσ τισ εγγραφζσ) Δζςμευςθ δεδομζνων εγγραφισ: SPAN (αφορά μια εγγραφι) 8/33
Με Δζςμευςθ Δεδομζνων (DSO) Ο επεξεργαςτισ XML του Internet Explorer με τθν ανάγνωςθ ενόσ εγγράφου δθμιουργεί ζνα Αντικείμενο Προζλευςθσ Δεδομζνων (Data Source Object-DSO), το οποίο αποκθκεφει τα δεδομζνα του εγγράφου ωσ ςφνολο εγγραφϊν. Σο DSO δίνει τθ δυνατότθτα προςπζλαςθσ των εγγραφϊν μζςω μεκόδων, ιδιοτιτων και ςυμβάντων. 9/33
Μοντζλο DOM Μοντζλο Αντικειμζνων Δεδομζνων - Data Object Model (DOM): φνολο αντικειμζνων που αντιπροςωπεφουν διάφορα μζρθ ενόσ εγγράφου XML Δθμιουργείται (ςτον IE) μαηί με το DSO Αποκθκεφει τα δεδομζνα ιεραρχικά (δενδρικι δομι) Μπορεί να χρθςιμοποιθκεί για οποιοδιποτε ζγγραφο XML 10/33
Μοντζλο DOM Οι ιδιότθτεσ και οι μζκοδοι των αντικειμζνων επιτρζπουν τθ χριςθ ςεναρίων εμφάνιςθσ του εγγράφου XML μζςα από μια ςελίδα HTML Επιτρζπει τθν προςπζλαςθ οποιουδιποτε τμιματοσ του εγγράφου (ςτοιχεία, ιδιότθτεσ, εντολζσ επεξεργαςίασ, ςχόλια κλπ) 11/33
Μοντζλο DOM φνδεςθ εγγράφου ςε ςελίδα HTML: <body> <xml id="dsobook" src="book.xml"> </xml> 12/33
XSL-XSLT XSL (EXtensible Stylesheet Language): Είναι μια γλϊςςα φφλλων ςτυλ για ζγγραφα XML XSLT (XSL Transformations): Είναι μια γλϊςςα μεταςχθματιςμοφ-μζροσ τθσ XSL o Ορίηει κανόνεσ για τον μεταςχθματιςμό ενόσ εγγράφου XML ςε άλλο ζγγραφο XML ι ςε ζγγραφο HTML ι ςε απλό κείμενο (ζγγραφο εξόδου) o Σο ζγγραφο εξόδου μπορεί να χρθςιμοποιεί το ίδιο DTD ι XML Schema με το ζγγραφο ειςόδου ι όχι o Η XSLT χρθςιμοποιείται εν γζνει όταν υπάρχει ανάγκθ επικοινωνίασ ανάμεςα ςε εφαρμογζσ που χρθςιμοποιοφν διαφορετικά DTD ι XML Schemata Η XSL περιλαμβάνει επίςθσ και μια γλϊςςα μορφοποίθςθσ, ανεξάρτθτθ από τθν XSLT 13/33
XSLT Η XSLT είναι μια εφαρμογι τθσ XML Ζνα ζγγραφο XSLT ορίηει ζνα πρότυπο (template), π.χ. ζνα ζγγραφο HTML με κάποια δεςμευτικά κζςθσ για ειςαγωγι περιεχομζνου. Ζνα ζγγραφο XSLT εφαρμόηεται ς ζνα ζγγραφο XML και παράγει ζνα άλλο ζγγραφο π.χ. (ςυνικωσ) HTML. Αυτό επιτυγχάνεται μετατρζποντασ κάκε ςτοιχείο XML ςε ςτοιχείο (X)HTML. 14/33
XSLT Πρότυπα Η XSLT χρθςιμοποιεί εκφράςεισ Xpath για να προςδιορίςει ενδιαφζροντα τμιματα-πλθροφορίεσ ςε ζνα ζγγραφο XML. Ζνα ζγγραφο XSLT (XSLT Style Sheet) ζχει ωσ ςτοιχείο ρίηασ το (από το οποίο και αναγνωρίηεται): <xsl:stylesheet> ι <xsl:transform> Ζνα ζγγραφο XSLT αποτελείται από ζνα ι περιςςότερα ςφνολα κανόνων, που ονομάηονται πρότυπα (templates). Ζνα πρότυπο περιζχει κανόνεσ που εφαρμόηονται όταν βρεκεί ζνασ ςυγκεκριμζνοσ κόμβοσ που ταιριάηει ςτο πρότυπο. 15/33
XSLT Πρότυπα Για τθ δθμιουργία ενόσ προτφπου χρθςιμοποιείται το ςτοιχείο: <xsl:template> Σο χαρακτθριςτικό match χρθςιμοποιείται για να ςυςχετίςει ζνα πρότυπο με ζνα ςτοιχείο XML. Η τιμι του είναι μια ζκφραςθ XPath (το match= / ορίηει όλο το ζγγραφο). 16/33
XSLT-Εφαρμογι Προτφπων Για τθν εξαγωγι τθσ τιμισ ενόσ ςτοιχείου XML και τθν αποτφπωςι του ςτο ζγγραφο εξόδου χρθςιμοποιείται το ςτοιχείο: <xsl:value-of select="xpath expression"> Για εφαρμογι ςε περιςςότερα του ενόσ ςτοιχεία XML ενόσ κόμβου χρθςιμοποιείται το ςτοιχείο: <xsl:for-each select="xpath expression"> Μποροφμε να φιλτράρουμε το αποτζλεςμα εξόδου προςκζτοντασ κάποιο κριτιριο: <xsl:for-each select= "Xpath expression[<tag-name><filter-oper><content>]"> Σελεςτζσ φίλτρου: =,!=, <, > 17/33
XSLT-Εφαρμογι Προτφπων Π.χ. <xsl:for-each select= "authors[affiliation=griffith University]"> Για τθν ταξινόμθςθ των εξόδων χρθςιμοποιείται : <xsl:for-each select="author"> <xsl:sort select="name"/> </xsl:for-each> Για εφαρμογι ενόσ προτφπου ςτο τρζχον ςτοιχείο ι ςτουσ κόμβουσπαιδιά του τρζχοντοσ κόμβου χρθςιμοποιείται το ςτοιχείο: <xsl:apply-templates select="authors"> 18/33
ΔΙΑΔΙΚΑΙΑ ΜΕΣΑΣΡΟΠΗ 1. Προςδιορίηουμε το προσ μετατροπι ζγγραφο (π.χ. library.xml) 2. Δθμιουργοφμε ζνα ζγγραφο XSL Style Sheet (π.χ. library.xsl) 3. Δθμιουργοφμε μια αναφορά για το ζγγραφο XSLT μζςα ςτο ζγγραφο XML: <?xml-stylesheet type="text/xsl" href="library.xsl"?> (ακριβϊσ μετά τθ διλωςθ <?xml version="1.0" >) 19/33
Ζγγραφο ειςόδου XSLT-Παράδειγμα 1 Ζγγραφο εξόδου <author> <name>yannis Hatzis</name> <affiliation>university of Patras</affiliation> <email>ihatz@cti.gr</email> </author> XML <?xml version="1.0" encoding="utf-16"> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/author"> <html> <head> <title>an author</title> </head> <body bgcolor="white"> <b><xsl:value-of select="name"/><b><br></br> <xsl:value-of select="affiliation"/><br></br> <i><xsl:value-of select="email"/></i> </body> </html> </xsl:template> </xsl:stylesheet> <html> <head> <title>an author</title> </head> <body bgcolor="white"> <b>yannis Hatzis</b><br> University of Patras<br> <i>ihatz@cti.gr</i> </body> </html> HTML <html> <head> <title>an author</title> </head> <body bgcolor="white"> <b> </b><br> <br> <i> </i> </body> </html> Ζγγραφο μεταςχθματιςμοφ XSLT Πρότυπο HTML
XSLT-Παράδειγμα 2 Ζγγραφο ειςόδου (XML) <authors> <author> <name>grigoris Antoniou</name> <affiliation>university of Bremen</affiliation> <email>ga@tzi.de</email> </author> <author> <name>david Billington</name> <affiliation>griffith University</affiliation> <email>david@gu.edu.net</email> </author> </authors> Χειριςμόσ πολλαπλϊν όμοιων ςτοιχείων (εδϊ author)
XSLT-Παράδειγμα 2 Ζγγραφο μεταςχθματιςμοφ (XSLT) <?xml version="1.0" encoding="utf-16"> <xsl:stylesheet version="1.0" xmlns:xsl= "http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <head> <title>authors</title> </head> <body bgcolor="white"> <xsl:apply-templates select="authors"/> <! Apply templates for AUTHORS children --> </body> </html> </xsl:template> <xsl:template match="authors"> <xsl:apply-templates select="author"/> </xsl:template> Χριςθ apply-templates: προκαλεί εφαρμογι του προτφπου ςε όλα τα παιδιά του ςτοιχείου αναφοράσ, που είναι του επιλεγζντοσ τφπου. <xsl:template match="author"> <h2><xsl:value-of select="name"/></h2> Affiliation:< xsl:value-of select="affiliation"/> <br> Email: < xsl:value-of select="email"/> <p> </xsl:template> </xsl:stylsheet>
XSLT-Παράδειγμα 2 Ζγγραφο εξόδου <html> <head> <title>authors</title> </head> <body bgcolor="white"> <h2>grigoris Antoniou</h2> Affiliation: University of Bremen<br> Email: ga@tzi.de <p> <h2>david Billington</h2> Affiliation: Griffith University<br> Email: david@gu.edu.net <p> </body> </html>
XSLT-Παράδειγμα 3 Επεξεργαςία ςτοιχείου με χαρακτθριςτικά <person firstname="john" lastname="woo"/> <xsl:template match="person"> <person firstname="<xsl:value-of select="@firstname">" lastname="<xsl:value-of select="@lastname">"/> </xsl:template> Δεν επιτρζπονται ετικζτεσ μζςα ςε τιμζσ χαρακτθριςτικϊν. <xsl:template match="person"> <person firstname="{@firstname}" lastname="{@lastname}"/> </xsl:template>
XSLT-Παράδειγμα 4 Μετατροπι εγγράφου XML ςε άλλο ζγγραφο XML <?xml version="1.0" encoding="utf-16"> <xsl:stylesheet version="1.0 xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <authors> <xsl:apply-templates select="authors"/> </authors> </xsl:template> <xsl:template match="authors"> <author> <name> <xsl:value-of select="name"/> </name> <contact> <institute> <xsl:value-of select="affiliation"/> </institute> <email> <xsl:value-of select="email"/> </email> </contact> </author> <xsl:template> </xsl:stylesheet>
XSLT-Παράδειγμα 4 Root authors author author name affiliation email name affiliation name Grigoris Antoniou University of Bremen ga@tzi.de David Billington Griffith University david@gu.e du.net
XSLT-Παράδειγμα 4 Root authors author author name contact name contact institute email affiliation name Grigoris Antoniou University of Bremen ga@tzi.de David Billington Griffith University david@gu.e du.net
Χρθματοδότθςθ Σο παρόν εκπαιδευτικό υλικό ζχει αναπτυχκεί ςτo πλαίςιo του εκπαιδευτικοφ ζργου του διδάςκοντα. Σο ζργο «Ανοικτά Ακαδθμαϊκά Μακιματα ςτο Πανεπιςτιμιο Ακθνών» ζχει χρθματοδοτιςει μόνο τθν αναδιαμόρφωςθ του εκπαιδευτικοφ υλικοφ. Σο ζργο υλοποιείται ςτο πλαίςιο του Επιχειρθςιακοφ Προγράμματοσ «Εκπαίδευςθ και Δια Βίου Μάκθςθ» και ςυγχρθματοδοτείται από τθν Ευρωπαϊκι Ζνωςθ (Ευρωπαϊκό Κοινωνικό Σαμείο) και από εκνικοφσ πόρουσ. 28/33
θμείωμα Ιςτορικοφ Εκδόςεων Ζργου Σο παρόν ζργο αποτελεί τθν ζκδοςθ 1.0. 29/33
θμείωμα Αναφοράσ Copyright: Πανεπιςτιμιον Πατρϊν, Ιωάννθσ Χατηθλυγεροφδθσ, 2015. «Αναπαράςταςθ Γνϊςθσ ςτον Παγκόςμιο Ιςτό. XML». Ζκδοςθ: 1.0. Πάτρα 2015. Διακζςιμο από τθ δικτυακι διεφκυνςθ: https://eclass.upatras.gr/courses/ceid1098/ 30/33
θμείωμα Αδειοδότθςθσ Σο παρόν υλικό διατίκεται με τουσ όρουσ τθσ άδειασ χριςθσ Creative Commons Αναφορά, Μθ Εμπορικι Χριςθ Παρόμοια Διανομι 4.0 *1+ ι μεταγενζςτερθ, Διεκνισ Ζκδοςθ. Εξαιροφνται τα αυτοτελι ζργα τρίτων π.χ. φωτογραφίεσ, διαγράμματα κ.λ.π., τα οποία εμπεριζχονται ςε αυτό και τα οποία αναφζρονται μαηί με τουσ όρουσ χριςθσ τουσ ςτο «θμείωμα Χριςθσ Ζργων Σρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ωσ Μθ Εμπορικι ορίηεται θ χριςθ: που δεν περιλαμβάνει άμεςο ι ζμμεςο οικονομικό όφελοσ από τθν χριςθ του ζργου, για το διανομζα του ζργου και αδειοδόχο που δεν περιλαμβάνει οικονομικι ςυναλλαγι ωσ προχπόκεςθ για τθ χριςθ ι πρόςβαςθ ςτο ζργο που δεν προςπορίηει ςτο διανομζα του ζργου και αδειοδόχο ζμμεςο οικονομικό όφελοσ (π.χ. διαφθμίςεισ) από τθν προβολι του ζργου ςε διαδικτυακό τόπο Ο δικαιοφχοσ μπορεί να παρζχει ςτον αδειοδόχο ξεχωριςτι άδεια να χρθςιμοποιεί το ζργο για εμπορικι χριςθ, εφόςον αυτό του ηθτθκεί.
Διατιρθςθ θμειωμάτων Οποιαδιποτε αναπαραγωγι ι διαςκευι του υλικοφ κα πρζπει να ςυμπεριλαμβάνει: το θμείωμα Αναφοράσ το θμείωμα Αδειοδότθςθσ τθ διλωςθ Διατιρθςθσ θμειωμάτων το θμείωμα Χριςθσ Ζργων Σρίτων (εφόςον υπάρχει) μαηί με τουσ ςυνοδευόμενουσ υπερςυνδζςμουσ. 32/33
θμείωμα Χριςθσ Ζργων Σρίτων Οι διαφάνειεσ είναι κατά μεγάλο μζροσ βαςιςμζνεσ ςτο βιβλίο "Ειςαγωγι ςτον θμαςιολογικό Ιςτό", των Grigoris Antoniou και Frank van Harmelen, Β' ΖΚδοςθ, 2009 (Ελλθνικι Ζκδοςθ). 33/33