7/9/2019
Prepared By: Dr.Saranya.K.G 1
XSL
Prepared By : Dr.Saranya.K.G
•XSLstands for EXtensible Stylesheet
Language, and is a style sheet language
for XML documents.
•XSLTstands 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 languagefor 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 XPathto 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 stylesheetare 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-matcheshave
been exhausted
•The complete target documentis
produced as output
Prepared 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:stylesheetversion="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Or
<xsl:transformversion="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Prepared By : Dr.Saranya.K.G
cdcatalog.xmlcdcatalog.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:stylesheetversion="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:templatematch="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<trbgcolor="#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 result
Prepared 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 rulesthat 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 matchattribute 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:iftest="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