XSL:
[ Templates ] [ XSLT ] [ XSL-FO ] [ XPath ] Bsp.: [ XML-Buchliste ] [ value-of ] [ for-each ] [ apply-templates ] [ XPath ]
Ausgabe einer HTML Datei ( value-of)
Mit Hilfe von XSLT-Templates kann die Ausgabe von XML Dateien gesteuert werden.
Das einzige template (siehe unten) ersetzt das gesamt Dokument durch ein HTML
Grundgerüst. Die XPATH Angabe /, die dem Attribut match zugewiesen wird,
steht für das gesamte Dokument und nicht für das Dokumentelement (Wurzelement,
root-Element). Ein Kind-Element des / ist das Wurzelelement (root element =
document element).
In das HTML Grundgerüst werden die verschiedenen Textinhalte der XML
Elemente eingebunden. value-of fügt den Textinhalt des mit select ausgewählten
Elementes, sowie aller untergeordnenten Element ein. Obwohl 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 Unterelemente mit HMTL Tags ist allerdings an dieser
Stelle nicht mehr möglich.
Select bezieht sich auf das aktuelle Element, das z. B. über match oder
ein anderes übergeordnetes select (siehe buchliste_for_each.xsl)
angesprochen wird.
buchliste stellt das root-Element dar. Statt "buchliste/buch/titel"
kann auch "/buchliste/buch/titel" als absolute Pfadangabe angegeben
werden. Anstelle von <br/> kann auch <br></br> gesetzt werden.
Das XSLT-Element output (z. B. <xsl:output method="html" version="1.0"
encoding="iso-8859-1" indent="yes"/> ) muss nicht angegeben
werden. Ist das Attribut true, wird die Ausgabe eingerückt dargestellt.
Soll eine separate output-Datei generiert werden (serialisation), könnte
ein XSLT Prozessor dieses Element auslesen. Mögliche Werte sind xml, html,
text oder ein anderer Wert (qualified name). Wird im Beispiel unten xml angegeben
und die XML-Datei im Browser aufgerufen, wird <br></br> als ein
doppelter Zeilenumbruch zwischen den einzelnen Elementen angezeigt. Bei einer
Angabe von html oder keiner Angabe des XSLT-Elementes Output wird nur ein einfacher
Zeilenumbruch im Browser angezeigt. Ersetzt man das Start und Ende-Element br
durch <br/> erscheint in der Browser-Ausgabe wieder ein einfacher Zeilenumbruch.
Generiert man eine output Datei spielt diese Unterscheidung keine Rolle.
Quelltext der XSLT Datei:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>Hurra</title>
</head>
<body>
<h1>Buchliste</h1>
<b>Titel: </b><xsl:value-of select="buchliste/buch/titel"/>
<br/>
<b>Autor: </b><xsl:value-of select="buchliste/buch/autor"/>
<br/>
<b>Seiten: </b><xsl:value-of select="buchliste/buch/seiten"/>
<br/>
<b>Preis: </b><xsl:value-of select="buchliste/buch/preis"/>
<br/><br/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Als Ergebnis wird nur das erste Element der XML Datei buchliste_little.xml
angezeigt. Will man alle Bücher aus unserer Beispieldatei haben, kann man
die XSLT-Elemente for-each oder apply-templates einsetzen.
Buchliste
Titel: Uli Stein´s Tierleben
Autor: Uli Stein
Seiten: 45
Preis: 9,2 Euro
Beispieldateien:
buchliste_nur_value_of.xml
buchliste_nur_value_of.xsl
|