Re: [xsl] accessing node by position

Subject: Re: [xsl] accessing node by position
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 19 May 2004 11:14:56 +0100
  I need to access an xml value by it's position.
  can this be done (or is there a better way to do it)


to access the 3rd foo element just do 
foo[3]

  <xsl:value-of select="../../../columns/column(position())/type"/>

You need square brackets not round, and you want to evaluate position()
in the current node list _before_ you start this xpath as it's the
current position that you want, so


<xsl:variable name="x" select="position()"/>
<xsl:value-of select="../../../columns/column[$x]/type"/>

Of course for $x to have teh right value you need to make sure that your
current node list only has cell nodes, if you just do an
<xsl:apply-templates/>
rather than
<xsl:apply-templates select="cell"/>
on the row element then your current node list will include white space
text nodes and so the position of teh cell elements will be
2,4,6,... not 1,2,3,...

David

-- 
The LaTeX Companion
  http://www.awprofessional.com/bookstore/product.asp?isbn=0201362996
  http://www.amazon.co.uk/exec/obidos/tg/detail/-/0201362996/202-7257897-0619804


________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

Current Thread