Una delle tecnologie più importanti attualmente sul web è l'XML.
La sua rapida diffusione ne dimostra le grandi potenzialità e la flessibilità
che ne permette il suo utilizzo all'interno delle più svariate piattaforme sia
sul web che fuori dal web.
L'XML (EXtensible Markup Language) è uno standard ormai affermato ed un numero sempre più grande di sviluppatori si sta avvicinando a questa tecnologia interrogandosi su come utilizzarlo in modo pratico ma soprattutto perchè utilizzarlo.
Che cosa vuol dire utilizzare l'XML e quali sono i vantaggi ed quali gli
svantaggi? Con questa piccola guida cercheremo di far luce su questi interrogativi, viste le numerose email che ricevo su questo argomento specifico.
Breve introduzione sulla sintassi dell'XML
L'XML si presenta un po' come l'HTML ma è sostanzialmente molto differente.
Infatti mentre nell'HTML esistono degli elementi e attributi predefiniti che
hanno delle funzioni specifiche, nell'XML siamo noi a definire questi elementi e
attributi per fornire delle informazioni relative a quello che è il loro
contenuto. In questo modo avremo un documento molto più intuitivo e facile da
capire oltre che facilmente manipolabile attraverso altri linguaggi di
programmazione.
Infatti l'XML è in fin dei conti semplice testo "marcato" attraverso l'utilizzo di TAG e attributi.
Ad esempio:
<notizie>
<notizia data="02/09/2003">Titolo della
notizia X</notizia>
<notizia data="01/09/2003">Titolo della
notizia Y </notizia>
<notizia data="31/08/2003">Titolo della
notizia Z </notizia>
</notizie>
Nell'XML ogni TAG dev'essere chiuso anche se questo è vuoto. Ad esempio mentre
nell'HTML il TAG <br> rimane aperto nell'XML scriveremo <br></br>
o più semplicemente <br/>. Per approfondire le conoscenze sulla sintassi
dell'XML potete leggere la Guida XML di HTML.it oppure l'articolo Uno sguardo ad XML di Andrea Chiarelli.
Capire l'XML e le sue potenzialità
Per poter utilizzare l'XML bisogna prima di tutto capire e conoscere le sue reali ed effettive potenzialità.
I vantaggi: I vantaggi dell'XML sono la flessibilità, la compatibilità e la portabilità.
La flessibilità: l'XML è semplice testo "marcato" dove gli elementi
e gli attributi vengono definiti da noi per creare la struttura più efficiente
per le nostre applicazioni.
La compatibilità: con l'XML possiamo rendere possibile la comunicazione tra
applicazioni molto differenti tra di loro.
La portabilità: grazie proprio alla compatibilità dell'XML la nostra
applicazione diventa molto più portabile in quanto si basa su un linguaggio che
ha un livello di astrazione superiore rispetto agli altri.
Gli svantaggi: L'unico svantaggio di un'applicazione che utilizza XML è un aumento della complessità nello sviluppo dell'applicazione che si ripercuote sui costi e sui tempi di sviluppo. In un'applicazione XML diventa importante applicare uno studio e una progettazione più attento e accurato, in modo da avere uno strumento versatile capace di interagire con altre applicazioni in modo semplice ed immediato.
Un'applicazione che invece non utilizza XML necessita sicuramente di tempi inferiori per essere progettata e realizzata ma alla fine rimane fine a se stessa, incapace di comunicare con altre applicazioni che utilizzano differenti tecnologie, e ancora peggio, destinata a tramontare in quanto legata alla tecnologia con la quale è stata sviluppata.
Il panorama del web attuale ci dimostra che i linguaggi di sviluppo lato server, le piattaforme utilizzate, i vari linguaggi lato client e i dispositivi per l'accesso al web si stanno continuamente evolvendo portando stravolgimenti che spesso non supportano più le vecchie tecnologie considerate obsolete. In questo panorama incerto e mutevole una tecnologia utilizzata in questo momento potrebbe non esistere più fra qualche anno! Possiamo permetterci di sviluppare applicazioni e fare investimenti in una tecnologia che fra qualche anno non esiste più? Naturalmente no!
L'XML è l'unico linguaggio che attualmente ci permette di avere un livello di astrazione superiore rispetto a tutti gli altri a prescindere dalla tecnologia utilizzata per lo sviluppo delle applicazioni stesse.
Architettura di un'applicazione web che utilizza XML
Vediamo l'architettura di un'applicazione basata sull'XML.
Come abbiamo detto precedentemente attraverso l'uso dell'XML possiamo progettare
applicazioni in modo tale da avere un livello di astrazione superiore,
ottimizzando le nostre risorse in quanto i nostri punti di forza saranno proprio
la flessibilità e la portabilità.
La nostra applicazione non sarà quindi più
legata in modo vitale alla tecnologia con la quale è stata sviluppata nè
tantomeno alla piattaforma sulla quale andrà a girare. Inoltre i contenuti
della nostra applicazione saranno facilmente fruibili dai vari media e potrà
comunicare in modo semplice ed intuitivo con altre applicazioni sia sul web che
fuori dal web anche se queste sono sviluppate con tecnologie molto differenti e
risiedono su piattaforme altrettanto differenti dalla nostra.
Prendiamo in considerazione un'applicazione web dinamica che quindi
utilizza un Database per la memorizzazione dei contenuti.
Gli elementi che compongono la nostra applicazione sono quindi:
- Database
- Contenuti (che vengono memorizzati sul Database)
- Programmi lato server (Scripts)
Per quanto riguarda invece il modo di comunicare con gli utenti finali (utenti) la nostra
applicazione può utilizzare:
- HTML o XHTML
- WML
- FLASH
I media che accedono al web (e quindi alle applicazioni sul web) possono essere:
- PC (Browser) / Palmari / Cellulari con Browser
- Cellulari WAP (WML)
Figura 1 - Schema Applicazione Web
Lo schema evidenzia l'esistenza di un livello intermedio tra
Utenti e Server Web, un livello dove i contenuti vengono "marcati"
attraverso l'XML assumendo una struttura ad albero più "leggibile" e
comprensibile, affinchè possano essere facilmente elaborati da altre
applicazioni o media.
Osservando lo schema sembrerebbe che l'XML arrivi direttamente agli utenti ed ai
vari dispositivi per la lettura dei contenuti.
In realtà attualmente non è sempre così. È vero che ormai tutti i browser supportano l'XML ed è quindi possibile visualizzare un documento XML senza alcun problema, ma è anche vero che un documento XML si presenta con una struttura ad albero che non è certo il modo migliore per consultare dei contenuti.
L'XML ha quindi bisogno di una formattazione grafica affinchè diventi un documento facilmente fruibile dall'occhio umano attraverso un browser web o un'altro dispositivo (ad esempio un'applicazione FLASH).
Abbiamo quindi bisogno dell'XSLT, un vero è proprio linguaggio molto potente che permette di formattare e trasformare un documento XML in altri tipi di documenti (HTML, PDF, TXT, WML, etc etc o XML stesso).
L'XML ha quindi la possibilità di essere legato ad un determinato XSLT e in questo modo un browser che supporta pienamente l'XML e tutte le sue specifiche visualizzerà direttamente il risultato della trasformazione (per approfondire l'argomento sulla programmazione XML / XSLT si rimanda alla Guida XSLT).
Se invece ad esempio utilizziamo un'applicazione FLASH possiamo accedere
direttamente al documento XML e visualizzare i contenuti in quanto FLASH è
dotato di un proprio linguaggio di programmazione (Action Script) attraverso il
quale possiamo "trasformare graficamente" l'XML come vogliamo (se
volete approfondire il discorso sulle applicazioni FLASH XML http://www.enricolai.com/flashxml).
Aggiungiamo quindi allo schema rappresentato nella Figura 1 un
nuovo componente, ovvero l'XSLT (che è comunque a sua volta XML).
Figura 2 - Applicazione web con XSLT
I vantaggi di avere un'applicazione flessibile
Il livello intermedio tra server web e utenti creato con l'XML ci permette di
avere un'applicazione molto più flessibile. Utilizzare poi l'XSLT per
trasformare l'XML ci permette di mantenere questa flessibilità ottimizzando le
nostre applicazioni in quanto contenuti e formattazioni grafiche sono sempre
separate.
Dall'XML ad esempio possiamo creare pagine statiche HTML sfruttando la potenza
dell'XSLT, oppure documenti PDF molto più adatti per essere stampati, o ancora
delle pagine WML per il nostro sito WAP, o ancora possiamo creare un web service
(una delle tecnologie più recenti che utilizzano l'XML). La nostra applicazione non avrà limiti.
Gli stessi documenti XML potranno essere elaborati da sofisticate applicazioni
FLASH per avere il massimo della multimedialità e resa grafica (si pensi ad
esempio alle applicazioni FLASH che creano grafici a barre o istogrammi con
pochi kb di peso!). Tutto questo senza cambiare una virgola nel nostro XML.
Se vogliamo fare delle modifiche grafiche sarà solo necessario intervenire sui
documenti XSLT. Si pensi ad esempio alla realizzazione di sistemi di e-commerce
da rivendere a terzi. Per ogni cliente basterà fare le opportune modifiche
sull'XSLT per avere un layout grafico differente!
E se decidiamo di cambiare piattaforma? Nessun problema. Basterà riscrivere
solamente gli scripts lato server col nuovo linguaggio di programmazione
adottato. Il resto dell'applicazione rimane invariato e non dobbiamo ripartire
da zero.
E se dobbiamo cambiare il Database? Anche in questo caso non dobbiamo preoccuparci. La maggior parte dei Database in commercio supportano l'XML ed è possibile trasferire tutti i dati da un Database ad un altro utilizzando l'XML!
Insomma, in fin dei conti impiegare un po' più di tempo per progettare e realizzare un'applicazione XML ci permette di risparmiare tempo e denaro in futuro!
Esempio di applicazione web e-commerce
In questa parte faremo un breve esempio di un'applicazione web per e-commerce. Questa applicazione nasce per portare sul canale web dei prodotti già commercializzati attraverso dei negozi. Possiamo quindi immaginare che abbiamo come background un sistema informatico già collaudato che è molto differente a livello di tecnologie utilizzate da quelli che troviamo sul web.
Solo l'XML ci permette di far dialogare tecnologie così differenti per portare una tecnologia già esistente sul web senza grossi problemi.
Se analizziamo un sito di e-commerce abbiamo sostanzialmente un menu con tutte le categorie e sottocategorie di articoli, il corpo della pagina costituito dalla lista di articoli e il carello elettronico con la lista dei prodotti acquistati.
La maggior parte dei siti di e-commerce sono quindi ovviamente dinamici. Spesso i siti dinamici hanno proprio lo svantaggio di essere più lenti rispetto a quelli statici proprio perchè ogni pagina viene creata dinamicamente in seguito all'interrogazione del Database. Ma è proprio necessario interrogare ogni volta il Database? Effettivamente no.
In fase di progettazione della nostra applicazione andiamo a valutare quanti aggiornamenti avvengono sul nostro sito ogni giorno. Consideriamo il fatto che se questo numero non è eccessivamente alto, ad eccezione del carrello elettronico tutte le altre pagine del sito possono essere tranquillamente delle pagine statiche che aggiorniamo e ricreiamo solo quando avviene una modifica che riguarda quella determinata pagina.
Utilizzando l'XML questo processo è ottimizzato al massimo. Vediamo lo schema per capire meglio come funziona.
Figura 3 - Applicazione e-commerce che utilizza XML
Come possiamo osservare dalla Figura 3 le pagine HTML sono create per inclusione lato server di pagine HTML statiche (per il menu degli articoli e per la lista dei prodotti centrale) e una pagina dinamica che sarebbe il carello elettronico. Questo sistema è utile per ottimizzare i tempi di caricamento delle pagine ed evitare che un numero elevato di utenti connessi contemporaneamente al nostro sito mandi in crisi l'intera applicazione. Quando i feeders effettuano delle modifiche sul sistema inserendo o modificando delle voci, allora il programma rigenera solo le pagine HTML interessate da tali modifiche. Gli scripts interrogano il Database ed estrappolano i contenuti creando dei documenti XML. Successivamente un programma (Parser) genera le pagine HTML risultanti dalla fusione dell'XML con il relativo XSLT.
Esempio di applicazione prenotazioni Hotel
Un altro piccolo esempio potrebbe essere questo. Prendiamo in considerazione un'applicazione gestionale di piccole dimensioni per un hotel. Supponiamo che questa applicazione funzioni in locale e sia sviluppata in Visual Basic e utilizzi un Database Access. Il programma gestionale è capace di gestire le prenotazioni che vengono inserite da un operatore che le riceve per via telefonica o tramite fax. Supponiamo adesso di voler sviluppare il sito web dell'hotel e fare in modo che questo sia capace di ricevere gestire le prenotazioni che gli utenti hanno trasmesso tramite il sito. Ovviamente nel caso di un piccolo Hotel dobbiamo scontrarci con un budget ridotto e non possiamo certo mettere on line il server con l'applicazione Visual Basic ne possiamo risviluppare da zero l'intera applicazione.
Una soluzione potrebbe essere la seguente.
Potremo ad esempio sviluppare il sito in PHP con data base MySQL (entrambi open source) e fare in modo che le prenotazioni degli utenti vengano registrate sul data base. Successivamente possiamo creare un'area protetta dove l'amministratore dell'hotel può accedere e scaricare le nuove prenotazioni in formato XML grazie sempre a degli script PHP che interrogano il Database MySQL. Questi file XML possiamo fare in modo che vengano memorizzati sul computer locale in una determinata cartella dove il programma Visual Basic li andrà a prelevare per estrappolare le informazioni ed aggiornare le prenotazioni.
Ovviamente un sistema di questo tipo non è automatizzato al 100%, ma è pur sempre una soluzione. Infatti l'utente che invia la prenotazione non ha subito una risposta, ma possiamo fare in modo che il programma Visual Basic quando sta analizzando le prenotazioni in XML, se dovesse riscontrare qualche anomalia o se la prenotazione non può essere accettata potrebbe creare automaticamente delle email da inviare ai relativi utenti per avvisarli.
Il vantaggio di una soluzione di questo tipo è quella di ridurre notevolmente i costi e i tempi di implementazione, fattori molto importanti nella attuale realtà del web.
Conclusioni
.
L'XML ha portato delle novità molto importanti. Iniziare ad utilizzarlo penso sia molto importante per riuscire a mettersi in linea a quelli che sono gli standard più ambiti dalle società che operano sul web. Forse siamo solo agli inizi. Ben presto il web sarà esclusivamente di tipo semantico. Molto probabilmente non ci sarà più l'HTML ma solo XML. Gli stessi motori di ricerca saranno capaci di ricercare informazioni tra documenti XML in modo molto più semplice, veloce ed efficace di quanto non sia possibile sull'HTML. La formattazione grafica dei contenuti sarà effettuata solo dai Browser in modo da snellire le operazioni lato server.
Infine le possibilità di integrazione offerte dall'utilizzo dell'XML non possono far altro che arricchire le nostre applicazioni web offrendoci spunti molto interessanti.