This instruction is always used together with saxon:try. It is used to catch
dynamic errors occurring within a saxon:try instruction, and to return an alternative
result when an error occurs.
The parent instruction must be saxon:try. A saxon:try element must have
at least one saxon:catch child element (there may be several), and the saxon:catch
children must come last, except perhaps for any xsl:fallback children.
There is a mandatory attribute errors defining which errors are caught. Every error code
is identified by a QName. The attribute is a whitespace-separated list of
NameTests which are used to match this
QName. Each NameTest may be in the form * (match all names), *:local
(match local within any namespace), err:* (match all names in namespace err,
or err:ABCD9867 (match a specific error code). The most common namespace, used by all system-defined
errors, is http://www.w3.org/2005/xqt-errors, for which the conventional prefix is err:.
The value to be returned by the saxon:catch element may be calculated in an XPath expression
in the select attribute, or in instructions forming the body of the saxon:catch element.
Within the select expression, or within the body of the saxon:catch element,
the following variables are available. The namespace prefix err in this names must be bound
to the namespace URI http://www.w3.org/2005/xqt-errors.
|
Variable |
Type |
Value |
|
err:code |
xs:QName |
The error code |
|
err:description |
xs:string |
A description of the error condition |
|
err:value |
item()* |
Value associated with the error. For an error raised by calling the |
|
err:module |
xs:string? |
The URI (or system ID) of the stylesheet module containing the instruction where the error occurred; an empty sequence if the information is not available. |
|
err:line-number |
xs:integer? |
The line number within the stylesheet module of the instruction where the error occurred; an empty sequence if the information is not available. |
|
err:column-number |
xs:integer? |
The column number within the stylesheet module of the instruction where the error occurred; an empty sequence if the information is not available. |
The catch block can throw a new error by calling the error() function.
Variables declared within the saxon:try block are not visible within the
saxon:catch block.
For examples, see saxon:try.