Учитывая следующий код (и не используя jQuery), что было бы хорошим способом динамически вставить тег в xsl перед преобразованием?Я хотел бы, чтобы кто-то "исправил" функцию addParam
function addParam(xsl,name,value) {
/** input:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">.....
output:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="parm1" value="parameter number 1" />
<xsl:template match="/">.....
*/
var parameter = document.createElement("xsl:param");
parameter.setAttribute("name",name);
parameter.setAttribute("value",value);
xsl.documentElement.insertBefore(parameter,xsl.documentElement.firstsChild)
}
function displayResult(pXml) {
var xsl = loadXMLDoc("cdcatalog.xsl");
// code for IE
if (window.ActiveXObject) {
/* I want to call it here >>> */
addParam(xsl,"parm1","parameter value1");
var ex = pXml.transformNode(xsl);
document.getElementById("availableSearchItems").innerHTML = ex;
}
// code for Mozilla, Firefox, Opera, Chrome, etc.
else if (document.implementation && document.implementation.createDocument) {
xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
/* I want to call it here */
addParam(xsl,"parm1","parameter value1");
resultDocument = xsltProcessor.transformToFragment(pXml, document);
document.getElementById('availableSearchItems').innerHTML = "";
document.getElementById("availableSearchItems").appendChild(resultDocument);
}
}
Я прочитал как передать параметр из URL в таблицу стилей XSL с помощью jQuery? и понять, что Firefox может выполнять setParameter.и IE может сделать
var strParam = "//xsl:param[@name='" + p + "']";
var xslParam = xObj.selectSingleNode(strParam);
xslParam.setAttribute("select",op[p]);
, но это при условии, что xsl уже имеет параметр.
Указатели и исправления очень приветствуются.Спасибо