在 WebLogic 中使用相对路径调用 xslt document() 函数

Posted

技术标签:

【中文标题】在 WebLogic 中使用相对路径调用 xslt document() 函数【英文标题】:Calling xslt document() function with relative path in WebLogic 【发布时间】:2012-01-26 15:12:24 【问题描述】:

在 XSL 样式表中,我尝试使用带有 XML 文件相对路径的 document() 函数。我尝试加载的 XML 文件与样式表位于同一文件夹中。后端的代码是使用转换器调用 XSLT

Java 代码

    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 应用程序路径中查找文件。

【问题讨论】:

【参考方案1】:

因为您提供了 StreamSource 而没有设置 systemId,XSLT 处理器不知道样式表是从哪里加载的,因此它无法智能地解析相对 URI。使用 StreamSource 上的 setSystemId() 方法为样式表设置基本 URI。

【讨论】:

以上是关于在 WebLogic 中使用相对路径调用 xslt document() 函数的主要内容,如果未能解决你的问题,请参考以下文章

加载 XSLT 文件时解析相对路径

java 怎么把文件的绝对路径转换成相对路径

.net/xslt: <xsl:include> 与相对路径导致错误

使用 xslt 获取位于另一个路径中的另一个 xml 值

使用相对路径从另一个脚本调用一个 shell 脚本

weblogic虚拟路径的配置和使用