在配置为使用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插件来解析亲属文档引用?
答案 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')
。