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-данные, выполните приведенные далее действия.

  1. Создайте объект XslTransform.

  2. Load Используйте метод для загрузки таблицы стилей для преобразования. Этот метод имеет несколько перегрузок и может загружать таблицу стилей с помощью XmlReaderXPathNavigatorIXPathNavigableurl-адреса или URL-адреса с расположением файла.

  3. 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, используя указанные аргументы args, результат выводит в XmlReader.

Transform(IXPathNavigable, XsltArgumentList, Stream)
Является устаревшей.

Преобразует данные XML в IXPathNavigable, используя указанные аргументы args, результат выводит в Stream.

Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver)

Преобразует данные XML в IXPathNavigable, используя указанные аргументы args, результат выводит в Stream.

Transform(IXPathNavigable, XsltArgumentList, TextWriter)
Является устаревшей.

Преобразует данные XML в IXPathNavigable, используя указанные аргументы args, результат выводит в TextWriter.

Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)

Преобразует данные XML в IXPathNavigable, используя указанные аргументы args, результат выводит в TextWriter.

Transform(IXPathNavigable, XsltArgumentList, XmlResolver)

Преобразует данные XML в IXPathNavigable, используя указанные аргументы args, результат выводит в XmlReader.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)
Является устаревшей.

Преобразует данные XML в IXPathNavigable, используя указанные аргументы args, результат выводит в XmlWriter.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

Преобразует данные XML в IXPathNavigable, используя указанные аргументы args, результат выводит в XmlWriter.

Transform(String, String)
Является устаревшей.

Преобразует данные XML во входном файле и выводит результат в выходной файл.

Transform(String, String, XmlResolver)

Преобразует данные XML во входном файле и выводит результат в выходной файл.

Transform(XPathNavigator, XsltArgumentList)
Является устаревшей.

Преобразует данные XML в XPathNavigator, используя указанные аргументы args, результат выводит в XmlReader.

Transform(XPathNavigator, XsltArgumentList, Stream)
Является устаревшей.

Преобразует данные XML в XPathNavigator, используя указанные аргументы args, результат выводит в Stream.

Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver)

Преобразует данные XML в XPathNavigator, используя указанные аргументы args, результат выводит в Stream.

Transform(XPathNavigator, XsltArgumentList, TextWriter)
Является устаревшей.

Преобразует данные XML в XPathNavigator, используя указанные аргументы args, результат выводит в TextWriter.

Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver)

Преобразует данные XML в XPathNavigator, используя указанные аргументы args, результат выводит в TextWriter.

Transform(XPathNavigator, XsltArgumentList, XmlResolver)

Преобразует данные XML в XPathNavigator, используя указанные аргументы args, результат выводит в XmlReader.

Transform(XPathNavigator, XsltArgumentList, XmlWriter)
Является устаревшей.

Преобразует данные XML в XPathNavigator, используя указанные аргументы, и результат выводит в XmlWriter.

Transform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver)

Преобразует данные XML в XPathNavigator, используя указанные аргументы, и результат выводит в XmlWriter.

Применяется к

Потокобезопасность

XslTransform объекты являются потокобезопасными только для операций преобразования. Другие операции не гарантированно будут потокобезопасны. Необходимо убедиться, что другие методы не вызываются для объекта во время операций загрузки.