disable-output-escaping="yes" 在 try/catch 中失败
disable-output-escaping="yes" fails in 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>
有没有想过为什么会这样?
来自 XSLT 3.0 规范:
For backwards compatibility reasons, XSLT 3.0 continues to support the disable-output-escaping feature introduced in XSLT 1.0. This is an optional feature and implementations are not required to support it.
有趣的一个。 Disable-output-escaping 仅在将输出直接从转换器写入序列化器时有效(即,当结果树的构造被有效地绕过时)。在 xsl:try 内,输出不能直接写入序列化程序,因为在发生动态错误时可能需要 "rolled back";所以它被有效地写入了一个隐藏的内部变量,其内容仅在已知没有发生故障时才发送到序列化程序。由于 disable-output-escaping 在很大程度上是实现定义的,因此这种行为并非不合规,但至少期望它被记录下来是合理的。
可能是撒克逊语中的错误,但只是想澄清一下-
<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>
有没有想过为什么会这样?
来自 XSLT 3.0 规范:
For backwards compatibility reasons, XSLT 3.0 continues to support the disable-output-escaping feature introduced in XSLT 1.0. This is an optional feature and implementations are not required to support it.
有趣的一个。 Disable-output-escaping 仅在将输出直接从转换器写入序列化器时有效(即,当结果树的构造被有效地绕过时)。在 xsl:try 内,输出不能直接写入序列化程序,因为在发生动态错误时可能需要 "rolled back";所以它被有效地写入了一个隐藏的内部变量,其内容仅在已知没有发生故障时才发送到序列化程序。由于 disable-output-escaping 在很大程度上是实现定义的,因此这种行为并非不合规,但至少期望它被记录下来是合理的。