Re: [xsl] Template matching preceding-sibling.

Subject: Re: [xsl] Template matching preceding-sibling.
From: Steve <subsume@xxxxxxxxx>
Date: Thu, 8 Nov 2007 14:16:36 -0500
Excellent. Thank you I will do so.

-Steve

On Nov 8, 2007 2:14 PM, Scott Trenda <Scott.Trenda@xxxxxxxx> wrote:
> Hey Steve,
>
> Looks like you've solved the problem, but here's a quick pointer. Start
> learning to avoid !=, and start using not() instead. Since comparison
> operators on node-sets are combinatoric, your first comparison says "if
> there are any preceding-sibling::activity nodes that ARE NOT equal to my
> child::activity node", instead of "if there are NOT any
> preceding-sibling::activity nodes equal to my child::activity node",
> which is what I believe you're intending. Use the following XPath
> instead:
>
> Rec[not(activity = preceding-sibling::Rec/activity)]
>
> not() is usually the safest bet, especially when node-sets come into the
> mix.
>
> ~ Scott
>
> -----Original Message-----
> From: Steve [mailto:subsume@xxxxxxxxx]
> Sent: Thursday, November 08, 2007 12:17 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
>
> Subject: Re: [xsl] Template matching preceding-sibling.
>
> I'm sorry, but isn't the first <Rec> in my XML the preceding-sibling
> of the second <Rec> ?
>
> -Steve
>
> On Nov 8, 2007 1:13 PM,  <cknell@xxxxxxxxxx> wrote:
> > Your template matches both <Rec> elements, so you get two instances of
> "Ello xslers." in your output.
> >
> > Your template matches and <Rec> element with an <activity> child
> element that doesn't have preceding-sibling <Rec>. Since both <Rec>
> elements have <activity> child elements, and since none of the
> <activity> elements has a preceding-sibling of ANY kind, you are
> matching both <Rec>s.
> > --
> > Charles Knell
> > cknell@xxxxxxxxxx - email
> >
> >
> >
> >
> > -----Original Message-----
> > From:     Steve <subsume@xxxxxxxxx>
> > Sent:     Thu, 8 Nov 2007 12:59:01 -0500
> > To:       xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject:  [xsl] Template matching preceding-sibling.
> >
> > I'm missing something fundamental, what is it?
> >
> > <xsl:template match="Rec[activity != preceding-sibling::Rec/activity
> > or not(preceding-sibling::Rec)]">
> >   Ello xslers.
> > </xsl:template>
> >
> > <xml>
> >    <Rec>
> >      <activity>hi</activity>
> >    </Rec>
> >    <Rec>
> >       <activity>hi</activity>
> >    </Rec>
> > </xml>
> >
> > ----
> >
> > Above should only print anything once, but I'm getting it each time.
> > What am I not getting?
> >
> > -Steve

Current Thread