XslTransform Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Внимание!
This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202
Преобразует данные XML с помощью таблицы стилей XSLT.
public ref class XslTransform sealed
public sealed class XslTransform
[System.Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public sealed class XslTransform
type XslTransform = class
[<System.Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")>]
type XslTransform = class
Public NotInheritable Class XslTransform
- Наследование
-
XslTransform
- Атрибуты
Примеры
Следующий пример преобразует указанный XML-документ и выводит результат в консоль.
//Create a new XslTransform object.
XslTransform xslt = new XslTransform();
//Load the stylesheet.
xslt.Load("http://server/favorite.xsl");
//Create a new XPathDocument and load the XML data to be transformed.
XPathDocument mydata = new XPathDocument("inputdata.xml");
//Create an XmlTextWriter which outputs to the console.
XmlWriter writer = new XmlTextWriter(Console.Out);
//Transform the data and send the output to the console.
xslt.Transform(mydata,null,writer, null);
'Create a new XslTransform object.
Dim xslt As New XslTransform()
'Load the stylesheet.
xslt.Load(CType("http://server/favorite.xsl", String))
'Create a new XPathDocument and load the XML data to be transformed.
Dim mydata As New XPathDocument("inputdata.xml")
'Create an XmlTextWriter which outputs to the console.
Dim writer As New XmlTextWriter(Console.Out)
'Transform the data and send the output to the console.
xslt.Transform(mydata, Nothing, writer, Nothing)
Комментарии
Примечание
Класс XslTransform устарел в Microsoft платформа .NET Framework версии 2.0. Класс XslCompiledTransform является новым процессором XSLT. Дополнительные сведения см. в разделе "Использование класса XslCompiledTransform " и миграция из класса XslTransform.
XslTransform поддерживает синтаксис XSLT 1.0. Таблица стилей XSLT должна использовать пространство имен http://www.w3.org/1999/XSL/Transform
.
Дополнительные аргументы также можно добавить в таблицу стилей XsltArgumentList с помощью класса. Этот класс содержит входные параметры для таблицы стилей и объектов расширения, которые можно вызывать из таблицы стилей.
Чтобы преобразовать XML-данные, выполните приведенные далее действия.
Создайте объект XslTransform.
Load Используйте метод для загрузки таблицы стилей для преобразования. Этот метод имеет несколько перегрузок и может загружать таблицу стилей с помощью XmlReaderXPathNavigatorIXPathNavigableurl-адреса или URL-адреса с расположением файла.
Transform Используйте метод для преобразования XML-данных. Этот метод имеет несколько перегрузок и может обрабатывать различные типы входных и выходных данных. Вы также можете указать XsltArgumentList содержащий дополнительные аргументы для использования в качестве входных данных во время преобразования.
Вопросы безопасности
При создании приложения, использующего класс XslTransform, помните о следующих особенностях и их последствиях:
Объекты расширения по умолчанию включены. Если содержащие расширения объекты XsltArgumentList используются при передаче их в метод Transform.
Таблицы стилей XSLT могут содержать ссылки на другие файлы и внедренные блоки скриптов. Злоумышленник может воспользоваться этим путем предоставления данных или таблиц стилей, которые при выполнении приводят к обработке системы до тех пор, пока компьютер не будет работать с ресурсами.
Приложения XSLT, которые выполняются в среде со смешанным уровнем доверия, могут привести к подделке таблицы стилей. Например, злонамеренный пользователь может загрузить объект с вредоносной таблицей стилей и передать ее другому пользователю, который впоследствии вызовет метод Transform и выполнит преобразование.
Эти проблемы безопасности можно устранить, не принимая XslTransform объекты, таблицы стилей XSLT или данные источника XML из ненадежных источников.
Поддержка сценариев
Этот класс поддерживает внедренные скрипты с помощью msxsl:script
элемента.
В версии 1.1 платформа .NET Framework свидетельство таблицы стилей определяет, какие разрешения предоставляются внедренным сценариям.
Если таблица стилей была загружена из универсального идентификатора ресурса (URI), для создания свидетельства используется URI. Это свидетельство включает универсальный код ресурса (URI) вместе с его сайтом и зоной.
Если таблица стилей была загружена с помощью другого источника, можно предоставить доказательства, передав System.Security.Policy.Evidence объект в Load метод. В противном случае сборка скрипта имеет полное доверие.
Полунадежные вызывающие абоненты: UnmanagedCode
разрешение требуется для компиляции внедренного скрипта. ControlEvidence
Разрешение требуется для предоставления Evidence методу Load . Возникает SecurityException , если вызывающий объект не имеет необходимых разрешений. Дополнительные сведения см. в разделах System.Security.Permissions.SecurityPermission и System.Security.Permissions.SecurityPermissionFlag.
Элемент msxsl:script
имеет следующие требования:
Элемент
msxsl:script
принадлежит пространствуurn:schemas-microsoft-com:xslt
имен. Таблица стилей должна содержать объявлениеxmlns:msxsl=urn:schemas-microsoft-com:xslt
пространства имен.Элемент
msxsl:script
может содержать атрибут, указывающийlanguage
используемый язык скриптов. Значение атрибутаlanguage
должно быть одним из следующих: C#, CSharp, VB, VisualBasic, JScript или JavaScript. Так как имя языка не учитывает регистр, javaScript и javascript являются допустимыми.language
Если атрибут не указан, по умолчанию используется JScript.Элемент
msxsl:script
должен содержатьimplements-prefix
атрибут, содержащий префикс, представляющий пространство имен, связанное с блоком скрипта. Это пространство имен должно быть определено в таблице стилей. Таблица стилей может включать несколько блоков скриптов, сгруппированных по пространству имен. Нельзя использовать блоки скриптов с несколькими языками в одном пространстве имен. Блоки скриптов могут вызывать функцию, определенную в другом блоке скрипта, если блоки скриптов находятся в том же пространстве имен. Содержимое блока скрипта анализируется в соответствии с правилами и синтаксисом языка сценариев (предоставленным атрибутомlanguage
). Например, если у вас есть блок скрипта C#, комментарии будут иметь//
префикс символов. Комментарии должны быть допустимыми XML-содержимым.
Примечание
Рекомендуется упаковать блоки скриптов в раздел CDATA.
<msxsl:script implements-prefix='xy' language='C#'>
<![CDATA[
// Add code here.
]]>
</msxsl:script>
Функции можно объявлять внутри элемента msxsl:script
. В следующей таблице показаны пространства имен, поддерживаемые по умолчанию.
Поддерживаемые пространства имен | Описание |
---|---|
System |
Системные классы. |
System.Collection |
Классы коллекций. |
System.Text |
Классы обработки текста. |
System.Xml |
Основные классы XML. |
System.Xml.Xsl |
Классы XSLT. |
System.Xml.XPath |
Классы языка XPath. |
Указанные аргументы и возвращаемые значения, определенные функциями скрипта, должны быть одним из типов консорциума W3C, перечисленных ниже. В следующей таблице подробно описано сопоставление типов W3C( XPath или XSLT) и соответствующих классов платформа .NET Framework.
Тип W3C | Эквивалентный класс .NET |
---|---|
String (XPath) | System.String |
Boolean (XPath) | System.Boolean |
Number (XPath) | System.Double |
Фрагмент дерева результатов (XSLT) | System.Xml.XPath.XPathNavigator |
Набор узлов (XPath) | System.Xml.XPath.XPathNodeIterator |
Если функция скрипта использует один из следующих числовых типов: Int16, UInt16, Int32, UInt32, Int64, UInt64, Single или Decimal, эти типы принудаются к Double, который сопоставляется с номером типа XPath W3C.
Исключение возникает при вызове функции, которая не может преобразовать результат аргумента в один из обязательных типов.
Примечание
msxsl:script
и msxsl:node-list
являются единственными функциями из urn:schemas-microsoft-com:xslt
пространства имен, поддерживаемых классом XslTransform .
XslTransform имеет возможность использовать код среды CLR в качестве механизма расширения. Это достигается путем передачи экземпляра класса XslTransform в класс и вызова его открытых методов в таблице стилей XSLT. Методы, определенные с помощью ключевого params
слова, которые позволяют передавать неопределенное количество параметров, в этом сценарии работают неправильно. Дополнительные сведения см. в разделе params .
Дополнительные сведения см. в разделе "Преобразования XSLT" с классом XslTransform.
Конструкторы
XslTransform() |
Инициализирует новый экземпляр класса XslTransform. |
Свойства
XmlResolver |
Является устаревшей.
Устанавливает значение свойства XmlResolver, используемого для обработки внешних ресурсов при вызове методаTransform. |
Методы
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
Load(IXPathNavigable) |
Является устаревшей.
Загружает таблицу стилей XSLT, содержащуюся в классе IXPathNavigable. |
Load(IXPathNavigable, XmlResolver) |
Является устаревшей.
Загружает таблицу стилей XSLT, содержащуюся в классе IXPathNavigable. |
Load(IXPathNavigable, XmlResolver, Evidence) |
Загружает таблицу стилей XSLT, содержащуюся в классе IXPathNavigable. Этот метод позволяет ограничивать разрешения для таблиц стилей путем указания свидетельства. |
Load(String) |
Загружает таблицу стилей XSLT с указанного URL. |
Load(String, XmlResolver) |
Загружает таблицу стилей XSLT с указанного URL. |
Load(XmlReader) |
Является устаревшей.
Загружает таблицу стилей XSLT, содержащуюся в классе XmlReader. |
Load(XmlReader, XmlResolver) |
Является устаревшей.
Загружает таблицу стилей XSLT, содержащуюся в классе XmlReader. |
Load(XmlReader, XmlResolver, Evidence) |
Загружает таблицу стилей XSLT, содержащуюся в классе XmlReader. Этот метод позволяет ограничивать разрешения для таблиц стилей путем указания свидетельства. |
Load(XPathNavigator) |
Является устаревшей.
Загружает таблицу стилей XSLT, содержащуюся в классе XPathNavigator. |
Load(XPathNavigator, XmlResolver) |
Является устаревшей.
Загружает таблицу стилей XSLT, содержащуюся в классе XPathNavigator. |
Load(XPathNavigator, XmlResolver, Evidence) |
Загружает таблицу стилей XSLT, содержащуюся в классе XPathNavigator. Этот метод позволяет ограничивать разрешения для таблиц стилей путем указания свидетельства. |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Transform(IXPathNavigable, XsltArgumentList) |
Является устаревшей.
Преобразует данные XML в IXPathNavigable, используя указанные аргументы |
Transform(IXPathNavigable, XsltArgumentList, Stream) |
Является устаревшей.
Преобразует данные XML в IXPathNavigable, используя указанные аргументы |
Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver) |
Преобразует данные XML в IXPathNavigable, используя указанные аргументы |
Transform(IXPathNavigable, XsltArgumentList, TextWriter) |
Является устаревшей.
Преобразует данные XML в IXPathNavigable, используя указанные аргументы |
Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver) |
Преобразует данные XML в IXPathNavigable, используя указанные аргументы |
Transform(IXPathNavigable, XsltArgumentList, XmlResolver) |
Преобразует данные XML в IXPathNavigable, используя указанные аргументы |
Transform(IXPathNavigable, XsltArgumentList, XmlWriter) |
Является устаревшей.
Преобразует данные XML в IXPathNavigable, используя указанные аргументы |
Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver) |
Преобразует данные XML в IXPathNavigable, используя указанные аргументы |
Transform(String, String) |
Является устаревшей.
Преобразует данные XML во входном файле и выводит результат в выходной файл. |
Transform(String, String, XmlResolver) |
Преобразует данные XML во входном файле и выводит результат в выходной файл. |
Transform(XPathNavigator, XsltArgumentList) |
Является устаревшей.
Преобразует данные XML в XPathNavigator, используя указанные аргументы |
Transform(XPathNavigator, XsltArgumentList, Stream) |
Является устаревшей.
Преобразует данные XML в XPathNavigator, используя указанные аргументы |
Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver) |
Преобразует данные XML в XPathNavigator, используя указанные аргументы |
Transform(XPathNavigator, XsltArgumentList, TextWriter) |
Является устаревшей.
Преобразует данные XML в XPathNavigator, используя указанные аргументы |
Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver) |
Преобразует данные XML в XPathNavigator, используя указанные аргументы |
Transform(XPathNavigator, XsltArgumentList, XmlResolver) |
Преобразует данные XML в XPathNavigator, используя указанные аргументы |
Transform(XPathNavigator, XsltArgumentList, XmlWriter) |
Является устаревшей.
Преобразует данные XML в XPathNavigator, используя указанные аргументы, и результат выводит в XmlWriter. |
Transform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver) |
Преобразует данные XML в XPathNavigator, используя указанные аргументы, и результат выводит в XmlWriter. |
Применяется к
Потокобезопасность
XslTransform объекты являются потокобезопасными только для операций преобразования. Другие операции не гарантированно будут потокобезопасны. Необходимо убедиться, что другие методы не вызываются для объекта во время операций загрузки.