[xsl] Re: Re: A question about the expressive power and limitations of XPath 2.0

Subject: [xsl] Re: Re: A question about the expressive power and limitations of XPath 2.0
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Sun, 13 Jan 2002 02:08:49 -0800 (PST)
Hi Jeni,

> OK, let me think... a higher-order distinct function is an example.
> You have structured identifiers of the form "group.subgroup" and you
> want to return a unique set of nodes based on the "group" part of the
> identifier (note that Mike said they were discussion how to support
> this already, so perhaps there'll be a new 'distinct' clause added to
> the for expression to solve it). A recursive solution would be:
> 
> <xsl:function name="my:distinct">
>   <xsl:param name="nodes" type="node*" select="()" />
>   <xsl:param name="distinct" type="node*" select="()" />
>   <xsl:variable name="new-distinct"
>     select="if ($nodes[1] and
>                 some $n in ($distinct)
>                 satisfies (substring-before($n/@id, '.') =
>                            substring-before($nodes[1]/@id, '.')))
>             then ($distinct | $n)
>             else $distinct" />
>   <xsl:result select="if ($nodes)
>                       then my:distinct($nodes[position() > 2],
>                                        $new-distinct)
>                       else $distinct
> </xsl:function>

I'm sorry, but it's not absolutely obvious. Let's have an example:

$nodes contains:

a1.b1
a1.c1
a1.b1
a1.b1.c1

a2.b2
a2.c2
a2.b2
a2.b2.c2


Then what should be the result of distinct() ?

Cheers,
Dimitre.



__________________________________________________
Do You Yahoo!?
Send FREE video emails in Yahoo! Mail!
http://promo.yahoo.com/videomail/

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


Current Thread