XslCompiledTransform クラス

定義

XSLT スタイル シートを使用して、XML データを変換します。

public ref class XslCompiledTransform sealed
public sealed class XslCompiledTransform
type XslCompiledTransform = class
Public NotInheritable Class XslCompiledTransform
継承
XslCompiledTransform

次の例では、変換を実行し、ファイルに出力します。

// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("output.xsl");

// Execute the transform and output the results to a file.
xslt.Transform("books.xml", "books.html");
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("output.xsl")
        
' Execute the transform and output the results to a file.
xslt.Transform("books.xml", "books.html")

このサンプルでは、次の 2 つの入力ファイルを使用します。

books.xml

<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
  <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

output.xsl

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="bookstore">
  <HTML>
    <BODY>
      <TABLE BORDER="2">
        <TR>
          <TD>ISBN</TD>
          <TD>Title</TD>
          <TD>Price</TD>
        </TR>
        <xsl:apply-templates select="book"/>
      </TABLE>
    </BODY>
  </HTML>
</xsl:template>
<xsl:template match="book">
  <TR>
    <TD><xsl:value-of select="@ISBN"/></TD>
    <TD><xsl:value-of select="title"/></TD>
    <TD><xsl:value-of select="price"/></TD>
  </TR>
</xsl:template>
</xsl:stylesheet>

注釈

この 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 ソース データを受け入れないことによって軽減できます。

コンストラクター

XslCompiledTransform()

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

XslCompiledTransform(Boolean)

XslCompiledTransform クラスの新しいインスタンスを、指定されたデバッグ設定を使用して初期化します。

プロパティ

OutputSettings

スタイル シートの xsl:output 要素から派生した出力情報が格納された XmlWriterSettings オブジェクトを取得します。

TemporaryFiles

TempFileCollection メソッドの呼び出しが正常に完了した後でディスク上に作成される一時ファイルが格納された Load を取得します。

メソッド

CompileToType(XmlReader, XsltSettings, XmlResolver, Boolean, TypeBuilder, String)

XSLT スタイル シートを指定された型にコンパイルします。

Equals(Object)

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

(継承元 Object)
GetHashCode()

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

(継承元 Object)
GetType()

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

(継承元 Object)
Load(IXPathNavigable)

IXPathNavigable オブジェクトに格納されているスタイル シートをコンパイルします。

Load(IXPathNavigable, XsltSettings, XmlResolver)

IXPathNavigable に格納されている XSLT スタイル シートをコンパイルします。 XmlResolver は、XSLT の import 要素または include 要素を解決し、XSLT 設定でスタイル シートに対するアクセス許可を確認します。

Load(MethodInfo, Byte[], Type[])

XSLTC.exe ユーティリティを使用してコンパイルされたスタイル シートからメソッドを読み込みます。

Load(String)

指定された URI にあるスタイル シートの読み込みおよびコンパイルを行います。

Load(String, XsltSettings, XmlResolver)

URI で指定された XSLT スタイル シートの読み込みおよびコンパイルを行います。 XmlResolver は、XSLT の import 要素または include 要素を解決し、XSLT 設定でスタイル シートに対するアクセス許可を確認します。

Load(Type)

XSLT コンパイラ (xsltc.exe) を使用して作成されたコンパイル済みスタイル シートを読み込みます。

Load(XmlReader)

XmlReader に格納されているスタイル シートをコンパイルします。

Load(XmlReader, XsltSettings, XmlResolver)

XmlReader に格納されている XSLT スタイル シートをコンパイルします。 XmlResolver は、XSLT の import 要素または include 要素を解決し、XSLT 設定でスタイル シートに対するアクセス許可を確認します。

MemberwiseClone()

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

(継承元 Object)
ToString()

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

(継承元 Object)
Transform(IXPathNavigable, XmlWriter)

IXPathNavigable オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果を XmlWriter に出力します。

Transform(IXPathNavigable, XsltArgumentList, Stream)

IXPathNavigable オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果をストリームに出力します。 XsltArgumentList には、追加の実行時引数を指定します。

Transform(IXPathNavigable, XsltArgumentList, TextWriter)

IXPathNavigable オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果を TextWriter に出力します。 XsltArgumentList には、追加の実行時引数を指定します。

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)

IXPathNavigable オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果を XmlWriter に出力します。 XsltArgumentList には、追加の実行時引数を指定します。

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

IXPathNavigable オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果を XmlWriter に出力します。 XsltArgumentList には追加の実行時引数を指定し、XmlResolver で XSLT の document() 関数を解決します。

Transform(String, String)

URI で指定された入力ドキュメントを使用して変換を実行し、結果をファイルに出力します。

Transform(String, XmlWriter)

URI で指定された入力ドキュメントを使用して変換を実行し、結果を XmlWriter に出力します。

Transform(String, XsltArgumentList, Stream)

URI で指定された入力ドキュメントを使用して変換を実行し、結果をストリームに出力します。 XsltArgumentList には、追加の実行時引数を指定します。

Transform(String, XsltArgumentList, TextWriter)

URI で指定された入力ドキュメントを使用して変換を実行し、結果を TextWriter に出力します。

Transform(String, XsltArgumentList, XmlWriter)

URI で指定された入力ドキュメントを使用して変換を実行し、結果を XmlWriter に出力します。 XsltArgumentList には、追加の実行時引数を指定します。

Transform(XmlReader, XmlWriter)

XmlReader オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果を XmlWriter に出力します。

Transform(XmlReader, XsltArgumentList, Stream)

XmlReader オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果をストリームに出力します。 XsltArgumentList には、追加の実行時引数を指定します。

Transform(XmlReader, XsltArgumentList, TextWriter)

XmlReader オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果を TextWriter に出力します。 XsltArgumentList には、追加の実行時引数を指定します。

Transform(XmlReader, XsltArgumentList, XmlWriter)

XmlReader オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果を XmlWriter に出力します。 XsltArgumentList には、追加の実行時引数を指定します。

Transform(XmlReader, XsltArgumentList, XmlWriter, XmlResolver)

XmlReader オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果を XmlWriter に出力します。 XsltArgumentList には追加の実行時引数を指定し、XmlResolver で XSLT の document() 関数を解決します。

適用対象

スレッド セーフ

読み込まれたオブジェクトは XslCompiledTransform スレッド セーフです。 つまり、メソッドが Load 正常に完了した後、メソッドは複数の Transform スレッドから同時に呼び出すことができます。

メソッドが別の Load スレッドで呼び出されている間 Transform にメソッドが 1 つのスレッドで再度呼び出された場合、 XslCompiledTransform オブジェクトは古い状態を Transform 引き続き使用して呼び出しの実行を終了します。 新しい状態は、メソッドが Load 正常に完了したときに使用されます。

メソッドは Load 、複数のスレッドから同時に呼び出されるとスレッド セーフではありません。

こちらもご覧ください