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: Wed, 4 Jan 2006 10:31:03 +0000
On 1/4/06, dan@xxxxxxxxxxxxx <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?

You didn't say you had a large input set or that performance was
important... This stylesheet uses two keys, one to filter based on
genre, the other to group by Artist (which is the Muenchian method :)

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

<xsl:key name="song-by-genre" match="song" use="Genre"/>
<xsl:key name="song-by-artist" match="song" use="Artist"/>

<xsl:param name="genre" select="'Rap'"/>

<xsl:template match="/">
  <xsl:apply-templates select="key('song-by-genre', $genre)"/>
</xsl:template>

<xsl:template match="song">
  <xsl:if test="generate-id() = generate-id(key('song-by-artist',
Artist)[1])">
    <xsl:value-of select="Artist"/>
    <xsl:if test="position() != last()">, </xsl:if>
  </xsl:if>
</xsl:template>

</xsl:stylesheet>

cheers
andrew

Current Thread