Hello, I am using the SQl extension from xalan to retrieve some data form a database. After the connection if I iterate over the resultset I get still the same row. The interation index is correct. For example:
Table: 1 | test1 2 | test2 3 | test3 I get: Zeilennummer148; Spaltennummer15; 3 Zeilennummer148; Spaltennummer15; test3 Zeilennummer148; Spaltennummer15; 3 Zeilennummer148; Spaltennummer15; test3 Zeilennummer148; Spaltennummer15; 3 Zeilennummer148; Spaltennummer15; test3 If I use the same code on a local created variable, with the same xml-strucure I get the correct values: Zeilennummer148; Spaltennummer15; 1 Zeilennummer148; Spaltennummer15; test1 Zeilennummer148; Spaltennummer15; 2 Zeilennummer148; Spaltennummer15; test2 Zeilennummer148; Spaltennummer15; 3 Zeilennummer148; Spaltennummer15; test3 Has someone the same effect? Juraj XSL: <?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" xmlns:xalan="http://xml.apache.org/xalan" exclude-result-prefixes="xalan" > <xsl:output method="html" indent="yes"/> <!-- parameter setting to connect to DB2 <xsl:param name="driver" select="'COM.ibm.db2.jdbc.app.DB2Driver'"/> <xsl:param name="datasource" select="'jdbc:db2:sample'"/> --> <!-- parameter setting to connect to MySQL --> <xsl:param name="driver" select="'com.mysql.jdbc.Driver'"/> <xsl:param name="datasource" select="'jdbc:mySQL://localhost/test'"/> <xsl:param name="query" select="'SELECT * FROM testtabelle'"/> <xsl:param name="username" select="'root'"/> <xsl:param name="passwd" select="''"/> <xsl:variable name="testt"> <row-set> <row> <col>1</col> <col>test1</col> </row> <row> <col>2</col> <col>test2</col> </row> <row> <col>3</col> <col>test3</col> </row> </row-set> </xsl:variable> <xsl:template match="/"> <xsl:variable name="db" select="sql:new()"/> <!-- Connect to the database with minimal error detection --> <xsl:if test="not(sql:connect($db, $driver, $datasource, $username, $passwd))" > <xsl:message>Error Connecting to the Database</xsl:message> <xsl:copy-of select="sql:getError($db)/ext-error" /> </xsl:if> <HTML> <HEAD> <TITLE>List of products</TITLE> </HEAD> <BODY> <TABLE border="1"> <xsl:variable name="table" select='sql:query($db, $query)'/> <!-- Let's include Error Checking, the error is actually stored in the connection since $table will be either data or null --> <xsl:if test="not($table)" > <xsl:message>Error in Query</xsl:message> <xsl:copy-of select="sql:getError($db)/ext-error" /> </xsl:if> <TR> <xsl:for-each select="$table/sql/metadata/column-header"> <xsl:message><xsl:value-of select="@column-label"/></xsl:message> </xsl:for-each> </TR> <!-- <xsl:apply-templates select="$table/sql/row-set"/> --> <xsl:variable name="testtabelle2" select="xalan:nodeset($testt)"/> <xsl:apply-templates select="$testtabelle2/row-set"/> </TABLE> </BODY> </HTML> <xsl:value-of select="sql:close($db)"/> </xsl:template> <xsl:template match="row-set"> <xsl:for-each select="./row"> <xsl:apply-templates select="."/> </xsl:for-each> </xsl:template> <xsl:template match="row"> <xsl:apply-templates select="./col"/> </xsl:template> <xsl:template match="col"> <xsl:message><xsl:value-of select="./text()"/></xsl:message> </xsl:template> </xsl:stylesheet>
