<?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>