[xsl] question about position()

Subject: [xsl] question about position()
From: "Denis Kranjcec" <denis.kranjcec@xxxxxxxxxx>
Date: Thu, 17 May 2001 14:46:25 +0200
There is two examples, first is with position() in <xsl:apply-templates> and
second is with position() in <xsl:for-each>.
I don't understand why is output different.
If I have understand correctly, function position() should return position
in current context, and for-each example is OK, but I don't understand why
is output from example with apply-templates different.
Can somebody explain me what is the difference between examples?
Thanks in advance.

xml:
<r>
	<a at="1">1</a>
	<a at="4">4</a>
	<a at="2">2</a>
	<a at="3">3</a>
</r>

first xsl example:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

	<xsl:template match="/">
		<xsl:apply-templates select="r/a">
			<xsl:sort data-type="number" select="@at"/>
			<xsl:with-param name="p" select="position()"/>
		</xsl:apply-templates>
	</xsl:template>

	<xsl:template match="a">
		<xsl:param name="p"/>
		<xsl:value-of select="$p"/><xsl:text>,</xsl:text>
	</xsl:template>

</xsl:stylesheet>

output from first example:
-1,-1,-1,-1,


second xsl example:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

	<xsl:template match="/">
		<xsl:for-each select="r/a">
			<xsl:sort data-type="number" select="@at"/>
			<xsl:apply-templates select=".">
				<xsl:with-param name="p" select="position()"/>
			</xsl:apply-templates>
		</xsl:for-each>
	</xsl:template>

	<xsl:template match="a">
		<xsl:param name="p"/>
		<xsl:value-of select="$p"/><xsl:text>,</xsl:text>
	</xsl:template>

</xsl:stylesheet>

output from second example:
1,2,3,4,


Denis Kranjcec


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


Current Thread