==================
XSL: Das erste XSL
==================
..index:: XSL: for-each
Lernziel
========
Sie lernen einfache Möglichkeiten kennen, aus XML durch XSL HTML zu erstellen.
Handlungsanweisungen
====================
:Aufgaben:
1. Geben Sie alle Titel Ihrer CD-Datenbank untereinander aus.
2. Geben Sie zusammen mit den Titeln auch die Interpreten in einer Tabelle aus.
3. Fügen Sie der Tabelle nun noch eine Spalte *Bandinformation* hinzu.
Stellen Sie den entsprechenden Inhalt dar.
Transformation
~~~~~~~~~~~~~~
Bis jetzt hatten wir uns nur mit der Definition und nicht mit der Ausgabe von
XML-Dokumenten beschäftigt. Die Ausgabe der Inhalte können wir durch XSL realisieren.
Zur Verdeutlichung des Transformationsprozesse schauen Sie sich bitte die
folgende Grafik an.
.. image:: Pictures/transformation.png
:alt: Transformation-Prozess
XSL erstellen
~~~~~~~~~~~~~
:Das Ziel: Der Vorname und der Nachname sollen in einer HTML-Tabelle dargestellt werden,
wie in folgendem Bild gezeigt:
.. image:: Pictures/ergebnis-der-transformation.png
:alt: Ergebnis der Transformation
Schauen wir uns nun das folgende Beispiel an. Beachten Sie bitte die markierte Zeile
(Zeilennummer: 2) des XML-Dokumentes:
.. code-block:: xml
:linenos:
:emphasize-lines: 2
]>
Herr
Zuse
Konrad
Herr
Leibnitz
Gottfried Wilhelm
In dieser Zeile stellen wir die Verknüpfung zwischen dem aktuellen XML-Dokument und
der XSL-Datei her, die in diesem Fall *adressen.xsl* heißt. Diese XSL ist für die
Ausgabe des XML-Inhaltes zuständig. Diese Zeile wird nicht benötigt, wenn Sie an der
Kommandozeile und mit dem Tool *Saxon* arbeiten (siehe Station zur Transformation mit Saxon).
Die Datei adressen.xsl:
~~~~~~~~~~~~~~~~~~~~~~~
Der Inhalt der XSL-Datei sieht wie folgt aus:
.. code-block:: xml
:linenos:
....
::
Mit dem Attribut *method* (Zeile 4) wird die Ausgabemethode festgelegt, hier HTML-Code.
Weitere Möglichkeiten sind text und xml.
::
...
Beginn und Ende einer Template-Definition. Das Attribut match="/" besagt, dass
der Browser bei dem Wurzelelement, dem Element in erster Ebene beginnen soll.
*match* definiert also das Suchkriterium.
::
Mit eine XPATH-Ausdruck wird auf den Inhalt eines Elements zugegriffen.
So erhalten Sie die Daten der angegebenen Elemente.
Mehrere Datensätze
==================
Wie sieht nun Ihr XSL-Dokument aus, wenn Sie mehrere Adressdaten im XML-Dokument haben?
Zunächst das XML-Dokument:
.. code-block:: xml
:linenos:
Herr
Zuse
Konrad
Herr
Leibnitz
Gottfried Wilhelm
Mehrere Datensätze – XSL
~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: xml
:linenos:
:emphasize-lines: 8, 10, 12, 14
Meine Adressen
Mit dieser Schleifenkonstruktion (gleiches Muster wie in anderen Programmiersprachen)
wird mit dem select-Attribut, nach einem Verschachtelungsmuster gesucht. Wenn das Muster
passt, wird eine Tabellenzeile in HTML- Syntax erzeugt. Die Pfadangabe folgt den Regeln
im Dateisystem, nur das statt der Ordnernamen Elementnamen der XML-Datei verwendet werden.
Eine Tabelle generieren
~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: xml
:linenos:
:emphasize-lines: 7, 9-13, 15, 16, 18, 19, 21, 22, 24
Meine Adressen
Angereichert mit HTML-Konstrukten, sollte die Anzeige im Browser, wie weiter oben
gezeigt und geplant aussehen.
.. image:: Pictures/ergebnis-der-transformation.png
:alt: Ergebnis der Transformation