John --
I probably don't have the latest. I changed the output method to "xml"
though and everything works fine with the original XalanJ (not XSLTC)
stuff. Anyway, I think I've almost got your XPath problem found, maybe.
Gary
John Gentilin wrote:
>
> Gary,
>
> Are you sure you have the latest. I had to change the name of the <col>
> tag to <column> since it seems that <col> has special meaning to the
> XSLTC stuff (see prior message). When I use <col>, you don't get a
> closing tag or data, <column> works fine though.
>
> JohnG
>
> Gary L Peskin wrote:
>
> > John --
> >
> > I must confess that I have not really been "into" the SQL Extension
> > code. However, I took your stylesheet with the latest CVS build. I
> > changed to using the JDBC-ODBC with my desktop Access setup and for the
> >
> > <xsl:copy-of select="$table/row-set/" />
> >
> > my response was
> >
> > <row-set>
> > <column-header column-label="Field1"
> > column-name="Field1"></column-header>
> > <column-header column-label="Field2"
> > column-name="Field2"></column-header>
> > <column-header column-label="Field3"
> > column-name="Field3"></column-header>
> > <row>
> > <col column-label="Field1" column-name="Field1">
> > <col column-label="Field2" column-name="Field2">
> > <col column-label="Field3" column-name="Field3">
> > </row>
> > <row>
> > <col column-label="Field1" column-name="Field1">
> > <col column-label="Field2" column-name="Field2">
> > <col column-label="Field3" column-name="Field3">
> > </row>
> > </row-set>
> >
> > which sort of looked okay to me except the field values are not shown
> > and there is no closing tag for the col element.
> >
> > When I changed the select to $table/row-set/row/*, I get
> >
> > javax.xml.transform.TransformerException:
> > at
> > org.apache.xalan.transformer.TransformerImpl.transformNode(Compiled C
> > ode)
> > at
> > org.apache.xalan.transformer.TransformerImpl.transform(Compiled Code)
> >
> > at
> > org.apache.xalan.transformer.TransformerImpl.transform(TransformerImp
> > l.java:1079)
> > at
> > org.apache.xalan.transformer.TransformerImpl.transform(TransformerImp
> > l.java:1057)
> > at org.apache.xalan.xslt.Process.main(Compiled Code)
> > ---------
> > java.lang.NullPointerException:
> > at
> > org.apache.xalan.transformer.ResultTreeHandler.isDefinedNSDecl(Result
> > TreeHandler.java:1424)
> > at
> > org.apache.xalan.transformer.ResultTreeHandler.addAttribute(ResultTre
> > eHandler.java:1452)
> > at
> > org.apache.xalan.transformer.TreeWalker2Result.startNode(Compiled Cod
> > e)
> > at org.apache.xml.dtm.ref.DTMTreeWalker.traverse(Compiled Code)
> > at
> > org.apache.xalan.transformer.TreeWalker2Result.traverse(TreeWalker2Re
> > sult.java:115)
> > at org.apache.xalan.templates.ElemCopyOf.execute(Compiled Code)
> > at
> > org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Co
> > mpiled Code)
> > at
> > org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(Tran
> > sformerImpl.java:1969)
> > at
> > org.apache.xalan.transformer.TransformerImpl.transformNode(Compiled C
> > ode)
> > at
> > org.apache.xalan.transformer.TransformerImpl.transform(Compiled Code)
> >
> > at
> > org.apache.xalan.transformer.TransformerImpl.transform(TransformerImp
> > l.java:1079)
> > at
> > org.apache.xalan.transformer.TransformerImpl.transform(TransformerImp
> > l.java:1057)
> > at org.apache.xalan.xslt.Process.main(Compiled Code)
> >
> > so there must be something wrong with the result tree building, I
> > guess. I'll have a look DTMDump.txt and see if I see anything there.
> >
> > Anyway, as I said, I'm new to all of this but I'm willing to work with
> > you so that you can wrap this up! Sometimes, having someone to bounce
> > ideas off of is just what's needed.
> >
> > Gary
> >
> > John Gentilin wrote:
> > >
> > > Gary,
> > >
> > > The easiest way is to change XConnection#query() method
> > > in the SQL Extension code to return null. For me this usually
> > > happens when an exception is thrown. As I said, the transformation
> > > works correctly it is just Process that refuses to terminate. So I
> > > get all my information including data added to the result tree
> > > after query() returns null.
> > >
> > > Attached is a sample Stylesheet I have been using, although it
> > > does not really matter.
> > >
> > > If you have the time to look at this, I am also having another
> > > problem that is really hanging me up. If I execute an XPath
> > > statement and the select specifies the extent on a tree, it
> > > will result in an exception. So if I have the code
> > >
> > > <xsl:copy-of select="$table/row-set/row/column" />
> > >
> > > An exception will occur where as if I execute the following.
> > >
> > > <xsl:copy-of select="$table/row-set/row" />
> > > Not only will the exception NOT occur, the data is transferred
> > > to the result tree just fine.
> > >
> > > The same occurs for the following code pair
> > > <xsl:copy-of select="$table/row-set/column-header" />
> > > and
> > > <xsl:copy-of select="$table/row-set" />
> > >
> > > The only difference I can see is that the XPath statement
> > > specifies all the elements in the selected branch.
> > >
> > > Regards
> > > John G
> > >
> > > Gary L Peskin wrote:
> > >
> > > > John --
> > > >
> > > > I can't think of anything in the extension mechanism that would make
> > > > this happen. If null is returned from an extension element, nothing
> > > > happens. If returned from an extension function, it just turns into an
> > > > XNull. If you can't figure it out, please post what I would need to
> > > > recreate the situation.
> > > >
> > > > Thanks,
> > > > Gary
> > > >
> > > > John Gentilin wrote:
> > > > >
> > > > > If my extension returns null, the transformation seems to
> > > > > complete as expected but Process never seems to terminate,
> > > > > like some background thread is just keeping the program
> > > > > hung up.
> > >
> > > ------------------------------------------------------------------------
> > > <?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="driver" select="'org.enhydra.instantdb.jdbc.idbDriver'"/>
> > > <xsl:param name="datasource" select="'jdbc:idb:./instantdb/sample.prp'"/>
> > > <xsl:param name="query" select="'SELECT * FROM import1'"/>
> > >
> > > <xsl:template match="/">
> > > <xsl:variable name="db" select="sql:new($driver, $datasource)"/>
> > > <!-- xsl:if test="sql:connect($db, $driver, $datasource)" -->
> > > <xsl:text> Connection make OK</xsl:text>
> > > <!-- /xsl:if -->
> > > <xsl:variable name="table" select='sql:query($db, $query)'/>
> > > <!--
> > > <xsl:for-each select="$table/row-set/column-header">
> > > <xsl:value-of select="@column-label"/></TH>
> > > </xsl:for-each>
> > > -->
> > > <xsl:variable name="table" select='sql:query($db, $query)'/>
> > > <xsl:copy-of select="$table/row-set/" />
> > > <xsl:value-of select="sql:close($db)"/>
> > >
> > > </xsl:template>
> > >
> > > </xsl:stylesheet>