Using XSLT to Transform XML Using ASP.NET
page 5 of 6
by Sandesh Meda
Average Rating: This article has not yet been rated.
Views (Total / Last 10 Days): 63503/ 76

Transforming XML data using ASP.NET

Step 1: Create the XML file

XML can be in memory representation or a flat file. The XML file that I will be using for this illustration is shown below. This file has the population data of different countries along with the names of cities and percentage of population.

Listing 1

<?xml version="1.0" encoding="UTF-8"?>
      <country name="USA" continent="North America">
                        <city name="NYC" percentage="2.72"/>
                        <city name="Los Angeles" percentage="1.15"/>
                        <city name="Chicago" percentage="0.94"/>
      <country name="India" continent="Asia">
                        <city name="Bangalore" percentage="0.50"/>
                        <city name="Chennai" percentage="0.58"/>
                        <city name="Kolkata" percentage="0.60"/>
      <country name="China" continent="Asia">
                        <city name="Beijing" percentage="1.10"/>
                        <city name="Shanghai" percentage="1.51"/>
                        <city name="Tianjin" percentage="0.51"/>

Copy this data into a file and name it aspalliance.xml.

Step 2: Create the XSLT file 

The XSLT file can be created using your favorite editor. I recommend XML Spy because it has very good support for XML and XSLT. The stylesheet for this example is shown below.

Listing 2

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="">
      <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
      <xsl:template match="/">
      <xsl:template match="countries">
      <xsl:template match="country">
                  <xsl:value-of select="@name"/> (<xsl:value-of select="@continent"/>)
      <xsl:template match="stats">
            Population : <xsl:value-of select="@Population"/>
      <xsl:template match="cities">
            <table border="1" >
      <xsl:template match="city">
                        <xsl:value-of select="@name"/>
                        <xsl:value-of select="@percentage"/>

Some important notes about XSLT

You will have noticed that I have a template section for every XML element. When the XSLT processor encounters the statement <xsl:apply-templates/>, it searches for the template that matches (ex: <xsl:template match="city"> ) and applies it.

The syntax <xsl:value-of select="@percentage"/> is used to print the value of the element/attribute.

Copy this XSLT into a file and name it aspalliance.xslt.

Step 3: Create a web page that displays the XML using XSLT in ASP.NET 

ASP.NET has excellent support for XML and XSLT. First, import the necessary namespaces.

Listing 3

using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
using System.IO;

Add the XML and XSLT files into the web project. Create an aspx page (or a ascx control) and use the method (ApplyXSLTransformation()) below that will read the XML and the XSLT document and return a string that is the HTML representation of the transformed XML data.

Listing 4

private string ApplyXSLTransformation()
    string strHtml;
    string strXstFile = Server.MapPath("aspalliance.xslt");
    XslCompiledTransform x = new XslCompiledTransform();
    // Load the XML 
    XPathDocument doc = new XPathDocument(Server.MapPath("aspalliance.xml"));
    // Load the style sheet.
    XslCompiledTransform xslt = new XslCompiledTransform();
    MemoryStream ms = new MemoryStream();
    XmlTextWriter writer = new XmlTextWriter(ms, Encoding.ASCII);
    StreamReader rd = new StreamReader(ms);
    xslt.Transform(doc, writer);
    ms.Position = 0;
    strHtml = rd.ReadToEnd();
    return strHtml;

You can use the string (strHtml) that is returned in this method in anyway useful for your application. Ex: You can assign it to a label or process it further as needed.

Step 4: View the Output

The output of transformation is shown in the figure below.

Figure 2

View Entire Article

User Comments

Title: Transforming XML data using ASP.NET   
Name: Nilay Shah
Date: 2012-12-25 7:03:24 AM
Fantastic Fantastic Fantastic...!!!
Title: Using XSLT to Transform XML how to get route directory full path   
Name: Birendra Nigam
Date: 2012-07-03 6:13:11 AM
Very clear and useful. thanks :)
Title: Problem Related this code   
Name: Nitesh
Date: 2012-06-07 8:00:11 AM
There is only Static columns but i want dynamic columns from another xml. and i want multiple header.
(1) main header (2) Sub header.
Can any one provide me solution
Title: 2012 NFL jerseys   
Name: NIKE NFL jerseys
Date: 2012-05-20 11:32:15 PM
[/pre]Cheap NFL,NBA,MLB,NHL
[url=]Jerseys From China[/url]
[url=]2012 nike nfl Jerseys[/url]
[url=]cheap China Jerseys[/url]
[url=]Sports Jerseys China[/url]
[url=]NFL Jerseys China[/url]
[url=]NBA Jerseys China[/url]
NHL Jerseys China
[url=]MLB Jerseys China[/url]NFL jerseys For Sale online.All Our Jerseys Are Sewn On and Directly From Chinese Jerseys Factory
[pre]We Are Professional China jerseys Wholesaler
[url=]Wholesale cheap jerseys[/url]Cheap mlb jerseys
[url=]2012 mlb all atar jerseys[/url]
[url= [/url]Cheap China Wholesael[/url]
[url=]Wholesale jerseys From China[/url]
[url=]2012 nike nfl Jerseys[/url]Free Shipping,Cheap Price,7 Days Deliver
We are professional jerseys manufacturer from china,wholesal
sports [url=]Jerseys From China[/url]
[url=]NFL jerseys China[/url]
[url=]NHL Jerseys China[/url]
[url=]NBA Jerseys China[/url]
[url=]MLB Jerseys China[/url]
[url=]China Jerseys[/url],Free Shipping
We are professional jerseys manufacturer from china,wholesal
sports [url=]cheap jerseys sale online [/url]
[url=]2012 nike nfl Jerseys[/url]
[url=]cheap NFL jerseys China[/url]
[url=]NHL Jerseys C
Title: C#_Error   
Name: abdul
Date: 2011-09-09 1:19:39 AM
hi ,i am new to xslt and i used ur code shown above but in function at the line "XmlTextWriter writer = new XmlTextWriter(ms, Encoding.ASCII);" i am getting error that is Encoding is not existing in the current plz give solution to this
Title: bindaas coding yar   
Name: Bobby Rana
Date: 2011-07-14 8:05:11 AM
very helpful coding for undrstanding for software developer
Title: cool code   
Name: prateek
Date: 2011-06-09 7:17:40 AM
its very nice....
Title: awesome code   
Name: Haribansh
Date: 2011-02-21 8:14:16 AM
How to generate pdf from using xml,xslt
Title: Excellent Code   
Name: Haribansh
Date: 2011-02-21 7:51:13 AM
this code is very attactive code to clear the consept.
Thanks alot
Title: A very helpful article   
Name: Dave
Date: 2010-10-06 9:47:58 AM
I found this article extremely helpful! The C# code is not only up to date but it also works perfectly.

Thanks you very much indeed.
Title: Thanks for you article   
Name: bhupal
Date: 2010-09-23 3:04:30 PM
It is helped me not only this all the articles all very good and impressed the way of presentation of the articles
Title: Useful Code   
Name: Lakshman
Date: 2010-07-14 7:51:35 AM
This is really useful for begineer.
Title: Nice Code   
Name: anamika
Date: 2010-07-06 8:24:46 AM
very nice,easy to understand
Title: Very nice   
Name: anamika
Date: 2010-07-06 8:23:13 AM
ur article is simple and nice to understand.
Title: Very useful   
Name: Christopher Dearden
Date: 2010-05-26 11:57:51 AM
Excellent Stuff. Very useful for XSL beginners.
Title: Assemble Reference   
Name: Selvaraj
Date: 2010-04-13 3:08:25 AM
I am getting the below error "The type or namespace name 'MemoryStream' could not be found (are you missing a using directive or an assembly reference?)" . Please advice.
Title: Good   
Name: KV Subrahmanyam
Date: 2010-01-14 2:17:05 AM
Very nice post here !

- KV Subrahmanyam,
CMC Ltd, Hyderabad.
Title: The Most Helpful I've Found   
Name: dtotheo
Date: 2009-05-22 10:45:34 AM
I was having issues converting my 1.0 xsltransform to xslcompiledtransform in 2.0. This method works perfectly.
Title: Really helpful   
Name: Orangesoft
Date: 2009-05-03 4:24:17 AM
This topic is really helpful. I think this will be really helpful for displaying xml RSS feeds on any web page.

Thanks a lot!!
Title: Encoding   
Name: fery
Date: 2009-04-15 1:57:38 PM
Is it important which encoding use for XmlTextwriter?
Title: nice   
Name: sanjana
Date: 2009-03-27 4:55:53 AM
this is very useful...
but there is missing he name space i.e
using System.Text;
Q:-> i want to know how can i generate pdf from xml file?...

can u plz help me ...
Title: very nice   
Name: John
Date: 2009-02-27 5:13:39 AM
Very nice....
Title: gooooood   
Name: gooooood
Date: 2009-02-20 6:22:34 PM
Title: Transform XMl/XSLT   
Name: Bale
Date: 2008-09-19 12:20:53 AM
Good Article, cool
Title: Use of xslt   
Name: vinod
Date: 2008-06-26 3:13:29 AM
hi this is very useful article for developer who are beginner
in xml and xslt.

thanks ..
Title: Self explanatory document   
Name: Sachin Shinde
Date: 2008-06-25 5:37:19 AM
Good article, only the thing that is missing, how to transform XML data in pdf format.
Title: very useful   
Name: amit kumar aya
Date: 2008-05-12 3:36:32 AM
hi this is very good article but add one more thing that i come accross

namespace add one more
1.using System.Text;

and call this method from page load like this

protected void Page_Load(object sender, EventArgs e)
string strhtml=ApplyXSLTransformation();
Title: Very Good Article   
Name: Supriya
Date: 2008-03-30 10:35:48 PM
Very nice article. One question...How do I display the return html string so that it looks like you have in the Figure 2 above
Title: Using XSLT to Transform XML Using ASP.NET   
Name: xyz
Date: 2008-02-25 1:23:22 AM
this code is very good and very usefull thanks a lot
Title: Using XST to Transofrm XML using ASP.NET   
Name: Sandesh Meda
Date: 2008-02-22 1:13:45 PM
Did you ensure you have imported all the required namespaces?
Title: Using XSLT to Transform XML Using ASP.NET   
Name: priya
Date: 2008-02-19 6:57:09 PM
i tried this example i got this error
CS0103: The name 'Encoding' does not exist in the current context

how can i solve.
can you help me
Title: Using XSLT to Transform XML Using ASP.NET   
Name: akbar
Date: 2008-01-20 11:09:32 AM
this is very good code
Title: Using XSLT to Transform XML Using ASP.NET   
Name: Bhanu Prakash
Date: 2007-11-06 5:34:44 AM
This is very nice.Thanks
Title: Using XSLT to Transform XML Using ASP.NET   
Name: randz
Date: 2007-11-05 4:22:42 AM
This is very useful article. Thanks for sharing.
Title: Using XSLT to Transform XML Using ASP.NET   
Name: Mike
Date: 2007-11-02 12:30:23 PM
This was very clear and usefull

Community Advice: ASP | SQL | XML | Regular Expressions | Windows

©Copyright 1998-2024  |  Page Processed at 2024-05-23 6:03:46 PM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search