XslTransform クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
注意事項
This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202
Extensible Stylesheet Language for Transformations (XSLT) スタイル シートを使用して 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
- 属性
注釈
注
XslTransform クラスは、Microsoft .NET Framework バージョン 2.0 では使用されていません。 XslCompiledTransform クラスは新しい XSLT プロセッサです。 詳細については、「 XslCompiledTransform クラスの使用 」および 「XslTransform クラスからの移行」を参照してください。
XslTransform は XSLT 1.0 構文をサポートしています。 XSLT スタイル シートでは、名前空間 http://www.w3.org/1999/XSL/Transformを使用する必要があります。
XsltArgumentList クラスを使用して、スタイル シートに追加の引数を追加することもできます。 このクラスには、スタイル シートから呼び出すことができるスタイル シートおよび拡張オブジェクトの入力パラメーターが含まれています。
XML データを変換するには:
XslTransform オブジェクトを作成します。
変換のスタイル シートを読み込むには、 Load メソッドを使用します。 このメソッドにはいくつかのオーバーロードがあり、ファイルの場所を含む XmlReader、 XPathNavigator、 IXPathNavigable、または URL を使用してスタイル シートを読み込むことができます。
Transform メソッドを使用して XML データを変換します。 このメソッドにはいくつかのオーバーロードがあり、さまざまな種類の入力と出力を処理できます。 変換中に入力として使用する追加の引数を含む XsltArgumentList を指定することもできます。
セキュリティに関する考慮事項
XslTransform クラスを使用するアプリケーションを作成するときは、次の項目とその影響に注意する必要があります。
拡張機能オブジェクトは既定で有効になっています。 拡張オブジェクトを含む XsltArgumentList オブジェクトが Transform メソッドに渡された場合は、そのオブジェクトが使用されます。
XSLT スタイル シートには、他のファイルや埋め込みスクリプト ブロックへの参照を含めることができます。 悪意のあるユーザーは、コンピューターのリソースが不足するまでシステムを処理するデータまたはスタイル シートを提供することで、これを悪用する可能性があります。
混合信頼環境で実行される XSLT アプリケーションでは、スタイル シートのスプーフィングが発生する可能性があります。 たとえば、悪意のあるユーザーは、有害なスタイル シートを持つオブジェクトを読み込み、後で Transform メソッドを呼び出して変換を実行する別のユーザーに渡すことができます。
これらのセキュリティの問題は、信頼されていないソースから XslTransform オブジェクト、XSLT スタイル シート、または XML ソース データを受け入れないようにすることで軽減できます。
スクリプトのサポート
このクラスは、 msxsl:script 要素を使用した埋め込みスクリプトをサポートします。
.NET Framework のバージョン 1.1 では、スタイル シートの証拠によって、埋め込みスクリプトに与えられるアクセス許可が決まります。
スタイル シートが Uniform Resource Identifier (URI) から読み込まれた場合、URI を使用して証拠が作成されます。 この証拠には、URI とそのサイトとゾーンが含まれます。
スタイル シートが別のソースを使用して読み込まれた場合は、 System.Security.Policy.Evidence オブジェクトを Load メソッドに渡すことで証拠を提供できます。 それ以外の場合、スクリプト アセンブリには完全な信頼があります。
半信頼の呼び出し元: 埋め込みスクリプトをコンパイルするには、 UnmanagedCode アクセス許可が必要です。
ControlEvidence
Load メソッドにEvidenceを提供するには、アクセス許可が必要です。 呼び出し元に必要なアクセス許可がない場合は、 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要素内で関数を宣言できます。 次の表は、既定でサポートされている名前空間を示しています。
| サポートされている名前空間 | Description |
|---|---|
System |
システム クラス。 |
System.Collection |
コレクション クラス。 |
System.Text |
テキスト処理クラス。 |
System.Xml |
コア XML クラス。 |
System.Xml.Xsl |
XSLT クラス。 |
System.Xml.XPath |
XML パス言語 (XPath) クラス。 |
スクリプト関数によって定義される引数と戻り値は、以下に示す World Wide Web Consortium (W3C) 型のいずれかである必要があります。 次の表では、W3C 型 (XPath または XSLT) と対応する .NET Framework クラスのマッピングについて詳しく説明します。
| W3C 型 | 同等の.NET クラス |
|---|---|
| String (XPath) | System.String |
| Boolean (XPath) | System.Boolean |
| 数値 (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:script
msxsl:node-listは、XslTransform クラスでサポートされているurn:schemas-microsoft-com:xslt名前空間の唯一の関数です。
XslTransform には、共通言語ランタイム (CLR) コードを拡張メカニズムとして利用する機能があります。 これを行うには、クラスのインスタンスを XslTransform クラスに渡し、XSLT スタイル シート内でそのパブリック メソッドを呼び出します。
params キーワードを使用して定義されたメソッドでは、指定されていない数のパラメーターを渡すことができますが、このシナリオでは正しく機能しません。 詳細については 、params を参照してください。
詳細については、「 XslTransform クラスを使用した XSLT 変換」を参照してください。
コンストラクター
| 名前 | 説明 |
|---|---|
| XslTransform() |
古い.
XslTransform クラスの新しいインスタンスを初期化します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| XmlResolver |
古い.
Transform メソッドが呼び出されたときに外部リソースの解決に使用するXmlResolverを設定します。 |
メソッド
適用対象
スレッド セーフ
XslTransform オブジェクトは、変換操作に対してのみスレッド セーフです。 その他の操作は、スレッド セーフであるとは限りません。 読み込み操作中にオブジェクトに対して他のメソッドが呼び出されないようにする必要があります。