Compartir a través de


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

XPathNavigator

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.

IXPathNavigable

Es una interfaz que proporciona un método CreateNavigator a XPathNavigator para el almacén.

XmlDocument

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.

XmlDataDocument

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.

XPathDocument

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.

XPathNodeIterator

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

Referencia

XslTransform