|
7. XML stilvoll ausgeben: XSLT
|
(Hinweis: Dies ist ein Text von Michael Seeboerger-Weichselbaum. Der Text stammt aus dessem Buch "XML - Das Einsteigerseminar" aus dem mi-Verlag (ISBN 3-8266-7201-1). Das Urheberrecht liegt bei Michael Seeboerger-Weichselbaum)
|
Bisher hatten wir XML-Dokumente über den Umweg CSS ausgegeben. Dies ist absolut korrekt und kann so realisiert werden. Es gibt aber auch noch eine weitere Möglichkeit, XML ohne HTML ausgeben zu können. Dazu wird eine weitere "Sprache" benötigt, die für die konkrete Ausgabe der Daten verwendet wird. Sie heißt XSLT und dies steht für Extensible Stylesheet Language Transformation. Allgemein formuliert gilt:
|
|
|
1. XML strukturiert die Daten.
2.·XSLT gibt die Daten aus.
|
Genau genommen nimmt XSLT die Formung in eine andere Ausgabesprache vor. XSLT ist wiederum eine Meta-Sprache, die einen Code erzeugt (HTML, WML, PDF usw.), der von einem anderen Programm angezeigt werden kann (z.B. Web-Browser, WAP-Browser).
|
|
XSLT-Prozessor für Netscape 6
|
Um XSLT nutzen zu können, ist ein so genannter XSLT-Prozessor nötig. Dies sind kleine Programme, die die konkrete Konvertierung vom XSLT-Code in das gewünschte Ausgabeformat vornehmen. Internet Explorer ab Version 5 besitzt neben dem XML-Parser auch einen XSLT-Prozessor, es ist kein separates Programm für IE erforderlich. Der XSLT-Prozessor ist in dem XML-Parser msxml enthalten. Bei N6 und deren Open-Source-Entwicklung Mozilla sieht es etwas anders aus. Für N6.0, 6.01 und Mozilla unterhalb von 0.9 muss der XSLT-Prozessor nachträglich installiert werden. Dieser heisst Transformiix und kann über die folgende Adresse problemlos in den Browser nachträglich integriert werden (für jedes Betriebssystem):
|
|
http://www.mozilla.org/projects/xslt
|
OP 4/5 unterstützt kein XSLT. Was es mit XSLT auf sich hat und wie Sie XSLT einsetzen, werden Sie in diesem Kapitel lernen.
|
|
7.1. Eine erste Ausgabe mit XSLT
|
Erinnern Sie sich noch an Ihr allererstes XML-Beispiel aus Kapitel 3.1? Dort wurde nur ein Tag (<AUSGABE>) benutzt. Es wurde keine DTD verwendet, das Dokument ist wohlgeformt. Dies werden wir auch für folgendes Beispiel benutzen:
|
|
<?xml version="1.0"?> <AUSGABE> <ANZEIGE>Hallo XML!</ANZEIGE> </AUSGABE>
|
 Abb. 7.1: Die Ausgabe einer XML-Datei mittels XSLT in Netscape 6 (mit XSLT-Prozessor Transformiix)
|
Wir wollen den Inhalt des Tags <ANZEIGE> im Browser ausgeben. Wir benötigen eine zweite Datei, in der die Ausgabe konkret beschrieben wird. Dies ist die XSLT-Datei. Und so sieht sie aus:
|
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/"> <H1> <xsl:value-of select="AUSGABE/ANZEIGE"/> </H1> </xsl:template> </xsl:stylesheet>
|
Dieser kurze Code zeigt Ihnen, wie ein typisches Stylesheet in XSLT aussieht. Das XSLT-Dokument wird über das Tag <xsl:stylesheet> eingeleitet. Dieses ist das Basis-Tag einer jeden XSLT-Datei. Gleichzeitig wird innerhalb dieses Tags der XSLT-Namensraum definiert. Als Web-Adresse wird hier http://www.w3.org/1999/XSL/Transform verwendet. Am Ende der XSLT-Datei wird dieses Tag durch </xsl:stylesheet> aufgehoben.
|
|
Anschließend folgt die Zeile
|
|
<xsl:output method="html"/>
|
Das Tag <xsl:output> ist ein Leertag, das in sich selbst abgeschlossen wird. Es teilt dem Browser bzw. dem XSLT-Prozessor mit, dass eine konkrete Ausgabe erfolgen soll. Das Attribut method legt fest, welche Ausgabesprache erzeugt werden soll. Hier ist es html für einen HTML-Code.
|
|
Danach folgt das Tag <xsl:template>. xsl identifiziert den Namensraum und nach dem Doppelpunkt folgt das Schlüsselwort template. Dies besagt, dass es sich um eine Vorlage handelt, die auf ein Dokument angewendet wird. Abgeschlossen wir das XSLT-Dokument durch </xsl:template>.Das Attribut match wird benutzt, um bestimmte XML-Tags anzusprechen. Dies wird notwendig, um die Vorlage auf bestimmte XML-Tags anwenden zu können. Dies brauchen wir hier noch nicht. Daher steht hier: match="/", dass das Wurzelelement anspricht.
|
|
Alles, was sich zwischen den beiden Tags <XSLT:template> und </XSLT:template> befindet, legt die konkrete Ausgabe des Inhalts fest. <H1> teilt dem Browser mit, dass irgendetwas in dem Überschrifts-Tag ausgegeben werden soll. Was genau, folgt in der nächsten Zeile:
|
|
<xsl:value-of select="AUSGABE/ANZEIGE"/>
|
Hier lesen wir nämlich direkt den Inhalt eines Tags aus. Es handelt sich um den Inhalt des Tags <ANZEIGE>, das wir auslesen und ausgeben lassen wollen. Daher wird dies über select="AUSGABE/ANZEIGE"/ angegeben. Wir haben sozusagen den Fokus auf dieses Tag gelegt.
Dabei müssen wir aber den gesamten Dokumentenbaum angeben. Die Angabe select="ANZEIGE"/ würde nicht ausreichen. Denn das Tag <ANZEIGE> ist ja dem Wurzelelement <AUSGABE> untergeordnet. Das Attribut value-of liest nun den konkreten Inhalt aus. Dieser Inhalt wird nun mit dem HTML-Tag <H1> ausgegeben - das ist schon alles!
|
|
Hinweis: Achten Sie bei select darauf, dass Sie den ganzen Dokumentbaum angeben. Vergessen Sie einen Tag, dann erfolgt eine leere Ausgabe.
|
|
Abschließend wird die XSLT-Definition abgeschlossen:
|
|
</xsl:template> </xsl:stylesheet>
|
Wir müssen nur noch die XML-Datei mit der XSLT-Datei verbinden. Denn das XML-Dokument muss ja wissen, dass die XSLT-Definitionen sich in einer anderen Datei befinden. Dies geschieht über folgende Zeile in der XML-Datei:
|
|
<?xml-stylesheet href="test.xsl" type="text/xsl" ?>
|
Diese Codezeile folgt direkt nach dem Tag <?xml version="1.0"?>. <?xml-stylesheet teilt dem Browser mit, dass nun eine Stylesheet-Definition folgt. href gibt den genauen Namen der XSLT-Datei an (hier: TEST.XSLT) und das Attribut type="text/XSLT" teilt dem Browser mit, dass die Stylesheet-Definiton im Textformat (ASCII) ist und es sich um XSLT handelt.
|
|
Hinweis: Achten Sie auf die Groß- und Kleinschreibung der Tags. HTML-Tags, die innerhalb der XSLT-Definitonen verwendet werden, sollten in Großbuchstaben geschrieben werden, während die reinen XSLT-Tags und Attribute in Kleinbuchstaben stehen sollten.
|
|
Hinweis: Der IE 5.x akzeptiert es auch, dass zwischen xml und stylesheet ein Doppelpunkt geschrieben wird. Dies ist aber kein XML-Standard:
|
|
<?xml:stylesheet href="test.XSLT" type="text/XSLT" ?>
|
XSLT im Browser ansehen: N6 und IE 5.x
|
|
|
© msw 1999-2002
|