DevTrain

Autor: Tobi Ulm

Transformieren von XML Dokumenten per XSL in ASP.NET

XML in Web Anwendungen sind die Gegenwart und die Zukunft und oft werden die Web Anwendungen aus XML Dokumenten erzeugt, die durch XSL Dokumente in HTML Format umgewandelt wurden. Wenn Sie zum Beispiel mit ASP 3.0 XML Dokumente benutzt haben kennen Sie sicherlich den Microsoft XML Parser MSXML. In .NET haben wir Entwickler einen ganz neuen Namespace mit mehreren XML Klassen die die uns die XML Funktionalität bieten die wir aus dem XML Parser bereits kennen. Der Namespace System.XML besteht aus mehreren Klassen die folgende Standards unterstützen:

- XML 1.0 Standard (inklusive DTD Unterstützung)
- XML Namespaces
- XML Schemas
- XPath
- XSL/ XSLT
- DOM (Level 2)
- SOAP 1.1

Um XML Unterstützung in Ihre ASP.NET Applikation einzubinden setzen Sie eine Referenz auf die System.Xml.dll.
Weiterhin sollten Sie, da wir nach dem Laden des XML Dokumentes mit XSL arbeiten, eine Referenz im QUellcode auf

System.Xml.Xsl setzen. Als wichtigste Klasse im ganzen System.XMl Namespace würde ich die XMlDocument Klasse nenenn, die ein komplettes XML Dokument repräsentiert. Diese Klasse werden wir auch benutzen um unser XML Dokument in den Speicher zu laden.

XmlDocument myDoc = new XmlDocument();

myDoc.Load(Server.MapPath("customers.xml"));

Wir werden das XML Dokument per XSL Stylesheet transformieren und einfach per Response.Write(string) wieder an den Client senden. Ich habe mir dazu eine Funktion XSLTransform() gebaut die zwei Parameter empfängt, nämlich ein XMLDocument Object und einen String auf das XSL Stylesheet.

myReturn = XSLTransform(myDoc, "style.xsl");

Response.Write(myReturn);

In der Funktion selbst erzeuge ich mir ein XSLTransform Objekt welches sind im bereits erwähnten System.Xml.Xsl Namespace enthalten ist. Dieses Objekt besitzt eine Funktion Load welche mir das XSL Stylesheet in den Speicher lädt.

XslTransform myXSL = new XslTransform();

xslDoc = Server.MapPath(xslDoc);

myXSL.Load(xslDoc);

Als nächstes erzeuge ich ein StringBuilder Objekt aus dem System.Text Namespace um den String für die Rückgabe zu speichern. Nächster Punkt wird seine ein StringWriter Objekt aus dem System.IO Namespace zu erstellen um den Rückgabe String zu schreiben. Als nächstes erzeuge ich mir ein XML DocumentNavigator Object welches ich mit dem XMLDocument Objekt fülle. Der DocumentNavigator ist ein Cursor basierendes Objekt für Ihr XML Dokument welches auch XML Daten lesen und schreiben kann.

StringBuilder strBuild = new StringBuilder();

StringWriter strWrite = new StringWriter(strBuild);

DocumentNavigator xmlNav = new DocumentNavigator(xmlDoc);

Anschliessend wird das XML Dokument durch das XSL Dokument transformiert. Dazu benutzen wir unser bereits erzeugtes XSLTransform Objekt und desssen Transform() Methode. Diese Funktion kann mehrere Parameter empfangen und ist mehrfach überladen. Ich verwende an dieser Stelle eine Paramterliste mit dem XMLNavigator Objekt und dem Ausgabe - String in Form eines TextWriters bzw. des oben erzeugten StringWriters. Die Ausgabe erfolgt über eine String Variable die den Inhalt des StringWriters zugewiesen bekommt.

myXSL.Transform(xmlNav, null, strWrite);

string sRet = strWrite.ToString();

return sRet;


Erfasst am: 03.04.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=413
© Copyright 2003 ppedv AG - http://www.ppedv.de