Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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
将javascript和jquery与XSL转换或函数参数混合时出现问题?_Javascript_Jquery_Xml_Xslt - Fatal编程技术网

将javascript和jquery与XSL转换或函数参数混合时出现问题?

将javascript和jquery与XSL转换或函数参数混合时出现问题?,javascript,jquery,xml,xslt,Javascript,Jquery,Xml,Xslt,我试图在页面上设置导航按钮来加载内容文件,但其中有几个文件是XML文件,需要使用XSL转换进行样式设置。我曾经在w3schools.com的客户机代码上成功地使用XSL,因此我在下面对其进行了修改。但是,我混合使用javascript和jquery时似乎有些问题无法解决,或者我没有正确地传递参数?Firebug告诉我它无法加载“xsl”变量。这个语法有什么问题吗?我是个新手,不知道自己做错了什么 <script> $(document).ready(function(){ $

我试图在页面上设置导航按钮来加载内容文件,但其中有几个文件是XML文件,需要使用XSL转换进行样式设置。我曾经在w3schools.com的客户机代码上成功地使用XSL,因此我在下面对其进行了修改。但是,我混合使用javascript和jquery时似乎有些问题无法解决,或者我没有正确地传递参数?Firebug告诉我它无法加载“xsl”变量。这个语法有什么问题吗?我是个新手,不知道自己做错了什么

<script>
$(document).ready(function(){
    $("#aboutTextButton").click(function(){
        $('#contentContainer').load('about-text.html');
    });
    $("#aboutProjectButton").click(function(){
        $('#contentContainer').load('about-project.html');
    });
    $("#catalogButton").click(function(){
        displayResult("catalog.xml","xml-style2.xsl");
    });
    $("#transcriptionButton").click(function(){
        displayResult("behaviour.xml","xml-style2.xsl");
    });
}); 

//script to transform XML, adapted from w3schools.com 
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, xsl)
{
// code for IE
if (window.ActiveXObject)
  {
  ex=xml.transformNode(xsl);
  document.getElementById("example").innerHTML=ex;
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
  {
  xsltProcessor=new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  resultDocument = xsltProcessor.transformToFragment(xml,document);
  document.getElementById("contentContainer").appendChild(resultDocument);
  }
} 
</script>
</head>

<body>

    <div id="headerImg">
        <img src="cover.jpg">
    </div>

    <div id="menu">
        <ul>
            <li><a id="aboutTextButton">About the Text</a></li>
            <li><a id="aboutProjectButton">About the Project</a></li>
            <li><a id="catalogButton">Browse the Images</a></li>
            <li><a id="transcriptionButton">Read the Text</a></li>
        </ul>
    </div>

    <div id="contentContainer">
    </div>

$(文档).ready(函数(){
$(“#AboutExtButton”)。单击(函数(){
$('#contentContainer').load('about-text.html');
});
$(“#关于项目按钮”)。单击(函数(){
$('#contentContainer').load('about-project.html');
});
$(“#目录按钮”)。单击(函数(){
displayResult(“catalog.xml”、“xml-style2.xsl”);
});
$(“#转录按钮”)。单击(函数(){
displayResult(“behavior.xml”、“xml-style2.xsl”);
});
}); 
//转换XML的脚本,改编自w3schools.com
函数loadXMLDoc(dname)
{
if(window.XMLHttpRequest)
{
xhttp=newXMLHttpRequest();
}
其他的
{
xhttp=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
xhttp.open(“GET”、dname、false);
xhttp.send(“”);
返回xhttp.responseXML;
}
函数displayResult(xml、xsl)
{
//IE代码
if(window.ActiveXObject)
{
ex=xml.transformNode(xsl);
document.getElementById(“示例”).innerHTML=ex;
}
//Mozilla、Firefox、Opera等的代码。
else if(document.implementation&&document.implementation.createDocument)
{
xsltProcessor=新的xsltProcessor();
导入样式表(xsl);
resultDocument=xsltProcessor.transformToFragment(xml,文档);
document.getElementById(“contentContainer”).appendChild(resultDocument);
}
} 
  • 关于文本
  • 关于这个项目
  • 浏览图片
  • 读课文

您从未调用loadXMLDoc,因此displayResults函数不是在处理xml文档,而是在处理传递给函数的文件名。displayResult的第一行应该是:

xml = loadXMLDoc(xml);
xsl = loadXMLDoc(xsl); 

那么你的代码应该可以工作了

在MDN站点上。您对“.importStylesheet()”的使用不正确。您不经常看到通过javascript应用XSL转换。大多数情况下,它是在发送页面之前在服务器上完成的,尽管可以直接将xml发送到浏览器,并让浏览器使用如下处理指令处理xslt:
。。。无论哪种方式,都没有理由使用javascript,因为服务器端通常是首选方式,而客户端(不使用javascript)xsl在浏览器间得到了非常好的支持(即使ie6几乎100%正确),尽管很少使用。我确实看到很多人问起它,所以现在它可能更常见了。不管怎样,考虑一下你是否真的需要用JavaScript应用XSL;您最好在服务器上应用它,或者让浏览器在不使用javascript的情况下使用它。谢谢,这就是问题所在。