The xsl:with-param element is used to define an actual parameter to a template. It may be used
within an xsl:call-template or an xsl:apply-templates or an xsl:apply-imports element.
For an example, see the xsl:template section.
There is a mandatory attribute, name, to define the name
of the parameter. The value of the parameter may be defined either by a select attribute, or by the
contents of the xsl:param element, in the same way as for xsl:variable.
The parameter has no effect unless the called template includes a matching
xsl:param element. But when using xsl:call-template, it is an error to specify
a parameter that isn't declared in the target template, or to omit a parameter that's described
in the target template with required="yes".
The attribute tunnel="yes" creates a tunnel parameter which is accessible to called
templates at any depth, whether or not they are declared in intermediate templates. However, the value
is only accessible if tunnel="yes" is also specified on the corresponding
xsl:param element.