Displaying XML Using XSLT
XSLT stands for Extensible Stylesheet Language Transformation.
- XSLT is used to transform XML document from one form to another form.
- XSLT uses Xpath to perform matching of nodes to perform these transformation .
- The result of applying XSLT to XML document could be an another XML document, HTML, text or any another document from technology perspective.
- The XSL code is written within the XML document with the extension of (.xsl).
- In other words, an XSLT document is a different kind of XML document.
XML Namespace: XML Namespaces are the unique names .
- XML Namespace is a mechanism by which element or attribute is assigned to a group.
- XML Namespace is used to avoid the name conflicts in the XML document.
- XML Namespace is recommended by W3C.
XML Namespace Declaration:
It is declared using reserved attribute such as the attribute is xmlns or it can begin with xmlns:
- Syntax:
<element xmlns:name = "URL">
where
- Namespace starts with the xmlns.
- The word name is the namespace prefix.
- the URL is the namespace identifier.
- Example:
Consider the following xml document named Table.xml :-<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<?
xml-stylesheet
type
=
"text/css"
href
=
"rule.css"
?>
<
tables
>
<
table
>
<
tr
>
<
td
>Apple</
td
>
<
td
>Banana</
td
>
</
tr
>
</
table
>
<
table
>
<
height
>100</
height
>
<
width
>150</
width
>
</
table
>
</
tables
>
In the above code, there would be a name conflict, both of them contain the same table element but the contents of the table element are different.To handle this situation, the concept of XML Namespace is used.
- Example:
Consider the same XML document to resolve name conflict:<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<?
xml-stylesheet
type
=
"text/css"
href
=
"rule.css"
?>
<
tables
>
<
m:tr
>
<
m:td
>Apple</
m:td
>
<
m:td
>Banana</
m:td
>
</
m:tr
>
</
m:table
>
<
n:height
>100</
n:height
>
<
n:width
>150</
n:width
>
</
n:table
>
</
tables
>
Xpath:
- Xpath is an important component of XSLT standard.
- Xpath is used to traverse the element and attributes of an XML document.
- Xpath uses different types of expression to retrieve relevant information from the XML document.
- Xpath contains a library of standard functions.
Example:- bookstore/book[1] => Fetches details of first child of bookstore element.
- bookstore/book[last()] => Fetches details of last child of bookstore element.
Templates:
- An XSL stylesheet contains one or more set of rules that are called templates.
- A template contains rules that are applied when the specific element is matched.
- An XSLT document has the following things:
- The root element of the stylesheet.
- A file of extension .xsl .
- The syntax of XSLT i.e what is allowed and what is not allowed.
- The standard namespace whose URL is http://www.w3.org/1999/XSL/Transform.
Example:
In this example, creating the XML file that contains the information about five students and displaying the XML file using XSLT.
- XML file:
Creating Students.xml as:<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<?
xml-stylesheet
type
=
"text/xsl "
href
=
"Rule.xsl"
?>
<
student
>
<
s
>
<
name
> Divyank Singh Sikarwar </
name
>
<
branch
> CSE</
branch
>
<
age
>18</
age
>
<
city
> Agra </
city
>
</
s
>
<
s
>
<
name
> Aniket Chauhan </
name
>
<
branch
> CSE</
branch
>
<
age
> 20</
age
>
<
city
> Shahjahanpur </
city
>
</
s
>
<
s
>
<
name
> Simran Agarwal</
name
>
<
branch
> CSE</
branch
>
<
age
> 23</
age
>
<
city
> Buland Shar</
city
>
</
s
>
<
s
>
<
name
> Abhay Chauhan</
name
>
<
branch
> CSE</
branch
>
<
age
> 17</
age
>
<
city
> Shahjahanpur</
city
>
</
s
>
<
s
>
<
name
> Himanshu Bhatia</
name
>
<
branch
> IT</
branch
>
<
age
> 25</
age
>
<
city
> Indore</
city
>
</
s
>
</
student
>
In the above example, Students.xml is created and linking it with Rule.xsl which contains the corresponding XSL style sheet rules.
- XSLT Code:
Creating Rule.xsl as:
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
xsl:stylesheet
version
=
"1.0"
<
xsl:template
match
=
"/"
>
<
html
>
<
body
>
<
h1
align
=
"center"
>Students' Basic Details</
h1
>
<
table
border
=
"3"
align
=
"center"
>
<
tr
>
<
th
>Name</
th
>
<
th
>Branch</
th
>
<
th
>Age</
th
>
<
th
>City</
th
>
</
tr
>
<
xsl:for-each
select
=
"student/s"
>
<
tr
>
<
td
><
xsl:value-of
select
=
"name"
/></
td
>
<
td
><
xsl:value-of
select
=
"branch"
/></
td
>
<
td
><
xsl:value-of
select
=
"age"
/></
td
>
<
td
><
xsl:value-of
select
=
"city"
/></
td
>
</
tr
>
</
xsl:for-each
>
</
table
>
</
body
>
</
html
>
</
xsl:template
>
</
xsl:stylesheet
>
- Output :
Please Login to comment...