XslTransform クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
注意事項
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 データを変換するには:
XslTransform オブジェクトを作成します。
このメソッドを Load 使用して、変換のスタイル シートを読み込みます。 このメソッドにはいくつかのオーバーロードがあり、ファイルの場所を含む 、XPathNavigatorまたは IXPathNavigableURL を使用してXmlReaderスタイル シートを読み込むことができます。
このメソッドを 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:script
は msxsl:node-list
、クラスでサポートされている名前空間の urn:schemas-microsoft-com:xslt
唯一の XslTransform 関数です。
XslTransform には、共通言語ランタイム (CLR) コードを拡張メカニズムとして利用する機能があります。 これは、クラスのインスタンスをクラスに XslTransform 渡し、XSLT スタイル シート内でそのパブリック メソッドを呼び出すことによって実現されます。 指定されていない数のパラメーターを params
渡すことが可能なキーワードで定義されているメソッドは、このシナリオでは正しく機能しません。 詳細については 、パラメーター を参照してください。
詳細については、「 XslTransform クラスを使用した XSLT 変換」を参照してください。
コンストラクター
XslTransform() |
XslTransform クラスの新しいインスタンスを初期化します。 |
プロパティ
XmlResolver |
互換性のために残されています。
XmlResolver メソッドの呼び出し時に外部リソースの解決に使用する Transform を設定します。 |
メソッド
適用対象
スレッド セーフ
XslTransform オブジェクトは、変換操作に対してのみスレッド セーフです。 その他の操作は、スレッド セーフであるとは限りません。 読み込み操作中にオブジェクトに対して他のメソッドが呼び出されないようにする必要があります。