#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
над которым у вас есть полный контроль.