XslTransform Klasse

Definition

Achtung

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

Transformiert XML-Daten unter Verwendung eines XSLT (Extensible Stylesheet Language for Transformations)-Stylesheets.

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
Vererbung
XslTransform
Attribute

Beispiele

Im folgenden Beispiel wird das angegebene XML-Dokument transformiert und das Ergebnis in die Konsole ausgegeben.

//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)

Hinweise

Hinweis

Die XslTransform Klasse ist in der Microsoft .NET Framework Version 2.0 veraltet. Die XslCompiledTransform Klasse ist der neue XSLT-Prozessor. Weitere Informationen finden Sie unter Verwenden der XslCompiledTransform-Klasse und der Migration von der XslTransform-Klasse.

XslTransform unterstützt die XSLT 1.0-Syntax. Das XSLT-Stylesheet muss den Namespace http://www.w3.org/1999/XSL/Transformverwenden.

Zusätzliche Argumente können auch mithilfe der XsltArgumentList Klasse dem Stylesheet hinzugefügt werden. Diese Klasse enthält Eingabeparameter für die Stylesheet- und Erweiterungsobjekte, die aus dem Stylesheet aufgerufen werden können.

So transformieren Sie XML-Daten:

  1. Erstellen Sie ein XslTransform-Objekt.

  2. Verwenden Sie die Load Methode, um das Stylesheet für die Transformation zu laden. Diese Methode verfügt über mehrere Überladungen und kann ein Stylesheet mithilfe eines XmlReader, IXPathNavigableXPathNavigatoroder einer URL mit dem Speicherort der Datei laden.

  3. Verwenden Sie die Transform Methode, um die XML-Daten zu transformieren. Diese Methode verfügt über mehrere Überladungen und kann verschiedene Eingabe- und Ausgabetypen verarbeiten. Sie können auch ein XsltArgumentList zusätzliches Argument angeben, das während der Transformation als Eingabe verwendet werden soll.

Sicherheitshinweise

Beim Erstellen einer Anwendung, die die XslTransform-Klasse verwendet, sollten Ihnen die folgenden Elemente und deren Auswirkungen bekannt sein:

  • Erweiterungsobjekte sind standardmäßig aktiviert. Wenn der XsltArgumentList-Methode ein Transform-Objekt übergeben wird, das Erweiterungsobjekte enthält, so werden diese verwendet.

  • XSLT-Stylesheets können Verweise auf andere Dateien und eingebettete Skriptblöcke enthalten. Ein böswilliger Benutzer kann dies ausnutzen, indem Sie Daten- oder Stylesheets bereitstellen, die dazu führen, dass Ihr System verarbeitet wird, bis der Computer auf Ressourcen niedrig ist.

  • XSLT-Anwendungen, die in einer teilweise vertrauenswürdigen Umgebung ausgeführt werden, können einem Stylesheet-Spoofing ausgesetzt sein. Ein böswilliger Benutzer könnte z. B. ein Objekt mit einem schädlichen Stylesheet laden und es an einen anderen Benutzer übermitteln, der die Transform-Methode aufruft und die Transformation ausführt.

Diese Sicherheitsprobleme können verringert werden, indem XslTransform Objekte, XSLT-Stylesheets oder XML-Quelldaten aus nicht vertrauenswürdigen Quellen akzeptiert werden.

Skriptunterstützung

Diese Klasse unterstützt eingebettete Skripts mithilfe des msxsl:script Elements.

In Version 1.1 des .NET Framework bestimmt der Nachweis des Stylesheets, welche Berechtigungen eingebetteten Skripts erteilt werden.

  • Wenn das Stylesheet aus einem URI (Uniform Resource Identifier) geladen wurde, wird der URI verwendet, um die Nachweise zu erstellen. Dieser Nachweis umfasst den URI zusammen mit seiner Website und Zone.

  • Wenn das Stylesheet mithilfe einer anderen Quelle geladen wurde, können Sie Nachweise bereitstellen, indem Sie ein System.Security.Policy.Evidence Objekt an die Load Methode übergeben. Andernfalls hat die Skriptassembly voll vertrauenswürdig.

Halb vertrauenswürdige Aufrufer: UnmanagedCode Die Berechtigung zum Kompilieren des eingebetteten Skripts ist erforderlich. ControlEvidenceDie Berechtigung ist erforderlich, um die Load Methode bereitzustellenEvidence. Wird SecurityException ausgelöst, wenn der Aufrufer nicht über die erforderlichen Berechtigungen verfügt. Weitere Informationen finden Sie unter System.Security.Permissions.SecurityPermission und System.Security.Permissions.SecurityPermissionFlag.

Das msxsl:script Element weist die folgenden Anforderungen auf:

  • Das msxsl:script Element gehört zum urn:schemas-microsoft-com:xslt Namespace. Das Stylesheet muss die Namespacedeklaration xmlns:msxsl=urn:schemas-microsoft-com:xsltenthalten.

  • Das msxsl:script Element kann ein language Attribut enthalten, das die zu verwendende Skriptsprache angibt. Der Wert des language Attributs muss eine der folgenden Sein: C#, CSharp, VB, VisualBasic, JScript oder JavaScript. Da der Sprachname keine Groß-/Kleinschreibung beachtet, sind JavaScript und Javascript beide gültig. Wenn ein language Attribut nicht angegeben ist, wird standardmäßig JScript.

  • Das msxsl:script Element muss ein implements-prefix Attribut enthalten, das das Präfix enthält, das dem Skriptblock zugeordneten Namespace darstellt. Dieser Namespace muss innerhalb des Stylesheets definiert werden. Ein Stylesheet kann mehrere Skriptblöcke enthalten, die nach Namespace gruppiert sind. Skriptblöcke mit mehreren Sprachen innerhalb desselben Namespace können nicht vorhanden sein. Skriptblöcke können eine Funktion aufrufen, die in einem anderen Skriptblock definiert ist, sofern sich die Skriptblöcke innerhalb desselben Namespace befinden. Der Inhalt eines Skriptblocks wird entsprechend den Regeln und der Syntax der Skriptsprache analysiert (bereitgestellt durch das language Attribut). Wenn Sie beispielsweise einen C#-Skriptblock hatten, werden Kommentare von den // Zeichen präfixiert. Die Kommentare müssen gültiger XML-Inhalt sein.

Hinweis

Es wird empfohlen, Skriptblöcke in einem CDATA-Abschnitt umschließen.

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

Funktionen können innerhalb des msxsl:script-Elements deklariert werden. In der folgenden Tabelle werden die Namespaces angezeigt, die standardmäßig unterstützt werden.

Unterstützte Namespaces BESCHREIBUNG
System Systemklassen.
System.Collection Auflistungsklassen.
System.Text Textbehandlungsklassen.
System.Xml Kern-XML-Klassen.
System.Xml.Xsl XSLT-Klassen.
System.Xml.XPath XPath-Klassen (XML Path Language).

Die von den Skriptfunktionen definierten Argumente und Rückgabewerte müssen eine der unten aufgeführten W3C-Typen (World Wide Web Consortium) sein. In der folgenden Tabelle wird die Zuordnung zwischen den W3C-Typen, entweder XPath oder XSLT, und den entsprechenden .NET Framework Klassen erläutert.

W3C-Typ Entsprechende .NET-Klasse
Zeichenfolge (XPath) System.String
Boolean (XPath) System.Boolean
Zahl (XPath) System.Double
Ergebnisstrukturfragment (XSLT) System.Xml.XPath.XPathNavigator
Knotensatz (XPath) System.Xml.XPath.XPathNodeIterator

Wenn die Skriptfunktion einen der folgenden numerischen Typen verwendet: Int16, UInt16, Int32, UInt32, Int64, UInt64, Single oder Dezimalstellen, werden diese Typen mit Double versehen, die der W3C XPath-Typnummer zugeordnet sind.

Eine Ausnahme wird ausgelöst, wenn eine Funktion aufgerufen wird, die das Argumentergebnis nicht in einen der erforderlichen Typen konvertieren kann.

Hinweis

msxsl:script und msxsl:node-list sind die einzigen Funktionen aus dem urn:schemas-microsoft-com:xslt Namespace, die von der XslTransform Klasse unterstützt werden.

XslTransform verfügt über die Möglichkeit, den Code der gemeinsamen Sprachlaufzeit (CLR) als Erweiterungsmechanismus zu verwenden. Dies wird erreicht, indem eine Instanz einer Klasse an die XslTransform Klasse übergeben und die öffentlichen Methoden innerhalb eines XSLT-Stylesheets aufgerufen werden. Methoden, die mit dem params Schlüsselwort definiert sind, wodurch eine nicht angegebene Anzahl von Parametern übergeben werden kann, funktionieren in diesem Szenario nicht ordnungsgemäß. Weitere Details finden Sie unter Params .

Weitere Informationen finden Sie unter XSLT-Transformationen mit der XslTransform-Klasse.

Konstruktoren

XslTransform()

Initialisiert eine neue Instanz der XslTransform-Klasse.

Eigenschaften

XmlResolver
Veraltet.

Legt den XmlResolver fest, der zum Auflösen externer Ressourcen verwendet wird, wenn die Transform-Methode aufgerufen wird.

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
Load(IXPathNavigable)
Veraltet.

Lädt das im IXPathNavigable enthaltene XSLT-Stylesheet.

Load(IXPathNavigable, XmlResolver)
Veraltet.

Lädt das im IXPathNavigable enthaltene XSLT-Stylesheet.

Load(IXPathNavigable, XmlResolver, Evidence)

Lädt das im IXPathNavigable enthaltene XSLT-Stylesheet. Mit dieser Methode können Sie die Berechtigungen für das Stylesheet einschränken, indem Sie Beweise angeben.

Load(String)

Lädt das durch eine URL angegebene XSLT-Stylesheet.

Load(String, XmlResolver)

Lädt das durch eine URL angegebene XSLT-Stylesheet.

Load(XmlReader)
Veraltet.

Lädt das im XmlReader enthaltene XSLT-Stylesheet.

Load(XmlReader, XmlResolver)
Veraltet.

Lädt das im XmlReader enthaltene XSLT-Stylesheet.

Load(XmlReader, XmlResolver, Evidence)

Lädt das im XmlReader enthaltene XSLT-Stylesheet. Mit dieser Methode können Sie die Berechtigungen für das Stylesheet einschränken, indem Sie Beweise angeben.

Load(XPathNavigator)
Veraltet.

Lädt das im XPathNavigator enthaltene XSLT-Stylesheet.

Load(XPathNavigator, XmlResolver)
Veraltet.

Lädt das im XPathNavigator enthaltene XSLT-Stylesheet.

Load(XPathNavigator, XmlResolver, Evidence)

Lädt das im XPathNavigator enthaltene XSLT-Stylesheet. Mit dieser Methode können Sie die Berechtigungen für das Stylesheet einschränken, indem Sie Beweise angeben.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
Transform(IXPathNavigable, XsltArgumentList)
Veraltet.

Transformiert die XML-Daten in IXPathNavigable unter Verwendung der angegebenen args und gibt das Ergebnis an einen XmlReader aus.

Transform(IXPathNavigable, XsltArgumentList, Stream)
Veraltet.

Transformiert die XML-Daten in IXPathNavigable unter Verwendung der angegebenen args und gibt das Ergebnis an einen Stream aus.

Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver)

Transformiert die XML-Daten in IXPathNavigable unter Verwendung der angegebenen args und gibt das Ergebnis an einen Stream aus.

Transform(IXPathNavigable, XsltArgumentList, TextWriter)
Veraltet.

Transformiert die XML-Daten in IXPathNavigable unter Verwendung der angegebenen args und gibt das Ergebnis an einen TextWriter aus.

Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)

Transformiert die XML-Daten in IXPathNavigable unter Verwendung der angegebenen args und gibt das Ergebnis an einen TextWriter aus.

Transform(IXPathNavigable, XsltArgumentList, XmlResolver)

Transformiert die XML-Daten in IXPathNavigable unter Verwendung der angegebenen args und gibt das Ergebnis an einen XmlReader aus.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)
Veraltet.

Transformiert die XML-Daten in IXPathNavigable unter Verwendung der angegebenen args und gibt das Ergebnis an einen XmlWriter aus.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

Transformiert die XML-Daten in IXPathNavigable unter Verwendung der angegebenen args und gibt das Ergebnis an einen XmlWriter aus.

Transform(String, String)
Veraltet.

Transformiert die XML-Daten in der Eingabedatei und gibt das Ergebnis in eine Ausgabedatei aus.

Transform(String, String, XmlResolver)

Transformiert die XML-Daten in der Eingabedatei und gibt das Ergebnis in eine Ausgabedatei aus.

Transform(XPathNavigator, XsltArgumentList)
Veraltet.

Transformiert die XML-Daten in XPathNavigator unter Verwendung der angegebenen args und gibt das Ergebnis an einen XmlReader aus.

Transform(XPathNavigator, XsltArgumentList, Stream)
Veraltet.

Transformiert die XML-Daten in XPathNavigator unter Verwendung der angegebenen args und gibt das Ergebnis an einen Stream aus.

Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver)

Transformiert die XML-Daten in XPathNavigator unter Verwendung der angegebenen args und gibt das Ergebnis an einen Stream aus.

Transform(XPathNavigator, XsltArgumentList, TextWriter)
Veraltet.

Transformiert die XML-Daten in XPathNavigator unter Verwendung der angegebenen args und gibt das Ergebnis an einen TextWriter aus.

Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver)

Transformiert die XML-Daten in XPathNavigator unter Verwendung der angegebenen args und gibt das Ergebnis an einen TextWriter aus.

Transform(XPathNavigator, XsltArgumentList, XmlResolver)

Transformiert die XML-Daten in XPathNavigator unter Verwendung der angegebenen args und gibt das Ergebnis an einen XmlReader aus.

Transform(XPathNavigator, XsltArgumentList, XmlWriter)
Veraltet.

Transformiert die XML-Daten im XPathNavigator unter Verwendung der angegebenen args und gibt das Ergebnis an einen XmlWriter aus.

Transform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver)

Transformiert die XML-Daten im XPathNavigator unter Verwendung der angegebenen args und gibt das Ergebnis an einen XmlWriter aus.

Gilt für

Threadsicherheit

XslTransform Objekte sind nur threadsicher für Transformationsvorgänge. Andere Vorgänge sind nicht garantiert threadsicher. Sie müssen sicherstellen, dass während ladevorgängen keine anderen Methoden für das Objekt aufgerufen werden.