XSLT Tutorial
XSLT Tutorial
XSL stands for EXtensible Stylesheet Language, and is a style sheet language for XML documents.
XSLT stands for XSL Transformations. In this tutorial you will learn how to use XSLT to transform XML
documents into other formats, like XHTML.
XSL Languages
• It started with XSL and ended up with XSLT, XPath, and XSL-FO.
• It Started with XSL
• XSL stands for EXtensible Stylesheet Language.
The World Wide Web Consortium (W3C) started to develop XSL because there was a need for an XML-
based Stylesheet Language.
XSLT Introduction
• XSLT is a language for transforming XML documents into XHTML documents or to other XML
documents.
• XPath is a language for navigating in XML documents.
What is XSLT?
• XSLT stands for XSL Transformations
• XSLT is the most important part of XSL
• XSLT transforms an XML document into another XML document
• XSLT uses XPath to navigate in XML documents
• XSLT is a W3C Recommendation
• XSLT = XSL Transformations
• XSLT is the most important part of XSL.
1
• XSLT is used to transform an XML document into another XML document, or another type of
document that is recognized by a browser, like HTML and XHTML. Normally XSLT does this by
transforming each XML element into an (X)HTML element.
• With XSLT you can add/remove elements and attributes to or from the output file. You can also
rearrange and sort elements, perform tests and make decisions about which elements to hide and
display, and a lot more.
• A common way to describe the transformation process is to say that XSLT transforms an XML
source-tree into an XML result-tree.
XSLT Browsers
All major browsers have support for XML and XSLT.
Mozilla Firefox
Firefox 3 supports XML, XSLT, and XPath.
Internet Explorer
Internet Explorer 6 supports XML, XSLT, and XPath.
Internet Explorer 5 is NOT compatible with the official W3C XSL Recommendation.
Google Chrome
Chrome 1 supports XML, XSLT, and XPath.
Opera
Opera 9 supports XML, XSLT, and XPath. Opera 8 supports only XML + CSS.
Apple Safari
Safari 3 supports XML and XSLT.
XSLT - Transformation
Example study: How to transform XML into XHTML using XSLT.
The details of this example will be explained in the next chapter.
or:
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2
To get access to the XSLT elements, attributes and features we must declare the XSLT namespace at the
top of the document.
The xmlns:xsl="http://www.w3.org/1999/XSL/Transform" points to the official W3C XSLT namespace. If you
use this namespace, you must also include the attribute version="1.0".
Start with a Raw XML Document
We want to transform the following XML document ("cdcatalog.xml") into XHTML:<?xml version="1.0"
encoding="ISO-8859-1"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
.
.
</catalog>
Viewing XML Files in Firefox and Internet Explorer: Open the XML file (typically by clicking on a link) - The
XML document will be displayed with color-coded root and child elements. A plus (+) or minus sign (-) to the
left of the elements can be clicked to expand or collapse the element structure. To view the raw XML source
(without the + and - signs), select "View Page Source" or "View Source" from the browser menu.
Viewing XML Files in Netscape 6: Open the XML file, then right-click in XML file and select "View Page
Source". The XML document will then be displayed with color-coded root and child elements.
Viewing XML Files in Opera 7: Open the XML file, then right-click in XML file and select "Frame" / "View
Source". The XML document will be displayed as plain text.
3
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
.
.
</catalog>
If you have an XSLT compliant browser it will nicely transform your XML into XHTML.
Ok, let's look at a simplified version of the XSL file from the previous chapter:
Example
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<tr>
<td>.</td>
<td>.</td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Example Explained
Since an XSL style sheet is an XML document, it always begins with the XML declaration:
<?xml version="1.0" encoding="ISO-8859-1"?>.
The next element, <xsl:stylesheet>, defines that this document is an XSLT style sheet document (along with
the version number and XSLT namespace attributes).
The <xsl:template> element defines a template. The match="/" attribute associates the template with the
root of the XML source document.
The content inside the <xsl:template> element defines some HTML to write to the output.
The last two lines define the end of the template and the end of the style sheet.
The result from this example was a little disappointing, because no data was copied from the XML document
to the output. In the next chapter you will learn how to use the <xsl:value-of> element to select values from
the XML elements.
4
XSLT <xsl:value-of> Element
The <xsl:value-of> element is used to extract the value of a selected node.
Example
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<tr>
<td><xsl:value-of select="catalog/cd/title"/></td>
<td><xsl:value-of select="catalog/cd/artist"/></td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Example Explained
Note: The value of the select attribute is an XPath expression. An XPath expression works like navigating a
file system; where a forward slash (/) selects subdirectories.
The result of the transformation above will look like this:
The result from this example was also a little disappointing, because only one line of data was copied from
the XML document to the output. In the next chapter you will learn how to use the <xsl:for-each> element to
loop through the XML elements, and display all of the records.
Example
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
5
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Note: The value of the select attribute is an XPath expression. An XPath expression works like navigating a
file system; where a forward slash (/) selects subdirectories.
6
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<xsl:sort select="artist"/>
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Note: The select attribute indicates what XML element to sort on.
Example
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<xsl:if test="price > 10">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
7
</xsl:stylesheet>
Note: The value of the required test attribute contains the expression to be evaluated.
The code above will only output the title and artist elements of the CDs that has a price that is higher than
10.
Example
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<xsl:choose>
<xsl:when test="price > 10">
<td bgcolor="#ff00ff">
<xsl:value-of select="artist"/></td>
</xsl:when>
<xsl:otherwise>
<td><xsl:value-of select="artist"/></td>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
8
The code above will add a pink background-color to the "Artist" column WHEN the price of the CD is higher
than 10.
Another Example
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<xsl:choose>
<xsl:when test="price > 10">
<td bgcolor="#ff00ff">
<xsl:value-of select="artist"/></td>
</xsl:when>
<xsl:when test="price > 9">
<td bgcolor="#cccccc">
<xsl:value-of select="artist"/></td>
</xsl:when>
<xsl:otherwise>
<td><xsl:value-of select="artist"/></td>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
The code above will add a pink background color to the "Artist" column WHEN the price of the CD is higher
than 10, and a grey background-color WHEN the price of the CD is higher than 9 and lower or equal to 10.
9
Example
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="cd">
<p>
<xsl:apply-templates select="title"/>
<xsl:apply-templates select="artist"/>
</p>
</xsl:template>
<xsl:template match="title">
Title: <span style="color:#ff0000">
<xsl:value-of select="."/></span>
<br />
</xsl:template>
<xsl:template match="artist">
Artist: <span style="color:#00ff00">
<xsl:value-of select="."/></span>
<br />
</xsl:template>
</xsl:stylesheet>
A JavaScript Solution
In the previous chapters we have explained how XSLT can be used to transform a document from XML to
XHTML. We did this by adding an XSL style sheet to the XML file and let the browser do the transformation.
Even if this works fine, it is not always desirable to include a style sheet reference in an XML file (e.g. it will
not work in a non XSLT aware browser.)
A more versatile solution would be to use a JavaScript to do the transformation.
That is the beauty of XSLT! One of the design goals for XSLT was to make it possible to transform data from
one format to another, supporting different browsers and different user needs.
XSLT transformation on the client side is bound to be a major part of the browsers work tasks in the future,
as we will see a growth in the specialized browser market (Braille, aural browsers, Web printers, handheld
devices, etc.)
10
<price>10.90</price>
<year>1985</year>
</cd>
.
.
</catalog>
</xsl:stylesheet>
Notice that the XML file does not have a reference to the XSL file.
IMPORTANT: The above sentence indicates that an XML file could be transformed using many
different XSL style sheets.
Transforming XML to XHTML in the Browser
Here is the source code needed to transform the XML file to XHTML on the client:Example<html>
<head>
<script>
function loadXMLDoc(fname)
{
var xmlDoc;
// code for IE
if (window.ActiveXObject)
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation
&& document.implementation.createDocument)
{
xmlDoc=document.implementation.createDocument("","",null);
}
else
{
alert('Your browser cannot handle this script');
}
xmlDoc.async=false;
11
xmlDoc.load(fname);
return(xmlDoc);
}
function displayResult()
{
xml=loadXMLDoc("cdcatalog.xml");
xsl=loadXMLDoc("cdcatalog.xsl");
// code for IE
if (window.ActiveXObject)
{
ex=xml.transformNode(xsl);
document.getElementById("example").innerHTML=ex;
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation
&& document.implementation.createDocument)
{
xsltProcessor=new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
resultDocument = xsltProcessor.transformToFragment(xml,document);
document.getElementById("example").appendChild(resultDocument);
}
}
</script>
</head>
<body id="example" onLoad="displayResult()">
</body>
</html>
Tip: If you don't know how to write JavaScript, you can study our JavaScript tutorial.
Example Explained:
This function is used to display the XML file styled by the XSL file.
• Load XML and XSL file
• Test what kind of browser the user has
• If the user has a browser supporting the ActiveX object:
* Use the transformNode() method to apply the XSL style sheet to the xml document
* Set the body of the current document (id="example") to contain the styled xml document
• If the user has a browser that does not support the ActiveX object:
*Create a new XSLTProcessor object and import the XSL file to it
*Use the transformToFragment() method to apply the XSL style sheet to the xml document
*Set the body of the current document (id="example") to contain the styled xml document
12
To make XML data available to all kind of browsers, we must transform the XML document on the SERVER
and send it as XHTML back to the browser.
That's another beauty of XSLT. One of the design goals for XSLT was to make it possible to transform data
from one format to another on a server, returning readable data to all kinds of browsers.
The XML File and the XSLT File
Look at the XML document that you have seen in the previous chapters:
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
.
.
</catalog>
Notice that the XML file does not have a reference to the XSL file.
IMPORTANT: The above sentence indicates that an XML file could be transformed using many
different XSL style sheets.
'Load XML
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("cdcatalog.xml"))
'Load XSL
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
13
xsl.load(Server.MapPath("cdcatalog.xsl"))
'Transform file
Response.Write(xml.transformNode(xsl))
%>
Tip: If you don't know how to write ASP, you can study our ASP tutorial.
The first block of code creates an instance of the Microsoft XML parser (XMLDOM), and loads the XML file
into memory. The second block of code creates another instance of the parser and loads the XSL file into
memory. The last line of code transforms the XML document using the XSL document, and sends the result
as XHTML to your browser. Nice!
First, look at the XML document that will be used ("tool.xml"):<?xml version="1.0" encoding="ISO-8859-1"?>
<tool>
<field id="prodName">
<value>HAMMER HG2606</value>
</field>
<field id="prodNo">
<value>32456240</value>
</field>
<field id="price">
<value>$30.00</value>
</field>
</tool>
Then, take a look at the following style sheet ("tool.xsl"):<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<form method="post" action="edittool.asp">
<h2>Tool Information (edit):</h2>
<table border="0">
<xsl:for-each select="tool/field">
<tr>
<td><xsl:value-of select="@id"/></td>
<td>
<input type="text">
<xsl:attribute name="id">
<xsl:value-of select="@id" />
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="@id" />
</xsl:attribute>
<xsl:attribute name="value">
14
<xsl:value-of select="value" />
</xsl:attribute>
</input>
</td>
</tr>
</xsl:for-each>
</table>
<br />
<input type="submit" id="btn_sub" name="btn_sub" value="Submit" />
<input type="reset" id="btn_res" name="btn_res" value="Reset" />
</form>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
The XSL file above loops through the elements in the XML file and creates one input field for each XML
"field" element. The value of the XML "field" element's "id" attribute is added to both the "id" and "name"
attributes of each HTML input field. The value of each XML "value" element is added to the "value" attribute
of each HTML input field. The result is an editable HTML form that contains the values from the XML file.
Then, we have a second style sheet: "tool_updated.xsl". This is the XSL file that will be used to display the
updated XML data. This style sheet will not result in an editable HTML form, but a static HTML table:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Updated Tool Information:</h2>
<table border="1">
<xsl:for-each select="tool/field">
<tr>
<td><xsl:value-of select="@id" /></td>
<td><xsl:value-of select="value" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
15
function updateFile(xmlfile)
Dim xmlDoc,rootEl,f
Dim i
Tip: If you don't know how to write ASP, you can study our ASP tutorial.
Note: We are doing the transformation and applying the changes to the XML file on the server. This is a
cross-browser solution. The client will only get HTML back from the server - which will work in any browser.
XML Editors
If you are serious about XML, you will benefit from using a professional XML Editor.
XML is Text-based
XML is a text-based markup language.
16
One great thing about XML is that XML files can be created and edited using a simple text-editor like
Notepad.
However, when you start working with XML, you will soon find that it is better to edit XML documents using a
professional XML editor.
To be able to write error-free XML documents, you will need an intelligent XML editor!
XML Editors
Professional XML editors will help you to write error-free XML documents, validate your XML against a DTD
or a schema, and force you to stick to a valid XML structure.
At W3Schools we have been using XMLSpy for many years. XMLSpy, our favorite XML editor, also includes
a powerful XSLT editor. These are some of the features we especially like:
• XSLT editor, profiler and debugger
• Enhanced Grid View and Advanced Text View make it easy to navigate your code
• Support for XSLT 1.0 and schema-aware XSLT 2.0
• Built-in knowledge of XSL, XSLT, and XHTML
• Context-sensitive entry helpers
• XPath auto-completion and XPath analyzer
• Support for Java, C#, JavaScript, and VBScript in stylesheets
XSLT Summary
This tutorial has taught you how to use XSLT to transform XML documents into other formats, like XHTML.
You have learned how to add/remove elements and attributes to or from the output file.
You have also learned how to rearrange and sort elements, perform tests and make decisions about which
elements to hide and display.
For more information on XSLT, please look at our XSLT reference.
XPath
XPath is used to navigate through elements and attributes in an XML document.
17
XPath is a major element in the W3C's XSL standard. An understanding of XPath is fundamental for
advanced use of XML.
Without any XPath knowledge, you will not be able to create XSLT documents.
XSL-FO
XSL-FO describes the formatting of XML data for output to screen, paper or other media.
XSL-FO documents are XML files with information about the output layout and output content.
XSLT Elements
The links in the "Element" column point to attributes and more useful information about each specific
element.
FF: indicates the earliest version of Firefox that supports the tag
IE: indicates the earliest version of Internet Explorer that supports the tag
Note: Elements supported in IE 5 may have NON-standard behavior, because IE 5 was released before
XSLT became an official W3C Recommendation.
Element Description IE FF
apply-imports Applies a template rule from an imported style sheet 6.0 1.0
apply-templates Applies a template rule to the current element or to the 5.0 1.0
current element's child nodes
attribute Adds an attribute 5.0 1.0
attribute-set Defines a named set of attributes 6.0 1.0
call-template Calls a named template 6.0 1.0
choose Used in conjunction with <when> and <otherwise> to 5.0 1.0
express multiple conditional tests
comment Creates a comment node in the result tree 5.0 1.0
copy Creates a copy of the current node (without child nodes and 5.0 1.0
attributes)
copy-of Creates a copy of the current node (with child nodes and 6.0 1.0
attributes)
decimal-format Defines the characters and symbols to be used when 6.0 1.0
converting numbers into strings, with the format-number()
function
element Creates an element node in the output document 5.0 1.0
fallback Specifies an alternate code to run if the processor does not 6.0
support an XSLT element
for-each Loops through each node in a specified node set 5.0 1.0
if Contains a template that will be applied only if a specified 5.0 1.0
condition is true
import Imports the contents of one style sheet into another. Note: 6.0 1.0
An imported style sheet has lower precedence than the
importing style sheet
include Includes the contents of one style sheet into another. Note: 6.0 1.0
An included style sheet has the same precedence as the
including style sheet
key Declares a named key that can be used in the style sheet 6.0 1.0
with the key() function
message Writes a message to the output (used to report errors) 6.0 1.0
namespace-alias Replaces a namespace in the style sheet to a different 6.0
namespace in the output
number Determines the integer position of the current node and 6.0 1.0
formats a number
otherwise Specifies a default action for the <choose> element 5.0 1.0
output Defines the format of the output document 6.0 1.0
param Declares a local or global parameter 6.0 1.0
preserve-space Defines the elements for which white space should be 6.0 1.0
18
preserved
processing-instruction Writes a processing instruction to the output 5.0 1.0
sort Sorts the output 6.0 1.0
strip-space Defines the elements for which white space should be 6.0 1.0
removed
stylesheet Defines the root element of a style sheet 5.0 1.0
template Rules to apply when a specified node is matched 5.0 1.0
text Writes literal text to the output 5.0 1.0
transform Defines the root element of a style sheet 6.0 1.0
value-of Extracts the value of a selected node 5.0 1.0
variable Declares a local or global variable 6.0 1.0
when Specifies an action for the <choose> element 5.0 1.0
with-param Defines the value of a parameter to be passed into a 6.0 1.0
template
XSLT Functions
XQuery 1.0, XPath 2.0, and XSLT 2.0 share the same functions library.
XSLT Functions
XSLT includes over 100 built-in functions. There are functions for string values, numeric values, date and
time comparison, node and QName manipulation, sequence manipulation, Boolean values, and more.
The URI of the XSLT function namespace is:
http://www.w3.org/2005/02/xpath-functions
The default prefix for the function namespace is fn:.
Tip: Functions are often called with the fn: prefix, such as fn:string(). However, since fn: is the default prefix
of the namespace, the function names do not need to be prefixed when called.
Name Description
current() Returns the current node
document() Used to access the nodes in an external XML
document
element-available() Tests whether the element specified is supported by
the XSLT processor
format-number() Converts a number into a string
function-available() Tests whether the function specified is supported by
the XSLT processor
generate-id() Returns a string value that uniquely identifies a
specified node
key() Returns a node-set using the index specified by an
<xsl:key> element
system-property() Returns the value of the system properties
unparsed-entity-uri() Returns the URI of an unparsed entity
By: DataIntegratedEntity22592
Source: http://w3schools.com/xsl/default.asp
19