Inhaltsverzeichnis
Eine XML-Datei sorgt für die Verbindung zur Datenbank und übergibt ihr die SQL-Befehlssätze:
<query connection="foo"> select * from adressen <!-- DB-Abfrage in sql --> </query>
Für die Übergabe sorgt hier das SQL-Modul von Cocoon. Entsprechend ist der Datei-Header gestaltet.
Die vollständige XML-Datei:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="sql01.xsl" type="text/xsl"?>
<?cocoon-process type="sql"?>
<?cocoon-process type="xslt"?>
<!DOCTYPE page SYSTEM "sql.dtd">
<page> <!-- root-element -->
<connectiondefs>
<connection name="foo"> <!-- Name DB-Verbindung -->
<driver>org.postgresql.Driver</driver>
<dburl>jdbc:postgresql://localhost/xml</dburl><!-- URL DB-VERbindung -->
<username>root</username>
<password>fritz</password>
</connection>
</connectiondefs>
<tab>
<query connection="foo"> <!-- Aufruf DB-Verbindung -->
select * from adressen <!-- DB-Abfrage -->
</query>
</tab>
</page>
Die von der Datenbank kommende Antwort wird in XML überführt und vom Stylesheet in HTML (oder ein anderes Ausgabeformat) umgewandelt. Im Falle von HTML steht die Ausgabe sofort via Cocoon-Tomcat-Apache online zur Verfügung.
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="page">
<!-- Anweisung zur Ausgabe von html -->
<xsl:processing-instruction name="cocoon-format">
type="text/html"
</xsl:processing-instruction>
<!-- html-Körper -->
<html>
<head>
<title>
PostgreSQL Search Results
</title>
</head>
<body bgcolor="#FFF8DC">
<font face="helvetica">
<h1>PostgreSQL</h1>
<!-- übernimmt Inhalte der .xml-Datei -->
<xsl:apply-templates/>
</font>
</body>
</html>
</xsl:template>
<!-- wählt das selbstdeklarierten Tag 'tab' aus -->
<xsl:template match="tab">
<table border="2" cellspacing="0" cellpadding="6"
bordercolor='#000099' bgcolor="#CCCCFF">
<tr>
<th>Name</th>
<th>Vorname</th>
<th>PLZ</th>
<th>Ort</th></tr>
<!-- übernimmt Inhalte von 'tab' und damit
das Ergebnis der Datenbankabfrage -->
<xsl:apply-templates/>
</table>
</xsl:template>
<!-- Formatiert das Ergebnis der Datenbankabfrage -->
<xsl:template match="ROW">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="vorname"/></td>
<td><xsl:value-of select="plz"/></td>
<td><xsl:value-of select="ort"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>