Maven XML插件 - 如何使用document()函数定义URIResolver或SystemID进行转换?

时间:2017-09-20 04:18:58

标签: java maven xslt saxon

在配置为使用Maven XML插件的Maven构建期间,使用document()函数加载兄弟XML文档的XSL样式表无法使用相对引用查找文件并生成错误。我使用Saxon-HE 9.7.0-14作为XSLT处理器。

使用使用file-1.xml的XSL样式表转换<xsl:value-of select="document('file-2.xml')/someElementTag">时会发生以下错误:

Recoverable error FODC0002: I/O error reported by XML parser processing file:/C:/MyWorkspace/transform/src/main/resources/stylesheets/file-2.xml: C:\MyWorkspace\transform\src\main\resources\stylesheets\file-2.xml (The system cannot find the specified file)

如何使用SystemID或URIResolver配置Maven XML插件来解析亲属文档引用?

1 个答案:

答案 0 :(得分:1)

如果您阅读了https://www.w3.org/TR/xslt#document,那么错误消息表明XSLT处理器可以解析传入的相对URI

  

URI引用可能是相对的。基URI(参见[3.2基本URI])   第二个参数node-set中的节点,它是文档中的第一个节点   order用作基URI,用于将相对URI解析为   绝对URI。如果省略第二个参数,则默认为   样式表中包含包含表达式的节点   对文件功能的调用。

然后您将看到它解析了相对于样式表URI的相对URI。要解析相对于输入文档根节点的基URI,您可以使用document('file-2.xml', /)而不是document('file-2.xml')