È noto che l'Xml nasce come tecnologia per favorire lo scambio di dati, frapponendosi tra un'applicazione ed il relativo database. Questo articolo vuole dimostrare come l'Xml, nella sua versatilità, è in grado di eseguire uno scambio dati anche senza utilizzare un database o una tecnologia server-side basata su un sistema di rete di tipo Web.
Quanto appena detto è realizzabile utilizzando il Dso (Data Source Object), oggetto che permette di far riferimento ai campi di un file Xml e di formattarli opportunamente in una tabella di un semplice file Html.
Analisi e concettualizzazione del problema
Per prima cosa andiamo ad analizzare il problema in base al tipo di applicazione che intendiamo realizzare. Ipotizziamo di voler creare una sorta di promemoria in cui inseriamo una serie di dati relativi a dei nostri amici. Trattandosi solo di un esempio, creiamo un file Xml i cui campi siano nome, telefono ed email.
È bene risottolineare il fatto che in questo articolo non si parlerà di tecnologie o linguaggi server side, ma solo di uno scambio di dati tra file, eseguibile nella medesima maniera sia in locale, che in remoto su di un server Web. Per incrementare dinamicamente il file Xml è opportuno ricorrere ad un linguaggio server-side, in genere si tratta di Asp, e tramite questo accedere ad un database tipo Ms Access 2000 o Ms Sql Server 7 in poi. Tuttavia, questo può considerarsi solo il primo step verso questa frontiera.
Abbiamo bisogno solo di due file per mettere in pratica quanto detto finora, database.xml, in cui conserviamo i dati relativi ai nostri amici, e rubrica.htm, in cui creiamo la struttura in forma tablellare in semplice Html.
Costruzione del file database.xml
Il file database.xml, come predetto, sarà composto dai campi nome, telefono ed email che faranno parte del nodo Amico, implementato all'interno della root Amici, vediamo l'intera struttura:
<?xml version="1.0"?>
<Amici>
<Amico>
<Nome>Pippo</Nome>
<Telefono>0123456789</Telefono>
<Email>pippo@server.it</Email>
</Amico>
<Amico>
<Nome>Pluto</Nome>
<Telefono>0987654321</Telefono>
<Email>pluto@server.it</Email>
</Amico>
<Amico>
<Nome>Paperino</Nome>
<Telefono>1357902468</Telefono>
<Email>paperino@server.it</Email>
</Amico>
</Amici>
Nulla di più di un semplice e normale file Xml che potrà risultare abbastanza chiaro anche ai meno avvezzi, mentre chi ha letto anche poche righe di un qualsiasi punto di riferimento ad Xml dovrebbe trovare chiara la struttura e capire bene tutto il codice appena proposto.
Costruzione del file rubrica.htm
È finalmente giunto il momento di creare il file rubrica.htm che ci permetterà di formattare in maniera leggibile questi dati, come siamo normalmente abituati a vederli sul Web. Presento prima l'intero codice e poi passeremo in esame le fasi salienti:
<html>
<head>
<title>Binding dei dati con il Dso di Xml</title>
</head>
<body>
<xml id="dsoAmici" src="database.xml"></xml>
<h2>Binding dei dati con il Dso di Xml</h2>
<table datasrc="#dsoAmici" border="1">
<thead>
<th align="left"><b>Nome</b></th>
<th align="left"><b>Telefono</b></th>
<th align="left"><b>Email</b></th>
</thead>
<tr>
<td><span datafld="Nome"></span></td>
<td><span datafld="Telefono"></span></td>
<td><span datafld="Email"></span></td>
</tr>
</table>
</body>
</html>
Esaminiamo cosa c'è di nuovo in questa semplice pagina Html. Per prima cosa scorgiamo un nuovo Tag che normalmente, se non stiamo lavorando con alcun file Xml, non ci sogneremo mai di utilizzare:
<xml id="dsoAmici" src="database.xml"></xml>
Questa stringa di codice ci torna utile per richiamare il file Xml all'interno del file rubrica.htm, utilizziamo due attributi, un identificativo ed il source per individuare il percorso del file Xml, in questo caso i due file si trovano nella stessa posizione, quindi all'interno della stessa cartella.
Prendiamo ora in esame la prima riga di codice con cui abbiamo costruito la tabella ed analizziamo il primo degli attributi che utilizziamo, il datasrc:
<table datasrc="#dsoAmici" border="1">
utilizziamo l'attributo datasrc (Data Source) per associare la tabella alla struttura Xml che richiamiamo, dandogli lo stesso valore dell'identificativo scelto per il richiamo al file esterno.
Nella costruzione fisica della tabella è possibile notare che utilizziamo nelle celle di intestazione il Tag <thead> al posto del normale <tr> ed i Tag <th> al posto di <td>, dato che questa combinazione permette di non ripetere l'intestazione tra un record e l'altro.
Per chi ha un minimo di conoscenza di un qualsiasi linguaggio di programmazione, un esempio calzante atto a spiegare l'intero svolgimento del programma è quello di un ciclo e while() normalmente utilizzato per "srotolare" una variabile in base a determinati parametri, sulla scorta di questa considerazione, possiamo dire che le celle dell'intestazione, così create, è come se non venissero ciclate.
Passiamo alla fase successiva, nonchè ultima, vediamo come abbiamo assegnato alle rimanenti celle il compito di contenere i dati prelevati dal file database.xml:
<td><span datafld="Nome"></span></td>
<td><span datafld="Telefono"></span></td>
<td><span datafld="Email"></span></td>
utilizziamo l'attriuto datafld (Data Field) per richiamare i contenuti all'interno del file Xml, all'interno del Tag <span> e non direttamente all'interno della cella <td>, dato che <span> (normalmente utilizzato per i fogli di stile Css) ha per l'Xml un significato speciale, viene infatti utilizzato anche nei fogli di stile Xsl (eXtensible Stylesheet Language) proprietari dell'Xml.
Ultima considerazione, che il file Xml contenga un solo record o centinaia di record, questo è tutto il codice Html che necessario.