|
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 |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: Simple XPath question, Phil Lanch | Thread | Re: Simple XPath question, Phil Lanch |
| Announce: Stylus XSL Editor Now Ava, Carl Sjogreen | Date | Re: Simple XPath question, Phil Lanch |
| Month |