我正在尝试使用 XSLT 创建 HTML 文件,我使用 xml 文件和 xsl 文件来创建 HTML 文件。在这里,位于同一位置的其他一些 xsl 文件使用 .xsl 文件包含在 xsl 文件中<xsl:include href="temp.xsl"/>
。
这里 Xsl 文件位于“D:/XSL_Folder/”路径中。我正在运行位于 D:/Workspace/Webapp_Project/ 路径中的 Main.java 文件。
当我尝试通过将“D:/XSL_Folder/root.xsl”和“D:/XML_Folder/data.xml”文件作为参数传递给 Main.java 来创建 HTML 文件时,创建模板时出现以下错误。
Templates lTemplates = TransformerFactory.newInstance().newTemplates(new StreamSource(new FileInputStream(lFileXSL)));
错误:“D:\Workspace\Webapp_Project\temp.xsl(系统找不到指定的文件)”
致命错误:“无法编译样式表”
12:20:07 错误 fstvv2.dao.impl.DocUnitDaoImpl - 创建文件时出错新的 XslTransformerGetter。XSL 的路径可能是错误的。javax.xml.transform.TransformerConfigurationException:无法在 com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates 编译样式表(TransformerFactoryImpl.java:885)~[na:1.7.0_13]
在错误报告中,我们可以看到解析器正在检查项目路径 (D:\Workspace\Webapp_Project) 中包含的 xsl 文件,而不是 root.xsl 文件所在的路径 (D:/XSL_Folder/)。
谁能建议我为什么解析器在 root.xsl 文件所在路径的项目文件夹中搜索 xsl 文件以及如何解决此问题?
我使用 XSL 和 XML 文件创建 HTML 文件的代码:
public static void simpleTransform(InputStream lXmlFileStream, File lXSLFile,
StreamResult lHtmlResult, Map<String, String> lArguments) {
TransformerFactory tFactory = TransformerFactory.newInstance();
try {
Transformer transformer =
tFactory.newTransformer(new StreamSource(lXSLFile));
for (Entry<String, String> lEntrie : lArguments.entrySet()) {
transformer.setParameter(lEntrie.getKey(), lEntrie.getValue());
}
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.transform(new StreamSource(lXmlFileStream), lHtmlResult);
}
catch (Exception e) {
e.printStackTrace();
}
}