Re: [xsl] Accessing node-sets by index with position()

Subject: Re: [xsl] Accessing node-sets by index with position()
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 23 Sep 2003 17:13:58 -0400
At 2003-09-23 14:13 -0500, Ryan Sawatzky wrote:
<xsl:for-each select="$set">
   <xsl:text>Iteration #</xsl:text>
   <xsl:value-of select="position()"/>
   <xsl:text> is '</xsl:text>
   <xsl:value-of select="$set[position()]"/>

In the predicate, the position() function is being reevaluated against the set variable and does not reflect the position() within the for-each loop.


<xsl:text>'&#10;</xsl:text>
</xsl:for-each>
...
So I know that I the second node in the node set is correct, but position() won't get me to it. Does anyone know how I can fix this problem?

Use a variable to capture the for-each position and then address what you want using it ... an example is below.


I hope this helps.

.......... Ken

T:\ryan>type ryan.xml
<info>
   <field>111</field>
   <field>222</field>
</info>

T:\ryan>type ryan.xsl
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                version="1.0">

<xsl:output method="text"/>

<xsl:template match="/">
  <xsl:variable name="set" select=".//field"/>

<xsl:for-each select="$set">
   <xsl:text>Iteration #</xsl:text>
   <xsl:value-of select="position()"/>
   <xsl:text> is '</xsl:text>
   <xsl:variable name="for-each-position" select="position()"/>
   <xsl:value-of select="$set[$for-each-position]"/>
   <xsl:text>'&#10;</xsl:text>
</xsl:for-each>

</xsl:template>

</xsl:stylesheet>
T:\ryan>saxon ryan.xml ryan.xsl
Iteration #1 is '111'
Iteration #2 is '222'

T:\ryan>



--
Next public US delivery:        3-day XSLT/2-day XSL-FO 2003-10-13
Next public European delivery:  3-day XSLT/2-day XSL-FO 2003-11-??
Instructor-led on-site corporate, government & user group training
for XSLT and XSL-FO world-wide:  please contact us for the details

G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
ISBN 0-13-065196-6                       Definitive XSLT and XPath
ISBN 0-13-140374-5                               Definitive XSL-FO
ISBN 1-894049-08-X   Practical Transformation Using XSLT and XPath
ISBN 1-894049-11-X               Practical Formatting Using XSL-FO
Member of the XML Guild of Practitioners:     http://XMLGuild.info
Male Breast Cancer Awareness  http://www.CraneSoftwrights.com/s/bc


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



Current Thread