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

Re: [xsl] "not a node item" inside distinct-values


Subject: Re: [xsl] "not a node item" inside distinct-values
From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx>
Date: Thu, 8 Jun 2006 08:55:45 -0700

On 6/8/06, David Carlisle <davidc@xxxxxxxxx> wrote:
but if
you find yourself doing this:

> <xsl:for-each select="distinct-values(//item/@racknum)">
>         <xsl:variable name="rack-num" select="."/>
>         <xsl:variable name="pocket-num" select="//item[./@racknum =
> $rack-num and position() = last()]"/>

9 times out of 10 its easier (and probably more efficient) to do


<xsl:for-each-group select="//item" group-by="@racknum">



As I also pointed in another similar thread yesterday.


distinct-values() can sometimes be confusing (AFAIR there is
atomization involved, and, of course, context is lost).

To summarize: the result of distinct-values() is that you get an
unordered! bunch of scalar values. Context is lost. Any order is lost.

You have to either:

manually maintain context and re-establish order, or

better, use xsl:for-each-group

--
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.


Current Thread