This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Can not convert #RTREEFRAG to a NodeList
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Tue, 23 Jul 2002 08:57:27 +0100
- Subject: RE: [xsl] Can not convert #RTREEFRAG to a NodeList
- Reply-to: xsl-list at lists dot mulberrytech dot com
> This is the part of my stylesheet:
>
> <xsl:variable name='record'>
> <xsl:value-of select="document(fullKey)/xmldata"/>
> </xsl:variable>
>
> <xsl:if test="string-length($record) > 0">
> <xsl:value-of select="$record/*/info/title"/>
> </xsl:if>
>
> The variable record is just fine because I tried to print out
> from screen and it looks just fine. But after I tried to use
> the <xsl:value-of select="$record/*/ztisuab/ztitle/title"/>,
> it gives me the
> error:
>
> Can not convert #RTREEFRAG to a NodeList
You have defined $record as a result tree fragment, so XSLT 1.0 does not
allow you to use it in a path expression. You need the xx:node-set()
extension.
But there's a simpler solution: create it as a node-set in the first
place, by writing:
<xsl:variable name="record"
select="document(fullKey)/xmldata"/>
I see a great deal of this unnecessary creation of result tree
fragments. Whenever you see
<xsl:variable name="x"><xsl:value-of select="Y"/></xsl:variable>
it should almost always be rewritten as
<xsl:variable name="x" select="Y"/>
Michael Kay
Software AG
home: Michael.H.Kay@ntlworld.com
work: Michael.Kay@softwareag.com
>
> This is very strange since I used the same way to access data
> in another stylesheet and everything works just fine. I use
> the version for both
> stylesheet:
>
> <?xml version="1.0"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:xalan="http://xml.apache.org/xalan"
> version="1.0">
>
>
> Thanks a lot for your help.
>
> Ming
>
>
>
>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list