Eingaben für die XslCompiledTransform-Klasse

Die Transform-Methode akzeptiert drei Eingabetypen für das Quelldokument: ein Objekt, das die IXPathNavigable-Schnittstelle implementiert, ein XmlReader-Objekt, das das Quelldokument liest, oder einen Zeichenfolgen-URI.

Hinweis

Mit der XslCompiledTransform-Klasse wird Leerraum standardmäßig beibehalten. Dies entspricht Abschnitt 3.4 der W3C-Empfehlung zu XSLT, Version 1.0.

"IXPathNavigable"-Schnittstelle

Die IXPathNavigable-Schnittstelle ist in der XmlNode-Klasse und der XPathDocument-Klasse implementiert. Diese Klassen stellen einen speicherinternen Cache der XML-Daten dar.

  • Die XmlNode-Klasse basiert auf dem W3C-DOM (Document Object Model) und umfasst Bearbeitungsfunktionen.

  • Die XPathDocument-Klasse ist ein schreibgeschützter Datenspeicher, der auf dem XPath-Datenmodell basiert. XPathDocument ist die empfohlene Klasse zu XSLT-Verarbeitung. Im Vergleich zur XmlNode-Klasse bietet sie eine schnellere Leistung.

Hinweis

Transformationen werden auf das gesamte Dokument angewendet. Wenn Sie einen anderen Knoten als den Stammknoten des Dokuments übergeben, wird dadurch nicht verhindert, dass im Transformationsprozess auf alle Knoten im geladenen Dokument zugegriffen wird. Zum Transformieren eines Knotenfragments müssen Sie ein Objekt erstellen, das nur das Knotenfragment enthält, und dieses Objekt an die Transform-Methode übergeben. Weitere Informationen finden Sie unter Vorgehensweise: Transformieren eines Knotenfragments.

Im folgenden Beispiel wird die XslCompiledTransform.Transform-Methode zum Transformieren der Datei books.xml in die Datei books.html mit dem Stylesheet transform.xsl verwendet. Die Dateien „books.xml“ und „transform.xsl“ befinden sich in diesem Thema: How to: Ausführen einer XSLT-Transformation mittels einer Assembly.

// Open books.xml as an XPathDocument.
XPathDocument doc = new XPathDocument("books.xml");

// Create a writer for writing the transformed file.
XmlWriter writer = XmlWriter.Create("books.html");

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform(doc, writer);
' Open books.xml as an XPathDocument.
Dim doc As XPathDocument = New XPathDocument("books.xml")

' Create a writer for writing the transformed file.
Dim writer As XmlWriter = XmlWriter.Create("books.html")

' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

'Execute the transformation.
transform.Transform(doc, writer)

"XmlReader"-Objekt

Die Transform-Methode wird aus dem aktuellen Knoten vom XmlReader über alle untergeordneten Elemente geladen. Dadurch können Sie einen Teil eines Dokuments als Kontextdokument verwenden. Nach der Rückgabe der Transform-Methode wird der XmlReader auf dem nächsten Knoten nach dem Ende des Kontextdokuments platziert. Wenn das Ende des Dokuments erreicht wird, wird der XmlReader am Ende der Datei (EOF) platziert.

Im folgenden Beispiel wird die XslCompiledTransform.Transform-Methode zum Transformieren der Datei books.xml in die Datei books.html mit dem Stylesheet transform.xsl verwendet. Die Dateien „books.xml“ und „transform.xsl“ befinden sich in diesem Thema: How to: Ausführen einer XSLT-Transformation mittels einer Assembly.

// Create a reader to read books.xml
XmlReader reader = XmlReader.Create("books.xml");

// Create a writer for writing the transformed file.
XmlWriter writer = XmlWriter.Create("books.html");

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform(reader, writer);
'Create a reader to read books.xml
Dim reader As XmlReader = XmlReader.Create("books.xml")

' Create a writer for writing the transformed file.
Dim writer As XmlWriter = XmlWriter.Create("books.html")

' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

' Execute the transformation.
transform.Transform(reader, writer)

Zeichenfolgen-URI

Sie können auch den URI des Quelldokuments als XSLT-Eingabe angeben. Mit einem XmlResolver wird der URI aufgelöst. Sie können angeben, welcher XmlResolver verwendet werden soll, indem Sie ihn an die Transform-Methode übergeben. Wenn kein XmlResolver angegeben ist, verwendet die Transform-Methode einen Standard-XmlUrlResolver ohne Anmeldeinformationen.

Im folgenden Beispiel wird die XslCompiledTransform.Transform-Methode zum Transformieren der Datei books.xml in die Datei books.html mit dem Stylesheet transform.xsl verwendet. Die Dateien „books.xml“ und „transform.xsl“ befinden sich in diesem Thema: How to: Ausführen einer XSLT-Transformation mittels einer Assembly.

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform("books.xml", "books.html");
' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

' Execute the transformation.
transform.Transform("books.xml", "books.html")

Weitere Informationen finden Sie unter Auflösen von externen Ressourcen während der XSLT-Verarbeitung.

Siehe auch