XSL Transformation  
Frank Dzaebel, erstellt am: 15.07.2006, zuletzt geändert:  10.02.2008
Kategorie: Implementation, .NET-Version: 2.0, [Download] [Download2]

Beispiel einer Transformation von XML nach HTML über XslCompiledTransform.Transform().
Inhalt: MSDN-Dokumentation:
 - Ausgabe des transformierten HTMLs im WebBrowser  - Migrieren von der XslTransform-Klasse
 - Inhalt der Datei XmlFile1.xml  - XslCompiledTransform-Klasse
 - Inhalt der Datei XslFile1.xsl  - Verwenden der XslCompiledTransform-Klasse
 - Code für Form1  - Auflösen von externen Ressourcen während der XSLT-Verarbeitung

 Ausgabe des transformierten HTMLs im WebBrowser:




Inhalt der Datei XmlFile1.xml

    


Inhalt der Datei XslFile.xsl:




Code für Form1:
using System;
using System.Text;
using System.Windows.Forms;
using System.Xml.Xsl;
using System.Xml.XPath;
using System.IO;
using System.Xml;
using System.Globalization;

namespace XslTransform
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
      webBrowser1.DocumentText = TesteXsl();
    }

    private string TesteXsl()
    {
      XslCompiledTransform xsl = null;
      XPathDocument xPathDocument = null;
      TextWriter tw = null;
      string XMLPage = "../../XmlFile1.xml"; //Pfad zur XML-Datei
      string XSLStylesheet = "../../XslFile1.xsl"; //Pfad zur XSL-Datei
      try
      {
        xPathDocument = new XPathDocument(XMLPage, XmlSpace.Default);
        xsl = new XslCompiledTransform(true); // Normalfall ohne Debugging
        xsl.Load(XSLStylesheet);
        StringBuilder sb = new StringBuilder();
        tw = new StringWriter(sb);
        xsl.Transform(xPathDocument, null, tw);
        return sb.ToString();
      }
      catch (Exception ex)
      {
        string innerMsg = "";
        if (ex.InnerException != null)
          innerMsg = ex.InnerException.Message;
        MessageBox.Show("Fehler beim Konvertieren!\n" +
          innerMsg + "\n======================\n\n" +
          ex.Message + "\n" + ex.StackTrace);
        return "";
      }
      finally { if (tw != null) tw.Close(); }
    }
  }
}