[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] finding position() in xpath 1.0


Subject: Re: [xsl] finding position() in xpath 1.0
From: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Mon, 19 Mar 2007 13:40:20 +0100

Frank Marent wrote:
hi all

i have to find an xpath 1.0 expression (unfortunately no way around) that selects all elements CELL that have in the following ROW a CELL with an attribute @test='yes' *and* the same position.

<ROW>
  <CELL/>
  <CELL/>   <-- select this and only this
  <CELL/>
</ROW>
<ROW>
  <CELL/>
  <CELL test="yes"/>
  <CELL/>
</ROW>
<ROW>
  <CELL/>
  <CELL/>
  <CELL/>
</ROW>

phew. how can i do that in xpath 1.0? i tried this one:

//CELL[../following-sibling::*[1]/CELL[position()=count(current()/preceding-sibling::CELL)+1]/@text='yes']



Hi Frank, long time no see ;) From withing 'ROW' scope, can you not simply use a variable? I.e.:

<xsl:variable name="pos" select="count(following-sibling::ROW[1]/CELL[@test='yes']/preceding-sibling::CELL) + 1" />
<xsl:apply-templates select="CELL[$pos]" />


not tested, however.

Cheers from Holland,
-- Abel Braaksma
  http://www.nuntia.nl


Current Thread
Keywords