XSLT offers several ways to bind a name to a value so that the value can be later referenced by name any number of times in a stylesheet. The variable element binds a name to an immutable value once it's been evaluated, while the param element binds a name to a default value, but it's a value you can change. You can define a default value with param and then pass a new value into the stylesheet or to a template. The with-param element allows you to apply or call a template from another template with a new value for one or more parameters, like a method or function call with arguments.
You can use the variable and param elements globally on the top-level as stylesheet-wide values, or locally within templates. If a variable is global, its scope is the entire stylesheet; if it is local, its scope is restricted to the template where it is defined or passed in. The with-param element may appear only as an immediate child of an apply-templates template (for processing child templates) or of a call-template element (for processing named templates more on this in Chapter 10). A variable can be of any type Boolean, node-set, number, string, or result tree fragment.
This chapter introduces you to using variables and parameters in stylesheets, both globally and locally. I'll use the general term variable to refer to the values of variable, param, and with-param in this chapter and throughout the book. You can read about variables and parameters in Section 11 of the XSLT specification. |