XslTransform クラス
XSLT スタイル シートを使用して、XML データを変換します。
この型のすべてのメンバの一覧については、XslTransform メンバ を参照してください。
System.Object
System.Xml.Xsl.XslTransform
NotInheritable Public Class XslTransform
[C#]
public sealed class XslTransform
[C++]
public __gc __sealed class XslTransform
[JScript]
public class XslTransform
スレッドセーフ
XslTransform オブジェクトは、変換操作に対してだけスレッド セーフです。他の操作がスレッド セーフかどうかは保証されていません。読み込み操作中に、オブジェクトで他のメソッドが呼び出されないようにする必要があります。
解説
XslTransform は、XSLT 1.0 構文をサポートしています。XSLT スタイル シートでは、名前空間 http://www.w3.org/1999/XSL/Transform を使用する必要があります。
メモ .NET Framework Version 1.0 からアップグレードする場合、移行情報の詳細については、「 XslTransform クラスによる XSLT プロセッサの実装 」を参照してください。
XsltArgumentList クラスを使用して、引数をスタイル シートに追加することもできます。このクラスには、スタイル シートの入力パラメータと、スタイル シートから呼び出すことができる拡張機能オブジェクトが含まれています。 XML データを変換するには、次を実行します。
- XslTransform オブジェクトを作成します。
- Load メソッドを使用して、変換用のスタイル シートを読み込みます。このメソッドはオーバーロードを持ち、 XmlReader 、 XPathNavigator 、 IXPathNavigable またはファイル位置を含む URL を使用して、スタイル シートを読み込むことができます。
- Transform メソッドを使用して、XML データを変換します。このメソッドはオーバーロードを持ち、異なる型の入出力を処理できます。追加の引数を含む XsltArgumentList を指定して、変換中に入力として使用することもできます。
スクリプトのサポート
このクラスは、 msxsl:script 要素を使用して埋め込まれたスクリプトをサポートします。
.NET Framework Version 1.1 では、スタイルシートの証拠によって、埋め込みスクリプトに与えられるアクセス許可が決まります。
- スタイルシートが URI から読み込まれた場合は、その URI を使用して証拠を作成します。この証拠には、URI とそのサイトおよびゾーンが格納されています。
- スタイル シートが他のソースから読み込まれた場合は、 Load メソッドに System.Security.Policy.Evidence オブジェクトを渡すことにより証拠が示されます。それ以外の場合は、スクリプト アセンブリは完全に信頼されています。
信頼度の低い呼び出し元: 埋め込みスクリプトをコンパイルするには UnmanagedCode アクセス許可が必要です。 Load メソッドで Evidence を指定するには ControlEvidence アクセス許可が必要です。必要なアクセス許可が呼び出し元にない場合は 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 の内容である必要があります。
Note スクリプト ブロックを 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 クラス。 |
スクリプト関数で定義された、提供される引数と戻り値は、次の W3C 仕様の型のリストに記載されている必要があります。W3C 仕様の型 (XPath または XSLT のいずれか) と、対応する .NET クラス間のマップの詳細を次の表に示します。
W3C 仕様の型 | 等価な .NET クラス |
---|---|
文字列 (XPath) | System.String |
ブール値 (XPath) | System.Boolean |
数値 (XPath) | System.Double |
結果木素片 (XSLT) | System.Xml.XPath.XPathNavigator |
ノード集合 (XPath) | System.Xml.XPath.XPathNodeIterator |
スクリプト関数で、Int16、UInt16、Int32、UInt32、Int64、UInt64、単精度浮動小数点型、または 10 進のいずれかの数値型が使用されている場合、これらの型は強制的に倍精度浮動小数点型に変換され、W3C XPath 型の数値に割り当てられます。
引数の結果を必要な型に変換できない関数が呼び出されると、例外がスローされます。
メモ script と node-list は、 urn:schemas-microsoft-com:xslt 名前空間の唯一の関数で、 XslTransform クラスによってサポートされます。
XslTransform には、拡張機構として共通言語ランタイム (CLR) コードを利用する機能が用意されています。これは、クラスのインスタンスを XslTransform クラスに渡して、そのパブリック メソッドを XSLT スタイルシート内で呼び出すことによって実行されます。 params
キーワードを使用すると、数を指定せずにパラメータを渡すことができますが、このキーワードで定義されるメソッドはこのシナリオでは正しく動作しません。詳細については、 params のトピックを参照してください。
詳細については、「 XslTransform クラスを使用した XSLT 変換 」を参照してください。
使用例
[Visual Basic, C#, C++] 指定した XML ドキュメントを変換し、その結果をコンソールに出力する例を次に示します。
'Create a new XslTransform object.
Dim xslt As New XslTransform()
'Load the stylesheet.
xslt.Load(CType("https://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)
[C#]
//Create a new XslTransform object.
XslTransform xslt = new XslTransform();
//Load the stylesheet.
xslt.Load("https://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);
[C++]
//Create a new XslTransform object.
XslTransform* xslt = new XslTransform();
//Load the stylesheet.
xslt->Load(S"https://server/favorite.xsl");
//Create a new XPathDocument and load the XML data to be transformed.
XPathDocument* mydata = new XPathDocument(S"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,0,writer, 0);
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Xml.Xsl
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: System.Xml (System.Xml.dll 内)
参照
XslTransform メンバ | System.Xml.Xsl 名前空間 | XslTransform クラスの随意動作の実装