xsl-list
[Top] [All Lists]

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

2003-05-07 12:19:27
Hi.

-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of 
Shirley Peter
Sent: Wednesday, May 07, 2003 8:08 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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