XSL und XSLT Mathias Heilig eMail: [email protected] XSL und XSLT Inhalt XSL Übersicht – XSL im XML- Umfeld – XSLT – XPath – XSL- FO – Was können wir mit XSLT heute machen? Formatierungsprozess – XSLT im XML- Formatierungsprozess – Transformation Sprachbeschreibung – Templates – Strukturierte Anweisungen – Erzeugung von Knoten Vorführung Resümee 2 XSL und XSLT XSL im XML Umfeld 3 XSL und XSLT Was ist XSL? XSL (eXtensible Stylesheet Language) ist eine Sprachfamilie zur Erzeugung von Layouts aus XML- Dokumenten. XSL wird mit Hilfe von XML definiert .(keine eigene Syntax) Zu XSL gehören: das XML-basierte XSLT für die Transformation eines beliebigen XML-Dokuments in einen anderen Baum. das XSL-FO (XSL Formatting Objects) für die Beschreibung eines Dokuments als Baum mit Formatierungsanweisungen und Stilangaben. Und XPath für die Adressierung von Baumbestandteilen. 4 XSL und XSLT XSLT - Transformation XML wurde konzipiert, um Daten zu strukturieren. längere oder komplexere XML-Dateien sind schwer zu lesen. Überführung der Struktur eines Quelldokuments in Syntax und Semantik des Zielformats. 5 XSL und XSLT XPath XPath (XML Path Language) ist eine Abfrage-Sprache, um Teile eines XML-Dokumentes zu adressieren. XPath betrachtet, ähnlich dem DOM XML-Dokumente als Baumstruktur. XPath wird nicht nur von XSLT, sondern auch von anderen Werkzeugen benutzt (z.B. Xlink / Xpointer, Abfragesprache in XMLDatenbanken) 6 XSL und XSLT Zugriffsarten von XPath . .. / * @name @* node[1] node[@value = ".."] node1//node2 text() () Der aktuelle Knoten Der übergeordnete Knoten Der Wurzelknoten Alle Elemente Alle name-Attribute Alle Attribute Alle node-Elemente, die das erste nodeElement ihres übergeordneten Elements sind Alle node-Elemente, die ".." als valueAttribut haben Alle node2-Elemente unterhalb eines node1-Elements Alle Textknoten Alle Knoten 7 XSL und XSLT XSL- FO Format für exakte Positionierung und Paginierung Weit reichende Gestaltungsmöglichkeiten für Schriften etc. Neutrales Format Beschreibung nicht auf ein reales Medium bezogen Ausgabe von nachgeordneten Formatierern (PDF, PostScript, RTF, Grafiken…) Spezifikation noch immer keine Empfehlung des W3C Es zeichnet sich nicht ab, dass dieses Format sich rasch durchsetzen wird. 8 XSL und XSLT XSL- FO Elemente dieses Formats werden Formatting Objects genannt. XSL-FO Enthält Formatting Objects für die folgenden Aspekte: Regionen, Ränder und Bereiche einer Seite Breite und Höhe von Seiten Abfolge von Seiten Seitennummerierung Rahmen, Abständen, Spalten und Blöcken Absätze, Listen und Tabellen Textformatierung Linien, Bilder und andere Objekte 9 XSL und XSLT Komponenten von XSL 10 XSL und XSLT Was können wir mit XSLT heute machen? Erzeugung lesbarer Texte in Form von HTML-Dateien (XHTML) Erzeugen von interaktiven Grafiken (Scalable Vector Graphics SVG) Erzeugen eines Dokuments in einem anderen XML Format Erzeugen eines druckbaren PDF- Dokuments Erzeugen eines LATEX Dokuments Erzeugen von Java Quellcode Erzeugen von SQL Befehlen 11 XSL und XSLT XSLT im XML- Formatierungsprozess 12 XSL und XSLT Transformation 13 XSL und XSLT XSLT- Prozessoren Saxon – Open Source (Mozilla) (saxon.sourceforge.net/) Xalan – Open Source (xml.apache.org/xalan-j/index.html) XT – Open Source (http://www.blnz.com/xt/index.html) JD.XSLT – Open Source (www.aztecrider.com/xslt/) Microsoft XSLT- Prozessor (funktioniert auch in älteren Windowssystemen) 14 XSL und XSLT Templates XSLT transformiert ein XML- Dokument durch Templates. <xsl:template match="/" name="wurzel"> <html> <head> <title>Beispiel</title> </head> <body> </body> </html> </xsl:template> Beispiel eines Template- Elements 15 XSL und XSLT Anwenden von Templates <xsl:template match="/" name="wurzel"> <html> <head> <title>Beispiel</title> </head> <body> <xsl:apply-templates select="node1"/> </body> </html> </xsl:template> <xsl:template match="node1"> <b>Abschnitt</b> </xsl:template> 16 XSL und XSLT Strukturierte Anweisungen Bedingung <xsl:if test="node[@value = 2]"> ... </xsl:if> Mehrere Bedingungen (switch) <xsl:choose> <xsl:when test="node[@value = 1]">...</xsl:when> <xsl:when test="node[@value = 2]">...</xsl:when> <xsl:otherwise> ... </xsl:otherwise> </xsl:choose> 17 XSL und XSLT Strukturierte Anweisungen Schleife <xsl:for-each select="//node[@value = '#']"> ... </xsl:for-each> Schleife mit Sortierung <xsl:for-each select="//node"> <xsl:sort select="@value" order="ascending"> ... </xsl:sort> </xsl:for-each> 18 XSL und XSLT Erzeugung von Knoten Text und Elemente, die nicht dem XSLT-Namespace angehören, werden ins Zieldokument eingefügt: <xsl:template match="zahl"> <p> 123 </p> </xsl:template> Zusätzlich gibt es die Möglichkeit, Attributwerte berechnen zu lassen: <xsl:template match="/"> <img src="@name"/> </xsl:template> 19 XSL und XSLT Erzeugung von Knoten Text: <xsl:text> Hello, World </xsl:text> Ergebnis: Hello, World Generierter Text: <xsl:value-of select="1 + 2"/> Ergebnis: 3 20 XSL und XSLT Erzeugung von Knoten Elemente und Attribute: <elem tag="meintag" attr="nummer" value="5"/> <xsl:element name="@tag"> <xsl:attribute name="@attr"> <xsl:value-of select="@value"/> </xsl:attribute> Dies ist der Inhalt </xsl:element> Ergebnis: <meintag nummer="5">Dies ist der Inhalt</meintag> 21 XSL und XSLT Vorführung 22 XSL und XSLT Resümee Aus einer Quelle können mit kurzen XSLT-Skripten mehrere Repräsentationen von Daten erzeugt werden. Möglichkeit im Bereich Web-Publishing eine bisher nicht gekannte Konsistenz von HTML-Seiten und Multimedia- Formaten zu erreichen Verzicht auf individuell gestaltete Web-Seiten. (Jede Seite aus einer XSLT-Produktion gleicht mit geringen Varianzen den anderen) 23 XSL und XSLT Quellen XSL Transformations WC Recommendation, http://www.w3.org/TR/xslt XML Path Language, W3C Recommendation, http://www.w3.org/TR/xpath XML kurz & gut, Robert Eckstein, Michel Casabianca, O‘Reilly, 2. Auflage 2002 XSLT Mastering XML Transformations, Doug Tidwell, O‘Reilly, First Edition 2001 XML in der Praxis, Henning Behme, Stefan Mintert, Addison-Wesley, 2. Auflage 2002 24 XSL und XSLT 25