Subject: Re: 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: 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!
|