xsl-list
[Top] [All Lists]

RE: First element with given attribute values

2004-04-11 07:41:05
-----Original Message-----
From: Nicolas Mailhot [mailto:Nicolas(_dot_)Mailhot(_at_)laPoste(_dot_)net]

<snip />
  Which I need to trim, keeping only the first element with an unique
attibute value, or unique attribute values. For example, if I only
wanted the first element with an unique name,version pair this would
give :
<snip />
Is there a clean way to do it ?


Yup, define a key like:

<xsl:key name="foo-key" match="foo"
         use="concat(@name,' ',@version)" />

Then further on use:

<xsl:variable select="//foo[generate-id()=generate-id(
                key('foo-key',concat(@name,' ',@version)))]" />

To give you the nodeset containing all foo nodes whose id equals the first
node returned by key().


Apply templates to the variable, and you're set.

Cheers,

Andreas