RE: [xsl] Can not convert #RTREEFRAG to a NodeList

Subject: RE: [xsl] Can not convert #RTREEFRAG to a NodeList
From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx>
Date: Tue, 23 Jul 2002 08:57:27 +0100
> 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) &gt; 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@xxxxxxxxxxxx
work: Michael.Kay@xxxxxxxxxxxxxx 
> 
> 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


Current Thread