Trasformazioni XSLT con la classe XslTransformXSLT Transformations with the XslTransform Class

Nota

La classe XslTransform è obsoleta in .NET Framework 2.0.NET Framework 2.0.The XslTransform class is obsolete in the .NET Framework 2.0.NET Framework 2.0. È possibile eseguire le trasformazioni XSLT (Extensible Stylesheet Language for Transformations) usando la classe XslCompiledTransform.You can perform Extensible Stylesheet Language for Transformations (XSLT) transformations using the XslCompiledTransform class. Per altre informazioni, vedere Utilizzo della classe XslCompiledTransform e Migrazione dalla classe XslTransform.See Using the XslCompiledTransform Class and Migrating From the XslTransform Class for more information.

Lo scopo dell'XSLT (Extensible Stylesheet Language Transformation) è quello di trasformare il contenuto di un documento XML di origine in un altro documento di formato o struttura diversa, ad esempio, per trasformare il codice XML in HTML per l'uso su un sito Web o per trasformarlo in un documento che contenga solo i campi richiesti da un'applicazione.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). Questo processo di trasformazione è specificato dalla raccomandazione W3C XSL Transformations (XSLT) versione 1.0, disponibile all'indirizzo www.w3.org/TR/xslt (informazioni in lingua inglese).This transformation process is specified by the World Wide Web Consortium (W3C) XSLT version 1.0 recommendation located at www.w3.org/TR/xslt. In .NET Framework.NET Framework, la classe XslTransform, disponibile nello spazio dei nomi System.Xml.Xsl, è il processore XSLT che implementa la funzionalità di questa specifica.In the .NET Framework.NET Framework, the XslTransform class, found in the System.Xml.Xsl namespace, is the XSLT processor that implements the functionality of this specification. Alcune funzionalità non sono state implementate dalla raccomandazione W3C XSL Transformations (XSLT) versione 1.0 e sono elencate in Output da un 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. Nella figura seguente è illustrata l'architettura di trasformazione di .NET Framework.NET Framework.The following figure shows the transformation architecture of the .NET Framework.NET Framework.

PanoramicaOverview

Architettura di trasformazione XSLTXSLT Transformation Architecture
Architettura di trasformazioneTransformation Architecture

Per la selezione di parti di un documento XML, nella raccomandazione XSLT viene usato XPath (XML Path Language), ovvero un linguaggio di query usato per navigare nei nodi dell'albero di un 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. Come illustrato nel diagramma, l'implementazione di XPath in .NET Framework.NET Framework viene usata per la selezione di parti di XML archiviate in varie classi, come un XmlDocument, un XmlDataDocument e un XPathDocument.As shown in the diagram, the .NET Framework.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. XPathDocument è un archivio dati XSLT ottimizzato che, se usato con XslTransform, fornisce trasformazioni XSLT con elevate prestazioni.An XPathDocument is an optimized XSLT data store, and when used with XslTransform, it provides XSLT transformations with good performance.

Nella tabella seguente sono elencate le classi più usate con XslTransform, XPath e le relative funzioni.The following table list commonly uses classes when working with XslTransform and XPath and their function.

Classe o interfacciaClass or Interface FunzioneFunction
XPathNavigator Si tratta di un'API che fornisce un modello di tipo cursore per la navigazione in un archivio nonché il supporto delle query XPath.It is an API that provides a cursor style model for navigating over a store, along with XPath query support. Non viene fornita la funzionalità di modifica dell'archivio sottostante.It does not provide editing of the underlying store. Per la modifica, usare la classe XmlDocument.For editing, use the XmlDocument class.
IXPathNavigable Si tratta di un'interfaccia che fornisce un metodo CreateNavigator a un XPathNavigator per l'archivio.It is an interface that provides a CreateNavigator method to an XPathNavigator for the store.
XmlDocument Consente la modifica di questo documento.It enables editing of this document. Implementa IXPathNavigable, consentendo scenari per la modifica di documenti in cui vengono successivamente richieste trasformazioni XSLT.It implements IXPathNavigable, allowing document-editing scenarios where XSLT transformations are subsequently required. Per altre informazioni, vedere Input di XmlDocument in XslTransform.For more information, see XmlDocument Input to XslTransform.
XmlDataDocument Derivato da XmlDocument.It is derived from the XmlDocument. Supera i limiti dei modelli basati sui dati XML e relazionali usando un DataSet per ottimizzare l'archiviazione dei dati strutturati all'interno del documento XML, in base ai mapping specificati nel 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. Implementa IXPathNavigable, consentendo scenari in cui è possibile eseguire trasformazioni XSLT sui dati relazionali recuperati da un database.It implements IXPathNavigable, allowing scenarios where XSLT transformations can be performed over relational data retrieved from a database. Per altre informazioni, vedere Integrazione di XML con dati relazionali e ADO.NET.For more information, see XML Integration with Relational Data and ADO.NET.
XPathDocument Questa classe è ottimizzata per l'elaborazione con XslTransform e per le query XPath. Fornisce una cache di sola lettura a elevate prestazioni.This class is optimized for XslTransform processing and XPath queries, and it provides a read-only high performance cache. Implementa IXPathNavigable ed è l'archivio migliore da usare per le trasformazioni XSLT.It implements IXPathNavigable and is the preferred store to use for XSLT transformations.
XPathNodeIterator Consente di navigare nei set di nodi XPath.It provides navigation over XPath node sets. Tutti i metodi di selezione XPath di XPathNavigator restituiscono un XPathNodeIterator.All XPath selection methods on the XPathNavigator return an XPathNodeIterator. È possibile creare più oggetti XPathNodeIterator nello stesso archivio, ognuno dei quali rappresenta un set di nodi selezionato.Multiple XPathNodeIterator objects can be created over the same store, each representing a selected set of nodes.

Estensioni XSLT di MSXMLMSXML XSLT Extensions

Le funzioni msxsl:script e msxsl:node-set sono le uniche estensioni XSLT di MSXML (Microsoft XML Core Services) supportate dalla 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.

EsempioExample

Nell'esempio di codice seguente viene caricato un foglio di stile XSLT, il file mydata.xml viene letto in un XPathDocument e viene eseguita una trasformazione sui dati basata sul file fittizio myStyleSheet.xsl. L'output formattato viene quindi inviato alla 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  
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);      
    }  
}  

Vedere ancheSee Also

XslTransform
Implementazione del processore XSLT da parte della classe XslTransformXslTransform Class Implements the XSLT Processor
Implementazione di comportamenti discretionary nella classe XslTransformImplementation of Discretionary Behaviors in the XslTransform Class
XPathNavigator nelle trasformazioniXPathNavigator in Transformations
XPathNodeIterator nelle trasformazioniXPathNodeIterator in Transformations
Input di XPathDocument in XslTransformXPathDocument Input to XslTransform
Input di XmlDataDocument in XslTransformXmlDataDocument Input to XslTransform
Input di XmlDocument in XslTransformXmlDocument Input to XslTransform