This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
question about position()
- To: "Xsl-List" <xsl-list at lists dot mulberrytech dot com>
- Subject: [xsl] question about position()
- From: "Denis Kranjcec" <denis dot kranjcec at zpm dot fer dot hr>
- Date: Thu, 17 May 2001 14:46:25 +0200
- Reply-To: xsl-list at lists dot mulberrytech dot com
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