Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
addParameter javascript(用于xslt)函数不';行不通_Javascript_Xml_Xslt - Fatal编程技术网

addParameter javascript(用于xslt)函数不';行不通

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

我试图使用javascript调用的
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>

分三步

  • XML标题
  • Javascript使用
    setParemeter(null,numFoobar,'2')
  • XSLT在生成XHTML文件的顶层添加
    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>
    
    
    
    分三步

  • XML标题
  • Javascript使用
    setParemeter(null,numFoobar,'2')
  • XSLT在生成XHTML文件的顶层添加
    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>