Класс 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-данные из ненадежных источников.