Use XSLT for Transformation of XML into HTML

Use XSLT for Transformation



Usage


XSL stands for EXtensible Stylesheet Language. It is a style sheet language for XML documents.
XSLT means for transforming XML files using XSL.

Before going continue, I presume that you might be familiar with HTML, XML, XPath etc.

As I said above, XSLT is used to transform XML files into other formats like HTML or any other format which can be understand by browsers. Using XSLT, we can search, sort, rearrange, put conditional checks (if) and loop through (foreach) XML elements. In this article, I will a sample XML and XSLT file to transform it to HTML.

Before moving ahead, let's take a look at the elements and methods of XSLT. I have not covered here everything but the most useful elements and methods.

Elements

comment -> is used to create a comment node in the result tree
copy -> is used to copy the current node without child nodes and their attributes
copy-of -> is used to copy the current node with child nodes and their attributes
for-each -> is used to iterate through each node in the current node set
if -> to put a conditional check
sort -> is used to sort the result tree
text -> is used to write literal text
transform -> is used to define the root element of the stylesheet
value-of -> is used to get the value of the selected node
variable -> is used to declare a global or local variable

Methods

current() -> is used to get the current node
format-number() -> is used to convert a number to a string


Example



Sample XML file



I have taken a simple xml file to give an example of using XSLT.

BookStore.xml

< ?xml version="1.0" encoding="ISO-8859-1" ? >
< BookStore >
< Book >
< Type >Comics< /Type >
< Title >Nagraj< /Title >
< Company >Raj Comics< /Company >
< Author >Raj< /Author >
< PublicationDate >01-Jan-2008< /PublicationDate >
< Price >35< /Price >
< /Book >

< Book >
< Type >Magzine< /Type >
< Title >StarDust< /Title >
< Company >StartDust Co.< /Company >
< Author >Multiple< /Author >
< PublicationDate >05-Feb-2008< /PublicationDate >
< Price >120< /Price >
< /Book >

< Book >
< Type >NewsPaper< /Type >
< Title >The Times of India< /Title >
< Company >Times Group< /Company >
< Author >Multiple< /Author >
< PublicationDate >01-Jan-2008< /PublicationDate >
< Price >5< /Price >
< /Book >

< Book >
< Type >Comics< /Type >
< Title >Billu and Pinky< /Title >
< Company >Diamond Comics< /Company >
< Author >Pran< /Author >
< PublicationDate >01-Mar-2008< /PublicationDate >
< Price >50< /Price >
< /Book >

< /BookStore >


XSLT



Here is the XSLT to transform the above xml file into simple HTML.

< ?xml version="1.0" encoding="utf-8"? >
< xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" >
< xsl:output method="html" indent="yes"/ >
< xsl:template match="/" >
< html >
< body >
< table border="1px" >
< tr >
< td colspan="6" align="center" >
< h2 >BookStore< /h2 >
< /td >
< /tr >
< tr >
< th >Book Type< /th >
< th >Company< /th >
< th >Title< /th >
< th >Author< /th >
< th >Publish Date< /th >
< th >Price< /th >
< /tr >
< xsl:for-each select="/BookStore/Book" >
< tr >
< td >
< xsl:value-of select="Type"/ >
< /td >
< td >
< xsl:value-of select="Company"/ >
< /td >
< td >
< xsl:value-of select="Title"/ >
< /td >
< td >
< xsl:value-of select="Author"/ >
< /td >
< td >
< xsl:value-of select="PublicationDate"/ >
< /td >
< td align="right" >
< xsl:value-of select="Price"/ >
< /td >
< /tr >
< /xsl:for-each >
< /table >
< /body >
< /html >
< /xsl:template >
< /xsl:stylesheet >


I have used for-each and value-of elements in the XSLT. for-each element is used to iterate through each node found for specified template match (). You can test it in VS 2005 or 2008. Just open the XSLT file in VS and choose following option from the top menu. XML -> Show XSLT Output.

The output would be a simple table showing all the records with columns specified in the XSLT.





I hope that the above example and explanation is good enough to start using XSLT. I will cover more options like if element into my next articles. Any query, doubt, correction are most welcome.


Umesh M


Attachments

Comments

Author: UM31 Mar 2009 Member Level: Gold   Points : 0

Since, XML and XSLT can't be seen, I have attached files here.

Author: UM31 Mar 2009 Member Level: Gold   Points : 0

Files.



  • Do not include your name, "with regards" etc in the comment. Write detailed comment, relevant to the topic.
  • No HTML formatting and links to other web sites are allowed.
  • This is a strictly moderated site. Absolutely no spam allowed.
  • Name:
    Email: