xsl-list
[Top] [All Lists]

Re: Passing empty parameters discard parameters default value

2004-06-16 12:05:22
I'm sorry, I should've tested this *before* replying ;-)  

Apparantly you cannot specify an <xsl:if> inside a call-template. The
only solution I can come up with this quickly is putting the entire
call-template call inside an <xsl:if> but thats not really a solution
if there's going to be more than one parameter.

On Wed, 16 Jun 2004 20:51:20 +0200, Thijs Janssen
<thijs(_dot_)janssen(_at_)gmail(_dot_)com> wrote:

Hi Michal,

The problem is that you ARE passing a parameter to mytemplate_impl. It
might eventually be empty, but it still counts as a parameter, and
thus no default value is used... (after all, one can imagine cases
where passing an empty nodeset as a parameter has a semantical
meaning)

A possible work-around is:

<xsl:template name="mytemplate">
  <xsl:param name="p"/>
  <xsl:call-template name="mytemplate_impl">
    // parameter is not passed if its empty
    <xsl:if test="$p">
      <xsl:with-param name="p" select="$p"/>
    </xsl:if>
  </xsl:call-template>
</xsl:template>

regards,
Thijs Janssen