我做了一个 xsl 将两个 xml 合并为一个,然后使用输出到另一个 xsl 以获得 html 视图。
当我使用 xmlSpy 对其进行测试时,它工作得非常好,但是当我将它们放在 java web 应用程序下时,出现了问题。
xsl如下:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="UTF-8" />
<xsl:strip-space elements="*" />
<xsl:variable name="xsdresult" select="document('xsdResult.xml')" />
<xsl:variable name="schresult" select="document('result.xml')" />
<xsl:template match="/">
<xsl:result-document href="fullresult.xml" method="xml">
<fullresult>
<xsl:copy-of select="$schresult/node()" />
<xsl:copy-of select="$xsdresult/node()" />
</fullresult>
</xsl:result-document>
</xsl:template>
</xsl:stylesheet>
而且这个文件和xml文件都在同一个目录下,输出文件也是一样的。
应用此 xslt 的 jsp:
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@taglib uri="http://jakarta.apache.org/taglibs/xsl-1.0" prefix="xsl"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<%@ page%>
<title>test</title>
</head>
<body>
<p>
<xsl:apply xml="WEB-INF/classes/result/result.xml" xsl="WEB-INF/classes/result/merge.xsl" />
<xsl:apply xml="WEB-INF/classes/result/xsdResult.xml" xsl="WEB-INF/classes/result/merge.xsl" />
<xsl:apply xml="WEB-INF/classes/result/fullresult.xml" xsl="WEB-INF/classes/result/anotherone.xsl" />
</p>
</body>
</html>
问题出在 merge.xsl、document('xsdResult.xml') 和 document('result.xml') 中,它们总是在 eclipse_home 目录下搜索,而不是在 tomcat webapps 目录下搜索。