XslTransform Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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:
Cree un objeto XslTransform.
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.
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 alurn:schemas-microsoft-com:xslt
espacio de nombres . La hoja de estilos debe incluir la declaraciónxmlns:msxsl=urn:schemas-microsoft-com:xslt
de espacio de nombres .El
msxsl:script
elemento puede incluir unlanguage
atributo que especifica el lenguaje de scripting que se va a usar. El valor dellanguage
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 unlanguage
atributo, el valor predeterminado es JScript.El
msxsl:script
elemento debe incluir unimplements-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 ellanguage
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 |
Transform(IXPathNavigable, XsltArgumentList, Stream) |
Obsoleto.
Transforma los datos XML de IXPathNavigable utilizando el |
Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver) |
Transforma los datos XML de IXPathNavigable utilizando el |
Transform(IXPathNavigable, XsltArgumentList, TextWriter) |
Obsoleto.
Transforma los datos XML de IXPathNavigable utilizando el |
Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver) |
Transforma los datos XML de IXPathNavigable utilizando el |
Transform(IXPathNavigable, XsltArgumentList, XmlResolver) |
Transforma los datos XML de IXPathNavigable utilizando el |
Transform(IXPathNavigable, XsltArgumentList, XmlWriter) |
Obsoleto.
Transforma los datos XML de IXPathNavigable utilizando el |
Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver) |
Transforma los datos XML de IXPathNavigable utilizando el |
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 |
Transform(XPathNavigator, XsltArgumentList, Stream) |
Obsoleto.
Transforma los datos XML de XPathNavigator utilizando el |
Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver) |
Transforma los datos XML de XPathNavigator utilizando el |
Transform(XPathNavigator, XsltArgumentList, TextWriter) |
Obsoleto.
Transforma los datos XML de XPathNavigator utilizando el |
Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver) |
Transforma los datos XML de XPathNavigator utilizando el |
Transform(XPathNavigator, XsltArgumentList, XmlResolver) |
Transforma los datos XML de XPathNavigator utilizando el |
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.