Condividi tramite


XslTransform Classe

Definizione

Attenzione

This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202

Trasforma i dati XML utilizzando un foglio di stile XSLT (Extensible Stylesheet Language for Transformations).

public ref class XslTransform sealed
public sealed class XslTransform
[System.Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public sealed class XslTransform
type XslTransform = class
[<System.Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")>]
type XslTransform = class
Public NotInheritable Class XslTransform
Ereditarietà
XslTransform
Attributi

Esempio

L'esempio seguente trasforma il documento XML specificato e restituisce il risultato nella console.

//Create a new XslTransform object.
XslTransform xslt = new XslTransform();

//Load the stylesheet.
xslt.Load("http://server/favorite.xsl");

//Create a new XPathDocument and load the XML data to be transformed.
XPathDocument mydata = new XPathDocument("inputdata.xml");

//Create an XmlTextWriter which outputs to the console.
XmlWriter writer = new XmlTextWriter(Console.Out);

//Transform the data and send the output to the console.
xslt.Transform(mydata,null,writer, null);
'Create a new XslTransform object.
Dim xslt As New XslTransform()

'Load the stylesheet.
xslt.Load(CType("http://server/favorite.xsl", String))

'Create a new XPathDocument and load the XML data to be transformed.
Dim mydata As New XPathDocument("inputdata.xml")

'Create an XmlTextWriter which outputs to the console.
Dim writer As New XmlTextWriter(Console.Out)

'Transform the data and send the output to the console.
xslt.Transform(mydata, Nothing, writer, Nothing)

Commenti

Nota

La XslTransform classe è obsoleta in Microsoft .NET Framework versione 2.0. La XslCompiledTransform classe è il nuovo processore XSLT. Per altre informazioni, vedere Uso della classe XslCompiledTransform e migrazione dalla classe XslTransform.

XslTransform supporta la sintassi XSLT 1.0. Il foglio di stile XSLT deve usare lo spazio dei nomi http://www.w3.org/1999/XSL/Transform.

È anche possibile aggiungere argomenti aggiuntivi al foglio di stile usando la XsltArgumentList classe . Questa classe contiene parametri di input per il foglio di stile e gli oggetti di estensione che possono essere chiamati dal foglio di stile.

Per trasformare i dati XML:

  1. Creare un XslTransform oggetto.

  2. Usare il metodo per caricare il Load foglio di stile per la trasformazione. Questo metodo include diversi overload e può caricare un foglio di stile usando un URL , , XPathNavigatorIXPathNavigableo un XmlReaderURL con il percorso del file.

  3. Usare il Transform metodo per trasformare i dati XML. Questo metodo include diversi overload e può gestire diversi tipi di input e output. È anche possibile specificare un XsltArgumentList oggetto contenente argomenti aggiuntivi da usare come input durante la trasformazione.

Security Considerations

Quando si crea un'applicazione in cui viene utilizzata la classe XslTransform, è necessario conoscere i seguenti elementi e le relative implicazioni:

  • Gli oggetti di estensione sono abilitati per impostazione predefinita. Vengono utilizzati se un oggetto XsltArgumentList contenente oggetti di estensione viene passato al metodo Transform.

  • Nei fogli di stile XSLT possono essere inclusi riferimenti ad altri file e a blocchi di script incorporati. Un utente malintenzionato può sfruttare questo problema fornendo dati o fogli di stile che quando vengono eseguiti causeranno l'elaborazione del sistema fino a quando il computer non viene eseguito con risorse basse.

  • Le applicazioni XSLT che vengono eseguite in un ambiente con attendibilità mista potrebbero consentire lo spoofing del foglio di stile. Ad esempio, un utente malintenzionato può caricare un oggetto con un foglio di stile dannoso e trasferirlo a un altro utente che in un secondo momento chiama il metodo Transform ed esegue la trasformazione.

Questi problemi di sicurezza possono essere ridotti non accettando XslTransform oggetti, fogli di stile XSLT o dati di origine XML da origini non attendibili.

Supporto di scripting

Questa classe supporta lo scripting incorporato usando l'elemento msxsl:script .

Nella versione 1.1 di .NET Framework, l'evidenza del foglio di stile determina le autorizzazioni concesse agli script incorporati.

  • Se il foglio di stile è stato caricato da un URI (Uniform Resource Identifier), l'URI viene usato per creare l'evidenza. Questa evidenza include l'URI insieme al relativo sito e zona.

  • Se il foglio di stile è stato caricato usando un'altra origine, è possibile fornire prove passando un System.Security.Policy.Evidence oggetto al Load metodo. In caso contrario, l'assembly di script ha attendibilità completa.

Chiamanti semi-attendibili: UnmanagedCode è necessaria l'autorizzazione per compilare lo script incorporato. ControlEvidence è necessaria l'autorizzazione per fornire Evidence al Load metodo. Viene SecurityException generato se il chiamante non dispone delle autorizzazioni necessarie. Per altre informazioni, vedere System.Security.Permissions.SecurityPermission e System.Security.Permissions.SecurityPermissionFlag.

L'elemento msxsl:script presenta i requisiti seguenti:

  • L'elemento msxsl:script appartiene allo urn:schemas-microsoft-com:xslt spazio dei nomi. Il foglio di stile deve includere la dichiarazione xmlns:msxsl=urn:schemas-microsoft-com:xsltdello spazio dei nomi .

  • L'elemento msxsl:script può includere un language attributo che specifica il linguaggio di scripting da usare. Il valore dell'attributo language deve essere uno dei seguenti: C#, CSharp, VB, VisualBasic, JScript o JavaScript. Poiché il nome del linguaggio non è distinzione tra maiuscole e minuscole, JavaScript e javascript sono entrambi validi. Se non è specificato un language attributo, il valore predefinito è JScript.

  • L'elemento msxsl:script deve includere un implements-prefix attributo contenente il prefisso che rappresenta lo spazio dei nomi associato al blocco di script. Questo spazio dei nomi deve essere definito all'interno del foglio di stile. Un foglio di stile può includere più blocchi di script raggruppati per spazio dei nomi. Non è possibile disporre di blocchi di script con più lingue nello stesso spazio dei nomi. I blocchi di script possono chiamare una funzione definita in un altro blocco di script, purché i blocchi di script si trovino nello stesso spazio dei nomi. Il contenuto di un blocco di script viene analizzato in base alle regole e alla sintassi del linguaggio di scripting (fornito dall'attributo language ). Ad esempio, se si dispone di un blocco di script C#, i // commenti verranno preceduti dai caratteri. I commenti devono essere contenuti XML validi.

Nota

È consigliabile eseguire il wrapping dei blocchi di script in una sezione CDATA.

<msxsl:script implements-prefix='xy' language='C#'>  
 <![CDATA[  
 // Add code here.  
 ]]>
</msxsl:script>  

È possibile dichiarare le funzioni all'interno dell'elemento msxsl:script. Nella tabella seguente sono illustrati gli spazi dei nomi supportati per impostazione predefinita.

Spazi dei nomi supportati Descrizione
System Classi di sistema.
System.Collection Classi di raccolte.
System.Text Classi di gestione del testo.
System.Xml Classi XML di base.
System.Xml.Xsl Classi XSLT.
System.Xml.XPath Classi XPath (XML Path Language).

Gli argomenti forniti e i valori restituiti definiti dalle funzioni di script devono essere uno dei tipi World Wide Web Consortium (W3C) elencati di seguito. Nella tabella seguente viene illustrato il mapping tra i tipi W3C, XPath o XSLT e le classi .NET Framework corrispondenti.

Tipo W3C Classe .NET equivalente
Stringa (XPath) System.String
Boolean (XPath) System.Boolean
Numero (XPath) System.Double
Frammento albero dei risultati (XSLT) System.Xml.XPath.XPathNavigator
Set di nodi (XPath) System.Xml.XPath.XPathNodeIterator

Se la funzione di script usa uno dei tipi numerici seguenti: Int16, UInt16, Int32, UInt32, Int64, UInt64, Single o Decimal, questi tipi sono coerced a Double, che esegue il mapping al numero di tipo XPath W3C.

Viene generata un'eccezione quando viene chiamata una funzione che non può convertire il risultato dell'argomento in uno dei tipi necessari.

Nota

msxsl:script e msxsl:node-list sono le uniche funzioni dello urn:schemas-microsoft-com:xslt spazio dei nomi supportate dalla XslTransform classe.

XslTransform ha la possibilità di usare il codice CLR (Common Language Runtime) come meccanismo di estensione. Questa operazione viene eseguita passando un'istanza XslTransform di una classe alla classe e chiamando i metodi pubblici all'interno di un foglio di stile XSLT. I metodi definiti con la params parola chiave, che consente di passare un numero non specificato di parametri, non funzionano correttamente in questo scenario. Per altre informazioni, vedere params .

Per altre informazioni, vedere Trasformazioni XSLT con la classe XslTransform.

Costruttori

XslTransform()

Inizializza una nuova istanza della classe XslTransform.

Proprietà

XmlResolver
Obsoleta.

Imposta l'oggetto XmlResolver utilizzato per risolvere risorse esterne quando viene chiamato il metodo Transform.

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
Load(IXPathNavigable)
Obsoleta.

Carica il foglio di stile XSLT contenuto nell'oggetto IXPathNavigable.

Load(IXPathNavigable, XmlResolver)
Obsoleta.

Carica il foglio di stile XSLT contenuto nell'oggetto IXPathNavigable.

Load(IXPathNavigable, XmlResolver, Evidence)

Carica il foglio di stile XSLT contenuto nell'oggetto IXPathNavigable. Questo metodo consente di limitare le autorizzazioni del foglio di stile specificando l'evidenza.

Load(String)

Carica il foglio di stile XSLT specificato da un URL.

Load(String, XmlResolver)

Carica il foglio di stile XSLT specificato da un URL.

Load(XmlReader)
Obsoleta.

Carica il foglio di stile XSLT contenuto nell'oggetto XmlReader.

Load(XmlReader, XmlResolver)
Obsoleta.

Carica il foglio di stile XSLT contenuto nell'oggetto XmlReader.

Load(XmlReader, XmlResolver, Evidence)

Carica il foglio di stile XSLT contenuto nell'oggetto XmlReader. Questo metodo consente di limitare le autorizzazioni del foglio di stile specificando l'evidenza.

Load(XPathNavigator)
Obsoleta.

Carica il foglio di stile XSLT contenuto nell'oggetto XPathNavigator.

Load(XPathNavigator, XmlResolver)
Obsoleta.

Carica il foglio di stile XSLT contenuto nell'oggetto XPathNavigator.

Load(XPathNavigator, XmlResolver, Evidence)

Carica il foglio di stile XSLT contenuto nell'oggetto XPathNavigator. Questo metodo consente di limitare le autorizzazioni del foglio di stile specificando l'evidenza.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
Transform(IXPathNavigable, XsltArgumentList)
Obsoleta.

Trasforma i dati XML in IXPathNavigable utilizzando gli args specificati e visualizza i risultati in un XmlReader .

Transform(IXPathNavigable, XsltArgumentList, Stream)
Obsoleta.

Trasforma i dati XML in IXPathNavigable utilizzando gli args specificati e visualizza i risultati in un Stream .

Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver)

Trasforma i dati XML in IXPathNavigable utilizzando gli args specificati e visualizza i risultati in un Stream .

Transform(IXPathNavigable, XsltArgumentList, TextWriter)
Obsoleta.

Trasforma i dati XML in IXPathNavigable utilizzando gli args specificati e visualizza i risultati in un TextWriter .

Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)

Trasforma i dati XML in IXPathNavigable utilizzando gli args specificati e visualizza i risultati in un TextWriter .

Transform(IXPathNavigable, XsltArgumentList, XmlResolver)

Trasforma i dati XML in IXPathNavigable utilizzando gli args specificati e visualizza i risultati in un XmlReader .

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)
Obsoleta.

Trasforma i dati XML in IXPathNavigable utilizzando gli args specificati e visualizza i risultati in un XmlWriter .

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

Trasforma i dati XML in IXPathNavigable utilizzando gli args specificati e visualizza i risultati in un XmlWriter .

Transform(String, String)
Obsoleta.

Trasforma i dati XML nel file di input e visualizza il risultato in un file di output.

Transform(String, String, XmlResolver)

Trasforma i dati XML nel file di input e visualizza il risultato in un file di output.

Transform(XPathNavigator, XsltArgumentList)
Obsoleta.

Trasforma i dati XML in XPathNavigator utilizzando gli args specificati e visualizza i risultati in un XmlReader .

Transform(XPathNavigator, XsltArgumentList, Stream)
Obsoleta.

Trasforma i dati XML in XPathNavigator utilizzando gli args specificati e visualizza i risultati in un Stream .

Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver)

Trasforma i dati XML in XPathNavigator utilizzando gli args specificati e visualizza i risultati in un Stream .

Transform(XPathNavigator, XsltArgumentList, TextWriter)
Obsoleta.

Trasforma i dati XML in XPathNavigator utilizzando gli args specificati e visualizza i risultati in un TextWriter .

Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver)

Trasforma i dati XML in XPathNavigator utilizzando gli args specificati e visualizza i risultati in un TextWriter .

Transform(XPathNavigator, XsltArgumentList, XmlResolver)

Trasforma i dati XML in XPathNavigator utilizzando gli args specificati e visualizza i risultati in un XmlReader .

Transform(XPathNavigator, XsltArgumentList, XmlWriter)
Obsoleta.

Trasforma i dati XML in XPathNavigator utilizzando gli argomenti specificati e visualizza i risultati in un XmlWriter .

Transform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver)

Trasforma i dati XML in XPathNavigator utilizzando gli argomenti specificati e visualizza i risultati in un XmlWriter .

Si applica a

Thread safety

XslTransform gli oggetti sono solo thread-safe per le operazioni di trasformazione. Altre operazioni non sono garantite per essere thread-safe. È necessario assicurarsi che nessun altro metodo venga chiamato sull'oggetto durante le operazioni di carico.