<xsl:stylesheet>
This is the XSLT stylesheet document element. This element usually defines a namespace xsl:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output>
defines the format of the output document.
For HTML:
<xsl:output method="html" indent="yes" />
For XML:
<xsl:output method="xml" version="1.0" indent="yes"/>
<xsl:template>
An XSLT processor looks for xsl:template element that has a match attribute of "/"(root node) to begin the translation.
So the elements in this element usually contain a lot of html tags.
<xsl:apply-templates> element is always used to display the match element.
<xsl:template> content contains HTML elements and elements from xml file - specifically, <xsl:value-of> element.
template can have a
mode attribute to specify the template
<xsl:apply-templates>
<xsl:apply-templates> element cause the process to look for the template that has matching nodes in the source tree.
apply-templates element also have
mode attribute to select the specific mode of the template
catalog.xml which specifies a xsl stylesheet
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="catalog.xslt"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
</catalog>
catalog.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" />
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
<th>Year</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title" /></td>
<td><xsl:value-of select="artist" /></td>
<td><xsl:value-of select="price" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
For XSLT2.0 Use Saxon processor to translate the page
java -cp saxon9ee.jar net.sf.saxon.Transform -t -s:catalog.xml -xsl:catalog.xslt -o:catalog.html
output:
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
<th>Year</th>
</tr>
<tr>
<td>Empire Burlesque</td>
<td>Bob Dylan</td>
<td>10.90</td>
</tr>
<tr>
<td>Hide your heart</td>
<td>Bonnie Tyler</td>
<td>9.90</td>
</tr>
</table>
</body>
</html>
For XSLT1.0 you can just browse the xml file directly!