XslTransform Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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:
Creare un XslTransform oggetto.
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.
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 allourn:schemas-microsoft-com:xslt
spazio dei nomi. Il foglio di stile deve includere la dichiarazionexmlns:msxsl=urn:schemas-microsoft-com:xslt
dello spazio dei nomi .L'elemento
msxsl:script
può includere unlanguage
attributo che specifica il linguaggio di scripting da usare. Il valore dell'attributolanguage
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 unlanguage
attributo, il valore predefinito è JScript.L'elemento
msxsl:script
deve includere unimplements-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'attributolanguage
). 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 |
Transform(IXPathNavigable, XsltArgumentList, Stream) |
Obsoleta.
Trasforma i dati XML in IXPathNavigable utilizzando gli |
Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver) |
Trasforma i dati XML in IXPathNavigable utilizzando gli |
Transform(IXPathNavigable, XsltArgumentList, TextWriter) |
Obsoleta.
Trasforma i dati XML in IXPathNavigable utilizzando gli |
Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver) |
Trasforma i dati XML in IXPathNavigable utilizzando gli |
Transform(IXPathNavigable, XsltArgumentList, XmlResolver) |
Trasforma i dati XML in IXPathNavigable utilizzando gli |
Transform(IXPathNavigable, XsltArgumentList, XmlWriter) |
Obsoleta.
Trasforma i dati XML in IXPathNavigable utilizzando gli |
Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver) |
Trasforma i dati XML in IXPathNavigable utilizzando gli |
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 |
Transform(XPathNavigator, XsltArgumentList, Stream) |
Obsoleta.
Trasforma i dati XML in XPathNavigator utilizzando gli |
Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver) |
Trasforma i dati XML in XPathNavigator utilizzando gli |
Transform(XPathNavigator, XsltArgumentList, TextWriter) |
Obsoleta.
Trasforma i dati XML in XPathNavigator utilizzando gli |
Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver) |
Trasforma i dati XML in XPathNavigator utilizzando gli |
Transform(XPathNavigator, XsltArgumentList, XmlResolver) |
Trasforma i dati XML in XPathNavigator utilizzando gli |
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.