|
Templates |
|
|
XSL:
Ein XSLT Stylesheet ist ein XML Dokument mit dem Root Element <stylesheet> und den fundamentalen Template Elementen. Ein Template (Schablone) gibt die Transformation vor, die auf einen bestimmten Teil eines XML Dokumentes angewandt werden soll. Welcher Teil transformiert werden soll, wird mit einer XPath Anweisung vorgegeben. Folgende Abbildung zeigt den Ablauf einer Transformation:
Folgendes Beispiel transformiert ein XML Dokument in ein HTML Dokument. Der match Parameter gibt an, welche Elemente des XML Dokumentes von dem template beeinflusst werden sollen. In unserem Beispiel steht der / für den root node (gesamtes Dokument) <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- dieses template ersetzt das gesamt Dokument, / steht für das gesamte Dokument / ist das nicht das Dokumentelement, nicht das Wurzelement und auch nicht das root element --> <xsl:template match="/"> <html> <head> <title>Hurra</title> </head> <body> <h1>Buchliste</h1> <xsl:apply-templates select="buchliste/buch"/> <!-- Mit apply-templates select="buchliste/buch" wird jedem Buch Element eine eigenes Template zugewiesen. Dazu wird nach einem template gesucht, dessen match Attribut das Element Buch referenziert --> </body> </html> </xsl:template> <xsl:template match="buch"> <!-- mit match="buch" wird buch zum aktuellen Element. --> <!-- value-of fügt Textinhalt ein. --> <!-- Select bezieht sich auf das aktuelle Element, das über das übergeordnete match angesprochen wird. Alle weiteren Pfadangaben müssen jetzt relativ zu buchliste/buch angegeben werden.--> <b>Titel: </b> <xsl:value-of select="titel"/> <br/> <!--Weil das Element autor selbst keinen Text sondern nur untergeordnete Element beinhaltet, werden die Textinhalte aller Unterelemente mit Hilfe von value-of angezeigt. Ein separates Formatieren der einzelnen Unterelement mit HMTL Tags ist allerdings an dieser Stelle nicht mehr möglich--> <b>Autor: </b> <xsl:value-of select="autor"/> <br/> <b>Seiten: </b> <xsl:value-of select="seiten"/> <br/> <b>Preis: </b> <xsl:value-of select="preis"/> <br/> <br/> </xsl:template> </xsl:stylesheet> Die XML Datei mit einer eingebundenen DTD und XSL Datei sieht wie folgt aus: <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE buchliste SYSTEM "buchliste.dtd"> <?xml-stylesheet type="text/xsl" href="xsl_html.xsl"?> <buchliste> <buch> <titel>Uli Stein´s Tierleben</titel> <autor> <vorname>Uli</vorname> <nachname>Stein</nachname> </autor> <ausgabe>Taschenbuch</ausgabe> <seiten>45</seiten> <preis>9,2 Euro</preis> </buch> <buch> <titel>Alles Liebe!</titel> <autor> <vorname>Uli</vorname> <nachname>Stein</nachname> </autor> <ausgabe>Taschenbuch</ausgabe> <seiten>23</seiten> <preis>11,3 Euro</preis> </buch> <buch> <titel>Die Alpen</titel> <autor> <vorname>Heinz</vorname> <nachname>Berg</nachname> </autor> <ausgabe>Taschenbuch</ausgabe> <seiten>323</seiten> <preis>41,3 Euro</preis> </buch> </buchliste> Die Ergebnis HTML Datei stellt sich wie folgt dar: BuchlisteTitel: Uli Stein´s TierlebenAutor: Uli Stein Seiten: 45 Preis: 9,2 Euro Titel: Hurra die Gams Autor: Wos Woasi Seiten: 23 Preis: 11,3 Euro Titel: Die Alpen Autor: Heinz Berg Seiten: 323 Preis: 41,3 Euro Beispiele: |