Re: Simple XPath question

Subject: Re: Simple XPath question
From: "Nikita Ogievetsky" <nogievet@xxxxxxxxxxxx>
Date: Mon, 22 Nov 1999 16:56:20 -0000
You are right. I did this in a rush and missed this case.
The following constructs works with your fragment correctly:

  <xsl:for-each select="PERSON">
    <xsl:if test="following-sibling::PERSON[current()/@lastname =
./@lastname and current()/@firstname = ./@firstname]">
       <xsl:if test="not(preceding-sibling::PERSON[current()/@lastname =
./@lastname and current()/@firstname = ./@firstname])">
          <xsl:copy-of select="."/>
       </xsl:if>
    </xsl:if>
  </xsl:for-each>

applied to your fragment it gives:

<PERSON firstname="fn1" lastname="ln1"/>


Phil Lanch wrote:
> Nikita Ogievetsky wrote:
> > Given :
> > <PERSON firstname="fn1" lastname="ln1"/>
> > <PERSON firstname="fn2" lastname="ln2"/>
> > <PERSON firstname="fn3" lastname="ln3"/>
> > <PERSON firstname="fn2" lastname="ln2"/>
> > <PERSON firstname="fn3" lastname="ln3"/>
> > <PERSON firstname="fn4" lastname="ln4"/>
> > <PERSON firstname="fn3" lastname="ln3"/>
> >
> > This worked properly in XT:
> >   <xsl:for-each
> >      select="PERSON[following-sibling::PERSON/@lastname = ./@lastname
> >                             and following-sibling::PERSON/@firstname =
> > ./@firstname
> >                      and not(preceding-sibling::PERSON/@lastname =
> > ./@lastname
> >                             and preceding-sibling::PERSON/@firstname =
> > ./@firstname)] ">
> >     <xsl:copy-of select="."/>
> >   </xsl:for-each>
>
> But given
>
> <PERSON firstname="fn1" lastname="ln2"/>
> <PERSON firstname="fn3" lastname="ln1"/>
> <PERSON firstname="fn1" lastname="ln1"/>
> <PERSON firstname="fn1" lastname="ln1"/>
>
> it misses the pair.
>

Nikita Ogievetsky
http://www.cogx.com


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread