7/9/2019
Prepared By: Dr.Saranya.K.G 1
XSL
Prepared By : Dr.Saranya.K.G
• XSL stands for EXtensible Stylesheet
Language, and is a style sheet language
for XML documents.
• XSLT stands for XSL Transformations.
Prepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 2
What is XSL?
• XSL is the style sheet language for XML
• Style sheets are typically used to specify
how information should be displayed.
• They lead to separation of document's
content from presentational information.
Prepared By : Dr.Saranya.K.G
XSL Languages
XSL consists of three parts:
• XSLT is a language for transforming
XML documents
• XPath is a language for defining parts of
an XML document
• XSL-FO is a language for formatting XML
documents
Prepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 3
What is XSLT?
• 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
Prepared By : Dr.Saranya.K.G
History
• XSL is derived from DSSSL
– Document Style and Semantics Specification
Language
• The style sheet language for SGML
• Based on the Scheme (Lisp) programming language
– XSL uses XML syntax instead of Scheme
Prepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 4
XSL Architecture
Source
XML doc
XSL
stylesheet
XSL
processor
Target
Document
Prepared By : Dr.Saranya.K.G
XSL Use Scenarios
XML
document
XSL renderer
WWW browser
XML + f.o.
presentation
HTML
presentation
XSL
XSL
Prepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 5
.xml
XSLT
Processor
.xsl
XSLT Stylesheet
XSLT Processor
.xml
XML Document
XML Document
Prepared By : Dr.Saranya.K.G
.xml
XSLT
Processor
.xsl
XSLT Stylesheet
XSLT Processor
XML Document
.html
HTML Document
Prepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 6
XSL Use Scenarios
Application A Application B
XML format A XML format BXSLT
A B
stylesheets
Prepared By : Dr.Saranya.K.G
How does XSL work?
• The XSL processor parses the source
XML document
• Templates in the stylesheet are matched
against patterns in the source document
• The templates are expanded, producing
fragments of the target document
• This process is (typically) applied
recursively until all pattern-matches have
been exhausted
• The complete target document is
produced as outputPrepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 7
XSLT - Transformation
• Correct Style Sheet Declaration
• The root element that declares the
document to be an XSL style sheet is
<xsl:stylesheet> or <xsl:transform>.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Or
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Prepared By : Dr.Saranya.K.G
cdcatalog.xml cdcatalog.xsl
Prepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 8
Create an XSL Style Sheet
<?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>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
"cdcatalog.xsl"
Prepared By : Dr.Saranya.K.G
Link the XSL Style Sheet to the XML
Document
• Add the XSL style sheet reference to your XML
document ("cdcatalog.xml"):
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
<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> View the resultPrepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 9
1. XSLT <xsl:template> Element
• An XSL style sheet consists of one or
more set of rules that are called
templates.
• A template contains rules to apply when a
specified node is matched.
Prepared By : Dr.Saranya.K.G
The <xsl:template> Element
• The <xsl:template> element is used to
build templates.
• The match attribute is used to associate a
template with an XML element.
• The match attribute can also be used to
define a template for the entire XML
document.
• The value of the match attribute is an
XPath expression (i.e. match="/" defines
the whole document).
Prepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 10
<?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>
1cdcatalog.xsl
Prepared By : Dr.Saranya.K.G
1cdcatalog.xml
1cdcatalog.xsl
View the result
Prepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 11
2. XSLT <xsl:value-of> Element
• The <xsl:value-of> element is used to
extract the value of a selected node.
Prepared By : Dr.Saranya.K.G
<?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>
xsl value-of.xsl
Prepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 12
1cdcatalog.xml xsl value-of.xsl
View the Result
Prepared By : Dr.Saranya.K.G
3. XSLT <xsl:for-each> Element
• The <xsl:for-each> element allows you to
do looping in XSLT.
• The XSL <xsl:for-each> element can be
used to select every XML element of a
specified node-set:
Prepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 14
4. XSLT <xsl:sort> Element
• The <xsl:sort> element is used to sort the
output.
Prepared By : Dr.Saranya.K.G
<?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: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>
XSL sort.xsl
Prepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 15
1cdcatalog.xml XSL sort.xsl
View the result
Prepared By : Dr.Saranya.K.G
5. XSLT <xsl:if> Element
• The <xsl:if> element is used to put a conditional
test against the content of the XML file.
• To put a conditional if test against the content of
the XML file, add an <xsl:if> element to the XSL
document.
• Syntax
<xsl:if test="expression">
...some output if the expression is true...
</xsl:if> Prepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 16
Where to Put the <xsl:if> Element
<?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>
</xsl:stylesheet>
Prepared By : Dr.Saranya.K.G
1cdcatalog.xml XSL:if.xsl
View the result
Prepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 17
6. XSLT <xsl:choose> Element
• The <xsl:choose> element is used in
conjunction with <xsl:when> and
<xsl:otherwise> to express multiple
conditional tests.
Prepared By : Dr.Saranya.K.G
The <xsl:choose> Element
Syntax
<xsl:choose>
<xsl:when test="expression">
... some output ...
</xsl:when>
<xsl:otherwise>
... some output ....
</xsl:otherwise>
</xsl:choose>
Prepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 18
Where to put the Choose Condition
• To insert a multiple conditional test against
the XML file, add the <xsl:choose>,
<xsl:when>, and <xsl:otherwise> elements
to the XSL file:
Prepared By : Dr.Saranya.K.G
<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 choose.xsl
Prepared By : Dr.Saranya.K.G
7/9/2019
Prepared By: Dr.Saranya.K.G 19
• The code above will add a pink background-
color to the "Artist" column WHEN the price
of the CD is higher than 10.
1cdcatalog.xml XSL:choose.xsl
View the result
Prepared By : Dr.Saranya.K.G
XSLT <xsl:apply-templates>
Element
• The <xsl:apply-templates> element
applies a template to the current element
or to the current element's child nodes.
Prepared By : Dr.Saranya.K.G