XsltArgumentList.AddExtensionObject 方法

来源:互联网 发布:光速鼠标连点器源码 编辑:程序博客网 时间:2024/06/05 02:57

将新对象添至 XsltArgumentList 并将其与命名空间 URI 关联。

命名空间:System.Xml.Xsl程序集:System.Xml(在 system.xml.dll 中)

C#
public void AddExtensionObject (    string namespaceUri,    Object extension)

 

参数

namespaceUri

要与对象关联的命名空间 URI。若要使用默认命名空间,请指定空字符串。

extension

要添至列表的对象。

异常类型 条件

ArgumentException

namespaceUri 是 空引用(在 Visual Basic 中为 Nothing) 或 http://www.w3.org/1999/XSL/Transform

namespaceUri 已经具有与其关联的扩展对象。

SecurityException

调用方没有足够的权限调用此方法。

params 关键字,它允许传递未指定数量的参数,当前不允许此操作。使用以 params 关键字定义的方法的 XSLT 样式表将不会正确工作。有关更多信息,请参见 params(C# 参考)。

给调用者的说明 调用此方法需要 FullTrust。有关更多信息,请参见 代码访问安全性。

在下面的示例中,样式表使用 XSLT 扩展对象来转换书价。

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;    }  }}

该示例将下列数据文件用作输入。

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>