xsl-list
[Top] [All Lists]

Re: [xsl] filtering elements by single xpath

2006-04-05 08:09:05
On 4/5/06, Tomas Kolaci <kolaci(_at_)cncz(_dot_)cz> wrote:
 Hi!

 I'm using XSLT 1.1 and Saxon 6.5.3.

 I have following XML structure:

<root>
   <body>
      <item pos="1" name="n1"/>
      <item pos="2" name="n2"/>
      <item pos="3" name="n2"/>
      <item pos="4" name="n3"/>
      <item pos="5" name="n4"/>
   </body>
   <item-filter>
      <allow-items with-name="n2"/>
      <allow-items with-name="n4"/>
   </item-filter>
</root>

and in template:

<xsl:template match="body">
   <xsl:variable
     name="filtered-items"
     select="item[/root/item-filter/allow-items[(_at_)with-name = ???/@name]"
   />
   ...
</xsl:template>

I'm trying to fill variable filtered-items with elements item with "allowed"
name (= there is an element /root/item-filter/allow-items with attribute
@with-name containing same value as item's @name)*, but I don't know how to
reach current item on ??? position in my select (function current() points
to current body element).

use current()/item-filter/allow-items/@with-name

alternatively create a key

<xsl:key name="allowed-items" match="allow-items" use="@with-name"/>

and then check if the node exists in the key with that value

select="item[key('allowed-items', @name)]"

cheers
andrew

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--