在XSL样式表中,我正在尝试将document()函数与XML文件的相对路径一起使用。我正在尝试加载的XML文件与样式表位于同一文件夹中。后端的代码是使用转换器
调用XSLTJava代码
TransformerFactory tFactory = TransformerFactory.newInstance();
InputStream inXSL = getClass().getResourceAsStream("/input.xsl");
Transformer transformer = tFactory.newTransformer(new StreamSource(inXSL));
transformer.transform(new StreamSource(inXMLStream), new StreamResult(outStream));
XSL
<xsl:variable name="configXml" select="document('config.xml')" />
但由于某些原因它似乎没有加载文件,它会出现以下错误, FODC0005:java.io.FileNotFoundException:D:\ Applications \ weblogic_domain \ config.xml 看起来XSL正在WebLogic域文件夹而不是Web应用程序路径中查找该文件。
答案 0 :(得分:2)
因为您提供了StreamSource而没有设置systemId,所以XSLT处理器不知道样式表的加载位置,因此它无法智能地解析相对URI。使用StreamSource上的setSystemId()方法为样式表设置基URI。