Vin*_*nit 3 xml xslt saxon xslt-3.0
可能是撒克逊人的一个错误,但只是想澄清一下 -
<xsl:value-of select="unparsed-text('http://something/test.txt')"
disable-output-escaping="yes"/>
Run Code Online (Sandbox Code Playgroud)
结果 -
<div>test</div>
Run Code Online (Sandbox Code Playgroud)
现在尝试 -
<xsl:try>
<xsl:value-of select="unparsed-text('http://something/test.txt')"
disable-output-escaping="yes"/>
<xsl:catch></xsl:catch>
</xsl:try>
Run Code Online (Sandbox Code Playgroud)
结果-
<div>test</div>
Run Code Online (Sandbox Code Playgroud)
有关为什么会发生这种情况的任何想法?
有趣的一个.只有在将输出直接从变换器写入串行器时(即,有效地绕过结构树的构造时),禁用输出转义才有效.在xsl:try中,输出不能直接写入序列化程序,因为在发生动态错误时可能需要"回滚"它; 因此它被有效地写入一个隐藏的内部变量,当其知道没有发生故障时,其内容仅被发送到序列化器.由于disable-output-escaping是非常多的实现定义,因此这种行为并非不符合要求,但至少可以合理地预期它会被记录下来.