Templates

Start

XML

Namespace

XSL

DTD

Schema

Standardisierung

IMS LD

EML

LMML

Akronyme

Quellen

 

 

XSL: [ Templates ] XSLT ] XSL-FO ] XPath ]   Bsp.: [ XML-Buchliste ] [ value-of ] [ for-each ] [ apply-templates ] [ XPath ]

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:

Buchliste

Titel: Uli Stein´s Tierleben
Autor: 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: