XslCompiledTransform クラスへの入力

Transform メソッドには、IXPathNavigable インターフェイスを実装するオブジェクト、ソース ドキュメントを読み取る XmlReader オブジェクト、文字列 URI という 3 種類のソース ドキュメントを入力できます。

Note

XslCompiledTransform クラスは既定で空白を維持します。 このことは、W3C XSLT 1.0 勧告のセクション 3.4 に準拠しています。

IXPathNavigable インターフェイス

IXPathNavigable インターフェイスは、XmlNode および XPathDocument クラスに実装されています。 これらのクラスは XML データのメモリ内のキャッシュを表します。

  • XmlNode クラスは W3C ドキュメント オブジェクト モデル (DOM) を基礎とし、編集機能も含んでいます。

  • XPathDocument クラスは、XPath データ モデルに基づいた読み取り専用のデータ ストアです。 XPathDocument は、XSLT 処理に推奨されるクラスです。 これは、XmlNode クラスと比較して、より高速なパフォーマンスを提供します。

Note

変換はドキュメント全体に対して行われます。 つまり、ドキュメント ルート ノード以外のノードを指定しても、変換処理では、読み込んだドキュメントのすべてのノードがアクセスされます。 ノード フラグメントを変換するには、ノード フラグメントだけを含むオブジェクトを作成し、そのオブジェクトを Transform メソッドに渡します。 詳細については、ノード フラグメントを変換する」を参照してください。

次の例では、XslCompiledTransform.Transform メソッドにより、transform.xsl スタイル シートを使用して books.xml ファイルを books.html ファイルに変換しています。 books.xml ファイルおよび transform.xsl ファイルについては、「方法: アセンブリを使用して XSLT 変換を実行する」のトピックを参照してください。

// Open books.xml as an XPathDocument.
XPathDocument doc = new XPathDocument("books.xml");

// Create a writer for writing the transformed file.
XmlWriter writer = XmlWriter.Create("books.html");

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform(doc, writer);
' Open books.xml as an XPathDocument.
Dim doc As XPathDocument = New XPathDocument("books.xml")

' Create a writer for writing the transformed file.
Dim writer As XmlWriter = XmlWriter.Create("books.html")

' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

'Execute the transformation.
transform.Transform(doc, writer)

XmlReader オブジェクト

Transform メソッドは、XmlReader の現在のノードから、そのすべての子を通して読み込みます。 これにより、ドキュメントの一部をコンテキスト ドキュメントとして使用することができます。 Transform メソッドから帰った後、XmlReader は、コンテキスト ドキュメントの終了後の次のノード上に位置します。 ドキュメントの末尾に到達すると、XmlReader はファイルの末尾 (EOF) に位置します。

次の例では、XslCompiledTransform.Transform メソッドにより、transform.xsl スタイル シートを使用して books.xml ファイルを books.html ファイルに変換しています。 books.xml ファイルおよび transform.xsl ファイルについては、「方法: アセンブリを使用して XSLT 変換を実行する」のトピックを参照してください。

// Create a reader to read books.xml
XmlReader reader = XmlReader.Create("books.xml");

// Create a writer for writing the transformed file.
XmlWriter writer = XmlWriter.Create("books.html");

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform(reader, writer);
'Create a reader to read books.xml
Dim reader As XmlReader = XmlReader.Create("books.xml")

' Create a writer for writing the transformed file.
Dim writer As XmlWriter = XmlWriter.Create("books.html")

' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

' Execute the transformation.
transform.Transform(reader, writer)

文字列 URI

XSLT の入力としてソース ドキュメントの URI を指定することもできます。 URI の解決には XmlResolver が使用されます。 XmlResolverTransform メソッドに渡して、使用するリゾルバーを指定することができます。 XmlResolver が指定されていない場合、Transform メソッドは既定の XmlUrlResolver を資格情報なしで使用します。

次の例では、XslCompiledTransform.Transform メソッドにより、transform.xsl スタイル シートを使用して books.xml ファイルを books.html ファイルに変換しています。 books.xml ファイルおよび transform.xsl ファイルについては、「方法: アセンブリを使用して XSLT 変換を実行する」のトピックを参照してください。

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform("books.xml", "books.html");
' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

' Execute the transformation.
transform.Transform("books.xml", "books.html")

詳細については、「XSLT 処理中の外部リソースの解決」を参照してください。

関連項目