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 | |