This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: xslt 2 grouping
- From: Dimitre Novatchev <dnovatchev at yahoo dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Mon, 15 Jul 2002 10:34:53 -0700 (PDT)
- Subject: [xsl] RE: xslt 2 grouping
- Reply-to: xsl-list at lists dot mulberrytech dot com
--- "Michael Kay" <michael dot h dot kay at ntlworld dot com> wrote:
>
> > 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.
While distinct-values() is still not implemented in Saxon 7.0, one can
use makeDistinct.xsl from the FXSL library.
See:
http://sources.redhat.com/ml/xsl-list/2001-12/msg00806.html
Because the library underwent some significant changes since that early
time (Dec. 2001), the source code has to be modified as follows:
replace:
<xsl:if test="not($arg2/@id = $arg1/*/@id)">
with:
<xsl:if test="not($arg2/@id = $arg1/@id)">
Hope this helped.
=====
Cheers,
Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL
__________________________________________________
Do You Yahoo!?
Yahoo! Autos - Get free new car price quotes
http://autos.yahoo.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list