XslTransform クラスを使用した XSLT 変換
更新 : November 2007
メモ : |
---|
.NET Framework version 2.0 では、XslTransform クラスが廃止されています。XslCompiledTransform クラスを使用して XSLT (Extensible Stylesheet Language for Transformations) 変換を実行できます。詳細については、「XslCompiledTransform クラスの使用」および「XslTransform クラスからの移行」を参照してください。 |
XSLT の目的は、たとえば、XML を Web サイトで使われる HTML に変換したり、XML ドキュメントをアプリケーションが必要とするフィールドのみが含まれたドキュメントに変換するなど、ソース XML ドキュメントの内容を形式や構造の異なる別のドキュメントに変換することです。この変換処理の仕様は、www.w3.org/TR/xslt にある W3C (World Wide Web Consortium) 勧告『XSLT Version 1.0』で規定されています。.NET Framework では、System.Xml.Xsl 名前空間にある XslTransform クラスが、この仕様の機能を実装する XSLT プロセッサです。W3C 勧告『XSLT Version 1.0』から実装された機能の他に、「XslTransform からの出力」に記載されている機能がいくつかあります。.NET Framework の変換アーキテクチャを次の図に示します。
概要
変換アーキテクチャ
XSLT 勧告では、XPath (XML Path Language) を使って XML ドキュメントの一部を選択します。XPath とは、ドキュメント ツリーのノード間を移動するのに使われるクエリ言語です。図に示すように、XPath の .NET Framework の実装は、XmlDocument、XmlDataDocument、XPathDocument など、複数のクラスに格納されている XML の一部を選択するのに使用されます。XPathDocument は最適化された XSLT データ ストアであり、これを XslTransform と共に使用することで、パフォーマンスの高い XSLT 変換を実行できます。
XslTransform と XPath を使用するときによく使われるクラスと、それぞれの機能を次の表に示します。
クラスまたはインターフェイス |
機能 |
---|---|
ストア内で移動するためのカーソル スタイルのモデルを提供し、XPath クエリをサポートする API です。元になるストアを編集する機能は提供しません。編集には XmlDocument クラスを使用します。 |
|
XPathNavigator に CreateNavigator メソッドを提供するストア用のインターフェイスです。 |
|
対象のドキュメントの編集を有効にします。このクラスは IXPathNavigable を実装しているため、後で XSLT 変換が必要になるドキュメントの編集が可能です。詳細については、「XslTransform への XmlDocument の入力」を参照してください。 |
|
これは XmlDocument の派生クラスです。このクラスは、DataSet を使用してリレーショナル環境と XML 環境との橋渡しをし、DataSet で指定された対応付けに従って XML ドキュメント内の構造化データのストレージを最適化します。このクラスは IXPathNavigable を実装しているため、データベースから取得したリレーショナル データに対して XSLT 変換を実行できます。詳細については、「XML とリレーショナル データおよび ADO.NET との統合」を参照してください。 |
|
このクラスは、XslTransform の処理および XPath クエリ用に最適化されており、パフォーマンスの高い読み取り専用キャッシュを提供します。このクラスは IXPathNavigable を実装しており、XSLT 変換に使用するストアとして適しています。 |
|
XPath ノード セット内を移動できるようにします。XPathNavigator のすべての XPath 選択メソッドは XPathNodeIterator を返します。同じストアに対して、選択されているノード セットを表す複数の XPathNodeIterator オブジェクトを作成できます。 |
MSXML XSLT 拡張機能
XslTransform クラスがサポートしている Microsoft XML コア サービス (MSXML) XSLT 拡張機能は、msxsl:script 関数と msxsl:node-set 関数のみです。
例
XSL スタイル シートを読み込み、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 への XPathDocument の入力
XslTransform への XmlDataDocument の入力
XslTransform への XmlDocument の入力