Subject: RE: filtering elements by single xpath
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 5 Apr 2006 18:14:00 +0100
|
> I'm sure Jeni's pages or the faq will hav eexamples, but you just need
> to make sure the key is unique in each case. In your case you
> want each
> body to have a separate set of keys so:
>
> <xsl:key name="x" match="item" use="concat(generate-id(..),'
> ',@name)"/>
>
> <xsl:template match="body">
> <xsl:for-each select="key('x',concat(generate-id(.),'
> ',item-filter/allow-items/@with-name))"
>
> or without the key just do
>
> <xsl:template match="body">
> <xsl:for-each
> select="item[@name=current()/item-filter/allow-items/@with-name]"
>
Alternatively, XSLT 2.0 allows key() to have a third argument which
specifies the subtree you want to search.
Michael Kay
http://www.saxonica.com/
|