[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Exclude by Sibling Condition

Subject: Re: Exclude by Sibling Condition
From: Michael B Allen <mba2000@xxxxxxxxxx>
Date: Thu, 1 Dec 2005 23:05:20 -0500
michael b allen
On Thu, 1 Dec 2005 20:07:27 -0600
"Jay Bryant" <jay@xxxxxxxxxxxx> wrote:

> 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>

What I ended up doing is the following:

<xsl:for-each select="page">
    <xsl:variable name="prev" select="preceding-sibling::page[position()=1]"/>
    <xsl:if test="not($prev) or @tab!=$prev/@tab">

I'm not sure how this differs from your method but I found that a)
[position()=1] must be used to isolate only the immediate sibling and b)
the @tab!=$prev/@tab strangely returns false if $prev is nil.

Mike

> 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:  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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.