Export (0) Print
Expand All
2 out of 2 rated this helpful - Rate this topic

XslTransform Class

Note: This API is now obsolete.

Transforms XML data using an Extensible Stylesheet Language for Transformations (XSLT) style sheet.

System.Object
  System.Xml.Xsl.XslTransform

Namespace:  System.Xml.Xsl
Assembly:  System.Xml (in System.Xml.dll)
[ObsoleteAttribute("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public sealed class XslTransform

The XslTransform type exposes the following members.

  NameDescription
Public methodXslTransformInitializes a new instance of the XslTransform class.
Top
  NameDescription
Public propertyXmlResolverSets the XmlResolver used to resolve external resources when the Transform method is called.
Top
  NameDescription
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodLoad(IXPathNavigable)Loads the XSLT style sheet contained in the IXPathNavigable.
Public methodLoad(String)Loads the XSLT style sheet specified by a URL.
Public methodLoad(XmlReader)Loads the XSLT style sheet contained in the XmlReader.
Public methodLoad(XPathNavigator)Loads the XSLT style sheet contained in the XPathNavigator.
Public methodLoad(IXPathNavigable, XmlResolver)Loads the XSLT style sheet contained in the IXPathNavigable.
Public methodLoad(String, XmlResolver)Loads the XSLT style sheet specified by a URL.
Public methodLoad(XmlReader, XmlResolver)Loads the XSLT style sheet contained in the XmlReader.
Public methodLoad(XPathNavigator, XmlResolver)Loads the XSLT style sheet contained in the XPathNavigator.
Public methodLoad(IXPathNavigable, XmlResolver, Evidence)Loads the XSLT style sheet contained in the IXPathNavigable. This method allows you to limit the permissions of the style sheet by specifying evidence.
Public methodLoad(XmlReader, XmlResolver, Evidence)Loads the XSLT style sheet contained in the XmlReader. This method allows you to limit the permissions of the style sheet by specifying evidence.
Public methodLoad(XPathNavigator, XmlResolver, Evidence)Loads the XSLT style sheet contained in the XPathNavigator. This method allows you to limit the permissions of the style sheet by specifying evidence.
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Public methodTransform(IXPathNavigable, XsltArgumentList)Transforms the XML data in the IXPathNavigable using the specified args and outputs the result to an XmlReader.
Public methodTransform(String, String)Transforms the XML data in the input file and outputs the result to an output file.
Public methodTransform(XPathNavigator, XsltArgumentList)Transforms the XML data in the XPathNavigator using the specified args and outputs the result to an XmlReader.
Public methodTransform(IXPathNavigable, XsltArgumentList, Stream)Transforms the XML data in the IXPathNavigable using the specified args and outputs the result to a Stream.
Public methodTransform(IXPathNavigable, XsltArgumentList, TextWriter)Transforms the XML data in the IXPathNavigable using the specified args and outputs the result to a TextWriter.
Public methodTransform(IXPathNavigable, XsltArgumentList, XmlResolver)Transforms the XML data in the IXPathNavigable using the specified args and outputs the result to an XmlReader.
Public methodTransform(IXPathNavigable, XsltArgumentList, XmlWriter)Transforms the XML data in the IXPathNavigable using the specified args and outputs the result to an XmlWriter.
Public methodTransform(String, String, XmlResolver)Transforms the XML data in the input file and outputs the result to an output file.
Public methodTransform(XPathNavigator, XsltArgumentList, Stream)Transforms the XML data in the XPathNavigator using the specified args and outputs the result to a Stream.
Public methodTransform(XPathNavigator, XsltArgumentList, TextWriter)Transforms the XML data in the XPathNavigator using the specified args and outputs the result to a TextWriter.
Public methodTransform(XPathNavigator, XsltArgumentList, XmlResolver)Transforms the XML data in the XPathNavigator using the specified args and outputs the result to an XmlReader.
Public methodTransform(XPathNavigator, XsltArgumentList, XmlWriter)Transforms the XML data in the XPathNavigator using the specified args and outputs the result to an XmlWriter.
Public methodTransform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver)Transforms the XML data in the IXPathNavigable using the specified args and outputs the result to a Stream.
Public methodTransform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)Transforms the XML data in the IXPathNavigable using the specified args and outputs the result to a TextWriter.
Public methodTransform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)Transforms the XML data in the IXPathNavigable using the specified args and outputs the result to an XmlWriter.
Public methodTransform(XPathNavigator, XsltArgumentList, Stream, XmlResolver)Transforms the XML data in the XPathNavigator using the specified args and outputs the result to a Stream.
Public methodTransform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver)Transforms the XML data in the XPathNavigator using the specified args and outputs the result to a TextWriter.
Public methodTransform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver)Transforms the XML data in the XPathNavigator using the specified args and outputs the result to an XmlWriter.
Top
NoteNote

The XslTransform class is obsolete in the Microsoft .NET Framework version 2.0. The XslCompiledTransform class is the new XSLT processor. For more information, see Using the XslCompiledTransform Class and Migrating From the XslTransform Class.

XslTransform supports the XSLT 1.0 syntax. The XSLT style sheet must use the namespace http://www.w3.org/1999/XSL/Transform.

Additional arguments can also be added to the style sheet using the XsltArgumentList class. This class contains input parameters for the style sheet and extension objects which can be called from the style sheet.

To transform XML data:

  1. Create an XslTransform object.

  2. Use the Load method to load the style sheet for the transformation. This method has several overloads and can load a style sheet using an XmlReader, XPathNavigator, IXPathNavigable, or a URL with the location of the file.

  3. Use the Transform method to transform the XML data. This method has several overloads and can handle different types of input and output. You can also specify an XsltArgumentList containing additional arguments to use as input during the transformation.

Security Considerations

When creating an application that uses the XslTransform class, you should be aware of the following items and their implications:

  • Extension objects are enabled by default. If an XsltArgumentList object containing extension objects is passed to the Transform method, they are utilized.

  • XSLT style sheets can include references to other files and embedded script blocks. A malicious user can exploit this by supplying you with data or style sheets that when executed will cause your system to process until the computer runs low on resources.

  • XSLT applications that run in a mixed trust environment can result in style sheet spoofing. For example, a malicious user can load an object with a harmful style sheet and hand it off to another user who subsequently calls the Transform method and executes the transformation.

These security issues can be mitigated by not accepting XslTransform objects, XSLT style sheets, or XML source data from untrusted sources.

Scripting Support

This class supports embedded scripting using the msxsl:script element.

In version 1.1 of the .NET Framework, the evidence of the style sheet determines what permissions are given to embedded scripts.

  • If the style sheet was loaded from a Uniform Resource Identifier (URI), the URI is used to create the evidence. This evidence includes the URI along with its site and zone.

  • If the style sheet was loaded using another source, you can provide evidence by passing a System.Security.Policy.Evidence object to the Load method. Otherwise, the script assembly has full trust.

Semi-trusted callers: UnmanagedCode permission is required to compile the embedded script. ControlEvidence permission is required to provide Evidence to the Load method. A SecurityException is thrown if the caller does not have the necessary permissions. See System.Security.Permissions.SecurityPermission and System.Security.Permissions.SecurityPermissionFlag for more information.

The msxsl:script element has the following requirements:

  • The msxsl:script element belongs to the urn:schemas-microsoft-com:xslt namespace. The style sheet must include the namespace declaration xmlns:msxsl=urn:schemas-microsoft-com:xslt.

  • The msxsl:script element can include a language attribute that specifies the scripting language to use. The value of the language attribute must be one of the following: C#, CSharp, VB, VisualBasic, JScript, or JavaScript. Because the language name is not case-sensitive, JavaScript and javascript are both valid. If a language attribute is not specified, it defaults to JScript.

  • The msxsl:script element must include an implements-prefix attribute that contains the prefix representing the namespace associated with the script block. This namespace must be defined within the style sheet. A style sheet can include multiple script blocks which are grouped by namespace. You cannot have script blocks with multiple languages within the same namespace. Script blocks can call a function defined in another script block, provided the script blocks reside within the same namespace. The contents of a script block are parsed according to the rules and syntax of the scripting language (supplied by the language attribute). For example, if you had a C# script block, comments would be prefixed by the // characters. The comments must be valid XML content.

Note It is recommended that you wrap script blocks in a CDATA section.

 <msxsl:script implements-prefix='xy' language='C#'>
   <![CDATA[
   // Add code here.
   ]]>
 </msxsl:script>

Functions can be declared within the msxsl:script element. The following table shows the namespaces that are supported by default.

Supported Namespaces

Description

System

System classes.

System.Collection

Collection classes.

System.Text

Text handling classes.

System.Xml

Core XML classes.

System.Xml.Xsl

XSLT classes.

System.Xml.XPath

XML Path Language (XPath) classes.

The supplied arguments and return values defined by the script functions must be one of the World Wide Web Consortium (W3C) types listed below. The following table details the mapping between the W3C types, either XPath or XSLT, and the corresponding .NET Framework classes.

W3C Type

Equivalent .NET class

String (XPath)

System.String

Boolean (XPath)

System.Boolean

Number (XPath)

System.Double

Result Tree Fragment (XSLT)

System.Xml.XPath.XPathNavigator

Node Set (XPath)

System.Xml.XPath.XPathNodeIterator

If the script function utilizes one of the following numeric types: Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, or Decimal, these types are coerced to Double, which maps to the W3C XPath type number.

An exception is thrown when a function is called that cannot convert the argument result to one of the required types.

NoteNote

msxsl:script and msxsl:node-list are the only functions from the urn:schemas-microsoft-com:xslt namespace that are supported by the XslTransform class.

XslTransform has the ability to utilize common language runtime (CLR) code as an extension mechanism. This is accomplished by passing an instance of a class to the XslTransform class and calling its public methods within an XSLT style sheet. Methods that are defined with the params keyword, which allows an unspecified number of parameters to be passed, do not work correctly in this scenario. See params (C# Reference) for more details.

For more information see XSLT Transformations with the XslTransform Class.

TopicLocation
How to: Transform XML Data in the XML Web Server ControlBuilding ASP .NET Web Applications
How to: Transform XML Data in the XML Web Server ControlBuilding ASP .NET Web Applications

The following example transforms the specified XML document and outputs the result to the console.

//Create a new XslTransform object.
XslTransform xslt = new XslTransform();

//Load the stylesheet.
xslt.Load("http://server/favorite.xsl");

//Create a new XPathDocument and load the XML data to be transformed.
XPathDocument mydata = new XPathDocument("inputdata.xml");

//Create an XmlTextWriter which outputs to the console.
XmlWriter writer = new XmlTextWriter(Console.Out);

//Transform the data and send the output to the console.
xslt.Transform(mydata,null,writer, null);

.NET Framework

Supported in: 1.1, 1.0
Obsolete (compiler warning) in 4.5.1
Obsolete (compiler warning) in 4.5
Obsolete (compiler warning) in 4
Obsolete (compiler warning) in 3.5
Obsolete (compiler warning) in 3.5 SP1
Obsolete (compiler warning) in 3.0
Obsolete (compiler warning) in 3.0 SP1
Obsolete (compiler warning) in 3.0 SP2
Obsolete (compiler warning) in 2.0
Obsolete (compiler warning) in 2.0 SP1
Obsolete (compiler warning) in 2.0 SP2

.NET Framework Client Profile

Obsolete (compiler warning) in 4
Obsolete (compiler warning) in 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

XslTransform objects are only thread-safe for transform operations. Other operations are not guaranteed to be thread-safe. You must ensure that no other methods are called on the object during load operations.

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.