次の方法で共有


XslCompiledTransform クラスへの入力

Transform メソッドは、ソース ドキュメントの 3 つの入力型 (IXPathNavigable インターフェイスを実装するオブジェクト、ソース ドキュメントを読み取るXmlReader オブジェクト、または文字列 URI) を受け入れます。

XslCompiledTransform クラスでは、既定で空白が保持されます。 これは、 W3C XSLT 1.0 の推奨事項のセクション 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.
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 を指定することもできます。 XmlResolverは、URI を解決するために使用されます。 Transform メソッドに渡すことで、使用するXmlResolverを指定できます。 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 処理中の外部リソースの解決」を参照してください。

こちらも参照ください