Extensible StyleSheet Language XSL

Trennung von Inhalt, Typ und Format

XSL-Programm

XSL ist eine Art von 'Programmiersprache' und selbst Mitglied der XML-Familie. Ein XSL-Programm liest die Eingangs-XML-Daten und erzeugt daraus die gewünschten Ausgangs-Daten.
Jedes XSL-Programm ist eine relativ kleine statische Text-Datei, die vom Webserver rasch geliefert und vom eigenen Proxy-Server zur Wiederverwendung gespeichert wird.

Produkte

Jeder Browser enthält ein XSL-Prozessor-Modul. Damit werden die XSL-Programme ausgeführt und die damit erzeugten Daten sofort angezeigt.

Herstellung von Produkten mit XML+XSL


XML

→ XML (Extensible Markup Language) ist ein wichtiger (übergeordneter) Standard der modernen Informatik.

Mit wenigen einfachen Regeln kann man damit Daten und - wie hier gezeigt - Programme vieler unterschiedlicher Anwendungs-Bereichen codieren.

Die hier gezeigten Beispiele werden von ihrem Browser-Programm ausgeführt und angezeigt. Die Anwendung vom XSL ist jedoch nicht auf Browser beschränkt. Jedes Programm kann XSL-'Filter' zur Verarbeitung der immer wichtiger werdenden XML-Daten verwenden.



Im Gegenzug wird die Möglichkeit eröffnet, aus rohen XML-Daten beliebig viele unterschiedliche Produkte zu erzeugen - Auch solche, an die man zunächst gar nicht gedacht hat, oder die technisch noch nicht möglich waren.


XSL-Interpreter

Zur Ausführung von XSL-Programmen braucht man ein XSL-Interpreter-Programm.
Jedes moderne Browser-Programm enthält einen XSL-Interpreter.
Es gibt für jedes Betriebssystem auch alleinstehende XSL-Interpreter-Programme.

In der Praxis muss ein Browser sowohl die XML-Daten als auch das XSL-Programm vom Webserver anfordern. Das XSL-Programmm wird am eigenen Arbeits-(Client)-PC ausgeführt, das damit erzeugte Produkt (z.B. Tabelle, Diagramm) angezeigt.

XSL ist nicht auf Web-Technologie beschränkt: Auch viele andere Programme verwenden mittlerweile XSL zur Umwandlung von rohen XML-Daten in verschiedene Produkte.


Die Trennung von Inhalt, Typ und Form hat bei Wiederholungen besondere Vorteile:

Wenn man die gleichen XML-Daten in anderer Form anzeigen will, dann braucht man sie nicht nochmals anzufordern:
Das Browser-Programm kann diese Aufgabe selbst mit einem Javscript-Programm erledigen oder dazu ein anderes XSL-Programm anfordern: Die statische XSL-Datei ist relativ klein und belastet den Server kaum.
In der Praxis wird meist nur eine kleine Zahl von XSL-Programmen verwendet: In diesem Fall werden die XSL-Dateien vom eigenen Proxy-Server geliefert und der Server gar nicht belastet.

Wenn man das gleiche Produkt (z.B. eine Tabelle) mit anderen Daten anzeigen wil, dann muss der Browser nur die rohen XML-Daten anfordern: Das XSL-Programm ist bereits vorhanden und wird vom Browser auf alle weiteren Daten angewendet.



Mit XSL werden unterschiedliche Typen von Dokumenten erzeugt und in diese werden rohe XML-Daten eingefügt.
Innerhalb der mit XSL erzeugten Dokumente werden oft CSS-Regeln zur Formatierung verwendet.

Herstellung und Einbettung kompletter Dokumente


In diesem Kapitel wird die Herstellung kompletter Dokumente vorgestellt, im nächsten die Herstellung einzelner ↓ Elemente mit AJAX.


XML-Daten:
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="xy_html_table.xsl" type="text/xsl" ?>
<xy>
<p><x>1.0</x><y>2.2</y></p>
<p><x>2.0</x><y>3.5</y></p>
</xy>
XSL-Programm
<?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>
...
<xsl:for-each select="xy/p">
<div> Punkt:
x=
<xsl:value-of select="x" />,
y=<xsl:value-of select="y" />
</div>
</xsl:for-each>
...
</html>
</xsl:template>
</xsl:stylesheet>
Produkt
<html>
...
<div>Punkt: x=1.0, y=2.2</div>
<div>Punkt: x=1.0, y=2.2</div>
...
</html>



Man kann gleiche oder unterschiedliche XML+XSL-Produkte an mehreren Stellen einer Webseite einsetzen.

Man die gleichen XML+XSL-Produkte ohne Änderung in beliebig vielen Webseiten verwenden.

In allen Live-Beispielen dieses Webs sind die jeweiligen XML+XSL-Produkte mit HTML <iframe>-Elementen in komplexe Webseiten eingebettet, z.B. → Unicode-Tabelle, → Säulen-Diagramme, → VGA-Farben.



  In dieser einfachen Version sind die Daten fix mit einem XSL-Programm verknüpft. Dazu dient die in roter Farbe angezeigte Zeile <?xml‑stylesheet .../> unmittelbar nach dem Anfang der XML-Daten.
Für die meisten Anwendungen ist das kein Nachteil:
Wenn man mehrmals hintereinander unterschiedliche XML-Daten anfordert, dann verwendet der Browser ohnehin das lokal (im Browser-Cache) gespeicherte XSL-Programm.
Wenn man mit XSL unterschiedliche Produkte herstellen will, dann braucht man dazu ebenso viele XSL-Programme. Die rohen XML-Daten werden fast immer an einem (Datenbank)-Server erzeugt. Dort ist es kein Problem, je nach Anforderung den Text mit Angabe des XSL-Programms geringfügig zu ändern.

Man kann XML-Daten und XSL-Programme voneinander trennen und mit der ↓ AJAX-Technologie unabhängig verwenden. In diesem Fall wird die Angabe des XSL-Programms ganz aus den XML-Daten entfernt. Mit AJAX-Funktionen werden die gewünschten XML-Daten und XSL-Programme Live vom Server angefordert und erst vom Browser am eigenen Arbeits-PC miteinander verknüpft. Die AJAX-Programmierung erfordert fortgeschrittene Kenntnisse der Programmiersprache Javascript.

Herstellung und Verwendung einzelner Objekte


In diesem Kapitel wird die Herstellung einzelner Objekte mit AJAX vorgestellt, im vorigen die Herstellung kompletter ↑ Dokumente.


XML-Daten:
<?xml version="1.0" encoding="utf-8" ?> <xy>
<p><x>1.0</x><y>2.2</y></p>
<p><x>2.0</x><y>3.5</y></p>
</xy>
XSL-Programm
<?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="/">
<p>
<xsl:for-each select="xy/p">
<div> Punkt:
x=
<xsl:value-of select="x" />,
y=<xsl:value-of select="y" />
</div>
</xsl:for-each>
</pv>
</xsl:template>
</xsl:stylesheet>
Produkt
<p>
<div>Punkt: x=1.0, y=2.2</div>
<div>Punkt: x=1.0, y=2.2</div>
</p>



Die Daten werden normalerweise asynchron verarbeitet. Das bedeutet: Das Javascript-Programm wird unmittelbar nach Anforderung der Daten fortgesetzt, ohne auf ihr Eintreffen zu warten.

Die eintreffenden Daten lösen ein Ereignis (Event) aus. Man muss die passenden Programme (Event-Handler) erstellen, um darauf richtig zu reagieren. Man hat keinen Einsfluss auf die Dauer des Transports oder auf die Reihenfolge der eintreffenden Daten.

Nach Eintreffen von XML-Daten und XSL-Programm muss man mit dem XSL-Prozessor des Browsers ein DOM-Objekt erzeugen und an der passenden Stelle in die aktuelle Webseite einfügen.

Man sollte auf alle bei diesem Vorgang möglichen Fehler und Probleme passend reagieren und die Anwender informieren.


Der Nachteil ist die wesentlich aufwändigere Programmierung. Die Anwendung von AJAX erfordert fortgeschrittene Kenntnisse von Javascript.