RE: [xsl] Applying for-each loop to variable that contains result tree fragment

Subject: RE: [xsl] Applying for-each loop to variable that contains result tree fragment
From: Américo Albuquerque <aalbuquerque@xxxxxxxxxxxxxxxx>
Date: Wed, 7 May 2003 20:19:27 +0100
Hi.

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Shirley Peter
> Sent: Wednesday, May 07, 2003 8:08 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Applying for-each loop to variable that 
> contains result tree fragment
> 
> 
> Apologies - the email wasn't complete ...
> 
> I want to use a variable as the context for a for-each
>  loop. 
> i.e. <xsl:for-each select="$var">
>  
> However the content of this variable is dependent on
> some conditions, and therefore the body of the
> variable is used to determine this.
> e.g. 
> <xsl:variable name="var">
>   <xsl:if test="somecondition">
>     <xsl:value-of select="nodes1"/>
>   </xsl:if>
>   <xsl:if test="othercondition">
>     <xsl:value-of select="nodes2"/>
>   </xsl:if>
> </xsl:variable>
> 
> I get an error in the for-each loop: "Can not convert 
> #RTREEFRAG to a NodeList!"

You could use  x:node-set() function (x will depend on your xslt
processor) like:
<xsl:for-each select="x:node-set($var)">
 ....
</xsl:for-each>

Or do something like:
<xsl:variable name="var" select="nodes1[somecondition] |
nodes2[othercondition]"/>

Hope this helps you.




 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread