Передача функций синтаксического анализатора XML в Saxon для анализа таблиц стилей

#java #saxon

#java #saxon

Вопрос:

В Saxon API можно передавать функции синтаксического анализатора XML объекту Confi&uration с помощью XML_PARSER_FEATURE функции Confi&.

Но, похоже, это применяется только к анализу исходного документа, а не таблицы стилей XSLT. Есть ли способ настроить синтаксический анализ таблиц стилей, кроме подключения пользовательского анализатора?

Конкретно, мне нужно убедиться, что внешние объекты отключены по соображениям безопасности.

Ответ №1:

Во-первых, обратите внимание, что если вы не доверяете таблице стилей, существует множество способов, которыми она может нанести ущерб, помимо использования внешних объектов. Таким образом, отключение внешних объектов — это только один из шагов, которые вам нужно предпринять: наиболее важным из которых является отключение использования функций рефлексивного расширения.

Лучший способ настроить анализатор для обработки модулей таблиц стилей — создать его самостоятельно. Для основного модуля таблицы стилей укажите модуль, SAXSource содержащий XMLReader файл, сконфигурированный так, как вы хотите. Для включенных и импортированных модулей используйте a, URIResolver который выделяет XMLReader и возвращает a SAXSource .

Также есть опция настройки Feature.STYLE_PARSER_CLASS . Вы можете использовать это для реализации своего собственного класса, который реализует XMLReader интерфейс, делегируя фактический синтаксический анализ «реальному», XMLReader над которым у вас есть полный контроль.