Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


Re: [xsl] Exclude by Sibling Condition

From: Michael B Allen <mba2000@---------->
To:
Date: 12/2/2005 4:10:00 AM
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: [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


transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent