Using ADO.NET, XML & XSL to generate HTML

The Database

To give an idea about the tools which can be used, lets automate the creation of a side-bar menu.  In this example the menu will be saved as a complete HTML file.  In a real application the resulting HTML or XHTML would be inserted into the page which is being built from multiple sources.  The advantage of using XHTML would be the ability to use all the XML tools in .NET for building your page.

Here is the database table which has the content for the menu.

Here is the code for reading the database table and converting it to HTML.

using System;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Xml;
using System.Xml.Xsl;

namespace Menu
  class CreateMenu
    static void Main(string[] args)
      string source = @"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";"
        + @"User ID=Admin;Data Source=C:\web\web.mdb";
      string select = "SELECT * FROM MenuItem";
      OleDbConnection conn = new OleDbConnection( source );
      OleDbDataAdapter adapter = new OleDbDataAdapter( select, conn );
      DataSet ds = new DataSet();
      adapter.Fill( ds );
      ds.Tables[0].TableName = "MenuItem";
      ds.DataSetName = "Menu";
      ds.WriteXml( @"C:\web\MenuText.xml" );
      XmlDataDocument doc = new XmlDataDocument( ds );
      XslTransform trans = new XslTransform();
      trans.Load( @"C:\web\Menu.xsl" );
      StreamWriter sw = new StreamWriter( @"C:\web\Menu.html" );
      trans.Transform( doc, null, sw );

This code opens a connection to the database and reads the table into a DataSet.  The TableName and DateSetName are given names which will result in meaningful tags in the XML.  The DataSet is saved as XML using ds.WriteXml in case we want to take a look at it.  The DataSet is converted to an XmlDataDocument so that we can apply the transform to it.  The XSL stylesheet is loaded into the XslTransform object.  A StreamWriter is used by the XslTransform object to write the resulting HTML to a file.

You might also like...



Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“Measuring programming progress by lines of code is like measuring aircraft building progress by weight.” - Bill Gates