XSLT
eXtensible Stylesheet Language Transformations
CSS vs XSL
CSS = Style Sheets for HTML

XSL = Style Sheets for XML

●
●
●

predefined tags
each tag is well understood
bro...
XSL - More Than a Style Sheet Language

● XSLT - a language for transforming XML documents
● XPath - a language for naviga...
What is XSLT?
●

XSLT stands for XSL Transformations

●

XSLT is the most important part of XSL

●

XSLT transforms an XML...
XSLT = XSL Transformations
●
●
●

XML => XML
XML => (X)HTML
Add/remove, rearrange, sort, test elements
in output document
...
XSLT Browsers
Browser

Supports

Ver

Opera

XML, XSLT, and XPath

9

Internet Explorer

XML, XSLT, and XPath

6

Mozilla ...
How to transform...
●

Correct Style Sheet Declaration
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL...
Start with a Raw XML Document
Source xml (cdcatalog.xml):
<?xml version="1.0" encoding="ISO-8859-1" ?>
<catalog>
<cd>
<tit...
Start with a Raw XML Document
XSL Style Sheet (cdcatalog.xsl):
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet...
Start with a Raw XML Document
Link the XSL Style Sheet to the XML Document
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?...
Start with a Raw XML Document
Result is:
XSLT <xsl:template> Element
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://ww...
XSLT <xsl:value-of> Element
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://ww...
XSLT <xsl:for-each> Element
<xsl:template match="/">
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<...
XSLT <xsl:for-each> Element
<xsl:template match="/">
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<...
XSLT <xsl:sort> Element

<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each sele...
XSLT <xsl:if> Element
Syntax
<xsl:if test="expression">
...some output if the expression is true...
</xsl:if>

Example:
<x...
XSLT <xsl:choose> Element
Syntax

Example

<xsl:choose>
<xsl:when test="expression">
... some output ...
</xsl:when>
<xsl:...
XSLT <xsl:choose> Element
Example
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<xsl:cho...
XSLT <xsl:apply-templates> Element
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="ht...
XSLT <xsl:apply-templates> Element
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="ht...
XSLT processors
MSXML (MS)
Saxon (Java)
Xalan (Java)
libxslt (C)
Sablotron (C++)
Transformiix (Mozilla)
Altova XSLT 1.0/2....
Ruby XSLT processors
Nokogiri 鋸
http://nokogiri.org/Nokogiri/XSLT.html

REXML
http://www.germane-software.com/software/rex...
Upcoming SlideShare
Loading in …5
×

XSLT. Basic.

781 views

Published on

Published in: Education, Technology
  • Be the first to comment

XSLT. Basic.

  1. 1. XSLT eXtensible Stylesheet Language Transformations
  2. 2. CSS vs XSL CSS = Style Sheets for HTML XSL = Style Sheets for XML ● ● ● predefined tags each tag is well understood browser knows how to display it ● ● ● does not use predefined tags each tag is not well understood browser does not know how to display it ● ● XSL describes how the XML document should be displayed XSL - More Than a Style Sheet Language
  3. 3. XSL - More Than a Style Sheet Language ● XSLT - a language for transforming XML documents ● XPath - a language for navigating in XML documents ● XSL-FO - a language for formatting XML documents
  4. 4. 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
  5. 5. XSLT = XSL Transformations ● ● ● XML => XML XML => (X)HTML Add/remove, rearrange, sort, test elements in output document XSLT transforms an XML source-tree into an XML result-tree. XSLT uses XPath to find information in an XML document
  6. 6. XSLT Browsers Browser Supports Ver Opera XML, XSLT, and XPath 9 Internet Explorer XML, XSLT, and XPath 6 Mozilla Firefox XML, XSLT, and XPath 3 Apple Safari XML and XSLT 3 Google Chrome XML, XSLT, and XPath 1
  7. 7. How to transform... ● Correct Style Sheet Declaration <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"> ● Declare the XSLT namespace to get access to XSLT elements and attributes ● Include the attribute version="1.0"
  8. 8. Start with a Raw XML Document Source xml (cdcatalog.xml): <?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>
  9. 9. Start with a Raw XML Document XSL Style Sheet (cdcatalog.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="/"> <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> </xsl:template> </xsl:stylesheet>
  10. 10. Start with a Raw XML Document Link the XSL Style Sheet to the XML Document <?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>
  11. 11. Start with a Raw XML Document Result is:
  12. 12. XSLT <xsl:template> 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> <tr> <td>.</td> <td>.</td> </tr> </table> </body> </html> </xsl:template> </xsl:stylesheet > ● ● ● ● XSL style sheet is an XML document This document is an XSLT style sheet document The <xsl:template> element defines a template The match="/" attribute associates the template with the root
  13. 13. XSLT <xsl:value-of> 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="/"> <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> </xsl:template>
  14. 14. XSLT <xsl:for-each> Element <xsl:template match="/"> <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> </html> <xsl:template />
  15. 15. XSLT <xsl:for-each> Element <xsl:template match="/"> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd[artist=’Bob Dylan’]"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </html> <xsl:template /> Filtering the Output Legal filter operators are: ● = (equal) ● != (not equal) ● > (less than) ● < (greater than)
  16. 16. XSLT <xsl:sort> Element <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>
  17. 17. XSLT <xsl:if> Element Syntax <xsl:if test="expression"> ...some output if the expression is true... </xsl:if> Example: <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>
  18. 18. XSLT <xsl:choose> Element Syntax Example <xsl:choose> <xsl:when test="expression"> ... some output ... </xsl:when> <xsl:otherwise> ... some output .... </xsl:otherwise> </xsl:choose> <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>
  19. 19. XSLT <xsl:choose> Element Example <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>
  20. 20. XSLT <xsl:apply-templates> 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> <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>
  21. 21. XSLT <xsl:apply-templates> 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> <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>
  22. 22. XSLT processors MSXML (MS) Saxon (Java) Xalan (Java) libxslt (C) Sablotron (C++) Transformiix (Mozilla) Altova XSLT 1.0/2.0 … .. .
  23. 23. Ruby XSLT processors Nokogiri 鋸 http://nokogiri.org/Nokogiri/XSLT.html REXML http://www.germane-software.com/software/rexml/ LibXML Ruby (libxslt2 based) http://xml4r.github.io/libxml-ruby/ XSLT v1.0 ONLY!!!

×