Umsetzung mit XSLT-Formatvorlagen
Die Standardmethode zum Umsetzen von XML-Daten in andere Formate ist die Verwendung von XSLT (Extensible Stylesheet Language Transformation). Sie können die integrierte Funktion XSLTRANSFORM verwenden, um XML-Dokumente in HTML, einfachen Text oder andere XML-Schemata zu konvertieren.
- Formatierung (Umsetzung von XML in HTML oder Formatierungssprachen wie beispielsweise FOP)
- Datenaustausch (Abfragen von Daten, Reorganisieren von Daten und Umsetzen von Daten aus einem XML-Schema in ein anderes XML-Schema oder in ein Datenaustauschformat wie beispielsweise SOAP)
Funktionsweise von XSLT
template
(Schablone), das beschreibt, welche Aktion ausgeführt werden soll,
wenn ein bestimmtes XML-Element oder eine bestimmte Abfrage in der Zieldatei gefunden wird. Ein XSLT-Schablonenelement beginnt üblicherweise mit der Angabe
des Elements, für das es gilt. Beispiel:<xsl:template match="product">
Dieses Element deklariert, dass der Inhalt dieser
Schablone verwendet wird, um den Inhalt einer beliebigen Markierung vom Typ <product>
zu ersetzen, die in der XML-Zieldatei gefunden
wird. Eine XSLT-Datei besteht aus einer Liste solcher Schablonen in beliebiger Reihenfolge.<?xml version="1.0"?>
<product pid="100-201-01">
<description>
<name>Ice Scraper, Windshield 4 inch</name>
<details>Basic Ice Scraper 4 inches wide, foam handle</details>
<price>3.99</price>
</description>
</product>
Dieser Eintrag enthält Informationen wie beispielsweise die Teilenummer (pid), eine Beschreibung (description) und den Preis
(price) eines Eiskratzers für die Windschutzscheibe. Einige dieser Informationen sind in Elementen wie beispielsweise
<name>
enthalten. Andere Informationen wie beispielsweise die Teilenummer sind in Attributen (in diesem Fall dem Attribut
pid
des Elements <product>
) enthalten. Um diese Informationen als Webseite anzuzeigen, könnten Sie die folgende
XSLT-Schablone anwenden:<?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>
<body>
<h1><xsl:value-of select="/product/description/name"/></h1>
<table border="1">
<th>
<xsl:apply-templates select="product"/>
</th>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="product">
<tr>
<td width="80">product ID</td>
<td><xsl:value-of select="@pid"/></td>
</tr>
<tr>
<td width="200">product name</td>
<td><xsl:value-of select="/product/description/name"/></td>
</tr>
<tr>
<td width="200">price</td>
<td>$<xsl:value-of select="/product/description/price"/></td>
</tr>
<tr>
<td width="50">details</td>
<td><xsl:value-of select="/product/description/details"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
Wenn ein XSLT-Prozessor sowohl die oben dargestellte
Schablone als auch die oben dargestellten Zieldokumente als Eingabe erhält,
wird das folgende HTML-Dokument ausgegeben:<html>
<body>
<h1>Ice Scraper, Windshield 4 inch</h1>
<table border="1">
<th>
<tr>
<td width="80">product ID</td><td>100-201-01</td>
</tr>
<tr>
<td width="200">product name</td><td>Ice Scraper, Windshield 4 inch</td>
</tr>
<tr>
<td width="200">price</td><td>$3.99</td>
</tr>
<tr>
<td width="50">details</td><td>Basic Ice Scraper 4 inches wide, foam handle</td>
</tr>
</th>
</table>
</body>
</html>
Der XSLT-Prozessor prüft das eingehende XML-Dokument auf bestimmte Bedingungen (normalerweise eine Bedingung pro Schablone). Wenn eine Bedingung 'true' (wahr) ist, wird der Schabloneninhalt in die Ausgabe eingefügt. Ist der Wert der Bedingung 'false' (falsch), wird die Schablone vom Prozessor nicht berücksichtigt. Möglicherweise fügt die Formatvorlage der Ausgabe eigene Daten hinzu wie beispielsweise Markierungen und Zeichenfolge (z. B. "product ID") in der HTML-Tabelle.
XPath kann sowohl zum Definieren von Schablonenbedingungen wie in <xsl:template
match="product">
als auch zum Auswählen und Einfügen von Daten aus einer beliebigen Position im XML-Datenstrom wie in <h1><xsl:value-of select="/product/description/name"/></h1>
verwendet werden.
Verwendung von XSLTRANSFORM
Sie können die Funktion XSLTRANSFORM verwenden, um XSLT-Formatvorlagen auf XML-Daten anzuwenden. Wenn Sie der Funktion den Namen eines XML-Dokuments und ein XSLT-Style-Sheet bereitstellen, wendet die Funktion das Style-Sheet auf das Dokument an und gibt das Ergebnis zurück.
Falls Sie die Dokumentfunktion (document) von XSLT in Ihrer XSLT-Formatvorlage angeben, stellen Sie sicher, dass in der Registry-Variable DB2_XSLT_ALLOWED_PATH die Verzeichnisse festgelegt sind, von denen Sie weitere XML-Dokumente herunterladen können.