Re: [xsl] Exclude by Sibling Condition

Subject: Re: [xsl] Exclude by Sibling Condition
From: Michael B Allen <mba2000@xxxxxxxxxx>
Date: Fri, 2 Dec 2005 13:43:23 -0500
On Fri, 2 Dec 2005 08:45:47 -0600
JBryant@xxxxxxxxx wrote:

> <xsl:for-each select="page[not(@tab=following::page/@tab)]">
>   <!-- Process the nodes you selected here -->
> </xsl:for-each>
> 
> From a human readability point of view, that's three lines shorter and 
> keeps the selection syntax in the for-each, so that the interior of the 
> for-each is purely how to process a node that matched the selection 
> criteria. So, to me, that's cleaner and easier to follow.

Indeed. Actually I didn't consider your method because it selects:

  <page name="p2" tab="products"/>
  <page name="d" tab="downloads"/>
  <page name="s" tab="support"/>

Rather than:

  <page name="p0" tab="products"/>
  <page name="d" tab="downloads"/>
  <page name="s" tab="support"/>

But looking closer I can see that simply replacing 'following' with
'preceding' appears to generate the above correctly.

Thanks,
Mike

Current Thread