Класс System.Xml.Xsl.XslCompiledTransform
В этой статье приводятся дополнительные замечания к справочной документации по этому API.
Класс XslCompiledTransform — это процессор XSLT, поддерживающий синтаксис XSLT 1.0. Это новая реализация и включает в себя повышение производительности по сравнению с устаревшим XslTransform классом. Структура XslCompiledTransform класса очень похожа на XslTransform класс. Метод Load загружает и компилирует таблицу стилей, а Transform метод выполняет преобразование XSLT.
Поддержка функции XSLT document()
и встроенных блоков скриптов отключена по умолчанию. Эти функции можно включить, создав XsltSettings объект и передав его методу Load .
Дополнительные сведения см. в разделе "Использование класса XslCompiledTransform и миграция из класса XslTransform".
Вопросы безопасности
При создании приложения, использующего класс XslCompiledTransform, помните о следующих особенностях и их последствиях:
Скрипты XSLT отключены по умолчанию. Скрипты XSLT следует включать только при необходимости в поддержке скриптов и при работе в полностью доверенной среде.
Функция XSLT
document()
отключена по умолчанию. Если функцияdocument()
включена, ограничьте ресурсы, к которым можно получить доступ путем передачи объекта XmlSecureResolver методу Transform.Объекты расширения по умолчанию включены. Если содержащие расширения объекты XsltArgumentList используются при передаче их в метод Transform.
Таблицы стилей XSLT могут содержать ссылки на другие файлы и внедренные блоки скриптов. Этим может воспользоваться злонамеренный пользователь: он может передать такие данные или таблицы стилей, которые при выполнении будут задействовать все доступные ресурсы компьютера.
Приложения XSLT, которые выполняются в среде со смешанным уровнем доверия, могут привести к подделке таблицы стилей. Например, злонамеренный пользователь может загрузить объект с вредоносной таблицей стилей и передать ее другому пользователю, который впоследствии вызовет метод Transform и выполнит преобразование.
Чтобы избежать этих проблем безопасности, не следует включатьскрипты или функцию document()
, если таблица стилей поступает не из надежного источника, а также не следует принимать объекты XslCompiledTransform, таблицы стилей XSLT или исходные XML-данные из ненадежных источников.