DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6179>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6179

Fails to pass correct value as parameter using apply-templates

           Summary: Fails to pass correct value as parameter using apply-
                    templates
           Product: XalanJ2
           Version: 2.2.x
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Xalan-CmdLine
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


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

Reply via email to