7. August 2007 Einführung in XSLT

in Kategorie XML & Co

Tags: , ,


XSLT ist eine XML–Sprache die als eine Art »Stylesheet« für XML–Dokumente dient. In diesem Artikel möchte ich eine kurze Einführung in XSLT geben.

Einsatzgebiete

XSLT bietet enorm viele Einsatzmöglichkeiten und ist wesentlich komplexer als es zu Beginn den Anschein hat. So ist es zum Beispiel möglich aus einem XML–Dokument ein HTML–Dokument zu erzeugen. Die Einsatzgebiete lassen sich in zwei Bereiche gliedern:

  • Transformation zur gewünschten Darstellung
    Mit Hilfe der Stylesheets können die XML–Daten in die verschiedensten Formate konvertiert werden: HTML, XHTML, SVG, DocBook, usw. Diese erzeugten Formate können dann von den entsprechenden Programmen genutzt werden.
  • Transformation zum einfachen Datenaustausch
    Da jeder eigene XML–Sprachen definieren kann kommt es häufig vor, dass ein Datensatz in eine andere Sprache transformiert werden muss, damit er am eigentlichen Einsatzort verstanden wird. Dies geschieht wenn zwei XML-basierte Systeme nicht die selbe Sprache verwenden.

Beispiel

Als Ausgangsbasis für das folgende Beispiel betrachten wir nun dieses einfache XML–Dokument:

<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type='text/xsl' href='style.xsl'?>
 
<data>
	<pair>
		<key>Key 1</key>
		<value> Value 1</value>
	</pair>
	<pair>
		<key>Key 2</key>
		<value> Value 2</value>
	</pair>
	<pair>
		<key>Key 3</key>
		<value> Value 3</value>
	</pair>
</data>

Dieses Dokument besteht nur aus Key–Value–Paaren. Diese Daten möchten wir nun aber schön formatiert im Browser aufrufen können. Dazu definieren wir im gleichen Ordner die Datei style.xsl, die auch bereits im <?xml-stylesheet–Tag eingebunden wird. Hier nun die style.xsl:

<?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" />
 
<xsl:template match="/">
<html>
	<head>
		<title>XSLT Beispiel 1</title>
	</head>
	<body>
		<h1>XSLT Beispiel 1</h1>
		<ul>
			<xsl:apply-templates />
		</ul>
	</body>
</html>
</xsl:template>
 
<xsl:template match="pair">
	<li>
		<strong><xsl:value-of select="key" />:</strong>
		<xsl:value-of select="value" />
	</li>
</xsl:template>
 
</xsl:stylesheet>

Das XSL–Stylesheet ist ebenfalls ein XML–Dokument und wird deshalb auch mit einleitendem <?xml–Tag definiert. Anschließend folgt das eigentliche Stylesheet hier definieren wir auch den xsl–Namensraum über den Standard des W3C. Mit Hilfe des output–Tags legen wir fest, dass ein HTML–Dokument erzeugt werden soll (Achtung: nicht XHTML).

Ein Stylesheet besteht aus mehreren Templates. Diese wiederum werden auf festgelegte Bereiche unseres ursprünglichen XML–Datensatzes angewandt. Das erste Template bezieht sich auf »/«, den Ursprung das Datensatzes, also den data–Tag. Nun möchten wir die Key–Value–Paare in eine Liste einfügen. Um dies zu erreichen ruft man im ul–Tag »apply-templates« auf. Nun werden an dieser Stelle weitere noch nicht abgearbeitete Templates aufgerufen. In diesem Fall ist es das zweite Template, welches die pair–Tags unseres Datensatzen abarbeitet und Zeile für Zeile unsere Paare aus dem Datensatz einfügt.

Mit Hilfe von »value-of« holen wir den Inhalt eines bestimmten Tags und geben ihn aus. Im Beispiel sind das »key« und »value« zum aktuellen pair–Tag.

Wenn man nun den XML–Datensatz in einem Browser aufruft, der XSLT unterstützt (Firefox, Opera ab Version 9, Internet Explorer ab Version 6), bekommen wir unseren generiertes HTML zu sehen.

Anmerkungen

Im obigen Beispiel haben wir das HTML vom Browser generieren lassen. Es ist aber auch möglich die XSL–Transformation serverseitig auszuführen und nur das Ergebnis an den Client zu übertragen. In PHP5 gibt es hierzu die XSLT–Extension zu der ich später noch einen extra Artikel schreiben werde.

Wie ich bereits angedeutet habe ist XSLT noch wesentlich komplexer als es dem Beispiel nach den Anschein hat. So lassen sich zum Beispiel mit Rekursion Schleifen bauen oder ähnliches. Der XSL–Namensraum enthält noch viel mehr Tags als sie hier besprochen wurden. Wer sich für XSLT interessiert sollte deshalb die weiterführenden Links anschauen.

weiterführende Links

Ähnliche Artikel


Der Beitrag wurde am Dienstag, den 7. August 2007 um 11:44 Uhr veröffentlicht und wurde unter XML & Co abgelegt. du kannst die Kommentare zu diesen Eintrag durch den RSS 2.0 Feed verfolgen. du kannst einen Kommentar schreiben, oder einen Trackback auf deiner Seite einrichten.

Kommentare

Keine Reaktion zu “Einführung in XSLT”.

Einen Kommentar schreiben