給定以下代碼(並且不使用jQuery) 在轉換之前動態地將標籤插入xsl會有什麼好的方法?我希望有人來「修復」功能addParam如何在轉換之前向xsl樣式表中添加/插入xsl:param?
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);
}
}
我已閱讀how to pass a parameter from an URL to a XSL stylesheet using jQuery?並瞭解火狐可以做的setParameter和IE能做
var strParam = "//xsl:param[@name='" + p + "']";
var xslParam = xObj.selectSingleNode(strParam);
xslParam.setAttribute("select",op[p]);
但是這是假設的XSL具有參數了。
指針和更正非常受歡迎。 謝謝
對我而言不清楚你是否想在xml樣式表中插入一個'xsl:param'元素?或者你想爲正在運行的轉換設置此參數嗎? – 2011-03-30 13:08:06
我想在使用之前更改現有的xsl – mplungjan 2011-03-30 15:53:35
AFAIK,沒有標準的方法將參數傳遞給XSLT樣式表。例如,我知道撒克遜人有特定實現方式來實現這一點。 – 2012-05-21 21:11:28