|
Subject: Re: [xsl] finding position() in xpath 1.0 From: David Carlisle <davidc@xxxxxxxxx> Date: Mon, 19 Mar 2007 13:08:10 GMT |
I think I mis read your requirement. the code I posted works so long as
there is at most one node with test="yes. If you have multiple such
nodes and need to select the preceding cousin of all of them,
Then...
//CELL[@test='yes']/../preceding-sibling::ROW[1]/CELL[position()=count(../following-sibling::ROW[1]/CELL[@test='yes']/preceding-sibling::CELL)+1]
David
<ROWS>
<ROW>
<CELL id="a"/>
<CELL id="b"/> <!-- select this and only this-->
<CELL id="c"/>
</ROW>
<ROW>
<CELL/>
<CELL test="yes"/>
<CELL/>
</ROW>
<ROW>
<CELL/>
<CELL/>
<CELL/>
</ROW>
<ROW>
<CELL id="aa"/>
<CELL id="bb"/> <!-- select this and only this-->
<CELL id="cc"/>
</ROW>
<ROW>
<CELL/>
<CELL test="yes"/>
<CELL/>
</ROW>
<ROW>
<CELL/>
<CELL/>
<CELL/>
</ROW>
</ROWS>
<xsl:template match="/">
<xsl:copy-of select="//CELL[@test='yes']/../preceding-sibling::ROW[1]/CELL[position()=count(../following-sibling::ROW[1]/CELL[@test='yes']/preceding-sibling::CELL)+1]"/>
</xsl:template>
</xsl:stylesheet>
$ saxon count.xml count.xsl
<?xml version="1.0" encoding="utf-8"?><CELL id="b"/><CELL id="bb"/>
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] finding position() in xpa, David Carlisle | Thread | Re: [xsl] finding position() in xpa, Frank Marent |
| Re: [xsl] finding position() in xpa, Abel Braaksma | Date | Re: [xsl] finding position() in xpa, Abel Braaksma |
| Month |