[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

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


Subject: [xsl] Filtering out duplicates in current-group()
From: "Smith, Donald" <DSmith@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 29 Mar 2006 10:31:50 -0600

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