Μια εισαγωγή στην XSL Daemon τεύχος 2 Γιώργος Γεωργοβασίλης georgeg@di.uoa.gr
Τι θα δούμε Τι είναι η XSL; Ανασκόπηση Γενικά περί XML και XPath Γενικά περί XSL και εφαρμογών Παραδείγματα, σύνταξη κειμένων, βασικές εντολές Μια εισαγωγή στην XSL 2
Τι; XSL (extensible Stylesheet Language) XML για τον παγκόσμιο ιστό Κατέληξε στην XSL-FO XSLT (XSL Transformation) Μετασχηματισμός XML σε οτιδήποτε Μια εισαγωγή στην XSL 3
Πως; XML XSL Διερμηνέας Xalan Saxon MSXSLT XML HTML Μια εισαγωγή στην XSL 4
Για την ιστορία 1997: XSL Note, συγχώνευση των DSSSL και CSS σε σημειογραφία XSL 1998: Σύσταση ομάδας εργασίας, πρώτα demo Τελειοποίηση του recommendation, παρά ταύτα τελείως διαφορετικό πρωτότυπο, MSIE5 μιλάει XSL 1999: XSLT / XSL χωρίζουν, νέο πρότυπο XPath 2000: Τελειοποίηση των προδιαγραφών Μια εισαγωγή στην XSL 5
Εφαρμογές Τυπικές εφαρμογές της XSL Προσαρμογή εφαρμογών που επικοινωνούν με XML Παραγωγή HTML από XML Μια εισαγωγή στην XSL 6
XML, η γλώσσα μηχανής Εφαρμογή Εφαρμογή XML XML Εφαρμογή XSLT XML Μια εισαγωγή στην XSL 7
Παράδειγμα XML - βιβλία <?xml version="1.0" encoding="utf-8"?> <books> <book id="2"> <title>ζω για να τη διηγούμαι</title> <publisher>α.α. Λιβάνη</publisher> <author>2</author> <isbn>960-14-0694-8</isbn> </book> <book id="3"> <title>τάξη μέσα από το χάος</title> <publisher>κέδρος</publisher> <author>3</author> <author>4</author> <isbn>960-04-0629-4</isbn> </book> </books> Μια εισαγωγή στην XSL 8
Παράδειγμα XML - συγγραφείς <?xml version="1.0" encoding="utf-8"?> <authors> <author id="2"> <name>gabriel García Márquez</name> </author> <author id="3"> <name>ilya Prigogine</name> </author> <author id="4"> <name>isabelle Stengers</name> </author> </authors> Μια εισαγωγή στην XSL 9
XPath Χρήσιμη στην διάσχιση δένδρων XML και την εξαγωγή πληροφορίας από αυτά. Επεκτείνεται εύκολα με χρήσιμες συναρτήσεις από τον διερμηνέα. Μια εισαγωγή στην XSL 10
Συντακτικό XPath... x/y x/@a x[@a = v] x//y / τρέχον κόμβος πατέρας τα παιδιά y του x το attribute a του x τα x που έχουν a = v οποιοσδήποτε απόγονος y του x πατέρας του αρχικού κόμβου - ρίζα Μια εισαγωγή στην XSL 11
Παράδειγμα XPath - βιβλία <?xml version="1.0" encoding="utf-8"?> <books> <book id="2"> <title>ζω για να τη διηγούμαι</title> <publisher>α.α. Λιβάνη</publisher> <author>2</author> </book> <book id="3"> <title>τάξη μέσα από το χάος</title> <publisher>κέδρος</publisher> <author>3</author> <author>4</author> </book> </books> Μια εισαγωγή στην XSL 12
Παράδειγμα XPath βιβλία (2) /books/book ή //book //book[@id = 2] όλα τα βιβλία κόμβος με ID=2 //book[@id = 2]/title ή Ζω για να τη διηγούμαι //book[@id = 2]/title/text() //book/author[text() = 3] όλοι οι συγγραφείς #3 που έχουν γράψει κάποιο βιβλίο //book/author[text() = 3]/.. το βιβλίο με συγγραφέα #3 Μια εισαγωγή στην XSL 13
XSLT Ένα πρόγραμμα XSLT είναι XML Παραγωγή HTML από XML για σελίδες παγκοσμίου ιστού Παραγωγή Postscript από XML για εκτύπωση Μετασχηματισμός ενός κειμένου XML σε άλλο XML Προγραμματισμός εφαρμογών με XML Μια εισαγωγή στην XSL 14
Γενική Σύνταξη <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" > <xsl:template match="/"> </xsl:template> </xsl:stylesheet> Μια εισαγωγή στην XSL 15
Γειάσου κόσμε <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" > <xsl:output method="html" encoding="utf-8"/> <xsl:template match="/"> What's up doc? </xsl:template> </xsl:stylesheet> Μια εισαγωγή στην XSL 16
Παράδειγμα XML - βιβλία <?xml version="1.0" encoding="utf-8"?> <books> <book id="2"> <title>ζω για να τη διηγούμαι</title> <publisher>α.α. Λιβάνη</publisher> <author>2</author> <isbn>960-14-0694-8</isbn> </book> <book id="3"> <title>τάξη μέσα από το χάος</title> <publisher>κέδρος</publisher> <author>3</author> <author>4</author> <isbn>960-04-0629-4</isbn> </book> </books> Μια εισαγωγή στην XSL 17
Εφαρμοσμένο Πρότυπο 1) Ζω για να τη διηγούμαι <xsl:template match= book > 960-14-0694-8 <xsl:value-of select= position() /> 2) Τάξη μέσα από το χάος <xsl:value-of select=./title /> <p><i> 960-04-0629-4 (ISBN <xsl:value-of select= isbn /> </i></p> </xsl:template> Μια εισαγωγή στην XSL 18
Εφαρμογή Προτύπου <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" > <xsl:output method="html" encoding="utf-8"/> <xsl:include href="books.xsl"/> <xsl:template match="/"> <xsl:apply-templates select="books"/> </xsl:template> </xsl:stylesheet> Μια εισαγωγή στην XSL 19
Ονομασμένο Πρότυπο <xsl:template name="renderbook"> <xsl:param name="book"/> <xsl:param name="index"/> <xsl:value-of select="$index"/> <xsl:value-of select="$book/title"/> <p><i> (ISBN <xsl:value-of select="$book/isbn"/> </i></p> </xsl:template> Μια εισαγωγή στην XSL 20
Κλήση Προτύπου <xsl:template match="/"> <xsl:for-each select="books/book"> <xsl:call-template name="renderbook"> <xsl:with-param name="book" select="."/> <xsl:with-param name="index" select="position()"/> </xsl:call-template> </xsl:for-each> </xsl:template> Μια εισαγωγή στην XSL 21
Μεταβλητές <xsl:variable name= book1 select= //book[@id=3]"/> <xsl:variable name= bcount select= count(//book) /> <xsl:variable name="authors" select="document('auths.xml') /> <xsl:variable name= authorname /> select= $authors/author[@id = $book1/author]/name Μια εισαγωγή στην XSL 22
Εκτέλεση υπό προϋπόθεση 1 <xsl:if test= count(//books) < 10 > Κλείσε το computer, άνοιξε ένα βιβλίο </xsl:if> Μια εισαγωγή στην XSL 23
Εκτέλεση υπό προϋπόθεση 2 <xsl:choose> <xsl:when test= count(//books) < 10 > Κλείσε το computer, άνοιξε ένα βιβλίο. </xsl:when> <xsl:when test= count(//books) < 20 > Μπράβο. </xsl:when> <xsl:otherwise> Το παρακάνεις. </xsl:otherwise> </xsl:choose> Μια εισαγωγή στην XSL 24
Αναφορές W3C The XSL Family (XSL) W3C XML Schema W3C XML To XML πλαίσιο της Apache group Apache Xalan για Java Apache Xalan για C++ Apache XSL FOP SAXON XML Spy http://www.w3.org/style/xsl/ http://www.w3.org/xml/schema http://www.w3.org/xml/ http://xml.apache.org/ http://xml.apache.org/xalan-j/index.html http://xml.apache.org/xalan-c/index.html http://xml.apache.org/fop/index.html http://saxon.sourceforge.net/ http://www.altova.com Microsoft XML General Downloads http://msdn.microsoft.com/library/default.asp?url=/downloads/list/xmlgeneral.asp XSL History http://www.w3.org/style/xsl/oldstuff.html#oldnews Java and XSLT, O'Reilly, ISBN 0-596-00143-6 Μια εισαγωγή στην XSL 25