我想将表添加到html页面 其数据来自通过AJAX的xml服务器。我想用XML转换来做。在服务器端,转换工作并显示希望的表,但在客户端,我总是遇到整个XML文档而不是转换表。实际上,下面的 XMLHttpRequest.responseXML 包含完整的XML文档。我很感激任何回应。
摘录自javascript代码(接收ajax响应的回调函数):
[...]
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
output = xmlhttp.responseXML;
document.getElementById("result").innerHTML = output;
}
[...]
在服务器端,出于测试的考虑,我设置了一个包含以下内容的JSP页面(如果我启动显示该表的JSP页面):
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<?xml-stylesheet type="text/xsl" href="generateXMLXSL.xsl" ?>
<bookstore>
<book publisher="Kiskapu" year="2004">
<author>John Doe</author>
<title>C++ Programozas</title>
<review>Nem tul jo.</review>
</book>
<book publisher="Manning" year="2009">
<author>D. Malavia</author>
<title>SCWD Exam Study Kit</title>
<review>Excellent reading for the exam.</review>
</book>
<book publisher="Manning" year="2013">
<author>Andrew Doe</author>
<title>Web Application Development</title>
<review>Medium</review>
</book>
<book publisher="Sage" year="2008">
<author>Salkind</author>
<title>Exploring Research</title>
<review>Excellent, easy-to-read and interesting!</review>
</book>
</bookstore>
在服务器端运行的简单xsl文件:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<table cellspacing="1">
<tr style="background-color: #cccccc">
<th>Author</th>
<th>Title</th>
<th>Review</th>
</tr>
<xsl:for-each select="bookstore/book">
<tr style="background-color: #dedede">
<td><xsl:value-of select="author"/></td>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="review"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
解决方案: Martin提醒我注意,在客户端,如果xml来自 XMLHttpRequest 对象,那么 xsl文件不会被处理。这回答了我遇到的错误。如何从基于变量的javascript转换xml的解决方案可以在这里找到:
答案 0 :(得分:1)
解决方案:Martin提醒我注意,在客户端,如果xml是通过XMLHttpRequest对象提供的,则不会处理xsl文件。这回答了我遇到的错误。如何从基于变量的javascript转换xml的解决方案可以在这里找到: