|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | |||||||||
See:
Description
| Class Summary | |
| Column | Represents a col node from a row node. |
| ColumnAttribute | Represents a column attribute on a column-header element. |
| ColumnData | Represents the col element text node, i.e., the column value. |
| ColumnHeader | This class represents a column-header Node, which contains the metadata for a column. |
| Row | This class represents a row from a query result set. |
| RowSet | This class represents the row-set StreamableNode, a "streamable" holder for the JDBC query result set. |
| StreamableNode | This is the superclass for all nodes in the org.apache.xalan.lib.sql package. |
| XConnection | An XSLT extension that allows a stylesheet to access JDBC data. |
| XStatement | Represents a JDBC query statement. |
Provides extension functions for connecting to a JDBC data source, executing a query, and working incrementally through "streamable" result set.
XConnection provides three extension functions that you can use in your stylesheet.
new() -- Use one of the XConnection constructors to connect to a data source, and return an XConnection object.
query() -- Use the XConnection object query() method to return a "streamable" result set in the form of a row-set node. Work your way through the row-set one row at a time. The same row element is used over and over again, so you can begin "transforming" the row-set before the entire result set has been returned.
The query() extension function returns a Document node that contains (as needed) an array of column-header elements, a single row element that is used repeatedly, and an array of col elements. Each column-header element (one per column in the row-set) contains an attribute (ColumnAttribute) for each of the column descriptors in the ResultSetMetaData object. Each col element contains a text node with a textual representation of the value for that column in the current row.
This example displays the result set from a table in a sample InstantDB database.
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns:sql="org.apache.xalan.lib.sql.XConnection"
extension-element-prefixes="sql">
<xsl:output method="html" indent="yes"/>
<xsl:param name="query" select="'SELECT * FROM import1'"/>
<xsl:template match="/">
<!-- 1. Make the connection -->
<xsl:variable name="products"
select="sql:new('org.enhydra.instantdb.jdbc.idbDriver',
'jdbc:idb:D:\instantdb\Examples\sample.prp')"/>
<HTML>
<HEAD>
</HEAD>
<BODY>
<TABLE border="1">
<!--2. Execute the query -->
<xsl:variable name="table" select='sql:query($products, $query)'/>
<TR>
<!-- Get column-label attribute from each column-header-->
<xsl:for-each select="$table/row-set/column-header">
<TH><xsl:value-of select="@column-label"/></TH>
</xsl:for-each>
</TR>
<xsl:apply-templates select="$table/row-set/row"/>
<xsl:text> </xsl:text>
</TABLE>
</BODY>
</HTML>
<!-- 3. Close the connection -->
<xsl:value-of select="sql:close($products)"/>
</xsl:template>
<xsl:template match="row">
<TR>
<xsl:apply-templates select="col"/>
</TR>
</xsl:template>
<xsl:template match="col">
<TD>
<!-- Here is the column data -->
<xsl:value-of select="text()"/>
</TD>
</xsl:template>
</xsl:stylesheet>
|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | |||||||||