Passes a parameter value to a template.


<xsl:with-param name = "parameter_name" 
  [select = "expression1]"



The xsl:with-param instruction passes a parameter value to a template. If the template has no matching xsl:param declaration, the XSLT processor ignores the parameter. The value of parameter_name is a qualified name.

The name attribute is required, and it must be a string. The value of the name attribute is a qualified name.

The value that you pass to a template can be an object of any of the types that are returned by expressions. You can specify the value of the parameter in several ways:

  • Specify the select attribute. The value of the select attribute must be an expression. The XSLT processor evaluates the expression, and the result is the value of the parameter. If you specify the select attribute, you must not specify any contents for the xsl:with-param instruction. In other words, do not specify parameter_value.
  • Specify the expr attribute. It is interpreted as an attribute value template. It allows computation of the value expression.
  • Specify parameter_value. If you specify parameter_value, you must not specify the select or expr attribute.
  • Specify none of the above. In this case, the value of the parameter is an empty string.

The xsl:with-param element must be a child of xsl:apply-templates or xsl:call-template.

You can specify the xsl:with-param instruction in xsl:call-template and xsl:apply-template instructions.


Suppose you specify the following parameter for a template:

<xsl:template name="Appendix">
  <xsl:param name = "heading"> 1. </xsl-param>


You can pass another value for this variable as follows:

<xsl:call-template name = "Appendix">
  <xsl:with-param name = "heading"> A. </xsl:with-param>


Free Stylus Studio XML Training:
W3C Member