可能是撒克逊人的一个错误,但只是想澄清一下 -
<xsl:value-of select="unparsed-text('http://something/test.txt')"
disable-output-escaping="yes"/>
结果 -
<div>test</div>
现在尝试 -
<xsl:try>
<xsl:value-of select="unparsed-text('http://something/test.txt')"
disable-output-escaping="yes"/>
<xsl:catch></xsl:catch>
</xsl:try>
结果 -
<div>test</div>
有关为何发生这种情况的任何想法?
答案 0 :(得分:7)
有趣的一个。只有在将输出直接从变换器写入串行器时(即,有效地绕过结构树的构造时),禁用输出转义才有效。在xsl:try中,输出不能直接写入串行器,因为它可能需要回滚&#34;如果发生动态错误;所以它被有效地写入一个隐藏的内部变量,当其知道没有发生故障时,其内容仅被发送到串行器。由于禁用 - 输出 - 转义是非常多的实现定义,因此这种行为不符合要求,但至少可以预期它会被记录下来。
答案 1 :(得分:1)
来自XSLT 3.0规范:
出于向后兼容性原因,XSLT 3.0继续支持XSLT 1.0中引入的disable-output-escaping功能。这是一个可选功能,不需要实现来支持它。