Gastautor 10. September 2003

XML-Workshop Teil 3: Auslesen mit XSL(T)

Kein Beitragsbild

von Jan Winkler

Nach CSS ist XSL die zweite Möglichkeit, um XML vom Browser anzeigen zu lassen. XSL(T) liefert die Funktionen und die erforderliche Syntax, um XML-Elemente beispielsweise in HTML umzuwandeln.

Was genau ist XSL?
XSL steht für Extensible Stylesheet Language und beschreibt die Darstellung und Behandlung von XML-Daten mit Hilfe von XSL-Stylesheets. XSL umfasst sowohl XSLT als Transformationssprache als auch XSL(-FO) als Formatierungssprache. Beide sind von XML abgeleitet – folgen also deren Syntax und Regeln. XSLT hält Elemente bereit, die die Transformation (~ Umwandlung) von XML-Daten in andere Dateiformate erlauben (HTML, RTF, …). XSL-FO wiederum stellt Elemente zur Verfügung, die festlegen, wie XML-Daten angezeigt werden. Es ist vergleichbar mit den Cascading Style Sheets. Im Folgenden werden wir uns auf die Transformation konzentrieren.

So schreibt man XSL
Da XSL von XML abgeleitet wird, ist die Syntax vergleichbar. Dies hat den angenehmen Nebeneffekt, dass XSL(T)-Dokumente problemlos mit einem XML-Editor erstellt und bearbeitet werden können. Grundsätzlich erhalten XSL-Dokumente die Dateiendung .xsl.

Ebenso wie ein XML-Dokument, muss auch XSL mit der XML-Deklaration beginnen, ein root-Element (xsl:stylesheet) enthalten und wohlgeformt sein. Fertige XSL-Dokumente werden wie CSS-Dateien in XML eingebunden – man verwendet lediglich einen anderen Dateityp. Ein Beispiel:

 <?xml-stylesheet href="meinxsl.xsl" type="text/xsl"?>
    

Wichtig bei der XSL-Formatierung
XSL-FO ist für die Formatierung von XML-Dokumenten zuständig. Im Gegensatz zu CSS wird hier die XML-Schreibweise verwendet, jedoch sind die Elementnamen identisch mit den Eigenschaftsnamen von CSS. Anmerken wollen wir an dieser Stelle noch, dass mit XSL auch die Umwandlung in das PDF-Format möglich wird, denn auch PDF widmet sich zum größten Teil der Formatierung von Daten. Da diese Verwendung – verglichen mit XSLT – im World Wide Web weniger verbreitet ist, werden wir hier nicht näher darauf eingehen.

Die Funktionsweise von XSLT
XSLT funktioniert nach dem Prinzip des Dokument-Baumes. Übersetzt heißt das: Jedes Element bildet einen Knoten, von dem wiederum die Unterelemente abzweigen. Somit ergibt sich eine Baumstruktur. Aus (X)HTML kennen wir folgenden Aufbau:

Verzweigung einer HTML-Datei

Verzweigung einer HTML-Datei

XSLT wird diese Knoten nun nacheinander abschreiten und umwandeln. Ebenso wie im Beispiel die Elemente, können auch Attribute, Text oder Kommentare als Knoten fungieren. Durch die Umwandlung entsteht letztlich ein neues Dokument, genau hierin besteht das Ziel von XSLT!

Wann wird transformiert?
Man kann auf drei Arten transformieren, um zu einem zufriedenstellenden Ergebnis im (HTML-)Browser zu gelangen.

  1. Die XML-Daten werden auf dem Server schon vor dem Versand an den Besucher umgewandelt und als HTML gespeichert. Der Vorteil liegt in der garantierten Übertragung von HTML-Daten – der Nachteil aber liegt darin, dass die Funktionsvielfalt von XSL(T) erheblich eingeschränkt ist. Dieser Weg ist etwa geeignet, um Daten aus einer XML-Datenbank einmalig in HTML-Dokumente umzuwandeln.
  2. In Variante Nr. 2 wird XML mit dem dazugehörigen XSL-Stylesheet auf dem Server belassen und auch von diesem transformiert. Dies ist eine der besten und zugleich sichersten Varianten. Der volle Umfang von XSL kann angewandt werden, etwa in Verbindung mit JavaServerPages oder Scriptsprachen. Hinzu kommt die Sicherheit, dass alle Browser auch das Gleiche zu sehen bekommen.
  3. Die dritte Variante ist das Transformieren vom Browser selbst. Der Browser erhält dazu vom Server die XML- und XSL-Dokumente und kann sie dann umwandeln. Diese Methode ist allerdings eher weniger zu empfehlen, da derzeit nur wenige Browser dieses Verfahren unterstützen und alle anderen – vorsichtig formuliert – so nur ‚Datenschrott‘ erhalten. Das folgende Schema zeigt alle drei Wege noch einmal auf:

Wege der XSL-Transformierung

Wege der XSL-Transformierung

XSL testen
Zwischen Theorie und Praxis liegen oft Welten, nicht nur deshalb empfiehlt sich ein Testlauf. Nachdem wir nun die möglichen Transformationswege kennen, können wir daraus denjenigen wählen, der uns zum Testen am einfachsten erscheint.

Der sicherlich einfachste Weg ist das Testen der XSL-Dokumente per Browser. Nicht alle sind dazu geeignet – relativ gut bekommt es jedoch der Mozilla hin. Er deckt zwar nicht das volle XSL(T) Spektrum ab (jedenfalls derzeit noch nicht). Für einfache Anwendungen ist er schon mehr als tauglich. Die meisten hier angegebenen Beispiele können Sie problemlos mit diesem Browser testen.

So sind XSLT-Dokumente aufgebaut
XSLT-Dokumente beginnen mit der XML-Deklaration. Darauf folgen eventuelle Processing-Instructions (PIs). Das eigentliche Dokument besteht aus einem root-Element, welches sich xsl:stylesheet nennt. Damit das Dokument als XSLT und nicht XSL-FO Dokument angesehen wird (da beide dieses Element verwenden), muss ausserdem der Namespace xsl innerhalb des Roots mit der URL

      http://www.w3.org/1999/ XSL/Transform
    

definiert werden. Zu guter Letzt ergibt sich folgende Struktur, der alle XSLT-Dokumente folgen:

      <?xml version="1.0"?> <xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <!-- Inhalt des Dokumentes 
--> </xsl:stylesheet>
    

Außer dem Namespace muss auch die verwendete Version angegeben werden (derzeit 1.0). Anstelle des Elements

      xsl:stylesheet
    

kann auch das Synonym

      xsl:transform
    

verwendet werden. Es verhält sich ebenso wie das eigentliche XSL-Element, bietet allerdings einen plausibleren Namen (eben Transformierung und nicht Formatierung).

Als Unterelemente sind die folgenden Top-Level Elemente erlaubt:

      xsl:import
xsl:include
xsl:strip-space
xsl:preserve-space
xsl:output
xsl:key
xsl:decimal-format
xsl:namespace-alias
xsl:attribute-set
xsl:variable
xsl:param
xsl:template

Dr. Webs exklusiver Newsletter
Hinweise zum Datenschutz, also dem Einsatz von Double-Opt-In, der Protokollierung der Anmeldung, der Erfolgsmessung, dem Einsatz von MailChimp als Versanddienstleister und deinen Widerrufsrechten findest du in unseren Datenschutzhinweisen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Kennst du schon unseren Newsletter?

Hinweise zum Datenschutz, also dem Einsatz von Double-Opt-In, der Protokollierung der Anmeldung, der Erfolgsmessung, dem Einsatz von MailChimp als Versanddienstleister und deinen Widerrufsrechten findest du in unseren Datenschutzhinweisen.