如何修复错误“net.sf.saxon.trans.XPathException:主要输出文件的系统标识符未知”

问题描述 投票:0回答:1

我最近将 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>&#10;</xsl:text>
            <xsl:for-each select="//Statement">
                <xsl:value-of select="InvoiceNumber"/>
                <xsl:text>&#10;</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

此后,就失败了。这里有什么问题呢?请帮忙!

saxon xslt-3.0
1个回答
0
投票

如果从命令行运行,请确保使用 -o 选项。

如果从 Java API 运行,请确保转换结果的

Result
Destination
对象具有非空
SystemId
属性。

href
xsl:result-document
属性被解释为相对于转换的“基本输出URI”,因此它需要该属性来决定将输出写入何处。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.