Re: [xsl] Selecting attribute from previous parent node

Subject: Re: [xsl] Selecting attribute from previous parent node
From: "Jay Bryant" <jay@xxxxxxxxxxxx>
Date: Fri, 27 Jan 2006 21:58:00 -0600
>ancestor::flower[@type!='tulip']

The trouble with that is that it selects every flower node whose type
attribute does not contain 'tulip on the entire axis. If there's more than
one non-tulip flower node up the ancestor axis, this expression will get all
of them, which will either generate errors or lead to unexpected results. It
needs the position predicate ([1]) to get the first ancestor node (which is
the most immediate node on the axis).

So, it needs to be

ancestor::flower[1]/@type

Jay Bryant
Bryant Communication Services

----- Original Message ----- 
From: "Thang X. Le" <tle@xxxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Friday, January 27, 2006 5:57 PM
Subject: Re: [xsl] Selecting attribute from previous parent node


> If your current node is: row//basket/flower[@type='tulip']
>
> Then the previous non-tulip flower node is:
> ancestor::flower[@type!='tulip']
>
> And you can get (print) the previous flower type like this:
> <xsl:apply-templates select="ancestor::flower[@type!='tulip']"/>
>
> <xsl:template match="flower">
> <xsl:value-of select="@type"/>
> </xsl:template>
>
> Or maybe I don't quite understand the requirements...
>
> On 27 Jan 2006 at 17:28, Andrea Berman wrote:
>
> > It's Friday!  Please, have pity upon me and save my sanity!
> >
> > Say I have the following style of XML:
> >
> > <row>
> >    <basket>
> >      <flower type="rose">
> >        <basket>
> >          <flower type="tulip">
> >            <basket>
> >               ...
> >            </basket>
> >          </flower>
> >        </basket>
> >      </flower>
> >    </basket>
> > </row>
> >
> > If I'm at node "flower" with type of "tulip", how do I reference the
> > previous flower's type?
> >
> >
> > Thanks!

Current Thread