[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Passing empty parameters discard parameters default value
Subject: Passing empty parameters discard parameters default value From: ĎURDINA Michal <Michal.Durdina@xxxxxxxxxxxx> Date: Wed, 16 Jun 2004 14:58:16 +0200 |
Hello, I am having problems with passing empty parameters (no with-param specified) that discard default values of parameters. When I am calling the template and passing no value I want the template to use its default value. Example: <xsl:template name="mytemplate"> <xsl:param name="p"/> <xsl:call-template name="mytemplate_impl"> <xsl:with-param name="p" select="$p"/> </xsl:call-template> </xsl:template> <xsl:template name="mytemplate_impl"> <xsl:param name="p">default p</xsl:param> p = <xsl:value-of select="$p"/> </xsl:template> When calling: <xsl:call-template name="mytemplate_impl"/> the result is: p = default p But when calling <xsl:call-template name="mytemplate"/> the result is: p = what is wrong in my case, becase I did not supplied any value to parameter $p so I want to see its default value. I know that I can declare the same default value in template "mytemplate" , but then I will have the same value in more than one place and that's not good when I will need to change it. Is there any workaround for my problem? Thank you, Michal PS: If you want to have full pricture why I need this default parameter mechanism, here it is: I have hierarchy of importing stylesheets and I try to simulate polymorphism for named templates via shadowing of "interface" templates and by calling "implementation" templates. library.xsl: <!-- interface template --> <xsl:template name="mytemplate"> <xsl:param name="p"/> <xsl:call-template name="mytemplate_impl"> <xsl:with-param name="p" select="$p"/> </xsl:call-template> </xsl:template> <!-- implementation template --> <xsl:template name="mytemplate_impl"> <xsl:param name="p">default p</xsl:param> p = <xsl:value-of select="$p"/> </xsl:template> customized-library.xsl: <xsl:import href="library.xsl"/> <!-- interface template --> <xsl:template name="mytemplate"> <xsl:param name="p"/> <b> <xsl:call-template name="mytemplate_impl"> <xsl:with-param name="p" select="$p"/> </xsl:call-template> </b> </xsl:template> user-stylesheet.xsl: <xsl:include href="customized-library.xsl"/> ... <xsl:template match="/"> <xsl:call-template name="mytemplate"/> </xsl:template> user-input.xml: <?xml-stylesheet type="text/xsl" href="user-stylesheet.xsl"?> <root/> required output: <b>p = default p</b> actual output: <b>p = </b> I hope the idea is ok, developer of user-stylesheet.xsl can customize templates from library.xsl that he/she uses in user-stylesheet.xsl. But I am having the problem with passing empty parameter (no parameter) that discard default value in original template. ----------- Michal Ďurdina ASSET Soft, a.s. / eBussiness Solutions Košická 56, 821 08 Bratislava SLOVAK REPUBLIC Phone: +421-2-50703-523 Fax: +421-2-50703-444 e-mail: michal.durdina@xxxxxxxxxxxx http://www.assetsoft.sk
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
XSLT and Axis selection, ashushujev | Thread | Re: [xsl] Passing empty parameters , Thijs Janssen |
XSLT and Axis selection, ashushujev | Date | RE: [xsl] Re: Saxon + xalan - error, Pieter Reint Siegers |
Month |