addParameter Method
Adds parameters into an XSL Transformations (XSLT) style sheet.
[Script]
Script Syntax
objXSLProcessor.addParameter(baseName, parameter, namespaceURI);
Parameters
- baseName
- The name that will be used inside the style sheet to identify the parameter context.
- parameter
- In most cases, a number, Boolean, string,
IXMLDOMNodeList, orIXMLDOMNode. Passing in a single node will produce a node list that contains one node (shortcut). To remove a parameter previously added to the processor, provide a value of Empty or Null instead. This acts as a signal to the processor to remove any previously added parameter of the same name. - namespaceURI (optional)
- An optional namespace.
Example
var xslt = new ActiveXObject("Msxml2.XSLTemplate.5.0");
var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.5.0");
var xslProc;
xslDoc.async = false;
xslDoc.load("sample.xsl");
if (xmlDoc.parseError.errorCode != 0) {
var myErr = xmlDoc.parseError;
alert("You have error " + myErr.reason);
} else {
xslt.stylesheet = xslDoc;
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.5.0");
xmlDoc.async = false;
xmlDoc.load("books.xml");
if (xmlDoc.parseError.errorCode != 0) {
var myErr = xmlDoc.parseError;
alert("You have error " + myErr.reason);
} else {
xslProc = xslt.createProcessor();
xslProc.input = xmlDoc;
xslProc.addParameter("param1", "Hello");
xslProc.transform();
alert(xslProc.output);
}
}
File Name: Sample.xsl
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:param name="param1"/>
<xsl:template match="/">
The parameter value was: <xsl:value-of select="$param1"/>
</xsl:template>
</xsl:stylesheet>
[Visual Basic]
Visual Basic Syntax
objXSLProcessor.addParameter(baseName, parameter, namespaceURI)
Parameters
- baseName
- The name that will be used inside the style sheet to identify the parameter context.
- parameter
- A number, Boolean, string,
IXMLDOMNodeList, orIXMLDOMNode. Passing in a single node will produce a node list that contains one node (shortcut). To remove a parameter previously added to the processor, provide a value of Empty or Null instead. This acts as a signal to the processor to remove any previously added parameter of the same name. - namespaceURI (optional)
- An optional namespace.
Example
Dim xslt As New Msxml2.XSLTemplate50
Dim xslDoc As New Msxml2.FreeThreadedDOMDocument50
Dim xmlDoc As New Msxml2.DOMDocument50
Dim xslProc As IXSLProcessor
xslDoc.async = False
xslDoc.Load "sample.xsl"
If (xmlDoc.parseError.errorCode <> 0) Then
Dim myErr
Set myErr = xmlDoc.parseError
MsgBox("You have error " & myErr.reason)
Else
Set xslt.stylesheet = xslDoc
xmlDoc.async = False
xmlDoc.Load "books.xml"
If (xmlDoc.parseError.errorCode <> 0) Then
Dim myErr
Set myErr = xmlDoc.parseError
MsgBox("You have error " & myErr.reason)
Else
Set xslProc = xslt.createProcessor()
xslProc.input = xmlDoc
xslProc.addParameter "param1", "Hello"
xslProc.Transform
MsgBox xslProc.output
End If
End If
File Name: Sample.xsl
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:param name="param1"/>
<xsl:template match="/">
The parameter value was: <xsl:value-of select="$param1"/>
</xsl:template>
</xsl:stylesheet>
[C/C++]
C/C++ Syntax
HRESULT addParameter (BSTR baseName, VARIANT parameter, BSTR namespaceURI);
Parameters
- baseName [in]
- The name that will be used inside the style sheet to identify the parameter context.
- parameter [in]
- A number, Boolean, string, node list, or node. Passing in a single node will produce a node list that contains one node (shortcut). To remove a parameter previously added to the processor, you can pass a value of VT_EMPTY, VT_NULL, or a NULL IDispatch or IUnknown instead. This acts as a signal to the processor to remove any previously added parameter of the same name.
- namespaceURI [in, optional]
- An optional namespace.
C/C++ Return Values
E_FAIL if readyState is READYSTATE_INTERACTIVE.
Example
#include "stdio.h"
#import <msxml5.dll>
using namespace MSXML2;
int checkParseError(IXMLDOMParseErrorPtr pError);
void dump_com_error(_com_error &e);
int main(int argc, char* argv[])
{
CoInitialize(NULL);
HRESULT hr;
try{
BOOL bResult = FALSE;
short sResult = FALSE;
IXMLDOMDocument2Ptr pStyleSheet=NULL;
IXSLTemplatePtr pIXSLTemplate=NULL;
IXSLProcessorPtr pXSLProcessor=NULL;
hr = pIXSLTemplate.CreateInstance(__uuidof(XSLTemplate50));
hr=pStyleSheet.CreateInstance(__uuidof(FreeThreadedDOMDocument50));
pStyleSheet->async = VARIANT_FALSE;
hr=pStyleSheet->load("c:\\samplexsl.xml");
//check on the parser error
if(hr!=VARIANT_TRUE)
{
return checkParseError(pStyleSheet->parseError);
}
pIXSLTemplate->stylesheet = pStyleSheet.GetInterfacePtr();
pXSLProcessor = pIXSLTemplate->createProcessor();
IXMLDOMDocumentPtr pInputDoc;
hr = pInputDoc.CreateInstance(__uuidof(DOMDocument50));
pInputDoc->async = VARIANT_FALSE;
hr = pInputDoc->load("c:\\sampleXSLWithParam.xml");
//check on the parser error
if(hr!=VARIANT_TRUE)
{
return checkParseError(pInputDoc->parseError);
}
pInputDoc->async = VARIANT_FALSE;
pXSLProcessor->input = pInputDoc.GetInterfacePtr();
hr=pXSLProcessor->addParameter("param1", "Hello", "");
VARIANT_BOOL vtRet = pXSLProcessor->transform();
if(vtRet != VARIANT_TRUE)
{
MessageBox(NULL, "transformation failed","Error", MB_OK);
return -1;
}
_bstr_t bstrOutput = pXSLProcessor->Getoutput();
MessageBox(NULL, bstrOutput,"Transformed Output", MB_OK);
}
catch(_com_error &e)
{
dump_com_error(e);
}
return 0;
}
int checkParseError(IXMLDOMParseErrorPtr pError)
{
_bstr_t parseError =_bstr_t("At line ")+ _bstr_t(pError->Getline()) + _bstr_t("\n")+ _bstr_t(pError->Getreason());
MessageBox(NULL,parseError, "Parse Error",MB_OK);
return -1;
}
void dump_com_error(_com_error &e)
{
printf("Error\n");
printf("\a\tCode = %08lx\n", e.Error());
printf("\a\tCode meaning = %s", e.ErrorMessage());
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
printf("\a\tSource = %s\n", (LPCSTR) bstrSource);
printf("\a\tDescription = %s\n", (LPCSTR) bstrDescription);
}
Style Sheet: "d:\\inetpub\\wwwroot\\sampleXSLWithParam.xml"
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:param name="param1"/>
<xsl:template match="/">
The parameter value was: <xsl:value-of select="$param1"/>
</xsl:template>
</xsl:stylesheet>
Output (in a message box)
<?xml version="1.0" encoding="UTF-16"?> <bar> Add Parameter Test </bar>
Remarks
The addParameter method can be called on transformNode handlers and between transform calls (in asynchronous processing), and further processing will use the updated parameter. Added parameters are referenced by <xsl:param> within the style sheet.
To view reference information for Visual Basic, C/C++, or Script only, click the Language Filter button
in the upper-left corner of the page.
See Also
Applies to: IXSLProcessor
