XSLT-Transformationen mit der XslTransform-Klasse
Aktualisiert: November 2007
Hinweis: |
---|
Die XslTransform-Klasse ist in .NET Framework Version 2.0 veraltet. Mithilfe der XslCompiledTransform-Klasse können Sie XSLT-Transformationen (Extensible Stylesheet Language for Transformations) vornehmen. Weitere Informationen finden Sie unter Verwenden der XslCompiledTransform-Klasse und Migrieren von der XslTransform-Klasse. |
Zweck der XSLT ist es, den Inhalt eines XML-Quelldokuments in ein anderes Dokument zu transformieren, das ein anderes Format oder eine andere Struktur aufweist (beispielsweise kann XML für die Verwendung in einer Website in HTML transformiert werden, oder aber in ein Dokument, das nur die Felder enthält, die von einer Anwendung benötigt werden). Dieser Transformationsprozess wird in der W3C-Empfehlung zu XSL-Transformationen (XSLT), Version 1.0 spezifiziert, die Sie unter www.w3.org/TR/xslt finden (nur auf Englisch verfügbar). In .NET Framework ist die XslTransform-Klasse im System.Xml.Xsl-Namespace der XSLT-Prozessor, der die Funktionen dieser Spezifikation implementiert. Einige wenige Features aus der Empfehlung des W3C zu XSLT, Version 1.0, die nicht implementiert wurden, sind in Ausgaben aus "XslTransform" aufgelistet. In der folgenden Abbildung wird die Transformationsarchitektur von .NET Framework dargestellt.
Übersicht
Transformationsarchitektur
Die XSLT-Empfehlung verwendet XPath (XML Path Language) zum Auswählen von Teilen eines XML-Dokuments, wobei XPath eine Abfragesprache ist, die zum Navigieren in Knoten einer Dokumentstruktur verwendet wird. Wie in der Abbildung gezeigt, wird die .NET Framework-Implementierung von XPath zum Auswählen von XML-Teilen verwendet, die in mehreren Klassen gespeichert sind, z. B. ein XmlDocument, ein XmlDataDocument oder ein XPathDocument. Ein XPathDocument ist ein optimierter XSLT-Datenspeicher, der bei Verwendung zusammen mit XslTransform leistungsfähige XSLT-Transformationen ermöglicht.
In der folgenden Tabelle werden Klassen aufgelistet, die beim Arbeiten mit XslTransform und XPath und deren Funktionen verwendet werden.
Klasse oder Schnittstelle |
Funktion |
---|---|
Eine API, die ein Cursormodell für die Navigation in einem Speicher bereitstellt und XPath-Abfragen unterstützt. Sie ermöglicht keine Bearbeitung des zugrunde liegenden Speichers. Verwenden Sie zum Bearbeiten die XmlDocument-Klasse. |
|
Eine Schnittstelle, die einem XPathNavigator für den Speicher eine CreateNavigator-Methode bereitstellt. |
|
Ermöglicht die Bearbeitung dieses Dokuments. Implementiert IXPathNavigable und ermöglicht so Dokumentbearbeitungen, bei denen nachfolgend XSLT-Transformationen benötigt werden. Weitere Informationen finden Sie unter XmlDocument-Eingaben in XslTransform. |
|
Wird aus dem XmlDocument abgeleitet. Stellt eine Brücke zwischen XML und den relationalen Daten her. Dazu wird ein DataSet verwendet, um die Speicherung von strukturierten Daten innerhalb des XML-Dokuments gemäß festgelegten Zuordnungen für das DataSet zu optimieren. Implementiert IXPathNavigable, sodass XSLT-Transformationen über relationale Daten ausgeführt werden können, die aus einer Datenbank abgerufen wurden. Weitere Informationen finden Sie unter XML-Integration mit relationalen Daten und ADO.NET. |
|
Diese Klasse ist für die XslTransform-Verarbeitung und für XPath-Abfragen optimiert. Sie stellt einen sehr leistungsfähigen schreibgeschützten Zwischenspeicher bereit. Implementiert IXPathNavigable und ist der bevorzugte Speicher für XSLT-Transformationen. |
|
Ermöglicht Navigation über XPath-Knotengruppen. Alle XPath-Auswahlmethoden für den XPathNavigator geben einen XPathNodeIterator zurück. Mehrere XPathNodeIterator-Objekte können für den gleichen Speicher erstellt werden, wobei jedes eine ausgewählte Knotengruppe darstellt. |
MSXML-XSLT-Erweiterungen
Die Funktionen msxsl:script und msxsl:node-set sind die einzigen XSLT-Erweiterungen von MSXML (Microsoft XML Core Services), die von der XslTransform-Klasse unterstützt werden.
Beispiel
Das folgende Codebeispiel lädt ein XSLT-Stylesheet, liest eine Datei mit dem Namen mydata.xml in ein XPathDocument ein und transformiert die Daten für eine fiktive Datei mit dem Namen myStyleSheet.xsl, wobei die formatierte Ausgabe an die Konsole gesendet wird.
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.XPath
Imports System.Xml.Xsl
Public Class Sample
Private filename As [String] = "mydata.xml"
Private stylesheet As [String] = "myStyleSheet.xsl"
Public Shared Sub Main()
Dim xslt As New XslTransform()
xslt.Load(stylesheet)
Dim xpathdocument As New XPathDocument(filename)
Dim writer As New XmlTextWriter(Console.Out)
writer.Formatting = Formatting.Indented
xslt.Transform(xpathdocument, Nothing, writer, Nothing)
End Sub 'Main
End Class 'Sample
using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;
public class Sample
{
private const String filename = "mydata.xml";
private const String stylesheet = "myStyleSheet.xsl";
public static void Main()
{
XslTransform xslt = new XslTransform();
xslt.Load(stylesheet);
XPathDocument xpathdocument = new
XPathDocument(filename);
XmlTextWriter writer = new XmlTextWriter(Console.Out);
writer.Formatting=Formatting.Indented;
xslt.Transform(xpathdocument, null, writer, null);
}
}
Siehe auch
Konzepte
Implementierung des XSLT-Prozessors durch die XslTransform-Klasse
Implementierung von freigegebenen Verhaltensweisen in der XslTransform-Klasse
"XPathNavigator" in Transformationen
"XPathNodeIterator" in Transformationen
XPathDocument-Eingaben in "XslTransform"
XmlDataDocument-Eingaben in "XslTransform"
XmlDocument-Eingaben in "XslTransform"