This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: xslt 2 grouping
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Mon, 15 Jul 2002 10:11:23 +0100
- Subject: RE: [xsl] xslt 2 grouping
- Reply-to: xsl-list at lists dot mulberrytech dot com
> Mike wrote:
> > The XSLT 2.0 solution (untested) is:
> >
> > <xsl:for-each-group select="e1" group-by=".">
> > <e1 name="{.}">
> > <xsl:for-each-group select="current-group()" group-by="@att">
> > <xsl:value-of select="concat(@att, ' ')"/>
> > </xsl:for-each>
> > </e1>
> > </xsl:for-each>
> >
> > You could also use distinct-values().
>
> Hint :-) How please?
>
I don't remember the problem well enough to be specific. But
distinct-values() (not implemented yet in Saxon 7.1) applied to a set of
nodes gives you a subset of those nodes in which no two nodes are
deep-equal to each other. Deep equality is a new concept in XPath 2.0,
for example <n>Michael <s>Kay</s></n> and <n>Michael Kay</n> have the
same string-value, but they are not deep-equal, and are therefore
considered distinct for the purpose of the distinct-values() function.
The XSLT 2.0 grouping facilities do not (at present) use deep equality,
the above example will use string equality, but you could ask for
numeric equality if you wanted.
Michael Kay
Software AG
home: Michael.H.Kay@ntlworld.com
work: Michael.Kay@softwareag.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list