Html 如何在网页上执行和显示xslt结果?
我有以下三个文件,它应该做的是获取xml和xsl文件,并根据它们进行处理,然后在浏览器中显示结果。但现在的问题是,当我双击chrome和IE7的html时,我得到的都是空白页面。有谁能告诉我为什么会这样,执行xslt文件并在网页上显示结果的正确方法是什么?非常感谢Html 如何在网页上执行和显示xslt结果?,html,xslt,Html,Xslt,我有以下三个文件,它应该做的是获取xml和xsl文件,并根据它们进行处理,然后在浏览器中显示结果。但现在的问题是,当我双击chrome和IE7的html时,我得到的都是空白页面。有谁能告诉我为什么会这样,执行xslt文件并在网页上显示结果的正确方法是什么?非常感谢 student.xml file <?xml version="1.0" encoding="ISO-8859-1"?> <data> <student> <name>Bitu
student.xml file
<?xml version="1.0" encoding="ISO-8859-1"?>
<data>
<student>
<name>Bitu Kumar</name>
<course>MCA</course>
<sem>6</sem>
<marks>80</marks>
</student>
<student>
<name>Santosh Kumar</name>
<course>MCA</course>
<sem>5</sem>
<marks>70</marks>
</student>
<student>
<name>Ashish</name>
<course>M.Sc.</course>
<sem>4</sem>
<marks>80</marks>
</student>
<student>
<name>Mahesh</name>
<course>MA</course>
<sem>3</sem>
<marks>80</marks>
</student>
</data>
and following student.xsl file
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Student DataBase</h2>
<table border="1">
<tr>
<th bgcolor="yellow">Name</th>
<xsl:for-each select="data/student">
<td width="200"><xsl:value-of select="name"/></td>
</xsl:for-each>
</tr>
<tr>
<th bgcolor="yellow">Course</th>
<xsl:for-each select="data/student">
<td width="200"><xsl:value-of select="course"/></td>
</xsl:for-each>
</tr>
<tr>
<th bgcolor="yellow">Marks</th>
<xsl:for-each select="data/student">
<td width="200"><xsl:value-of select="marks"/></td>
</xsl:for-each>
</tr>
<tr>
<th bgcolor="yellow">Semester</th>
<xsl:for-each select="data/student">
<td width="200"><xsl:value-of select="sem"/></td>
</xsl:for-each>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
and following student.html file
<html>
<head>
<title> Testing IE </title>
<script langauge="JavaScript" type="text/javascript">
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("student.xml");
xsl=loadXMLDoc("student.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("example").appendChild(resultDocument);
}
}
</script>
</head>
<body onLoad="displayResult()">
<div id="example" />
</body>
</html>
student.xml文件
比图库马尔
马华
6.
80
桑托什·库马尔
马华
5.
70
阿施施
理学硕士。
4.
80
马赫什
文科硕士
3.
80
以及下面的student.xsl文件
学生数据库
名称
课程
标志
学期
以及下面的student.html文件
测试IE
函数loadXMLDoc(dname)
{
if(window.XMLHttpRequest)
{
xhttp=newXMLHttpRequest();
}
其他的
{
xhttp=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
xhttp.open(“GET”、dname、false);
xhttp.send(“”);
返回xhttp.responseXML;
}
函数displayResult()
{
xml=loadXMLDoc(“student.xml”);
xsl=loadXMLDoc(“student.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(“示例”).appendChild(resultDocument);
}
}
实际上,最简单的方法就是在XML文档中放入样式表指令,然后简单地打开XML文档
只需按如下方式启动XML文档:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="student.xsl"?>
<data>
<student>
etc..
等
您甚至不需要student.html文件。@Flynn1179,我想OP希望使用html来实现这一点: @原创海报 我不会在这里粘贴代码,我会让你看一篇博客文章,我相信这篇文章完全涵盖了你要找的内容: 注意:如果您运行示例,请直接使用浏览器进行操作,因为我发现从类似WebStrom的IDE启动test.html文件会导致在单击链接时出现注释。这可能是导致你每次都得到一张空白页的原因 如果这回答了你的问题(或者是最接近答案的),请将其标记为所选答案,以便将此帖子列为已解决 如果您不清楚如何调整博客文章中HTML文件中的代码以创建问题的解决方案,请在此处发表评论,我将为您创建个性化的调整