XslTransform クラスを使用した XSLT 変換XSLT Transformations with the XslTransform Class

注意

.NET Framework 2.0 では XslTransform クラスが廃止されています。The XslTransform class is obsolete in the .NET Framework 2.0. XslCompiledTransform クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。You can perform Extensible Stylesheet Language for Transformations (XSLT) transformations using the XslCompiledTransform class. 詳しくは、「XslCompiledTransform クラスの使用」および「XslTransform クラスからの移行」をご覧ください。See Using the XslCompiledTransform Class and Migrating From the XslTransform Class for more information.

XSLT の目的は、たとえば、XML を Web サイトで使われる HTML に変換したり、XML ドキュメントをアプリケーションが必要とするフィールドのみが含まれたドキュメントに変換するなど、ソース XML ドキュメントの内容を形式や構造の異なる別のドキュメントに変換することです。The goal of the XSLT is to transform the content of a source XML document into another document that is different in format or structure (for example, to transform XML into HTML for use on a Web site or to transform it into a document that contains only the fields required by an application). この変換処理の仕様は、W3C (World Wide Web Consortium) 勧告 XSLT バージョン 1.0 で規定されています。This transformation process is specified by the World Wide Web Consortium (W3C)XSLT version 1.0 recommendation. .NET Framework では、System.Xml.Xsl 名前空間にある XslTransform クラスが、この仕様の機能を実装する XSLT プロセッサです。In the .NET Framework, the XslTransform class, found in the System.Xml.Xsl namespace, is the XSLT processor that implements the functionality of this specification. W3C 勧告『XSLT Version 1.0』から実装された機能の他に、「XslTransform からの出力」に記載されている機能がいくつかあります。There are a small number of features that have not been implemented from the W3C XSLT 1.0 recommendation, listed in Outputs from an XslTransform. .NET Framework の変換アーキテクチャを次の図に示します。The following figure shows the transformation architecture of the .NET Framework.

概要Overview

XSLT 変換アーキテクチャを示す図。

XSLT 勧告では、XPath (XML Path Language) を使って XML ドキュメントの一部を選択します。XPath とは、ドキュメント ツリーのノード間を移動するのに使われるクエリ言語です。The XSLT recommendation uses XML Path Language (XPath) to select parts of an XML document, where XPath is a query language used to navigate nodes of a document tree. 図に示すように、XPath の .NET Framework の実装は、XmlDocumentXmlDataDocumentXPathDocument など、複数のクラスに格納されている XML の一部を選択するのに使用されます。As shown in the diagram, the .NET Framework implementation of XPath is used to select parts of XML stored in several classes, such as an XmlDocument, an XmlDataDocument, and an XPathDocument. XPathDocument は最適化された XSLT データ ストアであり、これを XslTransform と共に使用することで、パフォーマンスの高い XSLT 変換を実行できます。An XPathDocument is an optimized XSLT data store, and when used with XslTransform, it provides XSLT transformations with good performance.

XslTransform と XPath を使用するときによく使われるクラスと、それぞれの機能を次の表に示します。The following table list commonly uses classes when working with XslTransform and XPath and their function.

クラスまたはインターフェイスClass or Interface 関数Function
XPathNavigator ストア内で移動するためのカーソル スタイルのモデルを提供し、XPath クエリをサポートする API です。It is an API that provides a cursor style model for navigating over a store, along with XPath query support. 元になるストアを編集する機能は提供しません。It does not provide editing of the underlying store. 編集には XmlDocument クラスを使用します。For editing, use the XmlDocument class.
IXPathNavigable CreateNavigatorXPathNavigator メソッドを提供するストア用のインターフェイスです。It is an interface that provides a CreateNavigator method to an XPathNavigator for the store.
XmlDocument 対象のドキュメントの編集を有効にします。It enables editing of this document. このクラスは IXPathNavigable を実装しているため、後で XSLT 変換が必要になるドキュメントの編集が可能です。It implements IXPathNavigable, allowing document-editing scenarios where XSLT transformations are subsequently required. 詳細については、「XslTransform への XmlDocument の入力」を参照してください。For more information, see XmlDocument Input to XslTransform.
XmlDataDocument これは XmlDocument の派生クラスです。It is derived from the XmlDocument. このクラスは、DataSet を使用してリレーショナル環境と XML 環境との橋渡しをし、DataSet で指定された対応付けに従って XML ドキュメント内の構造化データのストレージを最適化します。It bridges the relational and XML worlds by using a DataSet to optimize storage of structured data within the XML document according to specified mappings on the DataSet. このクラスは IXPathNavigable を実装しているため、データベースから取得したリレーショナル データに対して XSLT 変換を実行できます。It implements IXPathNavigable, allowing scenarios where XSLT transformations can be performed over relational data retrieved from a database. 詳細については、「XML とリレーショナル データおよび ADO.NET との統合」を参照してください。For more information, see XML Integration with Relational Data and ADO.NET.
XPathDocument このクラスは、XslTransform の処理および XPath クエリ用に最適化されており、パフォーマンスの高い読み取り専用キャッシュを提供します。This class is optimized for XslTransform processing and XPath queries, and it provides a read-only high performance cache. このクラスは IXPathNavigable を実装しており、XSLT 変換に使用するストアとして適しています。It implements IXPathNavigable and is the preferred store to use for XSLT transformations.
XPathNodeIterator XPath ノード セット内を移動できるようにします。It provides navigation over XPath node sets. XPathNavigator のすべての XPath 選択メソッドは XPathNodeIterator を返します。All XPath selection methods on the XPathNavigator return an XPathNodeIterator. 同じストアに対して、選択されているノード セットを表す複数の XPathNodeIterator オブジェクトを作成できます。Multiple XPathNodeIterator objects can be created over the same store, each representing a selected set of nodes.

MSXML XSLT 拡張機能MSXML XSLT Extensions

msxsl:script クラスがサポートしている Microsoft XML コア サービス (MSXML) XSLT 拡張機能は、msxsl:node-set 関数と XslTransform 関数のみです。The msxsl:script and msxsl:node-set functions are the only Microsoft XML Core Services (MSXML) XSLT extensions supported by the XslTransform class.

Example

XSL スタイル シートを読み込み、mydata.xml というファイルを XPathDocument に読み込み、myStyleSheet.xsl という架空のファイルに格納されているデータの変換を実行し、書式設定された出力をコンソールに送信するコード サンプルを次に示します。The following code example loads an XSLT style sheet, reads a file called mydata.xml into an XPathDocument, and performs a transformation on the data on a fictitious file called myStyleSheet.xsl, sending the formatted output to the console.

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);
    }
}

関連項目See also