Re: [xsl] can the Muenchian method do this?

Subject: Re: [xsl] can the Muenchian method do this?
From: andrew welch <andrew.j.welch@xxxxxxxxx>
Date: Tue, 3 Jan 2006 09:31:01 +0000
On 1/3/06, dan@xxxxxxxxxxxxx <dan@xxxxxxxxxxxxx> wrote:
> Hi,
>
> I would like to select a distinct value based on a sibling. I know that
> the Muenchian method is used to select distinct values, but can I give it
> another variable to look at?
>
> Here is my xml:
> <songlist>
> <song>
> <Artist>J-Live</Artist>
> <Genre>Rap</Genre>
> </song>
> <song>
> <Artist>Phish</Artist>
> <Genre>Rock</Genre>
> </song>
> <song>
> <Artist>J-Live</Artist>
> <Genre>Rap</Genre>
> </song>
> <song>
> <Artist>Jay-Z</Artist>
> <Genre>Rap</Genre>
> </song>
> </songlist>
>
> I would like to select all the artists whose Genre is 'Rap' but not have
> duplicates. So my return set would be 'J-Live, Jay-Z'
>
> Is this possible? I know I can do this with recursion, but obviously the
> Muenchian method is preferred.

Normal xpath will do:

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:template match="/">
	<xsl:apply-templates select="/songlist/song[Genre = 'Rap'][Artist !=
preceding-sibling::song/Artist]"/>
</xsl:template>

<xsl:template match="song">
	<xsl:value-of select="Artist"/>
	<xsl:if test="position() != last()">, </xsl:if>
</xsl:template>

</xsl:stylesheet>

cheers
andrew

Current Thread