Поделиться через


XSLT-преобразования с помощью класса XslTransform

Обновлен: November 2007

47yh29a9.alert_note(ru-ru,VS.90).gifПримечание.

Класс 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

В рекомендациях XSLT используется язык XPath для выбора частей XML-документа, XPath — язык запросов, используемый для навигации по узлам дерева документов. Как показано на схеме, реализация языка XPath платформы .NET Framework используется для выбора частей XML-документа, сохраненных в нескольких классах, таких как XmlDocument, XmlDataDocument и XPathDocument. XPathDocument — оптимизированное хранилище данных XSLT, которое при использовании с классом XslTransform обеспечивает хорошую производительность преобразований XSLT.

В следующей таблице перечислены классы, широко используемые при работе с классом XslTransform и XPath, и их функции.

Класс или интерфейс

Функция

XPathNavigator

API-интерфейс, который предоставляет модель стиля курсора для навигации по хранилищу, наряду с поддержкой запросов XPath. Не позволяет вносить изменения в базовое хранилище. Для изменения используйте класс XmlDocument.

IXPathNavigable

Интерфейс, который предоставляет метод CreateNavigator классу XPathNavigator для хранилища.

XmlDocument

Позволяет изменять документ. Реализует интерфейс IXPathNavigable, обеспечивая сценарии изменения документов, в которых требуются преобразования XSLT. Дополнительные сведения см. в разделе XmlDocument в качестве входа для XslTransform.

XmlDataDocument

Производный от XmlDocument. Соединяет реляционные и XML-данные с помощью объекта DataSet для оптимизации хранения структурированных данных в XML-документе в соответствии с сопоставлениями, указанными для объекта DataSet. Реализует интерфейс IXPathNavigable, обеспечивая сценарии, в которых преобразования XSLT могут быть выполнены над реляционными данными, полученными из базы данных. Дополнительные сведения см. в разделе Интеграция XML с реляционными данными и ADO.NET.

XPathDocument

Этот класс оптимизирован для обработки преобразований XslTransform и запросов XPath, и предоставляет высокопроизводительный кэш только для чтения. Реализует интерфейс IXPathNavigable и является предпочтительным хранилищем для преобразований XSLT.

XPathNodeIterator

Обеспечивает навигацию в наборах узлов 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

Ссылки

XslTransform