[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Exclude by Sibling Condition


Subject: Re: [xsl] Exclude by Sibling Condition
From: "Jay Bryant" <jay@xxxxxxxxxxxx>
Date: Thu, 1 Dec 2005 20:07:27 -0600

Hi, Mike,

That's a question to which you can find an answer in Dave Pawson's FAQ at
http://www.dpawson.co.uk/xsl/sect2/N2696.html

In your case, something like the following will do the trick:

<xsl:template match="page[not(@tab=following::page/@tab)]">
  <!-- Process the page nodes with unique values for the tab attribute
here -->
</xsl:template>

You can do the same trick in the select attributes of apply-templates or
for-each instructions, too, depending on exactly what you need to do.

Jay Bryant
Bryant Communication Services


----- Original Message ----- 
From: "Michael B Allen" <mba2000@xxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Thursday, December 01, 2005 3:53 PM
Subject: [xsl] Exclude by Sibling Condition


> Considering the following XML fragment:
>
>   <page name="p0" tab="products"/>
>   <page name="p1" tab="products"/>
>   <page name="p2" tab="products"/>
>   <page name="d" tab="downloads"/>
>   <page name="s" tab="support"/>
>
> How can I select a subset that excludes elements with a tab attribute
> value matching that of a previous sibling?
>
> Meaning I want a list with no redundant @tab values like:
>
>   <page name="p0" tab="products"/>
>   <page name="d" tab="downloads"/>
>   <page name="s" tab="support"/>
>
> Thanks,
> Mike


Current Thread
Keywords
xml