我最近将 saxon 版本从 8.7 升级到 10.6。 当我使用 saxon 版本 8.7 时,xsl:result-document 工作得很好。 这就是我面临的情况:
这是我的 XML 格式:
<?xml version="1.0" encoding="UTF-8"?>
<Statements>
<title>This is an example document</title>
<Statement>
<Invoice>1234567</Invoice>
<Name>ABC</Name>
</Statement>
<Statement>
<Invoice>9876543</Invoice>
<Name>XYZ</Name>
</Statement>
</Statements>
这是我的 XSLT 的一部分:
<xsl:template name="EnhanceAccount">
<xsl:result-document href="/data/ebpp/{$FileName}_EnhancedAccountInfo.jr1" method="text">
<xsl:text>InvoiceNumber</xsl:text>
<xsl:text> </xsl:text>
<xsl:for-each select="//Statement">
<xsl:value-of select="InvoiceNumber"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:result-document>
</xsl:template>
我收到以下错误:
net.sf.saxon.trans.XPathException:主体输出文件的系统标识符未知 在net.sf.saxon.lib.StandardOutputResolver.resolve(StandardOutputResolver.java:89) 在net.sf.saxon.lib.OutputURIResolverWrapper.resolve(OutputURIResolverWrapper.java:58) 在net.sf.saxon.expr.instruct.ResultDocument.makeReceiver(ResultDocument.java:528) 在net.sf.saxon.expr.instruct.ResultDocument.processLeft(ResultDocument.java:477)
文件已创建并包含内容:
Invoicenumber
1234567
此后,就失败了。这里有什么问题呢?请帮忙!
如果从命令行运行,请确保使用 -o 选项。
如果从 Java API 运行,请确保转换结果的
Result
或 Destination
对象具有非空 SystemId
属性。
href
的xsl:result-document
属性被解释为相对于转换的“基本输出URI”,因此它需要该属性来决定将输出写入何处。