[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] How to assign a nodelist to a variable


Subject: RE: [xsl] How to assign a nodelist to a variable
From: "Sindigi, Ganesh K" <SindiGK@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 7 Jan 2004 16:10:01 -0700

I have something similar scenario.  I need to select the nodeset using 'key'
and pass this to other templates.  
If I do like below, I am getting tree fragment.
<xsl:variable name="switch"> 
   <xsl:template name="pTH">
      <xsl:param name="cT"/>
      <xsl:for-each select="$fieldHeaders">
         <xsl:for-each select="key('customerLookup',
$cT/ancestor-or-self::customerList/@id)/*">
            <xsl:value-of select="name(.)"/>
         </xsl:for-each>
      </xsl:for-each>
   </xsl:template>
</xsl:variable>

How do I achieve this?

Thanks,
Ganesh.

-----Original Message-----
From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Lars Huttar
Sent: Wednesday, January 07, 2004 1:48 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] How to assign a nodelist to a variable


> Hi all....
> 
> I need to do something like:
> 
> <xsl:value-of select="ROW[field1 = 'A' and field2 = 'B']/f1" />
> <xsl:value-of select="ROW[field1 = 'A' and field2 = 'B']/f2" />
> <xsl:value-of select="ROW[field1 = 'A' and field2 = 'B']/f3" />
> 
> Since I need to call ROW[field1 = 'A' and field2 = 'B'] 
> repeteadly, I think that by placing it in a variable first 
> will be better, so I tried:
> 
> <xsl:variable name="valores"><xsl:value-of select="ROW[field1 
> = 'A' and field2 = 'B']" /></xsl:variable>

This should be changed to:

<xsl:variable name="valores" select="ROW[field1 = 'A' and field2 = 'B']" />

When a variable is given its value via the select attribute,
it can remain a nodeset.
When the value is given as the content (child[ren]) of xsl:variable,
it gets converted to a result tree fragment, which cannot be used
as a nodeset in XSL 1.0.

Lars


> and then called:
> 
> <xsl:value-of select="$valores/f1" />
> <xsl:value-of select="$valores/f2" />
> <xsl:value-of select="$valores/f3" />
> 
> but I receive the error:
> 
> "Reference to variable or parameter 'valores' must evaluate 
> to a node list."
> 
> What should I do?


 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
Keywords
xsl