XslTransform Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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/Transform
verwenden.
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:
Erstellen Sie ein XslTransform-Objekt.
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.
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. ControlEvidence
Die 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 zumurn:schemas-microsoft-com:xslt
Namespace. Das Stylesheet muss die Namespacedeklarationxmlns:msxsl=urn:schemas-microsoft-com:xslt
enthalten.Das
msxsl:script
Element kann einlanguage
Attribut enthalten, das die zu verwendende Skriptsprache angibt. Der Wert deslanguage
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 einlanguage
Attribut nicht angegeben ist, wird standardmäßig JScript.Das
msxsl:script
Element muss einimplements-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 daslanguage
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 |
Transform(IXPathNavigable, XsltArgumentList, Stream) |
Veraltet.
Transformiert die XML-Daten in IXPathNavigable unter Verwendung der angegebenen |
Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver) |
Transformiert die XML-Daten in IXPathNavigable unter Verwendung der angegebenen |
Transform(IXPathNavigable, XsltArgumentList, TextWriter) |
Veraltet.
Transformiert die XML-Daten in IXPathNavigable unter Verwendung der angegebenen |
Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver) |
Transformiert die XML-Daten in IXPathNavigable unter Verwendung der angegebenen |
Transform(IXPathNavigable, XsltArgumentList, XmlResolver) |
Transformiert die XML-Daten in IXPathNavigable unter Verwendung der angegebenen |
Transform(IXPathNavigable, XsltArgumentList, XmlWriter) |
Veraltet.
Transformiert die XML-Daten in IXPathNavigable unter Verwendung der angegebenen |
Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver) |
Transformiert die XML-Daten in IXPathNavigable unter Verwendung der angegebenen |
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 |
Transform(XPathNavigator, XsltArgumentList, Stream) |
Veraltet.
Transformiert die XML-Daten in XPathNavigator unter Verwendung der angegebenen |
Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver) |
Transformiert die XML-Daten in XPathNavigator unter Verwendung der angegebenen |
Transform(XPathNavigator, XsltArgumentList, TextWriter) |
Veraltet.
Transformiert die XML-Daten in XPathNavigator unter Verwendung der angegebenen |
Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver) |
Transformiert die XML-Daten in XPathNavigator unter Verwendung der angegebenen |
Transform(XPathNavigator, XsltArgumentList, XmlResolver) |
Transformiert die XML-Daten in XPathNavigator unter Verwendung der angegebenen |
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.