我尝试使用客户端XSLT将XML文件转换为HTML。
我使用的是Jersey 2.0.1,Java 7和Tomcat 7
xml文件和xsl文件位于src / main / resrouces
下这是我的REST资源代码:
@GET
@Produces({ "application/xml" })
@XmlHeader(value = "<?xml-stylesheet type='application/xml' href='project-info.xsl' ?>")
public ProjectListType getProjectListType() throws JAXBException,
ParserConfigurationException, SAXException, IOException,
TransformerException {
URL fileUrl = this.getClass().getClassLoader()
.getResource("project-info.xml");
ProjectListType result = new ProjectInfoUnmarshaller().unmarshall(new File(
fileUrl.getPath()));
return result;
}
xsl文件:
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<html>
<body>
<h2>Projects info</h2>
<xsl:template match="projectListType">
<table border="1" cellpading="6" cellspacing="1">
<tr bgcolor="#4bbd92">
<th>Project Name</th>
<th>Product Owner</th>
</tr>
<xsl:for-each select="project">
<tr>
<td>
<xsl:value-of select="projectName" />
</td>
<td>
<xsl:value-of select="pointOfContact" />
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</body>
</html>
</xsl:template>
我正在测试的xml:
<?xml version="1.0" encoding="UTF-8"?>
<projectListType>
<project>
<projectName>proj1</projectName>
<pointOfContact>John Doe</pointOfContact>
</project>
<project>
<projectName>proj2</projectName>
<pointOfContact>Jon Smith</pointOfContact>
</project>
浏览器中REST资源的输出是单行文本,其中包含xml文件标记之间的文本。我想显示具有相同内容的html格式输出。 我认为服务器端代码有问题,因为当我单独测试它时(只需在浏览器中打开包含xslt的xml相同文件),它就会按预期工作。
你有什么想法可能是什么问题吗?