この記事では、この API のリファレンス ドキュメントに補足的な解説を提供します。
XslCompiledTransform クラスは、XSLT 1.0 構文をサポートする XSLT プロセッサです。 これは新しい実装であり、古い XslTransform クラスと比較するとパフォーマンスが向上します。 XslCompiledTransform クラスの構造は、XslTransform クラスによく似ています。 Load メソッドはスタイル シートを読み込んでコンパイルしますが、Transform メソッドは XSLT 変換を実行します。
XSLT document()
関数と埋め込みスクリプト ブロックのサポートは、既定では無効になっています。 これらの機能を有効にするには、 XsltSettings オブジェクトを作成し、 Load メソッドに渡します。
詳細については、「 XslCompiledTransform クラスの使用 」および 「XslTransform クラスからの移行」を参照してください。
セキュリティに関する考慮事項
XslCompiledTransform クラスを使用するアプリケーションを作成するときは、次の項目とその影響に注意する必要があります。
XSLT スクリプトは既定で無効になっています。 XSLT スクリプトは、スクリプトのサポートが必要で、完全に信頼された環境で作業している場合にのみ有効にする必要があります。
XSLT
document()
関数は既定で無効になっています。document()
関数を有効にする場合は、XmlSecureResolver オブジェクトを Transform メソッドに渡すことによってアクセスできるリソースを制限します。拡張機能オブジェクトは既定で有効になっています。 拡張オブジェクトを含む XsltArgumentList オブジェクトが Transform メソッドに渡された場合は、そのオブジェクトが使用されます。
XSLT スタイル シートには、他のファイルや埋め込みスクリプト ブロックへの参照を含めることができます。 悪意のあるユーザーは、データやスタイルシートを提供することでこれを悪用し、それが実行されるとシステムが処理を続け、コンピューターがリソース不足になる可能性があります。
混合信頼環境で実行される XSLT アプリケーションでは、スタイル シートのスプーフィングが発生する可能性があります。 たとえば、悪意のあるユーザーは、有害なスタイル シートを持つオブジェクトを読み込み、後で Transform メソッドを呼び出して変換を実行する別のユーザーに渡すことができます。
これらのセキュリティの問題を軽減するには、スタイル シートが信頼できるソースから取得されていない限り、スクリプトまたは document()
関数を有効にしないことと、信頼されていないソースから XslCompiledTransform オブジェクト、XSLT スタイル シート、または XML ソース データを受け入れないようにします。
.NET