在我的 tomcat 上,我在这个地址有一个 servlet:http://192.168.1.2/FirstApp/TestXslServlet
它生成以下 XML:
<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet type="text/xsl" href="./TestBean.xsl"?>
<TheRoot>
<hw>Hello World!</hw>
</TheRoot>
我在这里有 xsl:http://192.168.1.2/FirstApp/TestBean.xsl
其中包含以下文本:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/TheRoot">
<html>
<body>
<h2>XSL loaded!</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th><xsl:value-of select="hw"/></th>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
当我加载 servlet 时,我看到的只是“Hello World!”,这与我是否完全删除 xsl 或者如果我输入了一个虚拟 xsl 名称相同,所以加载它似乎存在一些问题。为什么?
当我在这个网站上测试它们时,XML 和 XSL 都应该是正确的:http: //markbucayan.appspot.com/xslt/index.html并且转换按预期进行。
编辑:它似乎在资源管理器上工作,但不在 Firefox 上,所以问题与浏览器有关。
EDIT2:我尝试从 firefox 下载这两个文件以在本地测试它们,servled 下载为TestXslServlet.xml
,xsl 下载为TestBean.xsl.xml
. 我重命名了 xsl,删除了“.xml”扩展名,现在从本地磁盘上它工作正常。如果我在服务器上重新加载页面,我试图查看 firefox 开发人员控制台是否可以揭示正在发生的事情:
[11:01:39.325] GET http://192.168.1.2/FirstApp/TestXslServlet [HTTP/1.1 200 OK 32ms]
如果我从本地磁盘重新加载页面,我会得到:
[11:04:00.507] file:///C:/[...]/xsltest/TestBean.xsl
TestBean.xsl 的 MIME 类型在从服务器加载时为“application/xml”,从磁盘加载时为“text/xml”。我尝试将在本地工作的完全相同的文件上传到服务器,但它们不起作用(不同之处在于我现在调用静态TestXslServlet.xml
而不是 servlet 来生成 xml,MIME 类型是“application/xml” , 至于 servlet)。
EDIT3:为了排除我的任何错误,我尝试使用此处提供的示例文件:https ://developer.mozilla.org/en-US/docs/XSLT_in_Gecko/Basic_Example从本地加载页面时加载正常磁盘,但从服务器加载时不应用转换。似乎是 firefox(v.25) 和 tomcat(v.7) 的问题,但是 MIME 类型对我来说似乎是正确的,从 firefox 的“页面信息”显示两者的“应用程序/xml”(从服务器加载时) ,从本地磁盘加载时没有 MIME 类型信息)。