This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Enumerating template matches


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]