Template Rules II#
Lernziel#
Sie lernen Template Rules kennen und können Templates für bestimmte Elemente definieren.
Handlungsanweisungen#
- Aufgaben:
Was ist zur vorherigen Variante anders?
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>