禁用输出转义= “是” 的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>
结果-
<div>test</div>
有关为什么会发生这种情况的任何想法?
答
有趣的一个。禁用输出转义仅适用于将输出直接从变压器写入串行器(即构建结果树的构建被有效绕过)的情况。在xsl:try内,输出不能直接写入序列化程序,因为在出现动态错误时可能需要“回退”输出;所以它被有效地写入一个隐藏的内部变量,当它知道没有发生故障时,它的内容只被发送到串行器。由于disable-output-escaping是非常多实现定义的,所以这种行为并不是不符合的,但至少希望将其记录下来至少是合理的。
答
从XSLT 3.0规格:
为了向后兼容性的原因,XSLT 3.0继续支持在XSLT 1.0引入的禁止输出转义功能。这是一个可选功能,不需要实现来支持它。
感谢您的回复。我可能会坚持使用unparsed-text-available(),而不是使用try/catch块=) – Vinit 2015-04-02 23:17:17