禁用输出转义= “是” 的try/catch失败

问题描述:

在撒克逊人可能是一个错误,但只是想clarify-禁用输出转义= “是” 的try/catch失败

<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> 

结果-

&lt;div&gt;test&lt;/div&gt; 

有关为什么会发生这种情况的任何想法?

有趣的一个。禁用输出转义仅适用于将输出直接从变压器写入串行器(即构建结果树的构建被有效绕过)的情况。在xsl:try内,输出不能直接写入序列化程序,因为在出​​现动态错误时可能需要“回退”输出;所以它被有效地写入一个隐藏的内部变量,当它知道没有发生故障时,它的内容只被发送到串行器。由于disable-output-escaping是非常多实现定义的,所以这种行为并不是不符合的,但至少希望将其记录下来至少是合理的。

+0

感谢您的回复。我可能会坚持使用unparsed-text-available(),而不是使用try/catch块=) – Vinit 2015-04-02 23:17:17

从XSLT 3.0规格:

为了向后兼容性的原因,XSLT 3.0继续支持在XSLT 1.0引入的禁止输出转义功能。这是一个可选功能,不需要实现来支持它。