当外部文档不可用时,我需要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正在使用的处理器的确定内容。
答案 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)下还有一些其他异常处理选项。