Listato 8 - Xstyle.xsl commentato

<?xml version="1.0"?>
<!-- Dichiarazione XML-->
<!-- Definiamo l'elemento radice. Contiene la dichiarazione della versione e due namespace: quello per XSl e quello per XHTML (senza prefisso)-->

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">

<!-- Con questa dichiarazione stabiliamo il formato di output. Essendo XHTML dichiariamo anche il DOCTYPE -->
<xsl:output method="html" indent="yes"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" />

<!-- Inizia il foglio di stile. Con questa dichiarazione specifichiamo che applichiamo le egole di trasformazione a partire dall'elemento radice-->
<xsl:template match="/">

<!-- Inizia il documento XHTML -->
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- Inizio della testata -->
<head>
<title>X-blog</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

<!-- Colleghiamo il foglio di stile "mainstyle.css"-->
<link rel="stylesheet" title="main" href="mainstyle.css" type="text/css" />
</head>
<!-- Fine della testata-->

<!-- Inizia il corpo del documento-->
<body>
<!-- Questa parte è identica al documento blog.xhtml". E' la parte fissa del documento-->
<div id="sezprinc">

<div id="testata"><img src="xblog.gif" width="165" height="65"
alt="logo xblog" /></div>
<div id="menu">
<p><a href="#">home page</a> - <a href="#">about</a> - <a href="#">archivi</a>
- <a href="#">contatti</a> -------------------- <a href="#">e-m@il me</a></p>
</div>
<div id="contenuto">

<div id="navigazione">
<h1>sezione 1</h1>
<p><a href="#">link 1</a></p>
<p><a href="#">link 2</a></p>
<p><a href="#">link 3</a></p>
<h1>sezione 2</h1>
<p><a href="#">link 1</a></p>
<p><a href="#">link 2</a></p>
<p><a href="#">link 3</a></p>
</div>
<!-- Fine della parte fissa del documento-->

<!-- Inizia la sezione "post". Il contenuto è preso dal file "news.xml"-->
<div id="post">

<!-- Selezioniamo l'elemento <post>. Le regole sono applicate in maniera ricorsiva-->
<xsl:for-each select="news/post">

<!-- Ordiniamo i post per data-->
<xsl:sort data-type="text" select="data" order="descending"/>

<!-- Il testo dell'elemento <data> sarà un titolo <h2>-->
<h1><xsl:value-of select="titolo" /></h1>

<!-- Il testo dell'elemento <titolo> sarà un titolo <h1>-->
<h2><xsl:value-of select="titolo"/></h2>

<!-- Applichiamo il template. Il testo dei post sarà un paragrafo-->
<p><xsl:apply-templates select="testo"/></p>
</xsl:for-each>
</div>
</div>
</div>
</body>
<!-- Fine del corpo del documento XHTML-->

</html>
</xsl:template>

<!-- Dichiariamo il template per la gestione dei link-->
<xsl:template match="link">
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="@href"/>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>

</xsl:stylesheet>