xsl-list
[Top] [All Lists]

RE: org.apache.xpath.objects.XRTreeFrag error

2005-05-06 07:03:26
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.

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>
--~--



<Prev in Thread] Current Thread [Next in Thread>