addParameter javascript(用于xslt)函数不';行不通
我试图使用javascript调用的addParameter javascript(用于xslt)函数不';行不通,javascript,xml,xslt,Javascript,Xml,Xslt,我试图使用javascript调用的xslt查询xml文件 以下是主页: <html> <head> <script> function loadXMLDoc(dname) { if (window.XMLHttpRequest) { xhttp=new XMLHttpRequest(); } else { xhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xhtt
xslt
查询xml
文件
以下是主页:
<html>
<head>
<script>
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest();
}
else
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",dname,false);
xhttp.send("");
return xhttp.responseXML;
}
function displayResult()
{
xml=loadXMLDoc("FooBar.xml");
xsl=loadXMLDoc("FooBar.xsl");
// code for IE
if (window.ActiveXObject)
{
ex=xml.transformNode(xsl);
document.getElementById("Main").innerHTML=ex;
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
xsltProcessor=new XSLTProcessor();
xsltProcessor.addParameter("numFoobar","2");
xsltProcessor.importStylesheet(xsl);
resultDocument = xsltProcessor.transformToFragment(xml,document);
document.getElementById("Main").appendChild(resultDocument);
}
}
</script>
</head>
<body onload="displayResult()">
<div id="Main">
</div>
</body>
</html>
对于xslt
:
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<table border="2" bgcolor="yellow">
<tr>
<th>Num</th>
<th>Name</th>
</tr>
<xsl:param name="numFoobar"
<xsl:for-each select="Foobars/Foobar">
<tr>
<td><xsl:value-of select="numFoobar"/></td>
<td><xsl:value-of select="nameFoobar"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
那么,为什么不识别addParameter
谢谢,
问候。扎卡里亚
除了您提到的错误(显然@Alejandro已经解决了),您的
不在有效位置
为了使其成为样式表参数,它需要位于顶层:它必须位于所有模板之前,在
下:
...
Zakaria
除了您提到的错误(显然@Alejandro已经解决了),您的
不在有效位置
为了使其成为样式表参数,它需要位于顶层:它必须位于所有模板之前,在
下:
...
来自
XSLT提供xsl:param元素,
它是xsl:stylesheet的子级
元素<代码>XSLTProcessor()提供
三种JavaScript交互方法
使用以下参数:setParameter
,
getParameter
和removeParameter
。他们
所有人都把这个论点作为第一个论点
xsl:param的命名空间URI
(通常,参数将落在
默认名称空间,因此传入
“null”就足够了。)本地名称
第二个是xsl:param
论点setParameter需要一个
第三个参数-即
将设置哪个参数
我找不到Opera(Presto)或Safari和Chrome(Webkit)的文档。请随意编辑此答案。来自
XSLT提供xsl:param元素,
它是xsl:stylesheet的子级
元素<代码>XSLTProcessor()提供
三种JavaScript交互方法
使用以下参数:setParameter
,
getParameter
和removeParameter
。他们
所有人都把这个论点作为第一个论点
xsl:param的命名空间URI
(通常,参数将落在
默认名称空间,因此传入
“null”就足够了。)本地名称
第二个是xsl:param
论点setParameter需要一个
第三个参数-即
将设置哪个参数
我找不到Opera(Presto)或Safari和Chrome(Webkit)的文档。请随意编辑此答案。您的XML文件中必须有以下标题: XML yourFile.XML
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="yourFile.xsl" type="text/xsl"?>
{
xsltProcessor=新的xsltProcessor();
xsltProcessor.importStylesheet(xsl);
setParameter(null,“numFoobar”,“2”);
resultDocument=xsltProcessor.transformToFragment(xml,文档);
document.getElementById(“transformResult”).appendChild(resultDocument);
}
XSLT.XLST
<xsl:output method="html"/>
<xsl:param name="numFoobar" />
<xsl:template match="/">
<xsl:for-each select="Foobars/Foobar">
<tr>
<td><xsl:value-of select="$numFoobar"/></td>
分三步
setParemeter(null,numFoobar,'2')代码>
xsl:param
XML文件上必须有以下标题: XML yourFile.XML
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="yourFile.xsl" type="text/xsl"?>
{
xsltProcessor=新的xsltProcessor();
xsltProcessor.importStylesheet(xsl);
setParameter(null,“numFoobar”,“2”);
resultDocument=xsltProcessor.transformToFragment(xml,文档);
document.getElementById(“transformResult”).appendChild(resultDocument);
}
XSLT.XLST
<xsl:output method="html"/>
<xsl:param name="numFoobar" />
<xsl:template match="/">
<xsl:for-each select="Foobars/Foobar">
<tr>
<td><xsl:value-of select="$numFoobar"/></td>
分三步
setParemeter(null,numFoobar,'2')代码>
xsl:param
@亚历杭德罗:谢谢你,伙计!请加上你的评论作为回答,这样我才能接受。@Alejandro:谢谢你,伙计!请添加您的评论作为答案,以便我可以接受。
else if (document.implementation && document.implementation.createDocument)
<xsl:output method="html"/>
<xsl:param name="numFoobar" />
<xsl:template match="/">
<xsl:for-each select="Foobars/Foobar">
<tr>
<td><xsl:value-of select="$numFoobar"/></td>