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

Subject: Re: [xsl] can the Muenchian method do this?
From: Geert Josten <Geert.Josten@xxxxxxxxxxx>
Date: Wed, 04 Jan 2006 06:25:20 +0100
Hi,

I think the solution is fine, but that the line:

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

should have been:

	<xsl:apply-templates select="/songlist/song[Genre = 'Rap'][not(Artist =
preceding-sibling::song/Artist)]"/>

Regards,
Geert

dan@xxxxxxxxxxxxx wrote:

Hi Andrew,

Thanks for the help but unfortunately this is not giving me the results I
desire. When I run that, it returns an empty set. It also takes a long
time to run. There is no way to use the Muenchian method but base it on
another value in the node?

Dan


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