【发布时间】:2011-11-24 10:07:25
【问题描述】:
我正在使用 Saxon-EE 9.3.0.4 进行 xsl 转换,发现当在 <xsl:attribute>(以及 <xsl:namespace>、<xsl:processing-instruction>)指令中使用 <xsl:result-document> 时,处理器
引发 XTDE1480 错误 - 在写入临时树时无法切换到最终结果目的地
<xsl:attribute name="a">
<xsl:result-document href="result.xml" > - error here
test
</xsl:result-document>
</xsl:attribute>
根据specification(附录 D),<xsl:result-document> 的允许父母是:
- 任何内容模型为序列构造函数的 XSLT 元素
- 任何文字结果元素
这是 Saxon 中的错误还是规范中未定义的 <xsl:result-document> 使用限制?
更新:
我认为在<xsl:attribute> 中使用<xsl:result-document> 并不是一个好主意,但是为什么会发生错误呢?
谢谢
【问题讨论】:
-
@Vincent Biragnet 提供了很好的解释。除此之外,使用
<xsl:result-document>来生成属性值是没有意义的。根据规范,<xsl:attribute>的内容必须是序列构造函数。另一方面,<xsl:result-document>不是序列构造函数。因此,不管错误消息如何,将<xsl:result-document>放入<xsl:attribute>是错误的。xsl:result-document生成最终结果树。根据规范:[定义:最终结果树构成最终输出的一部分。一旦创建就无法在样式表中访问。]