スタイルシートをテーブルに格納しておき、結合処理を通じてXSLT変換を実行する関数およびメソッドでそれらを使用することができます。この例では、スタイルシートをインポートするための情報がxslt.txtファイルに含まれています(スタイルシートのファイル名およびID)。styletabテーブルに格納されるスタイルシートは、Itemlist.xsltファイルに書き込まれます。
CREATE TABLE styletab( stylesheetid INTEGER, stylesheetcontent XML ) PRIMARY INDEX (stylesheetid);
xslt.txtファイルの内容は、以下のとおりです。
Itemlist.xslt|1
Itemlist.xsltファイルの内容は、以下のとおりです。
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/Customer"> <html> <title>Items Ordered</title> <body> <table border="1"> <tr> <th>Item ID</th> <th>Description</th> <th>Part Number</th> <th>Qty</th> <th>Unit Price</th> <th>Total Price</th> </tr> <xsl:for-each select="Order/Item"> <tr> <td><xsl:value-of select="@ID"/></td> <td><xsl:value-of select="Description"/></td> <td><xsl:value-of select="PartNumber"/></td> <td><xsl:value-of select="Quantity"/></td> <td><xsl:value-of select="UnitPrice"/></td> <td><xsl:value-of select="Price"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
スタイルシートをstyletabテーブルに格納するには、次の文を使用します。
.IMPORT VARTEXT '|' LOBCOLS=1 FILE='xslt.txt' USING (fxslt CLOB AS DEFERRED, schemaid VARCHAR(32)) INSERT INTO styletab values(:schemaid, new XML(:fxslt));
ここで、XSLTTRANSFORMメソッドを使用してstyletabテーブルを結合することにより、スタイルシートを参照することができます。
SELECT customerXML.XSLTTRANSFORM(styletab.stylesheetcontent, '') FROM customer, styletab WHERE customerID=1 and styletab.stylesheetid = 1;
この問合わせの結果の一部を以下に示します。省略記号(...)は、問合わせ結果の一部ではありません。これは、問合わせからさらに結果が返されるが、この例では省略されていることを示しています。
customerXML.XSLTTRANSFORM(stylesheetcontent, '') ----------------------------------------------------------------------- <html><title>Items Ordered</title><body><table border="1"><tr><th>Item ID</th><th>Description</th><th>Part Number</th><th>Qty</th><th>Unit Price</th><th>Total Price</th></tr><tr><td>001</td><td>Motoro ...