This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: xslt 2 grouping


--- "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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]