XSL e gestione degli stili in XML

di Luca Passani, in XML,

Riprendiamo il discorso

Nel mio precedente articolo , vi ho introdotto alcuni concetti di base su XML. Se siete sopravissuti al mio precedente articolo, vorrete finalmente sapere come, dopo avere generato, manipolato e masticato l'XML, lo fate apparire ai comuni mortali (non programmatori) come un qualcosa di leggibile, magari componendo il tutto in HTML.

Ebbene, non solo vi farò vedere come si crea dell'HTML avendo un file XML tra le mani, ma anche come sia possibile produrre molte altre cose interessanti.

La parola magica è XSL. Piccola parentesi per quelli che l'XSL lo hanno sbirciato:

  • non è così difficile come sembra all'inizio, ovvero non appena capite alcuni concetti di base, intuite che è abbastanza facile;
  • non è così semplice come avevate creduto subito dopo l'intuizione sul suo funzionamento;

Alcune regole di sopravvivenza.

  • L'XSL è uno standard in evoluzione. Internet Explorer 5, ad esempio, supporta la bozza del Dicembre 98, la quale è già superata. In pratica, ciò significa che Internet Explorer 5 va benissimo per sperimentare quanto volete, ma state attenti a far partire progetti galattici basati su di esso. Tra l'altro si avverte esplicitamente che a questo stadio non c'è nessuna garanzia di compatibilità all'indietro. Inoltre, quando trovate della documentazione o dei tutorial su XSL, sinceratevi che si riferiscano al trasfortmatore XSL che avete sotto mano, dal momento che alcune piccole differenze possono causarvi notevoli sofferenze quando gli esempi non funzionano come vi aspettavate.
  • La sintassi di XSL non è, in generale, un granchè piacevole. L'unico consiglio che posso darvi se vi trovate a scrivere dei trasformatori XSL è quello di procurarvi un editor che supporti un minimo di sintassi colorata. Ciò è particolarmente importante se usate XSL per produrre HTML o XML. Io uso Emacs per NT con un xsl-mode che mi sono procacciato da qualche parte su internet.

Entriamo nel pratico: se avete dato un'occhiata fugace ad un file XSL, vi sarà sembrata una sintassi del tutto aliena a quella a cui siete abituati. Ciò è vero solo in parte. Innanzitutto, i cervelloni dietro all'XSL hanno pensato bene di far si che XSL sia un file XML anch'esso, ovvero che rispetti tutti i vincoli imposti dalla buona formattazione di un file XML.

Forse questo è un vantaggio a lungo andare (ancora tytto da dimostrarmelo), fatto sta che per prima cosa dovete mettere una manciata di codici in ogni documento XSL:

<?xml version="1.0"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

L'URL che vedete non è un file da importare, come la sintassi potrebbe erroneamente suggerire, ma solo una keyword che annuisce a quale specifica di XSL ci si riferisce. In realtà, ci sarebbe da fare un discorso più lungo sui namespace e il loro uso, ma per ora possiamo sorvolare senza troppi problemi.

Trattandosi di XML, aspettatevi un tag tipo questo alla fine del file:

</xsl:stylesheet>

Se ignorate queste linee, un file XSL vi apparirà immediatemente più umano. Ciò è particolarmente vero se siete programmatori di Active Server Pages. Non pensate ad un file XSL come ad un documento pieno di direttive XSL e qualche tag HTML qua e là. Pensate invece ad un template HTML in cui delle direttive XSL vanno a tappare i "buchi" qua e là. Personalmente trovo una forte analogia tra scrivere una cosa del tipo

 <h1>Benvenuto <% =session("utente") %></h1>

e

 <h1>Benvenuto <xsl:value-of select="amico/nome" /></h1>

Similmente ad ASP, l'idea di base è quella di pensare in HTML e, successivamente, di far mutare il proprio documento in un trasformatore XSL usando le direttive XSL per estrarre elementi e attributi del documento XML originale.

ASP fa proprio questo. Estrae valori (tipicamente da un database) e li infila in determinati punti del vostro file HTML.

XSL prende i dati dal file XML originario come se si trattasse di un piccolo database e li va a infilare nei punti giusti del file HTML che intendete generare.

Vediamo un esempio che è al tempo stesso una dritta su come creare trasformatori XSL.

Vi spiego ciò che vi serve sapere strada facendo. In fondo questo articolo serve solo a farvi vedere la luce, non a farvi diventare guru tutti d'un colpo. Una cosa che dovete notare, ma che vi spiegherò più avanti, è il fatto che alcuni tag HTML che ci erano famigliari, tipo <IMG>, vedono la loro sintassi modificata in <IMG /> o <IMG> </IMG>.

Immaginiamo di volere creare una pagina web con le foto dei nostri amici d'università, i nomi e la lista degli esami passati (quindi, con un sottoinsieme dei dati realmente presenti nel nostro file XML):

<html>

<body>

<h2><!-- IL NOME DELL'AMICO --></h2> 

<img  src="<!-- l'URL dell'AMICO -->">

 <ul>

 <!-- TUTTI GLI ESAMI -->

 <li><!-- esame --></li>

 </ul>

 

 </body>

</html>

A questo punto occorre andare a raccogliere i dati sparsi qua e là sul file XML, che per comodità vostra è riportato qui:

<popolodidisperati> 

 <amico annoiscrizione="3" fuoricorso="true" matricola="1245632">

  <nome>Paolo Rossi</nome>

  <foto url="http://www.italia1.com/programmi/spettacoli/scatafascio/
mercato/images/paolo2.jpg" />

  <esame voto="25" lode="false">Storia del Gorgonzola II</esame>

  <esame voto="22" lode="false">Diritto Spaziale</esame>

  <esame voto="22" lode="false">Basi di Grammatica</esame>

 </amico>

 <amico annoiscrizione="12" fuoricorso="true" matricola="12452">

  <nome>Vasco Rossi</nome>

  <annoiscrizione>12</annoiscrizione>

  <fuoricorso>true</fuoricorso>

  <foto url="http://www.freeweb.org/musica/vascorossi/images/
vasco-03.jpg" />

  <esame voto="18" lode="false">Storia del Gorgonzola II</esame>

 </amico>

</popolodidisperati> 
2 pagine in totale: 1 2
Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata