On Fri, 2005-05-06 at 14:03 +0000, Aron Bock wrote:
Thorsten,
Whenever you do something like:
<xsl:variable>
.. something other than a scalar value
</xsl:variable>
You end up with a "tree fragment", as you've found. Such fragments need to
be converted to a nodeset, which extension function is offered by various
processors. "node-set", by the MSXML processor, "nodeset" by xalan, etc.
You should be able to find examples on the net.
As far as possible, however, try not to create a tree fragment (in XSLT
1.0); it makes life easier. In Your case you could define your variable as:
<xsl:variable name="objectProperty" select="..."/>
and you'd get back a node-set that could be simply traversed further
downstream.
Wow, cheers. That helped a million, Aron. :)
<xsl:variable name="objectProperty" select="..."/>
+1
Yeah I hoped that it was that simple and I did not had to use extension
functions. I tried and it is working like a charm.
Cheers and again thanks for this solution. :)
Regards,
--A
From: Thorsten Scherler <thorsten(_at_)apache(_dot_)org>
Reply-To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] org.apache.xpath.objects.XRTreeFrag error
Date: Fri, 06 May 2005 14:32:14 +0200
Hi list,
I am trying to process the following code:
I defined a variable like:
<xsl:variable name="objectProperty">
<xsl:copy-of select="$model[(_at_)objectId=
$objectId]/forrest:property[(_at_)name=$name]"/>
</xsl:variable>
This variable $objectProperty is a frag like this:
<forrest:property newId="221" name="mq1-preis">
<euro>85</euro>
<cent>00</cent>
</forrest:property>
Then I call another template with this frag:
<xsl:call-template name="getText">
<xsl:with-param name="setX">
<xsl:copy-of select="$objectProperty"/>
</xsl:with-param>
</xsl:call-template>
In the final template I have
<xsl:template name="getText">
<xsl:param name="setX"><test>This is a test.</test></xsl:param>
...
<xsl:copy-of select="$setX"/>
...
</xsl:template>
That is working fine because it will output:
<forrest:property newId="221" name="mq1-preis">
<euro>85</euro>
<cent>00</cent>
</forrest:property>
...but as soon I as I change the final template and use
<xsl:value-of select="$setX/euro"/> or
<xsl:copy-of select="$setX/euro"/>
I get
javax.xml.transform.TransformerException: java.lang.ClassCastException:
org.apache.xpath.objects.XRTreeFrag
Can anybody tell me what is going wrong and why the XPath is not
working?
TIA
salu2
--
thorsten
"Together we stand, divided we fall!"
Hey you (Pink Floyd)
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--
thorsten
"Together we stand, divided we fall!"
Hey you (Pink Floyd)
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--