Comparteix a través de


XslTransform Clase

Definición

Precaución

This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202

Transforma datos XML utilizando una hoja de estilo XLST (Extensible Stylesheet Language for Transformations, Lenguaje de hoja de estilos extensible para transformaciones).

public ref class XslTransform sealed
public sealed class XslTransform
[System.Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public sealed class XslTransform
type XslTransform = class
[<System.Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")>]
type XslTransform = class
Public NotInheritable Class XslTransform
Herencia
XslTransform
Atributos

Ejemplos

En el ejemplo siguiente se transforma el documento XML especificado y se genera el resultado en la consola.

//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);
'Create a new XslTransform object.
Dim xslt As New XslTransform()

'Load the stylesheet.
xslt.Load(CType("http://server/favorite.xsl", String))

'Create a new XPathDocument and load the XML data to be transformed.
Dim mydata As New XPathDocument("inputdata.xml")

'Create an XmlTextWriter which outputs to the console.
Dim writer As New XmlTextWriter(Console.Out)

'Transform the data and send the output to the console.
xslt.Transform(mydata, Nothing, writer, Nothing)

Comentarios

Nota

La XslTransform clase está obsoleta en la versión 2.0 de Microsoft .NET Framework. La XslCompiledTransform clase es el nuevo procesador XSLT. Para obtener más información, vea Usar la clase XslCompiledTransform y Migrar desde la clase XslTransform.

XslTransform admite la sintaxis XSLT 1.0. La hoja de estilos XSLT debe usar el espacio de nombres http://www.w3.org/1999/XSL/Transform.

También se pueden agregar argumentos adicionales a la hoja de estilos mediante la XsltArgumentList clase . Esta clase contiene parámetros de entrada para la hoja de estilos y los objetos de extensión a los que se puede llamar desde la hoja de estilos.

Para transformar datos XML:

  1. Cree un objeto XslTransform.

  2. Use el Load método para cargar la hoja de estilos de la transformación. Este método tiene varias sobrecargas y puede cargar una hoja de estilos mediante , XmlReaderXPathNavigatorIXPathNavigable, o una dirección URL con la ubicación del archivo.

  3. Use el Transform método para transformar los datos XML. Este método tiene varias sobrecargas y puede controlar diferentes tipos de entrada y salida. También puede especificar un XsltArgumentList argumento que contenga argumentos adicionales que se usarán como entrada durante la transformación.

Consideraciones sobre la seguridad

Si crea una aplicación que utiliza la clase XslTransform, debería conocer los siguientes puntos y sus implicaciones:

  • Los objetos de extensión están habilitados de manera predeterminada. Si se pasa un objeto XsltArgumentList que contiene objetos de extensión al método Transform, estos objetos se utilizan.

  • Las hojas de estilos XLST pueden incluir referencias a otros archivos y bloques de scripts incrustados. Un usuario malintencionado puede aprovecharlo proporcionando datos o hojas de estilos que, cuando se ejecute, hará que el sistema se procese hasta que el equipo se quede sin recursos.

  • Las aplicaciones XSLT que se ejecutan en un entorno de confianza mixto pueden sufrir suplantaciones de hoja de estilos. Por ejemplo, un usuario malintencionado podría cargar un objeto con una hoja de estilos perjudicial y pasárselo a otro usuario que, a continuación, llama al método Transform y ejecuta la transformación.

Estos problemas de seguridad se pueden mitigar no aceptando XslTransform objetos, hojas de estilos XSLT ni datos de origen XML de orígenes que no son de confianza.

Compatibilidad con scripting

Esta clase admite el scripting incrustado mediante el msxsl:script elemento .

En la versión 1.1 de .NET Framework, la evidencia de la hoja de estilos determina qué permisos se conceden a los scripts incrustados.

  • Si la hoja de estilos se cargó desde un identificador uniforme de recursos (URI), el URI se usa para crear la evidencia. Esta evidencia incluye el URI junto con su sitio y zona.

  • Si la hoja de estilos se cargó con otro origen, puede proporcionar evidencia pasando un System.Security.Policy.Evidence objeto al Load método . De lo contrario, el ensamblado de script tiene plena confianza.

Llamadores de confianza parcial: UnmanagedCode se requiere permiso para compilar el script incrustado. ControlEvidence se requiere permiso para proporcionar Evidence al Load método . Se produce una SecurityException excepción si el autor de la llamada no tiene los permisos necesarios. Para obtener más información, vea System.Security.Permissions.SecurityPermission y System.Security.Permissions.SecurityPermissionFlag.

El msxsl:script elemento tiene los siguientes requisitos:

  • El msxsl:script elemento pertenece al urn:schemas-microsoft-com:xslt espacio de nombres . La hoja de estilos debe incluir la declaración xmlns:msxsl=urn:schemas-microsoft-com:xsltde espacio de nombres .

  • El msxsl:script elemento puede incluir un language atributo que especifica el lenguaje de scripting que se va a usar. El valor del language atributo debe ser uno de los siguientes: C#, CSharp, VB, VisualBasic, JScript o JavaScript. Dado que el nombre del lenguaje no distingue mayúsculas de minúsculas, JavaScript y javascript son válidos. Si no se especifica un language atributo, el valor predeterminado es JScript.

  • El msxsl:script elemento debe incluir un implements-prefix atributo que contenga el prefijo que representa el espacio de nombres asociado al bloque de script. Este espacio de nombres debe definirse dentro de la hoja de estilos. Una hoja de estilos puede incluir varios bloques de script que se agrupan por espacio de nombres. No puede tener bloques de script con varios idiomas dentro del mismo espacio de nombres. Los bloques de script pueden llamar a una función definida en otro bloque de script, siempre que los bloques de script residan en el mismo espacio de nombres. El contenido de un bloque de script se analiza según las reglas y la sintaxis del lenguaje de scripting (proporcionado por el language atributo ). Por ejemplo, si tuviera un bloque de script de C#, los caracteres prefijosían los // comentarios. Los comentarios deben ser contenido XML válido.

Nota

Se recomienda encapsular bloques de script en una sección CDATA.

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

Las funciones se pueden declarar dentro del elemento msxsl:script. La tabla siguiente muestra los espacios de nombres que se admiten de forma predeterminada.

Espacios de nombres admitidos Descripción
System Clases del sistema.
System.Collection Clases de colección
System.Text Clases de control de texto.
System.Xml Clases XML básicas
System.Xml.Xsl Clases XSLT
System.Xml.XPath Clases XML Path Language (XPath).

Los argumentos proporcionados y los valores devueltos definidos por las funciones de script deben ser uno de los tipos de World Wide Web Consortium (W3C) que se enumeran a continuación. En la tabla siguiente se detalla la asignación entre los tipos W3C, XPath o XSLT, y las clases de .NET Framework correspondientes.

Tipo W3C Clase .NET equivalente
String (XPath) System.String
Boolean (XPath) System.Boolean
Number (XPath) System.Double
Fragmento de árbol de resultados (XSLT) System.Xml.XPath.XPathNavigator
Conjunto de nodos (XPath) System.Xml.XPath.XPathNodeIterator

Si la función de script utiliza uno de los siguientes tipos numéricos: Int16, UInt16, Int32, UInt32, Int64, UInt64, Single o Decimal, estos tipos se convierten en Double, que se asigna al número de tipo XPath de W3C.

Se produce una excepción cuando se llama a una función que no puede convertir el resultado del argumento en uno de los tipos necesarios.

Nota

msxsl:script y msxsl:node-list son las únicas funciones del urn:schemas-microsoft-com:xslt espacio de nombres que admite la XslTransform clase .

XslTransform tiene la capacidad de usar código de Common Language Runtime (CLR) como mecanismo de extensión. Esto se logra pasando una instancia de una clase a la XslTransform clase y llamando a sus métodos públicos dentro de una hoja de estilos XSLT. Los métodos definidos con la params palabra clave , que permiten pasar un número no especificado de parámetros, no funcionan correctamente en este escenario. Consulte los parámetros para obtener más detalles.

Para obtener más información, vea Transformaciones XSLT con la clase XslTransform.

Constructores

XslTransform()

Inicializa una nueva instancia de la clase XslTransform.

Propiedades

XmlResolver
Obsoleto.

Establece XmlResolver que se utiliza para resolver recursos externos cuando se llama al método Transform.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
Load(IXPathNavigable)
Obsoleto.

Carga la hoja de estilos XSLT incluida en el objeto IXPathNavigable.

Load(IXPathNavigable, XmlResolver)
Obsoleto.

Carga la hoja de estilos XSLT incluida en el objeto IXPathNavigable.

Load(IXPathNavigable, XmlResolver, Evidence)

Carga la hoja de estilos XSLT incluida en el objeto IXPathNavigable. Este método permite limitar los permisos de la hoja de estilos por medio de la especificación de la evidencia.

Load(String)

Carga la hoja de estilos XSLT especificada por una dirección URL.

Load(String, XmlResolver)

Carga la hoja de estilos XSLT especificada por una dirección URL.

Load(XmlReader)
Obsoleto.

Carga la hoja de estilos XSLT incluida en el objeto XmlReader.

Load(XmlReader, XmlResolver)
Obsoleto.

Carga la hoja de estilos XSLT incluida en el objeto XmlReader.

Load(XmlReader, XmlResolver, Evidence)

Carga la hoja de estilos XSLT incluida en el objeto XmlReader. Este método permite limitar los permisos de la hoja de estilos por medio de la especificación de la evidencia.

Load(XPathNavigator)
Obsoleto.

Carga la hoja de estilos XSLT incluida en el objeto XPathNavigator.

Load(XPathNavigator, XmlResolver)
Obsoleto.

Carga la hoja de estilos XSLT incluida en el objeto XPathNavigator.

Load(XPathNavigator, XmlResolver, Evidence)

Carga la hoja de estilos XSLT incluida en el objeto XPathNavigator. Este método permite limitar los permisos de la hoja de estilos por medio de la especificación de la evidencia.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
Transform(IXPathNavigable, XsltArgumentList)
Obsoleto.

Transforma los datos XML de IXPathNavigable utilizando el args especificado y envía el resultado a un XmlReader.

Transform(IXPathNavigable, XsltArgumentList, Stream)
Obsoleto.

Transforma los datos XML de IXPathNavigable utilizando el args especificado y envía el resultado a un Stream.

Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver)

Transforma los datos XML de IXPathNavigable utilizando el args especificado y envía el resultado a un Stream.

Transform(IXPathNavigable, XsltArgumentList, TextWriter)
Obsoleto.

Transforma los datos XML de IXPathNavigable utilizando el args especificado y envía el resultado a un TextWriter.

Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)

Transforma los datos XML de IXPathNavigable utilizando el args especificado y envía el resultado a un TextWriter.

Transform(IXPathNavigable, XsltArgumentList, XmlResolver)

Transforma los datos XML de IXPathNavigable utilizando el args especificado y envía el resultado a un XmlReader.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)
Obsoleto.

Transforma los datos XML de IXPathNavigable utilizando el args especificado y envía el resultado a un XmlWriter.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

Transforma los datos XML de IXPathNavigable utilizando el args especificado y envía el resultado a un XmlWriter.

Transform(String, String)
Obsoleto.

Transforma los datos XML del archivo de entrada y envía el resultado a un archivo de salida.

Transform(String, String, XmlResolver)

Transforma los datos XML del archivo de entrada y envía el resultado a un archivo de salida.

Transform(XPathNavigator, XsltArgumentList)
Obsoleto.

Transforma los datos XML de XPathNavigator utilizando el args especificado y envía el resultado a un XmlReader.

Transform(XPathNavigator, XsltArgumentList, Stream)
Obsoleto.

Transforma los datos XML de XPathNavigator utilizando el args especificado y envía el resultado a un Stream.

Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver)

Transforma los datos XML de XPathNavigator utilizando el args especificado y envía el resultado a un Stream.

Transform(XPathNavigator, XsltArgumentList, TextWriter)
Obsoleto.

Transforma los datos XML de XPathNavigator utilizando el args especificado y envía el resultado a un TextWriter.

Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver)

Transforma los datos XML de XPathNavigator utilizando el args especificado y envía el resultado a un TextWriter.

Transform(XPathNavigator, XsltArgumentList, XmlResolver)

Transforma los datos XML de XPathNavigator utilizando el args especificado y envía el resultado a un XmlReader.

Transform(XPathNavigator, XsltArgumentList, XmlWriter)
Obsoleto.

Transforma los datos XML de XPathNavigator utilizando los argumentos especificados y envía el resultado a un XmlWriter.

Transform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver)

Transforma los datos XML de XPathNavigator utilizando los argumentos especificados y envía el resultado a un XmlWriter.

Se aplica a

Seguridad para subprocesos

XslTransform los objetos solo son seguros para subprocesos para las operaciones de transformación. No se garantiza que otras operaciones sean seguras para subprocesos. Debe asegurarse de que no se llama a ningún otro método en el objeto durante las operaciones de carga.