To pass a value into an XSLT style sheet at run time, you must perform the following steps.
addParameter method on the XSLProcessor object, from a script, to assign a value to the parameter.Step 1 is straightforward: Declare <xsl:param> as an immediate child element of the <xsl:stylesheet> element. For example:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="bgColor">black</xsl:param>
<xsl:template match="/">
bgColor = <xsl:value-of select="$bgColor"/>
</xsl:template>
</xsl:stylesheet>
The example above defines a global parameter, bgColor. The value of this parameter will be displayed as a string.
Step 2 is more complicated. We need to create an XSLTemplate instance to cache the compiled style sheet, and an XSLProcessor object that will be used to pass a value (red) to the global parameter (bgColor) declared in the style sheet. The following is an example of Step 2.
<HTML>
<HEAD>
<TITLE>bgColor in HTML</TITLE>
</HEAD>
<SCRIPT>
var xslt, xml, xslTemp, xslProc;
function load()
{
xml = new ActiveXObject("Msxml2.DOMDocument.5.0");
xml.async=false;
xml.load("bgColor.xsl");
xslt = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.5.0");
xslt.async=false;
xslt.load("bgColor.xsl");
xslTemp = new ActiveXObject("Msxml2.XSLTemplate.5.0");
xslTemp.stylesheet = xslt;
xslProc = xslTemp.createProcessor();
xslProc.input = xml;
xslProc.addParameter("bgColor", "red");
try {
xslProc.transform;
result.innerHTML = xslProc.output;
}
catch(e)
{
result.innerHTML = e.description;
}
}
</SCRIPT>
<BODY ONLOAD="load()">
<DIV ID="result"></DIV>
</BODY>
</HTML>
Increasing Performance by Using the XSLTemplate Object| addParameter Method