XsltArgumentList.AddExtensionObject 方法
2008-07-02 08:37
363 查看
将新对象添至 XsltArgumentList 并将其与命名空间 URI 关联。
命名空间:System.Xml.Xsl
程序集:System.Xml(在 system.xml.dll 中)
语法
Visual Basic(声明)
Visual Basic(用法)
C#
C++
J#
JScript
要与对象关联的命名空间 URI。若要使用默认命名空间,请指定空字符串。
extension
要添至列表的对象。
异常
备注
params 关键字,它允许传递未指定数量的参数,当前不允许此操作。使用以 params 关键字定义的方法的 XSLT 样式表将不会正确工作。有关更多信息,请参见 params(C# 参考)。
给调用者的说明 调用此方法需要 FullTrust。有关更多信息,请参见 代码访问安全性。
示例
在下面的示例中,样式表使用 XSLT 扩展对象来转换书价。
Visual Basic
复制代码
C#
复制代码
C++
复制代码
J#
复制代码
该示例将下列数据文件用作输入。
books.xml
复制代码
prices.xsl
复制代码
命名空间:System.Xml.Xsl
程序集:System.Xml(在 system.xml.dll 中)
语法
Visual Basic(声明)
Public Sub AddExtensionObject ( _ namespaceUri As String, _ extension As Object _ )
Visual Basic(用法)
Dim instance As XsltArgumentList Dim namespaceUri As String Dim extension As Object instance.AddExtensionObject(namespaceUri, extension)
C#
public void AddExtensionObject ( string namespaceUri, Object extension )
C++
public: void AddExtensionObject ( String^ namespaceUri, Object^ extension )
J#
public void AddExtensionObject ( String namespaceUri, Object extension )
JScript
public function AddExtensionObject ( namespaceUri : String, extension : Object )
参数
namespaceUri要与对象关联的命名空间 URI。若要使用默认命名空间,请指定空字符串。
extension
要添至列表的对象。
异常
异常类型 | 条件 |
---|---|
ArgumentException | namespaceUri 是 空引用(在 Visual Basic 中为 Nothing) 或 http://www.w3.org/1999/XSL/Transform namespaceUri 已经具有与其关联的扩展对象。 |
SecurityException | 调用方没有足够的权限调用此方法。 |
备注
params 关键字,它允许传递未指定数量的参数,当前不允许此操作。使用以 params 关键字定义的方法的 XSLT 样式表将不会正确工作。有关更多信息,请参见 params(C# 参考)。
给调用者的说明 调用此方法需要 FullTrust。有关更多信息,请参见 代码访问安全性。
示例
在下面的示例中,样式表使用 XSLT 扩展对象来转换书价。
Visual Basic
复制代码
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
C#
复制代码
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; } } }
C++
复制代码
#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; }
J#
复制代码
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>
相关文章推荐
- 类型安全:方法add(Object)属于原始类型List。应该将对通用类型List<E>的引用参数化
- TStringList中AddObject使用
- Argument list too long的解决方法
- List使用add方法添加数据时的覆盖问题
- List中的set方法和add方法
- 【protobuf进阶】读取proto实体里的extensionObject对象的方法
- Linux下rm命令提示“Argument list too long”无法执行解决方法
- 运维实战案例之“Argument list too long”错误与解决方法
- List的add方法报空指针异常
- list add set remove方法
- List的add方法与addAll方法的区别
- 关于List接口的add()和set()方法
- List集合add方法覆盖原来的内容解决办法
- List.contains(Object object)方法
- List的add方法与addAll方法的区别
- Argument list too long的解决方法
- 关于List的toString方法调用的是否是父类Object的,explise显示是的,但其实不是,是AbstractCollection的,他复写了Object的toString
- 第一次安装android studio时候弹出unable to access android sdk add-on list解决方法
- C#中List<object>.Clear()方法和实例化new List<object>()操作的结果分析
- 安装android studio时候弹出unable to access android sdk add-on list解决方法