XslTransform クラス

定義

注意事項

This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202

XSLT (Extensible Stylesheet Language Transformations) スタイル シートを使用して XML データを変換します。

public ref class XslTransform sealed
public sealed class XslTransform
[System.Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public sealed class XslTransform
type XslTransform = class
[<System.Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")>]
type XslTransform = class
Public NotInheritable Class XslTransform
継承
XslTransform
属性

次の使用例は、指定した XML ドキュメントを変換し、結果をコンソールに出力します。

//Create a new XslTransform object.
XslTransform xslt = new XslTransform();

//Load the stylesheet.
xslt.Load("http://server/favorite.xsl");

//Create a new XPathDocument and load the XML data to be transformed.
XPathDocument mydata = new XPathDocument("inputdata.xml");

//Create an XmlTextWriter which outputs to the console.
XmlWriter writer = new XmlTextWriter(Console.Out);

//Transform the data and send the output to the console.
xslt.Transform(mydata,null,writer, null);
'Create a new XslTransform object.
Dim xslt As New XslTransform()

'Load the stylesheet.
xslt.Load(CType("http://server/favorite.xsl", String))

'Create a new XPathDocument and load the XML data to be transformed.
Dim mydata As New XPathDocument("inputdata.xml")

'Create an XmlTextWriter which outputs to the console.
Dim writer As New XmlTextWriter(Console.Out)

'Transform the data and send the output to the console.
xslt.Transform(mydata, Nothing, writer, Nothing)

注釈

注意

このXslTransformクラスは、Microsoft .NET Framework バージョン 2.0 では廃止されています。 この XslCompiledTransform クラスは新しい XSLT プロセッサです。 詳細については、「 XslCompiledTransform クラスの使用 」および 「XslTransform クラスからの移行」を参照してください。

XslTransform は XSLT 1.0 構文をサポートしています。 XSLT スタイル シートでは、名前空間 http://www.w3.org/1999/XSL/Transformを使用する必要があります。

クラスを使用して、スタイル シートに追加の引数を XsltArgumentList 追加することもできます。 このクラスには、スタイル シートから呼び出すことができるスタイル シートと拡張オブジェクトの入力パラメーターが含まれています。

XML データを変換するには:

  1. XslTransform オブジェクトを作成します。

  2. このメソッドを Load 使用して、変換のスタイル シートを読み込みます。 このメソッドにはいくつかのオーバーロードがあり、ファイルの場所を含む 、XPathNavigatorまたは IXPathNavigableURL を使用してXmlReaderスタイル シートを読み込むことができます。

  3. このメソッドを Transform 使用して XML データを変換します。 このメソッドにはいくつかのオーバーロードがあり、さまざまな種類の入力と出力を処理できます。 また、変換中に XsltArgumentList 入力として使用する追加の引数を指定することもできます。

セキュリティに関する考慮事項

XslTransform クラスを使用するアプリケーションを作成するときには、次の項目とその関連事項に注意する必要があります。

  • 拡張オブジェクトは既定で有効になっています。 拡張オブジェクトを含む XsltArgumentList オブジェクトが Transform メソッドに渡されると、拡張オブジェクトは使用されます。

  • XSLT スタイル シートには、他のファイルへの参照や埋め込みのスクリプト ブロックを含めることができます。 悪意のあるユーザーは、実行されると、コンピューターがリソース不足になるまでシステムを処理するデータまたはスタイル シートを提供することで、これを悪用する可能性があります。

  • 混在信頼環境で動作する XSLT アプリケーションは、スタイル シートのなりすましを引き起こす可能性があります。 たとえば、悪意のあるユーザーは、有害なスタイル シートを含むオブジェクトを読み込み、それを Transform メソッドを呼び出して変換を実行する別のユーザーに渡す可能性があります。

これらのセキュリティの問題は、信頼されていないソースからオブジェクト、XSLT スタイル シート、または XML ソース データを XslTransform 受け入れないようにすることで軽減できます。

スクリプトのサポート

このクラスは、要素を使用した埋め込みスクリプトを msxsl:script サポートします。

.NET Frameworkのバージョン 1.1 では、スタイル シートの証拠によって、埋め込みスクリプトに与えられるアクセス許可が決まります。

  • スタイル シートが Uniform Resource Identifier (URI) から読み込まれた場合、URI を使用して証拠が作成されます。 この証拠には、URI とそのサイトとゾーンが含まれます。

  • スタイル シートが別のソースを使用して読み込まれた場合は、メソッドにオブジェクトを System.Security.Policy.Evidence 渡すことによって証拠を Load 提供できます。 それ以外の場合、スクリプト アセンブリは完全な信頼を持っています。

半信頼の呼び出し元: UnmanagedCode 埋め込みスクリプトをコンパイルするには、アクセス許可が必要です。 ControlEvidence アクセス許可は、メソッドに提供 Evidence するために Load 必要です。 呼び出し元に必要なアクセス許可がない場合、A SecurityException がスローされます。 詳細については、「System.Security.Permissions.SecurityPermission」および「System.Security.Permissions.SecurityPermissionFlag」を参照してください。

要素には msxsl:script 次の要件があります。

  • 要素は msxsl:script 名前空間に urn:schemas-microsoft-com:xslt 属しています。 スタイル シートには、名前空間宣言 xmlns:msxsl=urn:schemas-microsoft-com:xsltを含める必要があります。

  • 要素には msxsl:script 、使用する language スクリプト言語を指定する属性を含めることができます。 属性のlanguage値は、C#、CSharp、VB、VisualBasic、JScript、または JavaScript のいずれかである必要があります。 言語名では大文字と小文字が区別されないため、JavaScript と javascript の両方が有効です。 属性がlanguage指定されていない場合は、既定でJScriptされます。

  • 要素には msxsl:script 、スクリプト ブロックに implements-prefix 関連付けられている名前空間を表すプレフィックスを含む属性を含める必要があります。 この名前空間は、スタイル シート内で定義する必要があります。 スタイル シートには、名前空間別にグループ化された複数のスクリプト ブロックを含めることができます。 同じ名前空間内に複数の言語を持つスクリプト ブロックを含めることはできません。 スクリプト ブロックが同じ名前空間内に存在する場合、スクリプト ブロックは別のスクリプト ブロックで定義されている関数を呼び出すことができます。 スクリプト ブロックの内容は、(属性によって language 提供される) スクリプト言語の規則と構文に従って解析されます。 たとえば、C# スクリプト ブロックがある場合、コメントの先頭に文字が // 付きます。 コメントは有効な XML コンテンツである必要があります。

注意

CDATA セクションでスクリプト ブロックをラップすることをお勧めします。

<msxsl:script implements-prefix='xy' language='C#'>  
 <![CDATA[  
 // Add code here.  
 ]]>
</msxsl:script>  

関数は、msxsl:script 要素内で宣言できます。 既定でサポートされる名前空間を次の表に示します。

サポートされている名前空間 [説明]
System システム クラス。
System.Collection コレクション クラス
System.Text テキスト処理クラス。
System.Xml コア XML クラス
System.Xml.Xsl XSLT クラス
System.Xml.XPath XPath (XML Path Language) クラス

スクリプト関数によって定義される引数と戻り値は、以下に示す World Wide Web Consortium (W3C) 型のいずれかである必要があります。 次の表では、W3C 型 (XPath または XSLT) と対応する .NET Framework クラスのマッピングについて詳しく説明します。

W3C 型 同等の .NET クラス
String (XPath) System.String
ブール値 (XPath) System.Boolean
Number (XPath) System.Double
結果ツリー フラグメント (XSLT) System.Xml.XPath.XPathNavigator
ノード セット (XPath) System.Xml.XPath.XPathNodeIterator

スクリプト関数で Int16、UInt16、Int32、UInt32、Int64、UInt64、Single、Decimal のいずれかの数値型を使用する場合、これらの型は Double に強制され、W3C XPath 型番号にマップされます。

引数の結果を必要な型のいずれかに変換できない関数が呼び出されると、例外がスローされます。

注意

msxsl:scriptmsxsl:node-list 、クラスでサポートされている名前空間の urn:schemas-microsoft-com:xslt 唯一の XslTransform 関数です。

XslTransform には、共通言語ランタイム (CLR) コードを拡張メカニズムとして利用する機能があります。 これは、クラスのインスタンスをクラスに XslTransform 渡し、XSLT スタイル シート内でそのパブリック メソッドを呼び出すことによって実現されます。 指定されていない数のパラメーターを params 渡すことが可能なキーワードで定義されているメソッドは、このシナリオでは正しく機能しません。 詳細については 、パラメーター を参照してください。

詳細については、「 XslTransform クラスを使用した XSLT 変換」を参照してください。

コンストラクター

XslTransform()

XslTransform クラスの新しいインスタンスを初期化します。

プロパティ

XmlResolver
互換性のために残されています。

XmlResolver メソッドの呼び出し時に外部リソースの解決に使用する Transform を設定します。

メソッド

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
Load(IXPathNavigable)
互換性のために残されています。

IXPathNavigable に格納されている XSLT スタイル シートを読み込みます。

Load(IXPathNavigable, XmlResolver)
互換性のために残されています。

IXPathNavigable に格納されている XSLT スタイル シートを読み込みます。

Load(IXPathNavigable, XmlResolver, Evidence)

IXPathNavigable に格納されている XSLT スタイル シートを読み込みます。 このメソッドを使用すると、証拠を指定することによって、スタイル シートのアクセス許可を制限できます。

Load(String)

URL で指定された XSLT スタイル シートを読み込みます。

Load(String, XmlResolver)

URL で指定された XSLT スタイル シートを読み込みます。

Load(XmlReader)
互換性のために残されています。

XmlReader に格納されている XSLT スタイル シートを読み込みます。

Load(XmlReader, XmlResolver)
互換性のために残されています。

XmlReader に格納されている XSLT スタイル シートを読み込みます。

Load(XmlReader, XmlResolver, Evidence)

XmlReader に格納されている XSLT スタイル シートを読み込みます。 このメソッドを使用すると、証拠を指定することによって、スタイル シートのアクセス許可を制限できます。

Load(XPathNavigator)
互換性のために残されています。

XPathNavigator に格納されている XSLT スタイル シートを読み込みます。

Load(XPathNavigator, XmlResolver)
互換性のために残されています。

XPathNavigator に格納されている XSLT スタイル シートを読み込みます。

Load(XPathNavigator, XmlResolver, Evidence)

XPathNavigator に格納されている XSLT スタイル シートを読み込みます。 このメソッドを使用すると、証拠を指定することによって、スタイル シートのアクセス許可を制限できます。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)
Transform(IXPathNavigable, XsltArgumentList)
互換性のために残されています。

指定した args を使用して IXPathNavigable の XML データを変換し、その結果を XmlReader に出力します。

Transform(IXPathNavigable, XsltArgumentList, Stream)
互換性のために残されています。

指定した args を使用して IXPathNavigable の XML データを変換し、その結果を Stream に出力します。

Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver)

指定した args を使用して IXPathNavigable の XML データを変換し、その結果を Stream に出力します。

Transform(IXPathNavigable, XsltArgumentList, TextWriter)
互換性のために残されています。

指定した args を使用して IXPathNavigable の XML データを変換し、その結果を TextWriter に出力します。

Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)

指定した args を使用して IXPathNavigable の XML データを変換し、その結果を TextWriter に出力します。

Transform(IXPathNavigable, XsltArgumentList, XmlResolver)

指定した args を使用して IXPathNavigable の XML データを変換し、その結果を XmlReader に出力します。

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)
互換性のために残されています。

指定した args を使用して IXPathNavigable の XML データを変換し、その結果を XmlWriter に出力します。

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

指定した args を使用して IXPathNavigable の XML データを変換し、その結果を XmlWriter に出力します。

Transform(String, String)
互換性のために残されています。

XML データを入力ファイルに変換し、その結果を出力ファイルに出力します。

Transform(String, String, XmlResolver)

XML データを入力ファイルに変換し、その結果を出力ファイルに出力します。

Transform(XPathNavigator, XsltArgumentList)
互換性のために残されています。

指定した args を使用して XPathNavigator の XML データを変換し、その結果を XmlReader に出力します。

Transform(XPathNavigator, XsltArgumentList, Stream)
互換性のために残されています。

指定した args を使用して XPathNavigator の XML データを変換し、その結果を Stream に出力します。

Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver)

指定した args を使用して XPathNavigator の XML データを変換し、その結果を Stream に出力します。

Transform(XPathNavigator, XsltArgumentList, TextWriter)
互換性のために残されています。

指定した args を使用して XPathNavigator の XML データを変換し、その結果を TextWriter に出力します。

Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver)

指定した args を使用して XPathNavigator の XML データを変換し、その結果を TextWriter に出力します。

Transform(XPathNavigator, XsltArgumentList, XmlResolver)

指定した args を使用して XPathNavigator の XML データを変換し、その結果を XmlReader に出力します。

Transform(XPathNavigator, XsltArgumentList, XmlWriter)
互換性のために残されています。

指定した args を使用して XPathNavigator の XML データを変換し、その結果を XmlWriter に出力します。

Transform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver)

指定した args を使用して XPathNavigator の XML データを変換し、その結果を XmlWriter に出力します。

適用対象

スレッド セーフ

XslTransform オブジェクトは、変換操作に対してのみスレッド セーフです。 その他の操作は、スレッド セーフであるとは限りません。 読み込み操作中にオブジェクトに対して他のメソッドが呼び出されないようにする必要があります。