XSLT-преобразования с помощью класса XslTransform
Обновлен: November 2007
Примечание. |
---|
Класс XslTransform в версии .NET Framework, версия 2.0 устарел. Можно выполнять XSLT-преобразование, используя класс XslCompiledTransform. Дополнительные сведения см. в разделах Использование класса XslCompiledTransform и Миграция с класса XslTransform. |
Таблицы XSLT применяются для преобразования содержимого исходного XML-документа в другой документ, отличный по формату или структуре (например, чтобы преобразовать XML в HTML для использования в веб-узле или преобразовать его в документ, содержащий только поля, необходимые приложению). Этот процесс преобразования описан в рекомендациях XSLT версии 1.0 консорциума W3C, размещенных на веб-узле www.w3.org/TR/xslt. В платформе .NET Framework класс XslTransform, находящийся в пространстве имен System.Xml.Xsl, является обработчиком XSLT, который реализует функциональность этой спецификации. Нереализованные функции из рекомендаций XSLT 1.0 консорциума W3C перечислены в разделе Выходные данные XslTransform. На следующем рисунке показана архитектура преобразования в платформе .NET Framework.
Общие сведения
Архитектура преобразования
В рекомендациях XSLT используется язык XPath для выбора частей XML-документа, XPath — язык запросов, используемый для навигации по узлам дерева документов. Как показано на схеме, реализация языка XPath платформы .NET Framework используется для выбора частей XML-документа, сохраненных в нескольких классах, таких как XmlDocument, XmlDataDocument и XPathDocument. XPathDocument — оптимизированное хранилище данных XSLT, которое при использовании с классом XslTransform обеспечивает хорошую производительность преобразований XSLT.
В следующей таблице перечислены классы, широко используемые при работе с классом XslTransform и XPath, и их функции.
Класс или интерфейс |
Функция |
---|---|
API-интерфейс, который предоставляет модель стиля курсора для навигации по хранилищу, наряду с поддержкой запросов XPath. Не позволяет вносить изменения в базовое хранилище. Для изменения используйте класс XmlDocument. |
|
Интерфейс, который предоставляет метод CreateNavigator классу XPathNavigator для хранилища. |
|
Позволяет изменять документ. Реализует интерфейс IXPathNavigable, обеспечивая сценарии изменения документов, в которых требуются преобразования XSLT. Дополнительные сведения см. в разделе XmlDocument в качестве входа для XslTransform. |
|
Производный от XmlDocument. Соединяет реляционные и XML-данные с помощью объекта DataSet для оптимизации хранения структурированных данных в XML-документе в соответствии с сопоставлениями, указанными для объекта DataSet. Реализует интерфейс IXPathNavigable, обеспечивая сценарии, в которых преобразования XSLT могут быть выполнены над реляционными данными, полученными из базы данных. Дополнительные сведения см. в разделе Интеграция XML с реляционными данными и ADO.NET. |
|
Этот класс оптимизирован для обработки преобразований XslTransform и запросов XPath, и предоставляет высокопроизводительный кэш только для чтения. Реализует интерфейс IXPathNavigable и является предпочтительным хранилищем для преобразований XSLT. |
|
Обеспечивает навигацию в наборах узлов XPath. Все методы выбора XPath класса XPathNavigator возвращают объект XPathNodeIterator. Несколько объектов XPathNodeIterator могут быть созданы для одного хранилища, и каждый может представлять выбранный набор узлов. |
Расширения MSXML XSLT
Функции msxsl:script и msxsl:node-set — единственные расширения MSXML XSLT, поддерживаемые классом XslTransform.
Пример
Следующий пример кода загружает таблицу стилей XSLT, считывает файл с именем mydata.xml в объект XPathDocument и выполняет преобразование данных из вымышленного файла с именем myStyleSheet.xsl, отправляя форматированные выходные данные на консоль.
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.XPath
Imports System.Xml.Xsl
Public Class Sample
Private filename As [String] = "mydata.xml"
Private stylesheet As [String] = "myStyleSheet.xsl"
Public Shared Sub Main()
Dim xslt As New XslTransform()
xslt.Load(stylesheet)
Dim xpathdocument As New XPathDocument(filename)
Dim writer As New XmlTextWriter(Console.Out)
writer.Formatting = Formatting.Indented
xslt.Transform(xpathdocument, Nothing, writer, Nothing)
End Sub 'Main
End Class 'Sample
using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;
public class Sample
{
private const String filename = "mydata.xml";
private const String stylesheet = "myStyleSheet.xsl";
public static void Main()
{
XslTransform xslt = new XslTransform();
xslt.Load(stylesheet);
XPathDocument xpathdocument = new
XPathDocument(filename);
XmlTextWriter writer = new XmlTextWriter(Console.Out);
writer.Formatting=Formatting.Indented;
xslt.Transform(xpathdocument, null, writer, null);
}
}
См. также
Основные понятия
Реализация классом XslTransform XSLT-процессора
Реализация поведения по выбору в классе XslTransform
XPathNavigator в преобразованиях
XPathNodeIterator в преобразованиях
Ввод XPathDocument в XslTransform
Ввод XmlDataDocument в XslTransform
Ввод XmlDocument в XslTransform