XslCompiledTransform クラス

定義

XSLT スタイル シートを使用して、XML データを変換します。Transforms XML data using an XSLT style sheet.

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

次の例では、変換を実行し、ファイルに出力します。The following example executes a transform and outputs to a file.

// 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つの入力ファイルを使用します。The sample uses the following two input files:

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 プロセッサです。The XslCompiledTransform class is an XSLT processor that supports the XSLT 1.0 syntax. これは新しい実装であり、廃止された XslTransform クラスと比較すると、パフォーマンスが向上します。It is a new implementation and includes performance gains when compared to the obsolete XslTransform class. XslCompiledTransform クラスの構造は、XslTransform クラスと非常によく似ています。The structure of the XslCompiledTransform class is very similar to the XslTransform class. Load メソッドはスタイルシートを読み込み、コンパイルしますが、Transform メソッドは XSLT 変換を実行します。The Load method loads and compiles the style sheet, while the Transform method executes the XSLT transform.

XSLT document() 関数と埋め込みスクリプトブロックのサポートは、既定では無効になっています。Support for the XSLT document() function and embedded script blocks are disabled by default. これらの機能を有効にするには、XsltSettings オブジェクトを作成し、Load メソッドに渡します。These features can be enabled by creating an XsltSettings object and passing it to the Load method.

詳細については、「 XslCompiledTransform クラスの使用」および「 XslTransform クラスからの移行」を参照してください。For more information, see Using the XslCompiledTransform Class and Migrating From the XslTransform Class.

セキュリティの考慮事項Security Considerations

XslCompiledTransform クラスを使用するアプリケーションを作成するときには、次の項目とその関連事項に注意する必要があります。When creating an application that uses the XslCompiledTransform class, you should be aware of the following items and their implications:

  • XSLT スクリプトは既定で無効になっています。XSLT scripting is disabled by default. XSLT スクリプトは、スクリプトのサポートが必要であり、完全に信頼された環境で作業している場合のみ有効にします。XSLT scripting should be enabled only if you require script support and you are working in a fully trusted environment.

  • XSLT document() 関数は既定で無効になっています。The XSLT document() function is disabled by default. document() 関数を有効にした場合は、XmlSecureResolver オブジェクトを Transform メソッドに渡すことによって、アクセス可能なリソースを制限してください。If you enable the document() function, restrict the resources that can be accessed by passing an XmlSecureResolver object to the Transform method.

  • 拡張オブジェクトは既定で有効になっています。Extension objects are enabled by default. 拡張オブジェクトを含む XsltArgumentList オブジェクトが Transform メソッドに渡されると、拡張オブジェクトは使用されます。If an XsltArgumentList object containing extension objects is passed to the Transform method, they are utilized.

  • XSLT スタイル シートには、他のファイルへの参照や埋め込みのスクリプト ブロックを含めることができます。XSLT style sheets can include references to other files and embedded script blocks. 悪意のあるユーザーがこれを悪用して、コンピューターがリソース不足に陥るまでシステムに処理を行わせようとするデータやスタイル シートを提供する可能性があります。A malicious user can exploit this by supplying you with data or style sheets that when executed can cause your system to process until the computer runs low on resources.

  • 混在信頼環境で動作する XSLT アプリケーションは、スタイル シートのなりすましを引き起こす可能性があります。XSLT applications that run in a mixed trust environment can result in style sheet spoofing. たとえば、悪意のあるユーザーは、有害なスタイル シートを含むオブジェクトを読み込み、それを Transform メソッドを呼び出して変換を実行する別のユーザーに渡す可能性があります。For example, a malicious user can load an object with a harmful style sheet and hand it off to another user who subsequently calls the Transform method and executes the transformation.

これらのセキュリティ上の問題は、スタイル シートが信頼されたソースからのものでない限り、スクリプトや document() 関数を有効にしないこと、および信頼されていないソースからの XslCompiledTransform オブジェクト、XSLT スタイル シート、または XML ソース データを受け入れないことによって軽減できます。These security issues can be mitigated by not enabling scripting or the document() function unless the style sheet comes from a trusted source, and by not accepting XslCompiledTransform objects, XSLT style sheets, or XML source data from an untrusted source.

コンストラクター

XslCompiledTransform()

XslCompiledTransform クラスの新しいインスタンスを初期化します。Initializes a new instance of the XslCompiledTransform class.

XslCompiledTransform(Boolean)

XslCompiledTransform クラスの新しいインスタンスを、指定されたデバッグ設定を使用して初期化します。Initializes a new instance of the XslCompiledTransform class with the specified debug setting.

プロパティ

OutputSettings

スタイル シートの XmlWriterSettingsxsl:output要素から派生した出力情報が格納された オブジェクトを取得します。Gets an XmlWriterSettings object that contains the output information derived from the xsl:output element of the style sheet.

TemporaryFiles

TempFileCollection メソッドの呼び出しが正常に完了した後でディスク上に作成される一時ファイルが格納された Load を取得します。Gets the TempFileCollection that contains the temporary files generated on disk after a successful call to the Load method.

メソッド

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

XSLT スタイル シートを指定された型にコンパイルします。Compiles an XSLT style sheet to a specified type.

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判定します。Determines whether the specified object is equal to the current object.

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
Load(IXPathNavigable)

IXPathNavigable オブジェクトに格納されているスタイル シートをコンパイルします。Compiles the style sheet contained in the IXPathNavigable object.

Load(IXPathNavigable, XsltSettings, XmlResolver)

IXPathNavigable に格納されている XSLT スタイル シートをコンパイルします。Compiles the XSLT style sheet contained in the IXPathNavigable. XmlResolver は、XSLT の import 要素または include 要素を解決し、XSLT 設定でスタイル シートに対するアクセス許可を確認します。The XmlResolver resolves any XSLT import or include elements and the XSLT settings determine the permissions for the style sheet.

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

XSLTC.exe ユーティリティを使用してコンパイルされたスタイル シートからメソッドを読み込みます。Loads a method from a style sheet compiled using the XSLTC.exe utility.

Load(String)

指定された URI にあるスタイル シートの読み込みおよびコンパイルを行います。Loads and compiles the style sheet located at the specified URI.

Load(String, XsltSettings, XmlResolver)

URI で指定された XSLT スタイル シートの読み込みおよびコンパイルを行います。Loads and compiles the XSLT style sheet specified by the URI. XmlResolver は、XSLT の import 要素または include 要素を解決し、XSLT 設定でスタイル シートに対するアクセス許可を確認します。The XmlResolver resolves any XSLT import or include elements and the XSLT settings determine the permissions for the style sheet.

Load(Type)

XSLT コンパイラ (xsltc.exe) を使用して作成されたコンパイル済みスタイル シートを読み込みます。Loads the compiled style sheet that was created using the XSLT Compiler (xsltc.exe).

Load(XmlReader)

XmlReader に格納されているスタイル シートをコンパイルします。Compiles the style sheet contained in the XmlReader.

Load(XmlReader, XsltSettings, XmlResolver)

XmlReader に格納されている XSLT スタイル シートをコンパイルします。Compiles the XSLT style sheet contained in the XmlReader. XmlResolver は、XSLT の import 要素または include 要素を解決し、XSLT 設定でスタイル シートに対するアクセス許可を確認します。The XmlResolver resolves any XSLT import or include elements and the XSLT settings determine the permissions for the style sheet.

MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
ToString()

現在のオブジェクトを表す string を返します。Returns a string that represents the current object.

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

IXPathNavigable オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果を XmlWriter に出力します。Executes the transform using the input document specified by the IXPathNavigable object and outputs the results to an XmlWriter.

Transform(IXPathNavigable, XsltArgumentList, Stream)

IXPathNavigable オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果をストリームに出力します。Executes the transform using the input document specified by the IXPathNavigable object and outputs the results to a stream. XsltArgumentList には、追加の実行時引数を指定します。The XsltArgumentList provides additional runtime arguments.

Transform(IXPathNavigable, XsltArgumentList, TextWriter)

IXPathNavigable オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果を TextWriter に出力します。Executes the transform using the input document specified by the IXPathNavigable object and outputs the results to an TextWriter. XsltArgumentList には、追加の実行時引数を指定します。The XsltArgumentList provides additional run-time arguments.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)

IXPathNavigable オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果を XmlWriter に出力します。Executes the transform using the input document specified by the IXPathNavigable object and outputs the results to an XmlWriter. XsltArgumentList には、追加の実行時引数を指定します。The XsltArgumentList provides additional run-time arguments.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

IXPathNavigable オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果を XmlWriter に出力します。Executes the transform by using the input document that is specified by the IXPathNavigable object and outputs the results to an XmlWriter. XsltArgumentList には追加の実行時引数を指定し、XmlResolver で XSLT の document() 関数を解決します。The XsltArgumentList provides additional run-time arguments and the XmlResolver resolves the XSLT document() function.

Transform(String, String)

URI で指定された入力ドキュメントを使用して変換を実行し、結果をファイルに出力します。Executes the transform using the input document specified by the URI and outputs the results to a file.

Transform(String, XmlWriter)

URI で指定された入力ドキュメントを使用して変換を実行し、結果を XmlWriter に出力します。Executes the transform using the input document specified by the URI and outputs the results to an XmlWriter.

Transform(String, XsltArgumentList, Stream)

URI で指定された入力ドキュメントを使用して変換を実行し、結果をストリームに出力します。Executes the transform using the input document specified by the URI and outputs the results to stream. XsltArgumentList には、追加の実行時引数を指定します。The XsltArgumentList provides additional run-time arguments.

Transform(String, XsltArgumentList, TextWriter)

URI で指定された入力ドキュメントを使用して変換を実行し、結果を TextWriter に出力します。Executes the transform using the input document specified by the URI and outputs the results to a TextWriter.

Transform(String, XsltArgumentList, XmlWriter)

URI で指定された入力ドキュメントを使用して変換を実行し、結果を XmlWriter に出力します。Executes the transform using the input document specified by the URI and outputs the results to an XmlWriter. XsltArgumentList には、追加の実行時引数を指定します。The XsltArgumentList provides additional run-time arguments.

Transform(XmlReader, XmlWriter)

XmlReader オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果を XmlWriter に出力します。Executes the transform using the input document specified by the XmlReader object and outputs the results to an XmlWriter.

Transform(XmlReader, XsltArgumentList, Stream)

XmlReader オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果をストリームに出力します。Executes the transform using the input document specified by the XmlReader object and outputs the results to a stream. XsltArgumentList には、追加の実行時引数を指定します。The XsltArgumentList provides additional run-time arguments.

Transform(XmlReader, XsltArgumentList, TextWriter)

XmlReader オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果を TextWriter に出力します。Executes the transform using the input document specified by the XmlReader object and outputs the results to a TextWriter. XsltArgumentList には、追加の実行時引数を指定します。The XsltArgumentList provides additional run-time arguments.

Transform(XmlReader, XsltArgumentList, XmlWriter)

XmlReader オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果を XmlWriter に出力します。Executes the transform using the input document specified by the XmlReader object and outputs the results to an XmlWriter. XsltArgumentList には、追加の実行時引数を指定します。The XsltArgumentList provides additional run-time arguments.

Transform(XmlReader, XsltArgumentList, XmlWriter, XmlResolver)

XmlReader オブジェクトで指定された入力ドキュメントを使用して変換を実行し、結果を XmlWriter に出力します。Executes the transform using the input document specified by the XmlReader object and outputs the results to an XmlWriter. XsltArgumentList には追加の実行時引数を指定し、XmlResolver で XSLT の document() 関数を解決します。The XsltArgumentList provides additional run-time arguments and the XmlResolver resolves the XSLT document() function.

適用対象

スレッド セーフ

XslCompiledTransform オブジェクトは、読み込まれるとスレッドセーフです。The XslCompiledTransform object is thread safe once it has been loaded. つまり、Load メソッドが正常に完了した後、Transform メソッドを複数のスレッドから同時に呼び出すことができます。In other words, after the Load method has successfully completed, the Transform method can be called simultaneously from multiple threads.

Transform メソッドが別のスレッドで呼び出されている間に、1つのスレッドで Load メソッドが再度呼び出された場合、XslCompiledTransform オブジェクトは引き続き古い状態を使用して Transform の呼び出しの実行を終了します。If the Load method is called again in one thread while the Transform method is being called in another thread, the XslCompiledTransform object finishes executing the Transform call by continuing to use the old state. 新しい状態は、Load メソッドが正常に完了したときに使用されます。The new state is used when the Load method successfully completes.


Load メソッドは、複数のスレッドから同時に呼び出された場合、スレッドセーフではありません。The Load method is not thread safe when called simultaneously from multiple threads.

こちらもご覧ください