XSL导入导致Web应用程序中的FileNotFoundException

Mik*_*ail 6 java xml xslt

我在websphere5下有一个简单的Web应用程序.在appDir\WEB-INF\classes\我有这些文件:

  • main.xslt
  • templates.xslt

main.xslt 包含指令

<xsl:import href="templates.xsl" />
Run Code Online (Sandbox Code Playgroud)

main.xslt在Java代码中使用时应用程序失败.如果它们都在同一个文件夹(WEB-INF\classes\)中,我应该如何指定导入的XSL文件的路径?

例外文本:

java.io.FileNotFoundException:d:\ Program Files\WebSphere\AppServer1\templates.xsl(系统找不到指定的文件.)

Jim*_*son 4

您需要提供自定义 uri 解析器来处理包含。在 Web 应用程序中,无法保证文件系统可访问,因为您可能会用完 WAR 文件。看一下javax.xml.transform.URIResolver接口和Transformer.setURIResolver()

  • 正确但一般的答案,缺少解释:`xsl:import` 声明的相对 URI 将使用样式表 URI 作为基本 URI 进行解析。XSLT 处理器是否可以处理该 URI 方案或者是否具有正确的权限,这是另一个问题。来自:http://www.w3.org/TR/xslt#import *`xsl:import` 元素有一个 `href` 属性,其值是标识要导入的样式表的 URI 引用。相对 URI 相对于“xsl:import”元素的基本 URI 进行解析* (3认同)