RE: [xsl] Filtering out duplicates in current-group()

Subject: RE: [xsl] Filtering out duplicates in current-group()
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 29 Mar 2006 19:09:17 +0100
Just do another level of grouping:

<xsl:for-each-group select="current-group()" group-by="Title">
  .. output details of this title ..

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: Smith, Donald [mailto:DSmith@xxxxxxxxxxxxxxxxxxx] 
> Sent: 29 March 2006 17:32
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Filtering out duplicates in current-group()
> 
> Given this source:
> 
> <Playlist>
>   <Song order="5" id="c95">
>     <Title>Maneater</Title>
>     <Artist>Hall and Oates</Artist>
>     <Album>H20</Album>
>     <Year>1982</Year>
>   </Song>
>   <Song order="13" id="c49">
>     <Title>Strangers In The Night</Title>
>     <Artist>Frank Sinatra</Artist>
>     <Album>Reprise Collection Boxed Set</Album>
>     <Year>1966</Year>
>   </Song>
>   <Song order="8" id="c22">
>     <Title>Strangers In The Night</Title>
>     <Artist>Frank Sinatra</Artist>
>     <Album>Your Hit Parade - '60s Instrumentals</Album>
>     <Year>1960</Year>
>   </Song>
> </Playlist>
> 
> And given the following templates from my stylesheet:
> 
> <xsl:template match="Playlist">
>   <h1>Songs By Decade</h1>
>   <xsl:for-each-group select="Song" group-by="substring(Year, 1, 3)">
>     <p>Decade: <xsl:value-of select="current-grouping-key()"/>0's</p>
>      <p style="margin-left: 1pc;">
>              <xsl:apply-templates select="current-group()/Title" />
>      </p>
>   </xsl:for-each-group>
> </xsl:template>
> 
> <xsl:template match="Title">
>   <xsl:apply-templates select="." /><br/>
> </xsl:template>
> 
> How do I filter the current group so that the same song doesn't occur
> more than once for a decade (that is, so I don't get "Strangers In the
> Night" more than once for the 60's)?
> 
> Thanks,
> 
> Don

Current Thread