Classe XslCompiledTransform (System.Xml.Xsl)

Cambia visualizzazione:
ScriptFree
Riferimento a .NET Framework
Classe XslCompiledTransform
Il presente articolo è stato tradotto manualmente. Per visualizzare questa pagina e contemporaneamente visualizzarne il contenuto in lingua inglese, passare alla visualizzazione semplificata.

Trasforma i dati XML utilizzando un foglio di stile XSLT.

Gerarchia di ereditarietà

System.Object
  System.Xml.Xsl.XslCompiledTransform

Spazio dei nomi:  System.Xml.Xsl
Assembly:  System.Xml (in System.Xml.dll)
Sintassi

Visual Basic
Public NotInheritable Class XslCompiledTransform
C#
public sealed class XslCompiledTransform
Visual C++
public ref class XslCompiledTransform sealed
F#
[<Sealed>]
type XslCompiledTransform =  class end

Il tipo XslCompiledTransform espone i seguenti membri.

Costruttori

  Nome Descrizione
Metodo pubblico XslCompiledTransform() Inizializza una nuova istanza della classe XslCompiledTransform.
Metodo pubblico XslCompiledTransform(Boolean) Consente di inizializzare una nuova istanza della classe XslCompiledTransform con l'impostazione di debug specificata.
In alto
Proprietà

  Nome Descrizione
Proprietà pubblica OutputSettings Ottiene un oggetto XmlWriterSettings contenente le informazioni di output derivate dall'elemento xsl:output del foglio di stile.
Proprietà pubblica TemporaryFiles Ottiene l'oggetto TempFileCollection contenente i file temporanei generati sul disco dopo una chiamata al metodo Load.
In alto
Metodi

  Nome Descrizione
Metodo pubblico Membro statico CompileToType Compila un foglio di stile XSLT a un tipo specificato.
Metodo pubblico Equals(Object) Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object)
Metodo protetto Finalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblico GetHashCode Funge da funzione hash per un determinato tipo. (Ereditato da Object)
Metodo pubblico GetType Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblico Load(IXPathNavigable) Compila il foglio di stile contenuto nell'oggetto IXPathNavigable.
Metodo pubblico Load(String) Carica e compila il foglio di stile che si trova all'URI specificato.
Metodo pubblico Load(Type) Carica il foglio di stile compilato, creato utilizzando Compilatore XSLT (xsltc.exe).
Metodo pubblico Load(XmlReader) Compila il foglio di stile contenuto nell'oggetto XmlReader.
Metodo pubblico Load(IXPathNavigable, XsltSettings, XmlResolver) Compila il foglio di stile XSLT contenuto nell'oggetto IXPathNavigable. L'oggetto XmlResolver risolve eventuali elementi XSLT import o include, mentre le impostazioni XSLT determinano le autorizzazioni per il foglio di stile.
Metodo pubblico Load(MethodInfo, Byte[], Type[]) Carica un metodo da un foglio di stile compilato utilizzando l'utilità XSLTC.exe.
Metodo pubblico Load(String, XsltSettings, XmlResolver) Carica e compila il foglio di stile XSLT specificato dall'URI. L'oggetto XmlResolver risolve eventuali elementi XSLT import o include, mentre le impostazioni XSLT determinano le autorizzazioni per il foglio di stile.
Metodo pubblico Load(XmlReader, XsltSettings, XmlResolver) Compila il foglio di stile XSLT contenuto nell'oggetto XmlReader. L'oggetto XmlResolver risolve eventuali elementi XSLT import o include, mentre le impostazioni XSLT determinano le autorizzazioni per il foglio di stile.
Metodo protetto MemberwiseClone Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblico ToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
Metodo pubblico Transform(IXPathNavigable, XmlWriter) Esegue la trasformazione utilizzando il documento di input specificato dall'oggetto IXPathNavigable e invia i risultati a un oggetto XmlWriter.
Metodo pubblico Transform(String, String) Esegue la trasformazione utilizzando il documento di input specificato dall'URI e visualizza i risultati in un file.
Metodo pubblico Transform(String, XmlWriter) Esegue la trasformazione utilizzando il documento di input specificato dall'URI e visualizza i risultati in un oggetto XmlWriter.
Metodo pubblico Transform(XmlReader, XmlWriter) Esegue la trasformazione utilizzando il documento di input specificato dall'oggetto XmlReader e invia i risultati a un oggetto XmlWriter.
Metodo pubblico Transform(IXPathNavigable, XsltArgumentList, Stream) Esegue la trasformazione utilizzando il documento di input specificato dall'oggetto IXPathNavigable e visualizza i risultati in un flusso. L'oggetto XsltArgumentList fornisce argomenti aggiuntivi in fase di esecuzione.
Metodo pubblico Transform(IXPathNavigable, XsltArgumentList, TextWriter) Esegue la trasformazione utilizzando il documento di input specificato dall'oggetto IXPathNavigable e invia i risultati a un oggetto TextWriter. L'oggetto XsltArgumentList fornisce argomenti aggiuntivi in fase di esecuzione.
Metodo pubblico Transform(IXPathNavigable, XsltArgumentList, XmlWriter) Esegue la trasformazione utilizzando il documento di input specificato dall'oggetto IXPathNavigable e invia i risultati a un oggetto XmlWriter. L'oggetto XsltArgumentList fornisce argomenti aggiuntivi in fase di esecuzione.
Metodo pubblico Transform(String, XsltArgumentList, Stream) Esegue la trasformazione utilizzando il documento di input specificato dall'URI e visualizza i risultati in un flusso. L'oggetto XsltArgumentList fornisce argomenti aggiuntivi in fase di esecuzione.
Metodo pubblico Transform(String, XsltArgumentList, TextWriter) Esegue la trasformazione utilizzando il documento di input specificato dall'URI e visualizza i risultati in un oggetto TextWriter.
Metodo pubblico Transform(String, XsltArgumentList, XmlWriter) Esegue la trasformazione utilizzando il documento di input specificato dall'URI e visualizza i risultati in un oggetto XmlWriter. L'oggetto XsltArgumentList fornisce argomenti aggiuntivi in fase di esecuzione.
Metodo pubblico Transform(XmlReader, XsltArgumentList, Stream) Esegue la trasformazione utilizzando il documento di input specificato dall'oggetto XmlReader e visualizza i risultati in un flusso. L'oggetto XsltArgumentList fornisce argomenti aggiuntivi in fase di esecuzione.
Metodo pubblico Transform(XmlReader, XsltArgumentList, TextWriter) Esegue la trasformazione utilizzando il documento di input specificato dall'oggetto XmlReader e visualizza i risultati in un oggetto TextWriter. L'oggetto XsltArgumentList fornisce argomenti aggiuntivi in fase di esecuzione.
Metodo pubblico Transform(XmlReader, XsltArgumentList, XmlWriter) Esegue la trasformazione utilizzando il documento di input specificato dall'oggetto XmlReader e invia i risultati a un oggetto XmlWriter. L'oggetto XsltArgumentList fornisce argomenti aggiuntivi in fase di esecuzione.
Metodo pubblico Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver) Esegue la trasformazione utilizzando il documento di input specificato dall'oggetto IXPathNavigable e invia i risultati a un oggetto XmlWriter. L'oggetto XsltArgumentList fornisce argomenti aggiuntivi in fase di esecuzione, mentre XmlResolver risolve la funzione document() XSLT.
Metodo pubblico Transform(XmlReader, XsltArgumentList, XmlWriter, XmlResolver) Esegue la trasformazione utilizzando il documento di input specificato dall'oggetto XmlReader e invia i risultati a un oggetto XmlWriter. L'oggetto XsltArgumentList fornisce argomenti aggiuntivi in fase di esecuzione, mentre l'oggetto XmlResolver risolve la funzione XSLT document().
In alto
Note

La classe XslCompiledTransform è un processore XSLT che supporta la sintassi XSLT 1.0. Si tratta di una nuova implementazione le cui prestazioni sono state migliorate rispetto alla classe XslTransform obsoleta. La struttura della classe XslCompiledTransform è del tutto simile a quella della classe XslTransform. Il metodo Load carica e compila il foglio di stile, mentre il metodo Transform esegue la trasformazione XSLT.

Il supporto della funzione XSLT document() e il blocco di script incorporati sono disabilitati per impostazione predefinita. È possibile attivare tali funzioni creando un oggetto XsltSettings e passandolo al metodo Load.

Per ulteriori informazioni, vedere Utilizzo della classe XslCompiledTransform e Migrazione dalla classe XslTransform.

Considerazioni sulla sicurezza

Durante la creazione di un'applicazione che utilizza la classe XslCompiledTransform, tenere in considerazione i seguenti aspetti e le relative implicazioni:

  • Per impostazione predefinita, lo scripting XSLT è disabilitato. Lo scripting XSLT deve essere attivato solo se è necessario il supporto per script e se si opera in un ambiente completamente attendibile.

  • Per impostazione predefinita, la funzione document() XSLT è disabilitata. Se si attiva la funzione document(), limitare le risorse a cui è possibile accedere passando un oggetto XmlSecureResolver al metodo Transform.

  • Gli oggetti di estensione sono attivati per impostazione predefinita. Se un oggetto XsltArgumentList contenente oggetti di estensione viene passato al metodo Transform, tali oggetti vengono utilizzati.

  • I fogli di stile XSLT possono includere riferimenti ad altri file e a blocchi di script incorporati. Un utente malintenzionato potrebbe sfruttare questa caratteristica fornendo dati o fogli si stile la cui esecuzione potrebbe causare l'esaurimento delle risorse del computer.

  • Le applicazioni XSLT in esecuzione in un ambiente di attendibilità misto possono causare problemi di spoofing dei fogli di stile. Un utente malintenzionato potrebbe ad esempio caricare un oggetto contenente un foglio di stile dannoso e fornirlo a un altro utente, il quale successivamente chiamerebbe il metodo Transform eseguendo la trasformazione.

È possibile ridurre i rischi per la sicurezza evitando di attivare gli script o la funzione document() a meno che il foglio di stile non provenga da un'origine attendibile e non accettando oggetti XslCompiledTransform, fogli di stile XSLT o origini dati XML provenienti da origini non attendibili.

Esempi

Nell'esempio riportato di seguito viene eseguita una trasformazione con output in un file.

Visual Basic

' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("output.xsl")

' Execute the transform and output the results to a file.
xslt.Transform("books.xml", "books.html")


C#

// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("output.xsl");

// Execute the transform and output the results to a file.
xslt.Transform("books.xml", "books.html");


Nell'esempio vengono utilizzati i seguenti due file di input:

books.xml


<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
  <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>


output.xsl


<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="bookstore">
  <HTML>
    <BODY>
      <TABLE BORDER="2">
        <TR>
          <TD>ISBN</TD>
          <TD>Title</TD>
          <TD>Price</TD>
        </TR>
        <xsl:apply-templates select="book"/>
      </TABLE>
    </BODY>
  </HTML>
</xsl:template>
<xsl:template match="book">
  <TR>
    <TD><xsl:value-of select="@ISBN"/></TD>
    <TD><xsl:value-of select="title"/></TD>
    <TD><xsl:value-of select="price"/></TD>
  </TR>
</xsl:template>
</xsl:stylesheet>


Informazioni sulla versione

.NET Framework

Supportato in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1
Piattaforme

Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Codice thread safe

Una volta caricato, l'oggetto XslCompiledTransform diventa thread-safe. In altre parole, una volta applicato correttamente il metodo Load, è possibile chiamare il metodo Transform per più thread contemporaneamente.

Se il metodo Load viene nuovamente chiamato in uno dei thread mentre il metodo Transform viene chiamato in un altro thread, l'oggetto XslCompiledTransform termina l'esecuzione della chiamata a Transform continuando a utilizzare lo stato precedente. Il nuovo stato viene utilizzato dopo che è stata completata l'applicazione del metodo Load.

Nota Nota

Il metodo Load non è thread-safe se viene chiamato da più thread contemporaneamente.

Vedere anche

Riferimenti

Altre risorse