This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Re: A question about the expressive power and limitations of XPath 2.0
- From: Dimitre Novatchev <dnovatchev at yahoo dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Sun, 13 Jan 2002 02:08:49 -0800 (PST)
- Subject: [xsl] Re: Re: A question about the expressive power and limitations of XPath 2.0
- Reply-to: xsl-list at lists dot mulberrytech dot com
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