您的位置:首页 > 移动开发 > Objective-C

XsltArgumentList.AddExtensionObject 方法

2008-07-02 08:37 363 查看
将新对象添至 XsltArgumentList 并将其与命名空间 URI 关联。

命名空间: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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: