Существует не общий способ обработки изящно ошибки в функции.
Согласно XSLT 1.0 spec:
"Если есть ошибка при получении ресурса, то процессор XSLT может сигнализировать об ошибке, если он не сигнализирует об ошибке, он должен восстановить, вернув пустой множество узлов. "
Это означает, что мы находимся на милости Implementor ли пустой набор узлов производятся с помощью функции (хорошо, мы можем проверить на пустой (несуществующий) набор узлов) или «сигнализирует об ошибке», которая, как правило, может закончиться преобразованием.
В случае, если мы проверили, что конкретная реализация конкретного XSLT-процессора производит только пустой набор узлов и не завершает преобразование, мы можем решить протестировать это условие и «изящно» восстановить. Однако наше приложение становится не переносным, это зависит от этого конкретного XSLT-процессора, и нет абсолютно никакой гарантии, что в следующей версии это поведение не изменится к худшему. Рискованный, не так ли?
Таким образом, лучше всего, чтобы тот, кто запускает преобразование (например, из программы C#), должен проверить наличие файла и передать соответствующий параметр преобразованию, отражающий это существование.
Как указывалось в моем ответе, нет гарантии, что XSLT-процессор не будет вызывать ошибку (что разрешено спецификацией XSLT). Следовательно, вышеизложенное не является полностью правильным ответом. –