Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

XsltArgumentList.AddExtensionObject(String, Object) Method

Definition

Namespace:
System.Xml.Xsl
Assemblies:
netstandard.dll, System.Xml.ReaderWriter.dll
Assembly:
System.Xml.ReaderWriter.dll
Assembly:
System.Xml.dll
Assembly:
netstandard.dll
Source:
XsltArgumentList.cs
Source:
XsltArgumentList.cs
Source:
XsltArgumentList.cs
Source:
XsltArgumentList.cs
Source:
XsltArgumentList.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Adds a new object to the XsltArgumentList and associates it with the namespace URI.

public:
 void AddExtensionObject(System::String ^ namespaceUri, System::Object ^ extension);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The stylesheet may have calls to methods of the extension object passed in which cannot be statically analyzed by the trimmer. Ensure all methods that may be called are preserved.")]
public void AddExtensionObject(string namespaceUri, object extension);
public void AddExtensionObject(string namespaceUri, object extension);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The stylesheet may have calls to methods of the extension object passed in which cannot be statically analyzed by the trimmer. Ensure all methods that may be called are preserved.")>]
member this.AddExtensionObject : string * obj -> unit
member this.AddExtensionObject : string * obj -> unit
Public Sub AddExtensionObject (namespaceUri As String, extension As Object)

Parameters

namespaceUri
String

The namespace URI to associate with the object. To use the default namespace, specify an empty string.

extension
Object

The object to add to the list.

Attributes

Exceptions

The namespaceUri is either null or http://www.w3.org/1999/XSL/Transform

The namespaceUri already has an extension object associated with it.

The caller does not have sufficient permissions to call this method.

Examples

In the following example, the style sheet uses an XSLT extension object to convert the book price.

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");

 // 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);

 using (XmlWriter w = XmlWriter.Create("output.xml"))
 {
 // Transform the file.
 xslt.Transform("books.xml", xslArg, w);
 }
 }

 // 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;
 }
 }
}
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")
 
 ' 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)
 
 
 Using w As XmlWriter = XmlWriter.Create("output.xml")
 ' Transform the file.
 xslt.Transform("books.xml", xslArg, w)
 End Using


 
 End Sub
 
 ' 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

End Class

The example uses the following data files as input.

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>

Remarks

The params keyword, which allows an unspecified number of parameters to be passed, is currently not supported. XSLT style sheets that utilize methods defined with the params keyword does not work correctly. For more information, see params.

Applies to

See also


Feedback

Was this page helpful?