xsl:try¶
В сочетании с xsl:catch
инструкция xsl:try
позволяет восстанавливать динамические ошибки, возникающие в выражении, которое она оборачивает.
Доступно в XSLT 3.0. Начиная с версии Saxon 9.8, доступна во всех редакциях. Реализована в Saxon-PE и Saxon-EE начиная с Saxon 9.6.
- Категория: инструкция
- Содержимое: ( sequence-constructor ,
xsl:catch
, (xsl:catch
|xsl:fallback
)* ) - Допустимые родительские элементы: любой элемент XSLT, модель содержимого которого - sequence-constructor; любой литеральный элемент результата
Атрибуты¶
select?
- expression
- Выражение, которое должно быть оценено инструкцией, может быть определено либо атрибутом
select
, либо вложенным конструктором последовательности. rollback-output?
- boolean
- Значение
no
используется для ослабления требования восстанавливать деревья результатов, когда происходят сбои в процессе оценки инструкцииxsl:try
. По умолчанию используется значениеyes
. (Этот атрибут не имел никакого значения до версии Saxon 9.9).
Заметки по реализации Saxon¶
Saxon 9.9 больше не игнорирует значение атрибута rollback-output
. Если установлено значение "no
", то при оценке инструкции в режиме "push" вывод xsl:try
не буферизируется, а записывается непосредственно в место назначения результата. Если возникает динамическая ошибка, то соответствующая xsl:catch
действует только в том случае, если вывод еще не был записан в это место назначения.
Подробности¶
Можно иметь более одного xsl:catch
внутри xsl:try
; используется первый, который соответствует ошибке.
Внутри xsl:catch
доступен ряд переменных в пространстве имен http://www.w3.org/2005/xqt-errors
:
err:code
- код ошибки в виде QNameerr:description
- описание ошибки (сообщение об ошибке)err:value
- объект ошибки (если доступен)err:module
- URI модуля таблицы стилей, в котором произошла ошибкаerr:line-number
- номер строки исходной таблицы стилей, в которой произошла ошибкаerr:column-number
- для Saxon это обычно будет неизвестно (-1).
Ошибка может быть повторно отброшена с помощью функции error()
.
Примеры¶
Пример 1¶
В следующем примере показано восстановление после ошибки при оценке выражения XPath (в данном случае деление на ноль):
1 2 3 |
|
Пример 2¶
Следующий пример показывает, как восстановиться после ошибки при оценке последовательности инструкций XSLT (в данном случае ошибка валидации):
1 2 3 4 5 6 7 8 9 10 |
|