xsl-list
[Top] [All Lists]

RE: Putting a nodeset in a variable

2002-11-22 06:52:36
Thanks for your help. However because I want to keep my stylesheet processor
independent it's not possible to use extensions. So I guess I have to look
for another solution.

Kind regards,
Ismaël

-----Original Message-----
From: Vasu Chakkera [mailto:vasucv(_at_)hotmail(_dot_)com]
Sent: vrijdag 22 november 2002 14:38
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Putting a nodeset in a variable


<xsl:for-each select="$distinctValues/trap">
Expression must evaluate to a node-set.

yes ..
You can not iterate through the variable that way. you must make use of the
nodeset extension of the form xxx:nodeset()..
example , for your problem, if you are using XALAN , then you may wish to do
the following ,

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:xalan="http://xml.apache.org/xalan"; extension-element-prefixes="xalan"
version="1.0">
<xsl:template match="/">
<xsl:variable name="distinctValues">
<traps>
<xsl:for-each select="traps/trap">
<xsl:sort select="./@id"/>
<xsl:copy-of select="."/>
</xsl:for-each>
</traps>
</xsl:variable>

<xsl:for-each select="xalan:nodeset($distinctValues)/traps/trap">
<xsl:value-of select="@id"/>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>
This should print 2556..

If however, you are using a different processor, you must check the
documentation to see how you can use the nodeset() extension function..
HTH


----- Original Message -----
From: "Cams Ismael" <Ismael(_dot_)Cams(_at_)siemens(_dot_)atea(_dot_)be>
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Sent: Friday, November 22, 2002 1:10 PM
Subject: [xsl] Putting a nodeset in a variable


Hello,

is it possible to put a nodeset in a variable.
What I try to do is the following. I have an xml file which I want to
group.
This resulting tree I want to put in a variable so I can use it later on.

E.g.
<traps>
<trap id="5"/>
<trap id="6"/>
<trap id="2"/>
<trap id="5"/>
</traps>

<xsl:variable name="distinctValues">
<traps>
<xsl:for-each select="traps/trap">
<xsl:sort select="./@id"/>
<xsl:copy-of select="."/>
</xsl:for-each>
</traps>
</xsl:variable>

<xsl:template match="/">
<xsl:for-each select="$distinctValues/trap">
<xsl:value-of select="@id"/>
</xsl:for-each>
</xsl:template>

When I try to do this I get following error:
Expression must evaluate to a node-set.

Can somebody give me a hint if this is possible ?

Kind regards,
Ismaël




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


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

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



<Prev in Thread] Current Thread [Next in Thread>