XsltArgumentList.AddExtensionObject メソッド
アセンブリ: System.Xml (system.xml.dll 内)

Dim instance As XsltArgumentList Dim namespaceUri As String Dim extension As Object instance.AddExtensionObject(namespaceUri, extension)


渡すことができるパラメータの数に制限のない params キーワードは、現在サポートされていません。この params キーワードを使用して定義されるメソッドを利用する XSLT スタイルシートは正しく動作しません。詳細については、「params (C# リファレンス)」を参照してください。
呼び出し時の注意 FullTrust は、このメソッドを呼び出す必要があります。詳細については、「コード アクセス セキュリティ」を参照してください。
スタイル シートで XSLT 拡張オブジェクトを使用し、書籍の価格を変換する例を次に示します。
Imports System Imports System.IO Imports System.Xml Imports System.Xml.XPath Imports System.Xml.Xsl Public Class Sample Public Shared Sub Main() ' Create the XslCompiledTransform and load the stylesheet. Dim xslt As New XslCompiledTransform() xslt.Load("prices.xsl") ' Load the XML data file. Dim doc As New XPathDocument("books.xml") ' Create an XsltArgumentList. Dim xslArg As New XsltArgumentList() ' Add an object to calculate the new book price. Dim obj As New BookPrice() xslArg.AddExtensionObject("urn:price-conv", obj) ' Transform the file. xslt.Transform("books.xml", xslArg, XmlWriter.Create("output.xml")) End Sub 'Main ' Convert the book price to a new price using the conversion factor. Public Class BookPrice Private newprice As Decimal = 0 Public Function NewPriceFunc(ByVal price As Decimal, ByVal conv As Decimal) As Decimal Dim tmp As Decimal = price * conv newprice = Decimal.Round(tmp, 2) Return newprice End Function 'NewPriceFunc End Class 'BookPrice End Class 'Sample
using System; using System.IO; using System.Xml; using System.Xml.XPath; using System.Xml.Xsl; public class Sample { public static void Main() { // Create the XslCompiledTransform and load the stylesheet. XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load("prices.xsl"); // Load the XML data file. XPathDocument doc = new XPathDocument("books.xml"); // Create an XsltArgumentList. XsltArgumentList xslArg = new XsltArgumentList(); // Add an object to calculate the new book price. BookPrice obj = new BookPrice(); xslArg.AddExtensionObject("urn:price-conv", obj); // Transform the file. xslt.Transform("books.xml", xslArg, XmlWriter.Create("output.xml")); } // Convert the book price to a new price using the conversion factor. public class BookPrice{ private decimal newprice = 0; public decimal NewPriceFunc(decimal price, decimal conv){ decimal tmp = price*conv; newprice = decimal.Round(tmp, 2); return newprice; } } }
#using <System.Xml.dll> using namespace System; using namespace System::IO; using namespace System::Xml; using namespace System::Xml::XPath; using namespace System::Xml::Xsl; // Convert the book price to a new price using the conversion factor. public ref class BookPrice { private: Decimal newprice; public: BookPrice() { newprice = 0; } Decimal NewPriceFunc( Decimal price, Decimal conv ) { Decimal tmp = price * conv; newprice = Decimal::Round( tmp, 2 ); return newprice; } }; public ref class Sample { public: Sample() { // Create the XslCompiledTransform and load the stylesheet. XslCompiledTransform^ xslt = gcnew XslCompiledTransform; xslt->Load( "prices.xsl" ); // Load the XML data file. XPathDocument^ doc = gcnew XPathDocument( "books.xml" ); // Create an XsltArgumentList. XsltArgumentList^ xslArg = gcnew XsltArgumentList; // Add an object to convert the book price. BookPrice^ obj = gcnew BookPrice; xslArg->AddExtensionObject( "urn:price-conv", obj ); // Transform the file. xslt->Transform(doc, xslArg, XmlWriter::Create("output.xml")); } }; int main() { Sample^ test = gcnew Sample; }
import System.*; import System.IO.*; import System.Xml.*; import System.Xml.XPath.*; import System.Xml.Xsl.*; public class Sample { public static void main(String[] args) { Sample test = new Sample(); } //main public Sample() { // Create the XslCompiledTransform and load the stylesheet. XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load("prices.xsl"); // Load the XML data file. XPathDocument doc = new XPathDocument("books.xml"); // Create an XsltArgumentList. XsltArgumentList xslArg = new XsltArgumentList(); // Add an object to convert the book price. BookPrice obj = new BookPrice(); xslArg.AddExtensionObject("urn:price-conv", obj); // Transform the file. xslt.Transform("books.xml", xslArg, XmlWriter.Create("output.xml")); } // Sample // Convert the book price to a new price using the conversion factor. public class BookPrice { private System.Decimal newprice = System.Convert.ToDecimal(0); public System.Decimal NewPriceFunc(System.Decimal price , System.Decimal conv) { System.Decimal tmp = Decimal.Multiply(price, conv); newprice = System.Decimal.Round(tmp, 2); return newprice; } //NewPriceFunc } //BookPrice } //Sample
この例では、次のデータ ファイルを入力として使用しています。
books.xml
<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>
prices.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:myObj="urn:price-conv"> <!--Price conversion factor--> <xsl:param name="conv" select="1.15"/> <xsl:template match="bookstore"> <bookstore> <xsl:for-each select="book"> <book> <xsl:copy-of select="node()"/> <new-price> <xsl:value-of select="myObj:NewPriceFunc(./price, $conv)"/> </new-price> </book> </xsl:for-each> </bookstore> </xsl:template> </xsl:stylesheet>

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からXsltArgumentList.AddExtensionObject メソッドを検索する場合は、下記のリンクをクリックしてください。

- XsltArgumentList.AddExtensionObject メソッドのページへのリンク