xml-xalan-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bart W.Jenkins" <bjenk...@globeflow.com>
Subject RE: UPDATE: How to correctly process, via Xpath, result-tree-frag ments returned by JAVA extensions? More questions...
Date Thu, 26 Jul 2001 18:02:29 GMT
Gary,
  No problem...here are the files:

Hope you can give me some clues...otherwise I am in trouble as I need to be
able to retrieve node sets or RTFs from JAVA code...

TIA

Bart Jenkins, CTO
Globeflow SA
Cardenal Marcelo Spinola 2, D1, Planta 6
28016 Madrid, Spain
mobile telephone: +34 667 65 10 75


-----Original Message-----
From: Gary L Peskin [mailto:garyp@firstech.com]
Sent: Thursday, July 26, 2001 6:14 PM
To: xalan-dev@xml.apache.org
Subject: Re: UPDATE: How to correctly process, via Xpath,
result-tree-fragments returned by JAVA extensions? More questions...


Bart --

In order to understand what you're talking about, please supply the Java
code for your extension function as well as working XML and XSLT to
demonstrate the problem.  It's very difficult to answer questions like
this without seeing the whole picture.

When your extension function returns a Node, the extension mechanism
returns a node-set containing just that single node.

I'm not sure why you say " ... the entire RTF that comes from my JAVA
call ..." because, when you return a Node, your java program is not
returning an RTF but a node-set.

Anyway, if you attach the three items that I mentioned, we'll be able to
look and see what's happening.  It would help if you put some comments
in your XSLT indicating what works and what doesn't.

Thanks,
Gary

"Bart W.Jenkins" wrote:
> 
> All,
>   My original post (see below) discussed the problem I was having
processing
> (via XPATH) a nodeset returned from a JAVA function call.  In the original
> trials, I was returning a java.lang.String.  I since modified my JAVA
> function to return an org.w3c.dom.Node object and am experiencing the same
> problem in the XSL processing of this return result.  That is, I can place
> the entire RTF that comes from my JAVA call into the result tree but any
> applied XPATH statements on it don't seem to do anything.  Is it possible
> that the Xalan processor is seeing "escaped" data and so does not
recognize
> the data as a true RTF?
> 
> Interestingly, if I put this same RTF into the XSL directly, things work
> fine. That is, if I have:
> 
> <xsl:variable name="klient">
>
<DOCUMENT>doclevel<ELEM1>elem1level<ELEM1A>FOO</ELEM1A></ELEM1></DOCUMENT>
> </xsl:variable>
> 
> ...and I don't use the nodeset extension function and try this...
> 
> <xsl:value-of select="$klient/DOCUMENT/ELEM1/ELEM1A"/>
> 
> I get the error: "XSLT Error (javax.xml.transform.TransformerException):
Can
> not convert #RTREEFRAG to a NodeList!"
> (Note:  If I use the document() command to pull in this same RTF from a
file
> URI, the above select statement works fine which is very convenient)
> 
> ...however, if I then surround the RTF with the nodeset function like
this:
> 
> <xsl:value-of select="xalan:nodeset($klient)/DOCUMENT/ELEM1/ELEM1A"/>
> 
> ...this will then correctly return the element value "FOO".
> 
> AS MENTIONED EARLIER, THIS DOES NOT WORK IF THE SAME DATA FOR VARIABLE
> "klient" IS RETURNED FROM A JAVA FUNCTION CALL.  More importantly, this
does
> not work either when I return a java.lang.String or a org.w3c.dom.Node
> object.
> 
> Is this a bug?  Any ideas?  ...anyone...?
> 
> Bart Jenkins, CTO
> Globeflow SA
> Cardenal Marcelo Spinola 2, D1, Planta 6
> 28016 Madrid, Spain
> telephone: +34 667 65 10 75
> 
> >  -----Original Message-----
> > From:         Bart W.Jenkins
> > Sent: Wednesday, July 25, 2001 7:22 PM
> > To:   'xalan-dev@xml.apache.org'
> > Subject:      How to correctly process, via Xpath, result-tree-fragments
> > returned by JAVA extensions?
> >
> > All,
> > Environment:
> >       OS = Windows 2000 Pro
> >       JAVA=java full version "1.3.1-b24"
> >       Xalan=xalan-j_2_2_D6
> >
> > I have XSL that uses the Xalan JAVA extensions mechanism to make calls
to
> > JAVA code to return both simple types (like String) and
> > result-tree-fragments like the following:
> >
> > <DOCUMENT>
> >       <ELEM1>
> >               <ELEM1A>Foo</ELEM1A>
> >       </ELEM1>
> > </DOCUMENT>
> >
> > Problem:  Why, when I apply the "xalan:nodeset()" function to my RTF
that
> > comes back from my JAVA function can I not use XPATH statements to get
at
> > specific elements or attributes in my RTF data?
> >
> > Example:  Assuming I have a declaration like:
> >
> > <?xml version='1.0' encoding='ISO-8859-1' ?>
> > <xsl:stylesheet version="1.0"
> >       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> >       xmlns:Ext="class:com.hg.client"
> >       xmlns:xalan="http://xml.apache.org/xalan"
> >       exclude-result-prefixes="Ext xalan"
> > >
> >
> > I then call into a JAVA function like this:
> >
> > <xsl:variable name="myRTF"
> > select='Ext:myClass.myMethod("someParamData")'/>
> >
> > Which does indeed return an RTF which I can see fully if I do a value-of
> > like:
> >
> > <xsl:value-of select="myRTF"/>
> >
> > Now, assuming I want the value of "<ELEM1A>" which is "Foo", I assume I
> > should do this:
> >
> > <xsl:value-of select="xalan:nodeset(myRTF)/DOCUMENT/ELEM1/ELEM1A"/>
> >
> > But this returns NOTHING and gives NO ERROR.  Can someone tell me why?
> >
> > Thanks in advance...
> >
> > Bart Jenkins, CTO
> > Globeflow SA
> > Cardenal Marcelo Spinola 2, D1, Planta 6
> > 28016 Madrid, Spain
> > telephone: +34 667 65 10 75
> >


Mime
View raw message