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

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"?>
<countries>
      <country name="USA" continent="North America">
            <stats>
                  <Population>301,139,947</Population>
                  <cities>
                        <city name="NYC" percentage="2.72"/>
                        <city name="Los Angeles" percentage="1.15"/>
                        <city name="Chicago" percentage="0.94"/>
                  </cities>
            </stats>
      </country>
      <country name="India" continent="Asia">
            <stats>
                  <Population>1,129,866,154</Population>
                  <cities>
                        <city name="Bangalore" percentage="0.50"/>
                        <city name="Chennai" percentage="0.58"/>
                        <city name="Kolkata" percentage="0.60"/>
                  </cities>
            </stats>
      </country>
      <country name="China" continent="Asia">
            <stats>
                  <Population>1,321,851,888</Population>
                  <cities>
                        <city name="Beijing" percentage="1.10"/>
                        <city name="Shanghai" percentage="1.51"/>
                        <city name="Tianjin" percentage="0.51"/>
                  </cities>
            </stats>
      </country>
</countries>

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="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
      <xsl:template match="/">
            <html>
                  <head/>
                  <body>
                        <h1>Countries</h1>
                        <xsl:apply-templates/>
                  </body>
            </html>
      </xsl:template>
      <xsl:template match="countries">
            <xsl:apply-templates/>
      </xsl:template>
      <xsl:template match="country">
            <h3>
                  <xsl:value-of select="@name"/> (<xsl:value-of select="@continent"/>)
            </h3>
            <xsl:apply-templates/>
      </xsl:template>
      <xsl:template match="stats">
            Population : <xsl:value-of select="@Population"/>
            <xsl:apply-templates/>
      </xsl:template>
      <xsl:template match="cities">
            <table border="1" >
                  <tr>
                        <td>Name</td>
                        <td>Percentage</td>
                  </tr>
                  <xsl:apply-templates/>
            </table>
      </xsl:template>
      <xsl:template match="city">
            <tr>
                  <td>
                        <xsl:value-of select="@name"/>
                  </td>
                  <td>
                        <xsl:value-of select="@percentage"/>
                  </td>
            </tr>
            <xsl:apply-templates/>
      </xsl:template>
</xsl:stylesheet>

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();
    xslt.Load(strXstFile);
    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();
    rd.Close();
    ms.Close();
    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
Comment:
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
Comment:
Very clear and useful. thanks :)
Title: Problem Related this code   
Name: Nitesh
Date: 2012-06-07 8:00:11 AM
Comment:
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
Comment:
[/pre]Cheap NFL,NBA,MLB,NHL
[url=http://www.jersey2shop.com/]Jerseys From China[/url]
[url=http://www.jersey2shop.com/]2012 nike nfl Jerseys[/url]
[url=http://www.jersey2shop.com/]cheap China Jerseys[/url]
[url=http://www.jersey2shop.com/]Sports Jerseys China[/url]
[url=http://www.jersey2shop.com/NFL-Jerseys-c68/]NFL Jerseys China[/url]
[url=http://www.jersey2shop.com/NBA-Jerseys-c77/]NBA Jerseys China[/url]
NHL Jerseys China
[url=http://www.jersey2shop.com/MLB-Jerseys-c94/]MLB Jerseys China[/url]NFL jerseys For Sale online.All Our Jerseys Are Sewn On and Directly From Chinese Jerseys Factory
[/pre]
[pre]We Are Professional China jerseys Wholesaler
[url=http://www.cheapjersey2store.com/]Wholesale cheap jerseys[/url]Cheap mlb jerseys
[url= http://www.cheapjersey2store.com/]2012 mlb all atar jerseys[/url]
[url= http://www.cheapjersey2store.com/ [/url]Cheap China Wholesael[/url]
[url= http://www.cheapjersey2store.com/]Wholesale jerseys From China[/url]
[url=http://www.cheapjersey2store.com/]2012 nike nfl Jerseys[/url]Free Shipping,Cheap Price,7 Days Deliver
[/pre]
[/pre]
We are professional jerseys manufacturer from china,wholesal
sports [url= http://www.cheapjersey2store.com/]Jerseys From China[/url]
[url=http://www.cheapjersey2store.com/NFL-Jerseys-c68]NFL jerseys China[/url]
[url=http://www.cheapjersey2store.com/NHL-Jerseys-c96/]NHL Jerseys China[/url]
[url=http://www.cheapjersey2store.com/NBA-Jerseys-c77/]NBA Jerseys China[/url]
[url=http://www.cheapjersey2store.com/MLB-Jerseys-c94/]MLB Jerseys China[/url]
[url= http://www.cheapjersey2store.com/]China Jerseys[/url],Free Shipping
[/pre]
[/pre]
We are professional jerseys manufacturer from china,wholesal
sports [url= http://www.jerseycaptain.com/]cheap jerseys sale online [/url]
[url= http://www.jerseycaptain.com/]2012 nike nfl Jerseys[/url]
[url=http://www.jerseycaptain.com/NFL-Jerseys-c68]cheap NFL jerseys China[/url]
[url=http://www.jerseycaptain.com/NHL-Jerseys-c96/]NHL Jerseys C
Title: C#_Error   
Name: abdul
Date: 2011-09-09 1:19:39 AM
Comment:
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 content.so plz give solution to this
Title: bindaas coding yar   
Name: Bobby Rana
Date: 2011-07-14 8:05:11 AM
Comment:
very helpful coding for undrstanding for software developer
Title: cool code   
Name: prateek
Date: 2011-06-09 7:17:40 AM
Comment:
its very nice....
Title: awesome code   
Name: Haribansh
Date: 2011-02-21 8:14:16 AM
Comment:
Hi,
How to generate pdf from asp.net using xml,xslt
Title: Excellent Code   
Name: Haribansh
Date: 2011-02-21 7:51:13 AM
Comment:
Hi,
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
Comment:
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
Comment:
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
Comment:
This is really useful for begineer.
Title: Nice Code   
Name: anamika
Date: 2010-07-06 8:24:46 AM
Comment:
very nice,easy to understand
Title: Very nice   
Name: anamika
Date: 2010-07-06 8:23:13 AM
Comment:
ur article is simple and nice to understand.
Title: Very useful   
Name: Christopher Dearden
Date: 2010-05-26 11:57:51 AM
Comment:
Excellent Stuff. Very useful for XSL beginners.
Title: Assemble Reference   
Name: Selvaraj
Date: 2010-04-13 3:08:25 AM
Comment:
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
Comment:
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
Comment:
I was having issues converting my asp.net 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
Comment:
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
Comment:
Is it important which encoding use for XmlTextwriter?
Title: nice   
Name: sanjana
Date: 2009-03-27 4:55:53 AM
Comment:
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
Comment:
Very nice....
Title: gooooood   
Name: gooooood
Date: 2009-02-20 6:22:34 PM
Comment:
goooooooooooooooooooooooooood
Title: Transform XMl/XSLT   
Name: Bale
Date: 2008-09-19 12:20:53 AM
Comment:
Good Article, cool
Title: Use of xslt   
Name: vinod
Date: 2008-06-26 3:13:29 AM
Comment:
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
Comment:
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
Comment:
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();
Response.Write(strhtml);
}
Title: Very Good Article   
Name: Supriya
Date: 2008-03-30 10:35:48 PM
Comment:
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
Comment:
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
Comment:
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
Comment:
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
Comment:
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
Comment:
This is very nice.Thanks
Title: Using XSLT to Transform XML Using ASP.NET   
Name: randz
Date: 2007-11-05 4:22:42 AM
Comment:
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
Comment:
This was very clear and usefull






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


©Copyright 1998-2024 ASPAlliance.com  |  Page Processed at 2024-05-18 11:13:51 AM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search