xsl-list
[Top] [All Lists]

Re: Putting a nodeset in a variable

2002-11-23 17:02:49
Hello Ismael,

the template

<xsl:template match="/">
  <xsl:for-each select="traps/trap">
    <xsl:sort select="./@id"/>
    <xsl:value-of select="@id"/>
  </xsl:for-each>
</xsl:template>

does the same like your one. But you called your variable distinctValues, so I assume you *want* distinct values. Then it is a grouping problem and the most propagated method is the Muenchian one:

<xsl:key name="traps" match="trap" use="@id"/>

<xsl:template match="/traps">
  <xsl:for-each select="trap[generate-id() =
                                    generate-id(key('traps', @id))]">
    <xsl:sort select="@id"/>
    <xsl:value-of select="@id"/>
  </xsl:for-each>
</xsl:template>

And the most propagated web resource relating to Muenchian Method is http://www.jenitennison.com/xslt/grouping/muenchian.xml.

Regards,

Joerg

Cams Ismael wrote:
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



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