Trasforma i dati XML utilizzando un foglio di stile XSLT.
System.Xml.Xsl.XslCompiledTransform
Spazio dei nomi: System.Xml.Xsl
Assembly: System.Xml (in System.Xml.dll)
Public NotInheritable Class XslCompiledTransform
public sealed class XslCompiledTransform
public ref class XslCompiledTransform sealed
[<Sealed>] type XslCompiledTransform = class end
Il tipo XslCompiledTransform espone i seguenti membri.
| Nome | Descrizione | |
|---|---|---|
|
XslCompiledTransform() | Inizializza una nuova istanza della classe XslCompiledTransform. |
|
XslCompiledTransform(Boolean) | Consente di inizializzare una nuova istanza della classe XslCompiledTransform con l'impostazione di debug specificata. |
| Nome | Descrizione | |
|---|---|---|
|
OutputSettings | Ottiene un oggetto XmlWriterSettings contenente le informazioni di output derivate dall'elemento xsl:output del foglio di stile. |
|
TemporaryFiles | Ottiene l'oggetto TempFileCollection contenente i file temporanei generati sul disco dopo una chiamata al metodo Load. |
| Nome | Descrizione | |
|---|---|---|
|
CompileToType | Compila un foglio di stile XSLT a un tipo specificato. |
|
Equals(Object) | Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object) |
|
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) |
|
GetHashCode | Funge da funzione hash per un determinato tipo. (Ereditato da Object) |
|
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
|
Load(IXPathNavigable) | Compila il foglio di stile contenuto nell'oggetto IXPathNavigable. |
|
Load(String) | Carica e compila il foglio di stile che si trova all'URI specificato. |
|
Load(Type) | Carica il foglio di stile compilato, creato utilizzando Compilatore XSLT (xsltc.exe). |
|
Load(XmlReader) | Compila il foglio di stile contenuto nell'oggetto XmlReader. |
|
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. |
|
Load(MethodInfo, Byte[], Type[]) | Carica un metodo da un foglio di stile compilato utilizzando l'utilità XSLTC.exe. |
|
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. |
|
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. |
|
MemberwiseClone | Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object) |
|
ToString | Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
|
Transform(IXPathNavigable, XmlWriter) | Esegue la trasformazione utilizzando il documento di input specificato dall'oggetto IXPathNavigable e invia i risultati a un oggetto XmlWriter. |
|
Transform(String, String) | Esegue la trasformazione utilizzando il documento di input specificato dall'URI e visualizza i risultati in un file. |
|
Transform(String, XmlWriter) | Esegue la trasformazione utilizzando il documento di input specificato dall'URI e visualizza i risultati in un oggetto XmlWriter. |
|
Transform(XmlReader, XmlWriter) | Esegue la trasformazione utilizzando il documento di input specificato dall'oggetto XmlReader e invia i risultati a un oggetto XmlWriter. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Transform(String, XsltArgumentList, TextWriter) | Esegue la trasformazione utilizzando il documento di input specificato dall'URI e visualizza i risultati in un oggetto TextWriter. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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(). |
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.
Nell'esempio riportato di seguito viene eseguita una trasformazione con output in un file.
' 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")
// 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>
.NET Framework
Supportato in: 4, 3.5, 3.0, 2.0.NET Framework Client Profile
Supportato in: 4, 3.5 SP1Windows 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.
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
|
|---|
|
Il metodo Load non è thread-safe se viene chiamato da più thread contemporaneamente. |
Nota