Transformaciones XSLT con la clase XslTransform
Actualización: November 2007
Nota: |
---|
La clase XslTransform es obsoleta en .NET Framework versión 2.0. Puede llevar a cabo Extensible Stylesheet Language for Transformations (XSLT) mediante la clase XslCompiledTransform. Para obtener más información, vea Uso de la clase XslCompiledTransform y Migración desde la clase XslTransform. |
El objetivo de XSLT es transformar el contenido de un documento XML de origen en otro documento que sea diferente en formato o estructura (por ejemplo, para transformar XML en HTML para su utilización en un sitio web o transformarlo en un documento que contenga sólo los campos requeridos por una aplicación). Este proceso de transformación está especificado en la recomendación versión 1.0 del W3C (World Wide Web Consortium), que se encuentra en www.w3.org/TR/xslt. En .NET Framework, la clase XslTransform, que se encuentra en el espacio de nombres System.Xml.Xsl, es el procesador XSLT que implementa la funcionalidad de esta especificación. Un reducido número de características de la recomendación de XSLT Version 1.0 del W3C no se han implementado y se enumeran en Resultados de XslTransform. En la ilustración siguiente se muestra la arquitectura de transformación de .NET Framework.
Información general
Arquitectura de transformación
La recomendación de XSLT utiliza XPath para seleccionar componentes de un documento XML. XPath es un lenguaje de consulta utilizado para navegar por los nodos de un árbol de documentos. Tal como se muestra en el diagrama, la implementación .NET Framework de XPath se utiliza para seleccionar partes de XML almacenadas en varias clases, como XmlDocument, XmlDataDocument, y XPathDocument. XPathDocument es un almacén de datos optimizado de XSLT, y cuando se utiliza con XslTransform, proporciona transformaciones XSLT de alto rendimiento.
En la tabla siguiente se enumeran las clases utilizadas comúnmente al trabajar con XslTransform y Xpath y su función.
Clase o interfaz |
Función |
---|---|
API que proporciona un modelo de estilo de cursor para navegar por un almacén, junto con la compatibilidad con las consultas XPath. No permite modificar el almacén subyacente. Para realizar modificaciones, utilice la clase XmlDocument. |
|
Es una interfaz que proporciona un método CreateNavigator a XPathNavigator para el almacén. |
|
Permite modificar este documento. Implementa IXPathNavigable, que tiene en cuenta situaciones de modificación de documentos en las que son necesarias las transformaciones XSLT. Para obtener más información, vea Entrada de XmlDocument en XslTransform. |
|
Se deriva de XmlDocument. Une los universos relacional y XML mediante la utilización de un DataSet para optimizar el almacenamiento de datos estructurados dentro del documento XML según las asignaciones especificadas en el DataSet. Implementa IXPathNavigable, que tiene en cuenta situaciones donde las transformaciones XSLT se pueden realizar sobre datos relacionales obtenidos en una base de datos. Para obtener más información, vea Integración de XML con datos relacionales y ADO.NET. |
|
Esta clase se ha optimizado para el procesamiento de XslTransform y consultas Xpath, y proporciona una caché de sólo lectura y de alto rendimiento. Implementa IXPathNavigable y es el almacén preferido en las transformaciones XSLT. |
|
Permite la navegación en conjuntos de nodos de XPath. Todos los métodos de selección XPath en XPathNavigator devuelven XPathNodeIterator. Se pueden crear múltiples objetos XPathNodeIterator en el mismo almacén y cada uno representa un conjunto de nodos seleccionado. |
Extensiones MSXML XSLT
Las funciones msxsl:script y msxsl:node-set son las únicas extensiones XSLT de Microsoft XML Core Services (MSXML) compatibles con la clase XslTransform.
Ejemplo
En el código de ejemplo siguiente se carga una hoja de estilos XSL, se lee un archivo denominado mydata.xml en XPathDocument y se realiza la transformación de los datos en un archivo ficticio denominado myStyleSheet.xsl al enviar la salida con formato a la consola.
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.XPath
Imports System.Xml.Xsl
Public Class Sample
Private filename As [String] = "mydata.xml"
Private stylesheet As [String] = "myStyleSheet.xsl"
Public Shared Sub Main()
Dim xslt As New XslTransform()
xslt.Load(stylesheet)
Dim xpathdocument As New XPathDocument(filename)
Dim writer As New XmlTextWriter(Console.Out)
writer.Formatting = Formatting.Indented
xslt.Transform(xpathdocument, Nothing, writer, Nothing)
End Sub 'Main
End Class 'Sample
using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;
public class Sample
{
private const String filename = "mydata.xml";
private const String stylesheet = "myStyleSheet.xsl";
public static void Main()
{
XslTransform xslt = new XslTransform();
xslt.Load(stylesheet);
XPathDocument xpathdocument = new
XPathDocument(filename);
XmlTextWriter writer = new XmlTextWriter(Console.Out);
writer.Formatting=Formatting.Indented;
xslt.Transform(xpathdocument, null, writer, null);
}
}
Vea también
Conceptos
La clase XslTransform implementa el procesador XSLT
Implementación de comportamientos discrecionales en la clase XslTransform
XPathNavigator en transformaciones
XPathNodeIterator en transformaciones
Entrada XPathDocument Input para XslTransform
Entrada de XmlDataDocument en XslTransform
Entrada de XmlDocument en XslTransform