================== 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

Name Vorname
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