You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xalan.apache.org by Phillip Lord <p....@russet.org.uk> on 2001/10/31 13:41:21 UTC
Extension functions
I'm a little confused about the return conversion of values
from a Xalan extension function.
Ideally I would like to return something like an iterator
and then operate over that object within XSL.
So for instance.....
<xsl:variable name="iterator"
select="java:getIterator( $java_object )"/>
where $java_object is some appropriate object that I have
previously created.
Now this all works fine, but I was sort of assuming that
I could then operate on this object which appears not to be the
case. For instance if I try
<xsl:message>
Iterator
<xsl:value-of select="java:toString( $iterator )"/>
</xsl:message>
then I get a crash.
Which is a little annoying.
Now of course there are a couple of alternatives here.
I could for instance write a wrapper Object which takes objects of
type $java_object in the constructor. That way I could create an
object with Xalan that I should have access to. But it's really
messy.
I was under the impression that if the return type of a
function where not of a set of specific XSLT types, then it would be
left as a non XSLT object, and I should be able to operate on it as a
Java object.
But I can't.
Any ideas about how I can get this to work. Alternatively
is there another way that I can manipulate Java objects with Xalan.
Thanks
Phil
RE: Extension functions
Posted by Gary L Peskin <ga...@firstech.com>.
Please see the note in the documentation at
http://xml.apache.org/xalan-j/extensions.html#ext-functions in the
section entitled "Return Values".
It states:
"The return value conversion can sometimes cause confusion. For example,
if your extension function returns an object that is a subclass of
NodeIterator, that object will be converted by Xalan-Java to an XSLT
Node-Set. If you later attempt to treat that object as a non-XSLT object
of your original class and try to invoke a method on that object, your
method invocation will fail."
Gary
> -----Original Message-----
> From: Phillip Lord [mailto:p.lord@russet.org.uk]
> Sent: Wednesday, October 31, 2001 4:41 AM
> To: xalan-j-users@xml.apache.org
> Subject: Extension functions
>
>
>
>
>
>
> I'm a little confused about the return conversion of
> values from a Xalan extension function.
>
> Ideally I would like to return something like an
> iterator and then operate over that object within XSL.
>
>
> So for instance.....
>
>
>
> <xsl:variable name="iterator"
> select="java:getIterator( $java_object )"/>
>
>
> where $java_object is some appropriate object that I have
> previously created.
>
> Now this all works fine, but I was sort of assuming that
> I could then operate on this object which appears not to be
> the case. For instance if I try
>
> <xsl:message>
> Iterator
> <xsl:value-of select="java:toString( $iterator )"/>
> </xsl:message>
>
> then I get a crash.
>
> Which is a little annoying.
>
> Now of course there are a couple of alternatives here.
> I could for instance write a wrapper Object which takes objects of
> type $java_object in the constructor. That way I could create
> an object with Xalan that I should have access to. But it's
> really messy.
>
> I was under the impression that if the return type of
> a function where not of a set of specific XSLT types, then it
> would be left as a non XSLT object, and I should be able to
> operate on it as a Java object.
>
> But I can't.
>
> Any ideas about how I can get this to work. Alternatively
> is there another way that I can manipulate Java objects with Xalan.
>
> Thanks
>
> Phil
>
>
>
>
>