从XSLT抛出异常

时间:2014-09-03 12:44:51

标签: xml xslt railo

当外部文档不可用时,我需要XSLT来停止处理错误。从我发现的< xsl:message>标签似乎是正确的方法,但到目前为止它还不起作用。这就是我的尝试:

<xsl:if test="not(document('some_external_doc.xml')//myxpath)">
    <xsl:message terminate="yes">ERROR: Missing element!</xsl:message>
    <h1>Error detected!</h1>
</xsl:if>

&lt; xsl:if&gt;检测到丢失的文档/ xpath。和&lt; h1&gt;将显示,但由于某种原因,&lt; xsl:message&gt;的终止属性被忽略了。转换是在Railo中完成的,因此XSLT处理器的使用应该是Java的默认值,但是我无法找到关于Railo正在使用的处理器的确定内容。

1 个答案:

答案 0 :(得分:2)

你有正确的想法,但是......

如果您的XSLT处理器实现 XSLT 1.0 ,则技术上不必终止。请注意spec for xsl:message 这个词应该而不是

  

如果terminate属性的值为yes,则为XSLT处理器   应该在发送消息后终止处理。默认   价值是没有。

有趣的是, XSLT 2.0 changes 必须

  

如果terminate属性的有效值为yes,那么   处理器必须在发送消息后终止处理。

另请注意,xsl:message语句的执行顺序取决于处理器;在日志中查找xsl:message输出时请记住这一点。

最后,您在 XSLT 2.0 error()函数)和 XSLT 3.0 xsl:try and xsl:catch)下还有一些其他异常处理选项。