This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
getting the node position in source xml in a variable
- From: Gurvinder Singh <GurvinderS at amdocs dot com>
- To: "'xsl-list at lists dot mulberrytech dot com'" <xsl-list at lists dot mulberrytech dot com>
- Date: Wed, 27 Feb 2002 12:22:12 +0200
- Subject: [xsl] getting the node position in source xml in a variable
- Reply-to: xsl-list at lists dot mulberrytech dot com
Hi
I have a template which takes two node-sets as parameters. I loop thru one
of these nodeset using for-each and output the node value along with the
corresponding node in the second node-list.
Now the problem is that it works fine if i dont have a sort but with sort
only the first node list is sorted. So it takes the wrong corresponding
values from the second node-list.
because the position gives the position in the context.
So i should use <xsl:number> but when i put the xsl:number in the variable
it always gives 1.
even the position() if inside <xsl:variable> gives always 1, but if used in
select attribute of <xsl:variable> it works fine
<xsl:template name="lookup">
<xsl:param name="name"/>
<xsl:param name="datanodes"/>
<xsl:param name="displaynodes"/>
<select>
<xsl:attribute name="name"><xsl:value-of
select="$name"/></xsl:attribute>
<xsl:for-each
select="msxsl:node-set($displaynodes)">
<xsl:sort select="."></xsl:sort>
<xsl:variable name="num"
select="position()"/>
<xsl:variable name="data"><xsl:value-of
select="msxsl:node-set($datanodes)[$num]"/></xsl:variable>
<option id="{$data}" value="{$data}">
<xsl:value-of
select="$data"/>-<xsl:value-of select="."/>
</option>
</xsl:for-each>
</select>
</xsl:template>
Thanks & Regards
Gurvinder
Amdocs Limited , Cyprus
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list