2 pagine in totale: <<Indietro 1 [2]
Come accennato prima, partiamo dallo scheletro HTML e aggiungiamo le direttive XSL.
Le prime due righe sono obbligatorie:
<?xml version="1.0" encoding="windows-1252"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">Anche la terza è obbligatoria. In pratica indica che il primo confronto che dobbiamo fare è quello con la radice del documento XML sorgente:
<xsl:template match="/">
Adesso possiamo cominciare a scrivere i nostri tag HTML:
<html>
<body>ecco il primo amico
<xsl:for-each select="amico">
<h2><xsl:value-of select="nome"/></h2> Siamo in loop sugli amici e per ogni <amico> andiamo a recuperare l'elemento <nome> . Notate che l'elemento <nome> ha senso solo nel contesto di uno specifico amico. Alla base di XSL c'è infatti questo concetto di 'contesto'. Il parser si muove di nodo in nodo ed esegue le direttive XSL tenendo in considerazione l'elemento specifico su cui sta operando. Per cui, considerato un amico particolare, ne recupera il nome. La tecnica usata per riferirsi ad un elemento quando siamo su di un altro è abbastanza intuitiva. Si tratta del DOM. Se avete mai usato il DOS per muovervi tra una directory e l'altra, conoscete l'idea di sottodirectory, directory padre, directory fratello e directory terza cugina. Ebbene, non solo il concetto è analogo, ma anche la sintassi.
Così, se siete sul nodo 'amico', la sintassi 'foto' vi permetterà di riferirvi al sottoelemento 'foto'.
A questo punto creiamo il tag immagine. Esso, a prima vista, vi sembrerà amputato dell'indispensabile attributo src. In realtà non è così: XSL manipola il DOM direttamente, cioè il trasformatore XSL manipola una rappresentazione interna del file che viene generato, il che gli permette di modificare dinamicamente un tag che sta per essere creato, senza essere costretto a mandarlo subito sull'output, come avviene con ASP.
Da un certo punto di vista è la stessa differenza che c'è tra event-driven e programmazione DOM. XSL usa il DOM e non ha bisogno di limitarsi al nodo su cui si trova. In pratica ciò significa che potete aggiungere l'attributo successivamente tramite la direttiva <xsl:attribute>.
<img >
<xsl:attribute name="src"><xsl:value-of select="foto/@url" /></xsl-attribute>
</img>Come accennato, abbiamo bisogno di chiudere il tag <img> . Inoltre quando esegue queste righe, il parser si trova nel contesto di un nodo 'amico'. In virtù di ciò, ha senso parlare di un sottoelemento 'foto' e dell'attributo 'url' (il simbolo '@' serve a riferirsi ad un attributo). Infine, abbiamo definito 'al volo' un attributo del file HTML che il parser sta generando.
Adesso passiamo agli esami:
<ul>
<xsl:for-each select="esame">
<li><xsl:value-of select="." /></li>
</xsl:for-each>
</ul>
<br />Nulla di nuovo qui. Essendo già sul nodo esame, l'elemento da selezionare è quello su cui ci troviamo, per cui basta un semplice punto (.).
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>Magari, vi fa piacere rivedere tutto insieme...
<?xml version="1.0" encoding="windows-1252"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="popolodidisperati/amico">
<h2><xsl:value-of select="nome"/></h2>
<img >
<xsl:attribute name="src"><xsl:value-of select="foto/@url" /></xsl:attribute>
</img>
<ul>
<xsl:for-each select="esame">
<li><xsl:value-of select="." /></li>
</xsl:for-each>
</ul>
<br />
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>Ed ecco il risultato in HTML
<html>
<body>
<h2>Paolo Rossi</h2>
<img src="http://www.italia1.com/programmi/spettacoli/scatafascio/
mercato/images/paolo2.jpg" />
<ul>
<li>Storia del Gorgonzola II</li>
<li>Diritto Spaziale</li>
<li>Basi di Grammatica</li>
</ul>
<br />
<h2>Vasco Rossi</h2>
<img src="http://www.freeweb.org/musica/vascorossi/images/vasco-03.jpg" />
<ul>
<li>Storia del Gorgonzola II</li>
</ul>
<br />
</body>
</html>L'idea fino ad ora è stata quella di farvi vedere il grande disegno che sta dietro a XML. Come avete notato ho dovuto passare sopra a parecchi dettagli che in realtà hanno grande importanza.
2 pagine in totale: <<Indietro 1 [2]
Contenuti dell'articolo
- Pagina 1
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Difficoltà
Stampa
Download 



