RE: [xsl] Default tunnel parameters.

Subject: RE: [xsl] Default tunnel parameters.
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 26 Aug 2008 15:54:06 +0100
> Can you please estimate the value reported in xsl:message in 
> a following stylesheet?
> Saxon 9.1 reports value 2.
> My expectation is 1.
> If 2 is correct output then can you please justify it.

On the first call of p:test, neither parameter has a value. So $index
defaults to 1, and $value defaults to 1.

On the second call of p:test, $index has a value (2). No value has been
supplied for $value, so it defaults to $index, which is 2. This is the value
displayed.

Perhaps this is the relevant sentence in the spec (section 10.1.2): 

<quote>
Equally, any default value is local to the template: specifying a default
value for a tunnel parameter does not change the set of tunnel parameters
that is passed on in further template calls.
</quote>

Michael Kay
http://www.saxonica.com/

> 
> <xsl:stylesheet version="2.0" 
>   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>   xmlns:xs="http://www.w3.org/2001/XMLSchema";
>   xmlns:p="http://www.nesterovsky-bros.com";>
> 
>   <xsl:template match="/">
>     <xsl:call-template name="p:test"/>
>   </xsl:template>
> 
>   <xsl:template name="p:test">
>     <xsl:param name="index" as="xs:integer" select="1"/>
>     <xsl:param name="value" tunnel="yes" as="xs:integer" 
> select="$index"/>
> 
>     <xsl:choose>
>       <xsl:when test="$index lt 2">
>         <xsl:call-template name="p:test">
>           <xsl:with-param name="index" select="$index + 1"/>
>         </xsl:call-template>
>       </xsl:when>
>       <xsl:otherwise>
>         <xsl:message select="$value"/>
>       </xsl:otherwise>
>     </xsl:choose>
>   </xsl:template>
> 
> </xsl:stylesheet>
> 
> P.S. I'm asking this question here as I have recieved no 
> answer at http://sourceforge.net/forum/message.php?msg_id=5193309.
> 
> Thanks.
> --
> Vladimir Nesterovsky
> http://www.nesterovsky-bros.com

Current Thread