| Infos Home | Impressum | Original Artikel & Autoren Liste |
XSLT ist eine u.a. aus DSSSL hervorgegangene deklarative, funktional-applikative XML-basierte Programmiersprache zur Transformation von XML-Dokumenten im Kontext ihrer logischen Baumstruktur. Entwickelt wurde XSLT ursprünglich von James Clark (XSLT 1.0, XSLT 1.1), für die derzeitige Weiterentwicklung ist Michael Kay verantwortlich (XSLT 2.0).
Ein in XSLT verfasstes Programm heißt XSLT-Stylesheet oder Transformation. Ein Programm, das XSLT-Stylesheets verarbeiten kann, heißt XSLT-Prozessor. XSLT-Prozessoren sind auch in den meisten Web-Browsern (Internet Explorer ab Version 5 (?), Mozilla) integriert.
XML-Namespace für XSLT: www.w3.org/1999/XSL/Transform
/>
Übliches Namespace-Prefix für XSLT: xsl
XSLT ist nicht mit XSL-FO zu verwechseln.
| Inhalt |
|
1 Geschichte 2 Funktionsweise 3 Anwendungsgebiet 4 Anwendungsbeispiele 5 Alternativen zu XSLT 6 Beispiele 7 XSLT-Prozessoren 8 9 |
Geschichte
Ursprünglich sollte mit XSL eine DSSSL-artige Sprache in XML-Syntax entstehen. Schnell war jedoch klar, dass eine solche Sprache eigentlich aus drei interagierenden aber unabhängig voneinander einsetzbaren Bestandteilen besteht:
Dazu werden die XML-Dokumente als logischer Baum (Baumstruktur, die kleinsten Bestandteile des Baums heißen Knoten) betrachtet: Die Quell-Bäume der zu transformierenden Dokumente und durch die Transformation die entstehenden Ziel-Bäume der zu erzeugenden Dokumente (in XSLT vor 2.0 kann nur ein Dokument erzeugt werden, ab XSLT 2.0 mehrere).
Eine Transformation besteht dazu aus einer Reihe von einzelnen Transformationsregeln, genannt Templates. Eine Template besitzt eine auf XPath basierende Pattern, die beschreibt, für welche Knoten sie gilt, und einen Inhalt, der bestimmt, wie die Template ihren Teil des Zielbaums erzeugt.
In einem XSLT-Dokument kommen also an Sprachen und XML-basierten Technologien mindestens vor:
Dafür gibt es zwei Hauptanwendungsgebiete.
POP (Presentation Oriented Publishing) bezeichnet die Transformation zum Zwecke der Darstellung. Mit unterschiedlichen Stylesheets können die Daten in XHTML, Formatting Objects, SVG, SMIL, DocBook und viele andere Formate umgewandelt werden. Das ursprüngliche semantische Markup wird dabei durch ein Stil-bezogenes Markup ersetzt.
MOM (Message Oriented Middleware) bezeichnet die Transformation zum Zwecke des Datenaustausches. Da XML lediglich ein Sprachkonzept zur Entwicklung von Sprachen bildet, genügt es nicht, dass zwei Systeme (z.B. Programme) XML beherrschen, um gegenseitig Daten austauschen zu können. Sie müssen die gleiche XML-basierte Sprache verwenden. In dem häufigen Fall, wo die Systeme nicht die gleiche XML-basierte Sprache verwenden, wird gerne XSLT eingesetzt, um mit Hilfe von Transformationen Übersetzer von der einen Sprache in die andere zu entwickeln.
<xsl:template match="html:body">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<h1><xsl:apply-templates select="//html:title//text()" /></h1>
<h2>Inhaltsverzeichnis</h2>
<ul>
<li><a href="#toc">Inhaltsverzeichnis</a></li>
<xsl:for-each select=".//html:h2">
<li>
<xsl:if test="not(@id)">
<xsl:message>Achtung: Kann ohne Id keinen Link erzeugen</xsl:message>
</xsl:if>
<a href="#{@id}"><xsl:apply-templates/></a>
</li>
</xsl:for-each>
</ul>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
Siehe auch: XML, XSL-FO, XPath
Anwendungsbeispiele
Derzeit wird XSLT wohl am häufigsten dazu verwendet, einfach XML-Dokumente durch Transformation nach mit CSS versehenem XHTML in Webbrowsern darstellbar zu machen.Alternativen zu XSLT
DSSSL
Eine mögliche Alternative zu XSLT ist DSSSL, das man auch als Vorläufer von XSLT betrachten kann. Der wohl größte Vorteil von XSLT gegenüber DSSSL ist seine XML-basierte Syntax. Somit kann jeder XML-Editor automatisch auch für XSLT eingesetzt werden, außerdem gelten die Syntax-Regeln von XML (Wohl-geformtheit, Gültigkeit) damit auch für XSLT.Generische Programmiersprachen
Eine grundsätzliche Alternative zu XSLT besteht in der Möglichkeit, solche Transformationen in jeder beliebigen Programmiersprache (z.B. Java, C++ oder Perl) abzufassen. XSLT kann dabei jedoch bei Einhaltung bestimmter Voraussetzungen ein gewisses Garant für wohl-geformte und unter umständen sogar gültige Zieldokumente gewähren, außerdem ist die Entwicklung einer Transformation in XSLT in der Regel mit erheblich weniger Aufwand verbunden als die Entwicklung einer Transformation in einer Programmiersprache.CSS
Häufig wird CSS als Alternative zu XSLT genannt. CSS ist jedoch nicht wirklich eine Alternative zu XSLT. CSS beschreibt lediglich, wie die Bestandteile eines Baums (akustisch oder visuell) zu formatieren sind, während XSLT den Baum radikal ändern kann. So kann man mit XSLT z.B. automatisch Inhaltsverzeichnisse, Indizes, Link-Listen und ähnliches erstellen, nicht jedoch mit CSS.Beispiele
Inhaltsverzeichnis erzeugen
Folgendes XSLT erzeugt ein einfaches Inhaltsverzeichnis für eine XHTML-Seite mit Überschriften:<xsl:transform
version="1.0"
xmlns:xsl="www.w3.org/1999/XSL/Transform"
xmlns:html="www.w3.org/1999/xhtml"
xmlns="www.w3.org/1999/xhtml"
exclude-result-prefixes="html"
> <xsl:output
method="xml"
doctype-system="www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
doctype-public="-//W3C//DTD XHTML 1.1//EN"
/></xsl:transform>XSLT-Prozessoren
)
|
Der Ursprungsartikel stammt von der deutschsprachigen Wiki pedia (siehe oben: "Original Artikel & Autoren Liste"). Der Text steht unter der GNU Freie Dokumentation Lizenz. |