« XSL-Start

Template Rules II#

../../_images/unkraut.jpg

Lernziel#

Sie lernen Template Rules kennen und können Templates für bestimmte Elemente definieren.

Handlungsanweisungen#

Aufgaben:

  1. Was ist zur vorherigen Variante anders?

  2. Ausgabe (Verpackung) der gefunden Daten in ein HTML-Gerüst und damit eine Anzeigemöglichkeit für den Browser

Die Verpackung als HTML-Tabelle#

Die Ausgabe soll auch im Browser korrekt dargestellt werden, deshalb wird in jeder Regel das passende »Verpackungsmaterial« um die gefundenen Daten gelegt und wir erhalten eine korrekt formatierte HTML-Tabelle:

 1<?xml version="1.0" encoding="UTF-8" ?>
 2<xsl:stylesheet version="1.0"
 3  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 4
 5     <xsl:output method="xml" indent="yes"/>
 6
 7     <xsl:template match="/">
 8
 9     <html>
10     <head>
11     <title>Adressen von XML zu HTML</title>
12     </head>
13     <body>
14     <table border="1">
15       <xsl:apply-templates/>
16     </table>
17     </body>
18     </html>
19
20   </xsl:template>
21
22     <xsl:template match="name">
23       <tr>
24         <xsl:apply-templates/>
25        </tr>
26     </xsl:template>
27
28     <xsl:template match="vorname">
29     <td>
30       <xsl:value-of select="."/>
31     </td>
32
33     </xsl:template>
34
35     <xsl:template match="nachname">
36     <td>
37        <xsl:value-of select="."/>
38     </td>
39     </xsl:template>
40
41     <!-- Überschreiben der Standard-Regel und
42          Unterdrückung der Ausgabe: siehe nächster Kommentar
43     -->
44
45     <xsl:template match="text()|@*">
46               <!--xsl:value-of select="."/-->
47     </xsl:template>
48</xsl:stylesheet>

Wie an den Hervorhebungen zu erkennen ist, wurde für das Wurzellement, das HTML-Gerüst eingefügt und dort wo der Inhalt der Website erscheinen soll, die nächsten Template-Rules aufgerufen.

Zusätzlich wurde für das Elemente »name« eine Regel erstellt, um eine Tabellenzeile erzeugen zu könnne. das HTML-Element »tr« bildet wie das XML-Element »name« eine Klammer oder ist ein Container für die Elemente »vorname« und »nachname«.

Beispiel einer Transformation (die Dateinamen sind anzupassen):

java -jar ./saxon9he.jar adressen.xml adressen-to-html.xsl

Ergebnis der Transformation#

<?xml version="1.0" encoding="UTF-8"?>
<html>
   <head>
      <title>Adressen von XML zu HTML</title>
   </head>
   <body>
      <tr>
         <td>Becker</td>
         <td>Heinz</td>
      </tr>
      <tr>
         <td>Rennt</td>
         <td>Lola</td>
      </tr>
   </body>
</html>