Come si può realizzare un‘applicazione Web indipendente dal dispositivo destinatario? DELI è una libreria open-source che consente alle servlet Java di risolvere richieste HTTP contenenti informazioni CC/PP o UAProf e di interrogare il profilo ottenuto.
Introduzione
Fino ad alcuni anni fa il modo più diffuso per accedere al Web era attraverso un personal computer o una workstation. Dalla metà del 2000 il numero delle differenti tipologie di dispositivi che possono accedere al Web è cresciuto molto rapidamente. Si è passati da una situazione dove si avevano poche classi di dispositivi con, sostanzialmente, le stesse caratteristiche e capacità di base ad un elevato numero di dispositivi aventi una varietà di caratteristiche molto ampia.
Questa evoluzione ha portato alla luce la necessità di realizzare contenuti per il Web tenendo in forte considerazione il problema dell‘indipendenza dal dispositivo finale.
Con l‘espressione “indipendenza dal dispositivo finale” si cerca di definire le logiche e le pratiche di interazione tra client e server tali da consentire un‘esperienza d‘uso del web efficiente e soddisfacente a prescindere dallo strumento tecnico utilizzato per l‘accesso.
Approcci per realizzare applicazioni indipendenti dal dispositivo
Come si può realizzare un‘applicazione Web indipendente dal dispositivo destinatario?
Gli approcci esistenti per ottenere una migliore indipendenza dal dispositivo si suddividono in tre categorie:
- Intermediate adaption
- Client-side adaption
- Server-side adaption
La distinzione viene fatta in base a dove avviene il controllo del processo di adattamento.
Gli adattamenti server-side offrono il massimo controllo sui contenuti inviati, includendo anche la possibilità di poter cambiare radicalmente la quantità di contenuti, lo stile, la modalità di navigazione e l‘impaginazione. Per poter effettuare l‘adattamento più appropriato, tuttavia, il server deve avere informazioni sufficienti sul delivery context, includendo le capacità del dispositivo ricevente.
Delivery Context
Indipendentemente da dove avvengano gli adattamenti, questi devono essere basati sulle informazioni riguardanti il delivery context. Tali informazioni possono includere le delivery device‘s capabilities, le caratteristiche della rete, le preferenze dell‘utente, e altri parametri opzionali riguardanti le applicazioni come la lingua prescelta dall‘utente e la localizzazione.
Alcune di queste informazioni sono disponibili nell‘intestazione standard del protocollo HTTP della richiesta della pagina Web.
Sono stati definiti due standard per la descrizione del delivery context basati sul Resource Description Framework (RDF):
- Composite Capabilities / Preferences Profile (CC/PP) definito dal W3C
- User Agent Profile (UAProf) definito dal WAP Forum
Questi standard consentono la trasmissione efficiente delle informazioni riguardanti il delivery context al server persino tramite reti wireless con una ridotta larghezza di banda. Anzichà© inviare un profilo intero per ogni richiesta, il client invia soltanto un riferimento ad un profilo, il quale, è memorizzato all‘interno di un terzo dispositivo noto come profile repository. Inoltre, viene anche inviata una lista di differenze specifiche per il client in questione. Il processo di riassemblamento finale del profilo, il quale è costituito dalle profile references e dalle differenze, è meglio noto come profile resolution.
Utilizzare DELI in ambiente Apache Cocoon
Come abbiamo visto, per fornire contenuti ottimizzati per client differenti, un Web server ha bisogno della descrizione delle caratteristiche del client.
HP Labs ha realizzato una libreria open-source chiamata DELI, la quale consente alle servlet Java di risolvere richieste HTTP contenenti informazioni CC/PP o UAProf e di interrogare il profilo ottenuto.
Utilizzata in ambiente Apache Cocoon, DELI rende disponibili gli attributi CC/PP o UAProf come parametri di ingresso all‘interno di stylesheet XSLT.
Andiamo ora a vedere in pratica come tutto questo sia possibile mediante un semplice esempio di utilizzo di DELI in ambiente Apache Cocoon.
Vedremo come sia possibile ottenere all‘interno di stylesheet XSLT utili informazioni sul client richiedente. Utilizzeremo queste informazioni per adattare i contenuti delle pagine sia in formato HTML che WML.
Per rendere disponibili le informazioni riguardanti i profili all‘interno degli stylesheet, si deve aggiungere la clausola
Vediamo il codice sorgente del file sitemap.xmap:
Vediamo il codice sorgente del file index.xml:
DELI Esempio di utilizzo di DELI Se il client supporta le immagini vedrete il logo di Cocoon Altrimenti non inserisco l‘immagine. Eviterò così di utilizzare inutilmente la banda della connessione.
Per ottenere le informazioni sulle caratteristiche del client è necessario specificare in parametro
Utilizzeremo le informazioni acquisite per adattare i contenuti delle pagine sia in formato HTML che WML.
Nel procedimento seguito per ottenere tutto ciò, DELI “appiattisce” i profili omettendo le informazioni inerenti i componenti. Perciò, per esempio, per ottenere l‘attributo CcppAccept è necessario utilizzare l‘espressione XPath deli-capabilities/browser/CcppAccept mentre per ottenere l‘attributo ScreenSize si deve utilizzare l‘espressione XPath deli-capabilities/browser/ScreenSize. Inoltre, nel caso in cui gli attributi contengano valori multipli, ad esempio Bags o Sequences, questi valori vengono separati utilizzando elementi
Perciò, per ottenere gli elementi individualmente, si deve utilizzare, ad esempio, la seguente espressione XPath deli-capabilities/browser/CcppAccept/li.
Vediamo il codice sorgente del file xml2html.xsl:
DELI - esempio
immagini non supportate!
Elenco di alcune delle caratteristiche del client:ColorCapable: ImageCapable: TablesCapable: TextInputCapable: FramesCapable: SoundOutputCapable:
Vediamo il codice sorgente del file xml2wml.xsl:
immagini non supportate!
Elenco di alcune delle caratteristiche del client:ColorCapable: ImageCapable: TablesCapable: TextInputCapable: FramesCapable: SoundOutputCapable:
Conclusione
Dopo aver introdotto le problematiche principali riguardanti la realizzazione di un‘applicazione Web indipendente dal dispositivo destinatario, abbiamo introdotto gli approcci e gli standard attualmente esistenti in materia.
Abbiamo poi visto come DELI in ambiente Apache Cocoon consenta di adattare i contenuti su dispositivi eterogenei in maniera molto semplice.
Riferimenti
[1]
Massimo Canducci, “XML”, Apogeo, 2005
[2]
Aaron Skonnard – Martin Gudgin, “Essential XML Quick Reference”, Addison-Wesley, 2002
[3]
Doug Tidwell “Mastering XML Transformations”, O‘Reilly, 2003
[4]
http://www.w3.org/Style/XSL/
[6]
Matthew Langham, Carsten Ziegeler,”Cocoon: Building XML Applications”, New Riders, 2002
Angelo Stefani, nato a Vetralla (VT) il 30/03/1978. Dal 1992 al 1997 frequenta l‘ ITIS Leonardo da Vinci di Viterbo dove consegue il Diploma di Perito Industriale Capotecnico spec. Informatica. Attualmente iscritto al corso di laurea in Ingegneria Informatica della facoltà di Ingegneria presso l‘ Università degli studi di Roma "La Sapienza", sta lavorando alla tesi di laurea "Adattamento di contenuti su dispositivi eterogenei" avente come argomento principale Cocoon.
Informazioni più aggiornate sono disponibili su http://angelostefani.blogspot.com/