Saxon8.6
Такой код обрабатывается без ошибок
code:
<xsl:function name="fun:runerror">
<xsl:copy-of select="1 div 0"/>
</xsl:function>
<xsl:variable name="x" select="fun:runerror()"/>
<!--или <xsl:variable name="x" select="1 div 0"/> -->
Такой все-таки выдаст runtime error и преобразование остановится
code:
<xsl:function name="fun:runerror">
<xsl:copy-of select="1 div 0"/>
</xsl:function>
<xsl:variable name="x" select="fun:runerror()"/>
<!--или <xsl:variable name="x" select="1 div 0"/> -->
<xsl:value-of select="$x"/>
То есть получается, что exception хранится в переменной и если мы не сделаем что-нибудь из
<xsl:value-of select="$x"/>, <xsl:copy-of select="$x"/> или <xsl:message select="$x"/>, то преобразование благополучно закончится.
Хочется написать функцию проверки параметов, котрая если-что не так останавливает преобразование.
Вопрос: как можно остановить преобразование внутри функции?