This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Enumerating template matches
- From: Morten <morten at it-c dot dk>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Fri, 01 Feb 2002 16:11:33 +0100
- Subject: Re: [xsl] Enumerating template matches
- References: <000b01c1ab2c$30066240$78fe0250@pcukmka>
- Reply-to: xsl-list at lists dot mulberrytech dot com
Michael Kay wrote:
>>><xsl:template match="B">
>>> <xsl:apply-templates select="C">
>>> <xsl:with-param name="match_number" select="position()"/>
>>> </xsl:apply-templates>
>>></xsl:template>
>>>
>>><xsl:template match="C">
>>> <xsl:param name="match_number"/>
>>> <xsl:value-of select="$match_number"/>
>>></xsl:template>
>>>
>>
>>This one did not work, only outputs 0's.
>>
>
> I think that's a bug: position() should never by zero. Which processor?
Mm.. Xalan-2.2.14. But wouldn't you suspect it to be the parameter
passing rather than position() as it works when I use call-template
rather than apply-templates?
[troi]~>more demo.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<mailboxes>
<mailbox user="userA">
<mail><subject>SubA</subject></mail>
</mailbox>
<mailbox user="userB">
<mail><subject>SubB1</subject></mail>
<mail><subject>SubB2</subject></mail>
</mailbox>
<mailbox user="userC">
<mail><subject>SubC1</subject></mail>
<mail><subject>SubC2</subject></mail>
</mailbox>
</mailboxes>
[troi]~>more demo.xsl
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output encoding="iso-8859-1"/>
<xsl:template match="mailboxes">
<xsl:apply-templates select="mailbox"/>
</xsl:template>
<xsl:template match="mailbox">
<xsl:apply-templates select="mail">
<xsl:with-param name="match_number" select="position()"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="mail">
<xsl:param name="match_number"/>
A <xsl:value-of select="$match_number"/>
</xsl:template>
</xsl:stylesheet>
[troi]~>java org.apache.xalan.xslt.Process -IN demo.xml -XSL demo.xsl -TEXT
A 0
A 0
A 0
A 0
A 0
With call-template:
[troi]~>more demo2.xsl
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output encoding="iso-8859-1"/>
<xsl:template match="mailboxes">
<xsl:apply-templates select="mailbox"/>
</xsl:template>
<xsl:template match="mailbox">
<xsl:call-template name="mail">
<xsl:with-param name="match_number" select="position()"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="mail" name="mail">
<xsl:param name="match_number"/>
A <xsl:value-of select="$match_number"/>
</xsl:template>
</xsl:stylesheet>
[troi]~>java org.apache.xalan.xslt.Process -IN demo.xml -XSL demo2.xsl -TEXT
A 1
A 2
A 3
Morten
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list