Transformações XSLT com a classe XslTransformXSLT Transformations with the XslTransform Class

Observação

A classe XslTransform está obsoleta no .NET Framework 2.0.The XslTransform class is obsolete in the .NET Framework 2.0. Você pode executar a linguagem XSL Transformations (XSLT) usando a classe XslCompiledTransform.You can perform Extensible Stylesheet Language for Transformations (XSLT) transformations using the XslCompiledTransform class. Confira Usar a classe XslCompiledTransform e Migrar da classe XslTransform para saber mais.See Using the XslCompiledTransform Class and Migrating From the XslTransform Class for more information.

O objetivo do XSLT é transformar o conteúdo de um documento XML de origem em outro documento que seja diferente no formato ou estrutura (por exemplo, para transformar XML em HTML para uso em um site ou para transformá-lo em um documento que contém somente os campos exigidos por um aplicativo).The goal of the XSLT is to transform the content of a source XML document into another document that is different in format or structure (for example, to transform XML into HTML for use on a Web site or to transform it into a document that contains only the fields required by an application). Este processo de transformação é especificado pela recomendação de XSLT versão 1.0 do W3C (World Wide Web Consortium).This transformation process is specified by the World Wide Web Consortium (W3C)XSLT version 1.0 recommendation. No .NET Framework, a classe XslTransform, localizada no namespace System.Xml.Xsl é o processador XSLT que implementa a funcionalidade dessa especificação.In the .NET Framework, the XslTransform class, found in the System.Xml.Xsl namespace, is the XSLT processor that implements the functionality of this specification. Há um pequeno número de recursos que não foram implementados da recomendação XSLT 1.0 do W3C, listada em Saída de um XslTransform.There are a small number of features that have not been implemented from the W3C XSLT 1.0 recommendation, listed in Outputs from an XslTransform. A figura a seguir mostra a arquitetura de transformação do .NET Framework.The following figure shows the transformation architecture of the .NET Framework.

Visão geralOverview

Diagrama que mostra a arquitetura de transformação XSLT.

A recomendação XSLT usa a linguagem XPath para selecionar partes de um documento XML, onde XPath é uma linguagem de consulta usada para navegar em nós de uma árvore do documento.The XSLT recommendation uses XML Path Language (XPath) to select parts of an XML document, where XPath is a query language used to navigate nodes of a document tree. Conforme mostrado no diagrama, a implementação de XPath do .NET Framework é usada para selecionar partes de XML armazenadas em várias classes, como um XmlDocument, um XmlDataDocument e um XPathDocument.As shown in the diagram, the .NET Framework implementation of XPath is used to select parts of XML stored in several classes, such as an XmlDocument, an XmlDataDocument, and an XPathDocument. Um XPathDocument é um repositório de dados XSLT otimizado e, quando usado com XslTransform, fornece transformações XSLT com bom desempenho.An XPathDocument is an optimized XSLT data store, and when used with XslTransform, it provides XSLT transformations with good performance.

A seguinte tabela lista classes geralmente usadas ao trabalhar com o XslTransform e XPath e sua função.The following table list commonly uses classes when working with XslTransform and XPath and their function.

Classe ou interfaceClass or Interface FunçãoFunction
XPathNavigator É uma API que fornece um modelo de estilo de cursor para navegar em um repositório, junto com suporte a consulta XPath.It is an API that provides a cursor style model for navigating over a store, along with XPath query support. Não fornece a edição do repositório subjacente.It does not provide editing of the underlying store. Para editar, use a classe XmlDocument.For editing, use the XmlDocument class.
IXPathNavigable É uma interface que fornece um método CreateNavigator para um XPathNavigator para o repositório.It is an interface that provides a CreateNavigator method to an XPathNavigator for the store.
XmlDocument Ela permite a edição deste documento.It enables editing of this document. Implementa IXPathNavigable, permitindo os cenários de edição de documento onde as transformações XSLT são necessárias posteriormente.It implements IXPathNavigable, allowing document-editing scenarios where XSLT transformations are subsequently required. Para saber mais, consulte Entrada de XmlDocument para XslTransform.For more information, see XmlDocument Input to XslTransform.
XmlDataDocument É derivada do XmlDocument.It is derived from the XmlDocument. Ela faz a ponte sobre os mundos relacionais e XML usando DataSet para otimizar o armazenamento de dados estruturados dentro do documento XML de acordo com mapeamentos especificados no DataSet.It bridges the relational and XML worlds by using a DataSet to optimize storage of structured data within the XML document according to specified mappings on the DataSet. Ela implementa IXPathNavigable, permitindo situações onde as transformações XSLT podem ser executadas sobre os dados relacionais recuperados de um banco de dados.It implements IXPathNavigable, allowing scenarios where XSLT transformations can be performed over relational data retrieved from a database. Para saber mais, confira Integração XML com dados relacionais e ADO.NET.For more information, see XML Integration with Relational Data and ADO.NET.
XPathDocument Essa classe é otimizada para processamento de XslTransform e consultas XPath, e fornece um cache somente leitura de alto desempenho.This class is optimized for XslTransform processing and XPath queries, and it provides a read-only high performance cache. Implementa IXPathNavigable e é o repositório preferido a ser usado para transformações XSLT.It implements IXPathNavigable and is the preferred store to use for XSLT transformations.
XPathNodeIterator Fornece a navegação em conjuntos de nós XPath.It provides navigation over XPath node sets. Todos os métodos de seleção XPath no XPathNavigator retornam um XPathNodeIterator.All XPath selection methods on the XPathNavigator return an XPathNodeIterator. Vários objetos XPathNodeIterator podem ser criados no mesmo repositório, cada um representando um conjunto de nós selecionado.Multiple XPathNodeIterator objects can be created over the same store, each representing a selected set of nodes.

Extensões de MSXML XSLTMSXML XSLT Extensions

As funções msxsl:script e msxsl:node-set são as únicas extensões XSLT do Microsoft XML Core Services (MSXML) com suporte pela classe XslTransform.The msxsl:script and msxsl:node-set functions are the only Microsoft XML Core Services (MSXML) XSLT extensions supported by the XslTransform class.

ExemploExample

O exemplo de código a seguir carrega uma folha de estilos XSLT, lê um arquivo chamado mydata.xml em um XPathDocument e executa uma transformação nos dados em um arquivo fictício chamado myStyleSheet.xsl, enviando a saída formatada para o console.The following code example loads an XSLT style sheet, reads a file called mydata.xml into an XPathDocument, and performs a transformation on the data on a fictitious file called myStyleSheet.xsl, sending the formatted output to the console.

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);
    }
}

Consulte tambémSee also