客户端XSLT与Jersey 2.0

时间:2015-01-06 14:14:38

标签: java xml rest xslt jersey-2.0

我尝试使用客户端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相同文件),它就会按预期工作。

你有什么想法可能是什么问题吗?

0 个答案:

没有答案