Transform メソッドには、IXPathNavigable インターフェイスを実装するオブジェクト、ソース ドキュメントを読み取る XmlReader オブジェクト、文字列 URI という 3 種類のソース ドキュメントを入力できます。
![]() |
---|
XslCompiledTransform クラスは既定で空白を維持します。このことは、W3C XSLT 1.0 勧告 (セクション 3.4、http://www.w3.org/TR/xslt.html#strip) のセクション 3.4 に準拠しています。 |
IXPathNavigable インターフェイス
IXPathNavigable インターフェイスは、XmlNode および XPathDocument クラスに実装されています。 これらのクラスは XML データのメモリ内のキャッシュを表します。
XmlNode クラスは W3C ドキュメント オブジェクト モデル (DOM) を基礎とし、編集機能も含んでいます。
XPathDocument クラスは、XPath データ モデルに基づいた読み取り専用のデータ ストアです。 XPathDocument は、XSLT 処理に推奨されるクラスです。 これは、XmlNode クラスと比較して、より高速なパフォーマンスを提供します。
![]() |
---|
変換はドキュメント全体に対して行われます。つまり、ドキュメント ルート ノード以外のノードを指定しても、変換処理では、読み込んだドキュメントのすべてのノードがアクセスされます。ノード フラグメントを変換するには、ノード フラグメントだけを含むオブジェクトを作成し、そのオブジェクトを Transform メソッドに渡します。詳細については、「方法 : ノード フラグメントを変換する」を参照してください。 |
次の例では、XslCompiledTransform.Transform メソッドにより、transform.xsl スタイル シートを使用して books.xml ファイルを books.html ファイルに変換しています。 books.xml ファイルおよび transform.xsl ファイルについては、「方法 : アセンブリを使用して XSLT 変換を実行する」を参照してください。
' 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)
// 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);
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
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)
// 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);
文字列 URI
XSLT の入力としてソース ドキュメントの URI を指定することもできます。 URI の解決には XmlResolver が使用されます。 XmlResolver を Transform メソッドに渡して、使用するリゾルバーを指定することができます。 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.
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")
// 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");
詳細については、「XSLT 処理中の外部リソースの解決」を参照してください。