progettazione di tecnologie flessibili per la presentazione di … · 2018. 10. 8. · tra un...
TRANSCRIPT
-
ALMA MATER STUDIORUM
UNIVERSITÀ DI BOLOGNA
FACOLTÀ DI SCIENZE MM.FF.NN.
Corso di Laurea in Informatica
Materia di tesi : Programmazione
PROGETTAZIONE DI TECNOLOGIE
FLESSIBILI PER LA PRESENTAZIONE DI
INFORMAZIONI TESTUALI
Tesi di Laurea di Relatore
RENATO CARUSO Chiar.ma Dott.ssa ANTONELLA CARBONARO
Sessione I
anno accademico 2003–2004
-
Alla mia famiglia
-
Indice
1 Introduzione 3
1.1 Obiettivi e motivazioni generali . . . . . . . . . . . . . . . . . 3
1.2 Struttura della tesi . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Il Progetto 6
2.1 Motivazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Personalizzazione dell’informazione . . . . . . . . . . . . . . . 7
2.3 Wapforum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 Palmari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 Stato dell’arte . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6 Analisi del progetto . . . . . . . . . . . . . . . . . . . . . . . . 12
3 Tecnologie utilizzate 14
3.1 Semantic Web . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2 HTML (HyperText Markup Language) . . . . . . . . . . . . . 15
3.3 Css (Cascading Style Sheets) . . . . . . . . . . . . . . . . . . . 15
3.3.1 Css 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3.2 Css 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4 XML (Extensible Markup Language). . . . . . . . . . . . . . . 18
3.4.1 DTD (Document Type Definition) . . . . . . . . . . . 20
3.4.2 XML Schema . . . . . . . . . . . . . . . . . . . . . . . 20
3.4.3 XPath (XML Path Language) . . . . . . . . . . . . . . 21
3.4.4 XSLT (Extensible Stylesheet Language Transformations) 21
1
-
INDICE 2
3.4.5 WML (Wireless Markup Language) . . . . . . . . . . . 23
3.4.6 DOM XML (Document Model Object XML) . . . . . . 23
3.5 WAP (Wireless Markup Language) . . . . . . . . . . . . . . . 24
3.6 3.8 Php . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4 Sviluppo del progetto 26
4.1 Struttura e sintassi di un documento xml . . . . . . . . . . . . 26
4.1.1 Struttura logica . . . . . . . . . . . . . . . . . . . . . . 26
4.1.2 Il prologo . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.1.3 Dichiarazione XML . . . . . . . . . . . . . . . . . . . . 28
4.1.4 Dichiarazione del tipo di documento . . . . . . . . . . 28
4.1.5 L’elemento document . . . . . . . . . . . . . . . . . . . 29
4.1.6 Struttura fisica del linguaggio XML . . . . . . . . . . . 31
4.1.7 Gli elementi . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.8 Gli attributi . . . . . . . . . . . . . . . . . . . . . . . . 33
4.1.9 Documenti ben-formati (Well Formed) . . . . . . . . . 36
4.1.10 Struttura dei fogli di stile . . . . . . . . . . . . . . . . 37
4.1.11 Le pagine WML . . . . . . . . . . . . . . . . . . . . . . 39
4.2 Php . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2.1 Sintassi php . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2.2 Php e html . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2.3 Le variabili GET e POST . . . . . . . . . . . . . . . . 45
4.2.4 Codici e funzioni principali . . . . . . . . . . . . . . . . 47
4.2.5 Visualizzazione in base al client . . . . . . . . . . . . . 52
Conclusioni 62
Bibliografia 62
-
Capitolo 1
Introduzione
1.1 Obiettivi e motivazioni generali
Uno dei principali utilizzi di Internet è sicuramente quello di reperire in-
formazioni. Attualmente quest’operazione non è sempre agevole in quanto
risulta complicato raggiungere realmente gli obiettivi prefissati.
A tale proposito, l’introduzione del Semantic Web potrebbe rappresentare
un notevole passo avanti: questo strumento dovrebbe garantire un recu-
pero intelligente delle informazioni desiderate, migliorando la qualità di una
ricerca.
Lo strumento principale per integrare la semantica nel web tradizionale
è costituito dalle annotazioni, che rappresentano un sistema per descrivere il
contenuto di una risorsa web. Esse sono in grado di stabilire delle relazioni
tra un oggetto esistente e la classe di un’ontologia, attraverso la dichiarazione
di triple (oggetto, concetto, attributi) in linguaggi basati sull’XML (RDF,
DAML+OIL).
Nello sviluppo di questo lavoro si dimostra come utilizzare ciò che abbi-
amo descritto precedentemente, al fine di sfruttare “tecnlogie flessibili” per
un certo tipo di dati.
Questo ha portato due requisiti fondamentali:
• la condivisibilità
3
-
1.1. OBIETTIVI E MOTIVAZIONI GENERALI 4
• la specificità
Il primo esprime la necessità di rendere un’annotazione accessibile all’in-
tero web, evitando di inserirla direttamente all’interno della risorsa. Essa
può essere soddisfatta servendosi di tecnologie per l’accesso remoto alle sot-
tostrutture di un documento web. In particolare, sono stati individuati due
nuovi linguaggi basati sull’XML che permettono di eseguire quest’operazione:
XPath e XPointer.
Il secondo requisito tenta di risolvere uno dei limiti allo sviluppo del
Semantic Web legato all’eterogeneità delle risorse annotabili. Esse, infatti,
potrebbero essere piccoli frammenti di informazione (semplici pagine web)
oppure documenti più complessi (articoli on-line, libri), differenziati sia da
un fattore dimensionale sia da uno strutturale. Una possibile soluzione può
essere quella di annotare le sottostrutture di un documento, come capitoli,
sezioni, paragrafi, considerandole come risorse indipendenti. Tale metodo,
ottenuto scomponendo la risorsa in entità di dimensione progressivamente
inferiore, permette di migliorare la rilevanza di un’annotazione, e definire in
modo più specifico l’argomento del frammento di testo considerato.
Il sistema proposto è dotato di un deposito esterno di dati nel quale
esse vengono memorizzate in modo indipendente dalla risorsa, garantendone
la condivisibilità. Ogni singola risorsa è collegata alla relativa annotazione
specificando una coppia (URI, XPath). L’aspetto innovativo è costituito
dal fatto che tale deposito è organizzato secondo una struttura tassonomica,
che permette alle applicazioni di sfruttarne molte delle sue caratteristiche
per migliorare le performance di una ricerca. Lo strumento che soddisfa la
specificità di un certo tipo di dati è garantito da un sistema che frammenta in
modo logico una risorsa di tipo testuale in entità di livello progressivamente
inferiore, attraverso la sintassi XPath.
Il sistema è dotato di funzioni di ricerca in grado di sfruttare le poten-
zialità offerte dalle annotazioni semantiche.
Il risultato finale è costituito da un insieme di frammenti rilevanti che
verranno concatenati ed inseriti in un’unica pagina.
-
1.2. STRUTTURA DELLA TESI 5
Il progetto reale ha portato a sviluppare un’architettura facilmente realiz-
zabile con le tecnologie semantiche attuali ma, allo stesso tempo, sfruttabile
per possibili sviluppi futuri. Per questo è stata concepita una struttura mod-
ulare, in grado di offrire un sistema scalabile e integrabile con altri servizi
per fornire risultati di alta qualità.
1.2 Struttura della tesi
Nei primi capitoli questo lavoro fornirà una panoramica sulle tecniche e i
linguaggi utilizzati nel Semantic Web, con lo scopo di introdurre i concetti
fondamentali di questa nuova visione.
In seguito, si farà riferimento alle tecnologie attualmente disponibili per
accedere alla struttura di un documento e si proporrà un sistema modulare in
grado di eseguire ed elaborare, in modo automatico, annotazioni per diversi
client.
-
Capitolo 2
Il Progetto
In questo capitolo si illustrano le motivazioni che ci hanno spinto a fare questo
proegetto, si parlerà anche delle leggi e dei criteri a cui bisogna attnernersi per
garantire l’accessibilità, dei vari dispositivi tecnologici; dello stato dell’arte,
ed infine analizzeremo ilprogetto.
2.1 Motivazioni
Il Web si evolve ad una velocità inedita per qualsiasi altro media tradizionale.
L’evoluzione tecnologica porta con sè anche un cambiamento dei costumi e
delle abitudini. La realizzazione di siti Web non si sottrae a questa regola e
nel corso dei mesi muta peculiarità e strumenti di utilizzo. Uno dei motivi
principali che ci ha spinto alla realizzazione di questo progetto risiede nel
tentativo di poter visualizzare un sito Web in vari modi diversi senza farne
perdere i contenuti e i servizi che il sito offre.Col nostro lavoro abbiamo cerca-
to di venire incontro a molte esigenze dei vari tipi di utenza, infatti abbiamo
cercato di sviluppare un sito che sia in grado di essere visualizzato da parte
di tutti, normodotati, disabili e utenti che si connettono con un palmare o
un cellulare WAP, per quanto riguarda quest’ultimo aspetto abbiamo solo
sviluppato il codice ma non abbiamo avuto modo di testarlo, quindi non ne
garantiamo la funzionalità. Oltre a garantire la visualizzazione per mezzo di
6
-
2.2. PERSONALIZZAZIONE DELL’INFORMAZIONE 7
strumenti comuni come un normale Pc, si è cercato di facilitare anche l’in-
terpretazine delle nostre pagine ad alcuni software e dispositivi particolari
usati dalle perosne disabili, come ad esempio i lettori di schermo la tastiera
e la stampante braille. L’obbiettivo primario dell’intero lavoro è quello di
progettare diversi template destinati a browser differenti;per esempio possi-
amo avere una versione del sito che utilizza tecnologie relativamente nuove
(quali style sheets, Dynamic HTML) destinata a sistemi di fascia alta (Opera
5, Mozilla/Netscape 6 e Internet Explorer 5/6), una versione in HTML old
fashion per sistemi di fascia bassa (Netscape 4.x e Internet Explorer 3/4),
una versione text-only priva di immagini per l’accesso tramite screen reader
o browser testuali (Lynx), realizzare template specifici palmari.E tutte le ver-
sioni attingeranno agli stessi contenuti, che non dovranno più essere copiati
manualmente all’interno di ciascun file HTML,che sono composte da template
vuoti, riempiti dinamicamente con i contenuti appropriati solo nel momento
in cui l’utente richiede l’accesso a una determinata pagina Web.I contenuti
vengono raccolti e organizzati in un database che automatizza la gestione
e la pubblicazione sul web server all’interno di pagine template dinamiche.I
contenuti sono riutilizzabili e modificabili a piacimento.I contenuti vengono
organizzati per permettere ricerche, categorizzazioni e matching automatici.
Prima di illustrare bene il progetto facciamo una panoramica sull’acces-
sibiltà in generale, e sugli strumenti che rendono accessibile un sito Web.
2.2 Personalizzazione dell’informazione
La questione della personalizzazione dei siti Web è venuta fuori solo di recente
all’attenzione dell’opinione pubblica internazionale. In effetti finora abbiamo
assistito allo sviluppo e alla diffusione dell’utilizzo di Internet:tecnologia nuo-
va che dà la possibilità di esplorare cose che riguardono tutto lo scibile umano.
Col tempo ci si inizia a porsi la questione delle possibilità reali del mezzo e
degli usi utili nonchè dei servizi che può fornire. Di conseguenza se Internet
diventa sempre più uno dei mezzi principali di scambio di notizie di infor-
-
2.2. PERSONALIZZAZIONE DELL’INFORMAZIONE 8
mazioni diventa inevitabile riflettere sui vincoli di accesso al mezzo. Chi non
ha problemi di accessibilità deve capire che questo non significhi che se un
sito sia accissibile per lui è accessibile per tutti. Bisogna tener conto an-
che delle persone che a causa di forze moggiori possono essere impossibilitati
ad usare gli strumenti di navigazione standard.Infatti la Camera dei Depu-
tati nella seduta dello scorso 26 maggio ha dato il via all’iter parlamentare
del disegno di legge sull’accessibilità degli strumenti informatici presentata
e promossa dal Ministro dell’Innovazione Lucio Stanca. L’Accessibilità pro-
pone soluzioni per permettere agli utenti disabili di accedere ai contenuti e
ai servizi in Internet aggirando o rimuovendo tali ostacoli.Possiamo dividere
i problemi di accessibilità in quattro categorie[20, 10, 18, 11, ?]:
1. disabilità fisiche/sensoriali:non vedenti, ipovedenti(persone che possiedono
un residuo visivo, oscillante tra 1/10 e 3/10), daltonici, non udenti ,
utenti con difficolatà motoria nell’uso di mouse e tastiera;
2. disabilità cognitive: scarso apprendimento problemi di lettura e com-
prensione dei testi;
3. barriere tecnologiche: connessione lenta plug-in assenti(java flash etc.);
4. situazioni particolari:l’utente è occupato in altre attività e non può
usare i normali strumenti di input e/o output.
Si può notare che dalla classificazione fatta l’accessibilità non riguarda so-
lamente gli utenti che sono colpiti di disabilità; ma anche tutti quelli che
dispongono di strumenti un pò vecchi o tecnologicamente avanzati come i
PDA.Per limitare questi problemi è necessario realizzare le pagine Web in
particolar modo quelle delle pubbliche amministrazioni seguendo determi-
nate regole, giungendo a ridurre completamente o il più possibile le cosid-
dette barriere Web, che non consentono un libero accesso alle informazioni.
A questo proposito il W3Consortium(ente internazionale preposto alla stan-
dardizzazione dei linguaggi di programmazione del Web in particolar modo
-
2.2. PERSONALIZZAZIONE DELL’INFORMAZIONE 9
l’HTML) attraverso il progetto WAI(Web Accessibilty Initiatives)ha propos-
to de dei criteri volti a promuovere il massimo grado di fruibilità del Web da
parte delle persone disabili.Il principale documento prodotto da questo or-
ganismo ad uso di chi produce pagine web sono le Web Content Accessibility
Guidelines 1.0 che risale al 1995 di cui esiste anche una traduzione italiana6;
ad Agosto del 2002 è stata rilasciata la bozza del documento relativo alle
Web Content Accessibility Guidelines 2.0 che, una volta approvate, andranno
ad aggiornare la versione la 1.0. Bisogna sottolineare, tuttavia, che linee gui-
da sono una specifica del W3C, un consorzio internazionale no-profit e non
un ente legislativo, pertanto, non avendo valore normativo, possono essere
adottate anche solo in parte, a seconda del livello di accessibilità che si vuole
raggiungere nella costruzione di un sito. È comunque necessario tenere sem-
pre in considerazione i Principi di Progettazione Universale. Il concetto di
Progettazione Universale ha origine in architettura e nel design dei prodotti,
dove la capacità di soddisfare un più grande numero di utenti dipende dalla
possibilità di mettere in pratica certi principi. I progettisti che applicano il
principio della progettazione universale realizzano prodotti che sono concepi-
ti sin dalla fase di progetto per essere usati da tutti gli individui, compresi
quelli con disabilità. L’applicazione del principio di progettazione universale
può presentare dei limiti e, in alcuni casi, porre vincoli alla creatività. Nel
caso dei siti web, i vincoli riguardano le modalità di attuazione delle varie
soluzioni tecniche, piuttosto che il contenuto e l’estetica dei documenti, per
cui non si traducono in limitazioni della possibilità espressiva. I principi
qui elencati sono molto generali ma si mettono in pratica in specifiche ap-
plicazioni nei vari campi dell’attività umana, come ad esempio quello dello
sviluppo delle interfacce uomo macchina, HCI (Human-Computer Interac-
tion) come pure quello delle interfacce utente dei programmi di navigazione
per Internet.Per costruire un sito accessibile bisogna rispettare le 14 linee
guida specificate dal WAI descritte nella versione 1.0, ogni linea guida è as-
sociata a uno o più punti di controllo che descrivono come applicare quella
linea guida a particolari aspetti delle pagine Web [17]:
-
2.3. WAPFORUM 10
1. Fornire alternative equivalenti al contenuto audio e visivo.
2. Non fare affidamento sul solo colore.
3. Usare marcatori e fogli di stile e farlo in modo appropriato.
4. Chiarire l’uso di linguaggi naturali.
5. Creare tabelle che si trasformino in maniera elegante.
6. Assicurarsi che le pagine che danno spazio a nuove tecnologie si trasformi-
no in maniera elegante.
7. Assicurarsi che l’utente possa tenere sotto controllo i cambiamenti di
contenuto nel corso del tempo.
8. Assicurare l’accessibilità diretta delle interfacce utente incorporate.
9. Progettare per garantire l’indipendenza da dispositivo.
10. Usare soluzioni provvisorie.
11. Usare le tecnologie e le raccomandazioni del W3C.
12. Fornire informazioni per la contestualizzazione e l’orientamento.
13. Fornire chiari meccanismi di navigazione.
14. Assicurarsi che i documenti siano chiari e semplici.
2.3 Wapforum
WAP[19, 13] nasce nel 1997 dalla costituzione di un gruppo no-profit, chiam-
ato WAP Forum, costituito da Unwired Planet (oggi Openwave) e i tre gran-
di colossi internazionali Ericsson, Motorola e Nokia. L’intento primario del
WAP Forum, che oggi conta più di cento associati, fu quello di mettere a
-
2.4. PALMARI 11
punto un nuovo standard comune, le cui specifiche fossero utilizzabili da tut-
ti senza pagare licenze d’uso. Tale standard è stato denominato Wireless
Application Protocol (WAP).
2.4 Palmari
[13, 19],Miniaturizzando ancora di più i componenti dei notebook ed eliman-
done altri non ritenuti necessari (es. tastiera, hard disk), si è cos̀ı arrivati a
costruire i computer palmari, utilizzabili al limite anche con una sola mano.
Il risultato che si è ottenuto è un computer con peso e dimensioni ridotti,
a metà strada tra l’agenda elettronica e un notebook. I computer palmari
si dividono in due famiglie: quelli con tastiera, detti anche PDA (Personal
Digital Assistant) o PC Companion, in alcuni casi vicini come prestazioni
ai notebook, ma che hanno bisogno di essere appoggiati ad un pur piccolo
piano di lavoro per poterci lavorare con una certa precisione.
2.5 Stato dell’arte
Facendo delle ricerche sulla rete abbiamo constatato che ancora molti siti che
offrono dei servizi sia informativi che di altro genere non risultono essere ac-
cissibili,secondo i criteri stabiliti del W3c nelle linee giuda del WAI.Inoltre ci
sono anche moltissimi siti che non possono essere visualizzati con strumenti
di navigazione diversi da un pc,quindi l’utente viene penalizzato poichè non
potrà usufruire del servizio a cui aveva fatto riferimento.Partendo da questi
presupposti abbiamo progettato un sito che potesse essere accissibile a qualsi-
asi tipo di utenza, venedo incontro a queste necessità sia per quanto riguarda
le nuove tecnologie palamri e cellulari Wap che persone che hanno bisogno
di un certo tipo di visualizzazione a causa di problemi legati a qualche tipo
di disabilità sia essa visiva o legata ad altri aspetti ad esempio l’epilessia
o la schizzofrenia. Facendo dei test con due tipi di palmari uno avente il
sistma operativo Palm-Os e l’altro,Windows-CE abbiamo potuto constatare
-
2.6. ANALISI DEL PROGETTO 12
che molti siti non vengono visualizzati poichè questi siti non sono stati pen-
sati per essere visualizzati da browser che non supportono alcuni plug-in.
Nel nostro lavoro abbiam cercato di risolvere anche questo aspetto di acces-
sibilità, che come spiegherò nel dettaglio nel prossimo paragrafo.Anche per
quanto riguarda un altro tipo di tecnologia ci sono non pochi problemi per la
visualizzazione di pagine web sto parlando dei cellulari Wap; infatti le pagine
per essere visualizzate con questi strumenti devono essere implementate con
il linguaggio WML un linguaggio che non è molto usato dai Webmaster, ora
il problema non si pone più perchè la tecnologia Wap va scomparendo per
far posto a quella UMTS.
2.6 Analisi del progetto
Dopo aver fatto delle premesse sui vari aspetti che riguardono l’accessibilità
dei contenuti nel Web, e aver parlato delle tecnologie con le quali si può
accedere alla visualizzazione di siti Web; in questo paragrafo si farà una
panoramica del lavoro di tesi svolto. La tesi quindi consiste nell’aver svilup-
pato un SCP (Semantic Collaborative Portal), cioè un sistema di visualiz-
zazione di una banca dati di articoli presi dai quotidiani più letti nel nostro
Paese, che sono: la Repubblica, il Giorno, il Corriere della Sera, il
Sole 24 ore, la Stampa e la Gazzetta dello Sport.
Abbiamo fatto una base dati XML con articoli classificati secondo vari
criteri ad esempio sezione: sport, spettacoli, interni, cronaca, esteri, politica;
testata e con altri dati caratteristici (autore, data, titolo, sottotitolo, soprati-
tolo, abstract, testo, foto, etc.). Abbiamo implementato un’interfaccia PHP
che recupera i dati dalla base dati e li espone agganciandoli ai relativi fogli
XSL in base alle caratteristiche del client (il piu’ possibile determinate dalla
User-Agent). I fogli XSL sono suddivisi in 4 gruppi:
1. interfaccia bella,
2. interfaccia accessibile per disabili,
-
2.6. ANALISI DEL PROGETTO 13
3. interfaccia accessibile per palmari,
4. interfaccia accessibile per cellulari WAP.
L’interfaccia ha una home page con alcuni articoli (testata, autore, data,
titolo e abstract con link all’articolo completo), i link alle varie sezioni e
una funzione di ricerca su tutte le sezioni; le pagine delle varie sezioni sono
simili alla home page avendo alcuni articoli della sezione (testata, autore,
data, titolo e abstract con link all’articolo completo), sempre i link alle varie
sezioni oltre che alla homa page e una funzione di ricerca sulla sezione. C’è
anche una pagina per i risultati delle ricerche strutturata come una serie di
link all’articolo completo. I criteri di ricerca sono stati implementati con
XSLT e PHP.
Quali articoli compaiono nelle varie sezioni(cioè quelli che vengono recu-
perati dal codice PHP per restituire l’XML giusto che poi viene agganciato
all’XSL corretto) e come compaiono(colore di sfondo,posizione dell’eventuale
foto,solo titolo o titolo con abstract ect.) viene deciso dal caporedattore, il
quale accede ad una pagina in cui c’è un form col quale può scegliere le varie
impostazioni desrcitte prima, una volta compilato il form, i dati passano
tramite il modulo PHP al file di impostazione XML e le modifiche verrano
salvate, quindi il sito si aggiornerà secondo i criteri scelti dal caporedattore.
Inoltre abbiamo usato la potenzialità dei CSS1, e CSS2; fondamentali per
rendere la visualizzazione del sito accessibile a quasi tutte le tipologie di uten-
ti che sono colpiti da disabilità, infatti con i CSS2 si permette di ottimizzare
per varie piattaforme la conversazione dei contenuti dei documenti.
-
Capitolo 3
Tecnologie utilizzate
Di seguito si illustreranno in maniera molto semplice e concisa linguaggi e
tecnologie usate per l’elaborato della tesi. Iniziamo col descrivere cos’è il
Web Semantico per descrivere le funzionalità e le potenzialità della nostra
applicazione.
3.1 Semantic Web
Il Semantic Web è stato ideato da Tim Berners-Lee [3], già inventore del
WWW, dell’HTTP e dell’HTML. Può essere considerato un web di seconda
generazione come è facilmente comprensibile dalla definizione che lo stesso
Berners-Lee ne fornisce:
“Il Semantic Web è un’estensione del web attuale in cui le informazioni
sono strutturate con un senso compiuto, rendendo migliore la cooperazione
tra le persone e i computer.”
In altre parole, rappresenta un metodo per aggiungere intelligenza alle
risorse disponibili in rete e sfruttarla per migliorare le caratteristiche del web
tradizionale.
Lo scopo iniziale del WWW era proprio quello di fornire uno strumento
di comunicazione per gli umani ma facilmente sfruttabile anche dalle mac-
chine. Purtroppo la seconda di queste speranze non è ancora stata realizzata,
14
-
3.2. HTML (HYPERTEXT MARKUP LANGUAGE) 15
e un’enorme mole di dati disponibili all’uomo non può essere analizzata e
rielaborata dalle macchine.
L’introduzione del Semantic Web dovrebbe proprio garantire la strut-
turazione del web in un formato facilmente processabile e leggibile dalle
macchine (Figura 3.1). L’obiettivo principale è quello di proporre tecnolo-
gie per lo scambio globale dell’informazione, riducendo lo sforzo dell’utente
umano e sfruttando le potenzialità delle macchine.
Le applicazioni future del Semantic Web potranno riguardare diversi
campi. Per fare tutto ciò si può pensare, nel nostro caso, ad una seguente
formula:
“Semantic Web = HTML + CSS + XML + XSL + PHP ”
riguardante tutto il Web dinamico e prendendo in considerazione moltepli-
ci tecnologie che più avanti andremo ad analizzare.
Esso sarà utile nel commercio elettronico in quanto faciliterà la comuni-
cazione fra cliente e venditore, garantendo l’uniformità del mercato. Potrà
potenziare gli attuali motori di ricerca, aggiungendo tutti i vantaggi derivanti
dall’introduzione della semantica.
3.2 HTML (HyperText Markup Language)
HTML [1] è il linguaggio usato in Internet per i documenti ipertestuali, i
più diffusi, che possono essere veramente multimediali contenendo al loro
interno altri documenti di varia natura. In realtà nei file HTML non vi è un
documento nel documento, ma un riferimento ad altri documenti. Il browser
provvederà quindi ad includere nella visualizzazione di un documento HTML
anche i documenti cos̀ı collegati, per la gran parte si tratta di immagini.
3.3 Css (Cascading Style Sheets)
CSS non è un qualcosa di sè stante, ma lavora in abbinamento al linguaggio
HTML; possiamo pensarlo come un semplice meccanismo per aggiungere
-
3.3. CSS (CASCADING STYLE SHEETS) 16
Figura 3.1 � Architettura client-server
dello stile ad una pagina in HTML.
Più precisamente un foglio di stile è un set di regole stilistiche che de-
scrivono come un documento HTML verrà presentato all’utente.
Visto in quest’ottica, HTML viene usato per descrive la struttura del
documento e le sue varie parti incurandosi del suo aspetto, di come verrà
presentato al lettore che dovrà leggere il documento.
CSS in seguito descrive come gli elementi della pagina HTML verranno
presentati al lettore del documento stesso.
Usando CSS il Designer può specificare la presentazione della pagina
HTML in maniera indipendente dal contenuto; in questo modo ottengo una
separazione dei compiti fra produzione di un documento e sua presentazione
al mondo Word Wide Web. Questa tecnologia inoltre gode di un ulteriori
proprietà: è molto flessibile in quanto fornita di un meccanismo capace di
-
3.3. CSS (CASCADING STYLE SHEETS) 17
propagare un determinato aspetto presentazionale su tutte le pagine che il
Web Designer vuole siano interessate, cosicchè una modifica di presentazione
fatta in un unico file si ripercuote a tutti i documenti che ne fanno riferi-
mento; questa è una proprietà molto potente perchè permette di semplificare
notevolmente il lavoro di revisione e mantenimento delle pagine di un sito
Web.
Inoltre CSS mette in piedi un meccanismo noto con il termine a cascata
(cascading) per cui e’ possibile incorporare nel documento differenti fogli di
stile, tale caratteristica è in grado di distinguere e scegliere fra più possibili
aspetti presentazionali che possono rispecchiare la volontà di visualizzare a
video di un documento in un certo modo da parte del Web Designer, del-
l’utente o dalle opzioni del Browser, risolvendo eventuali conflitti, in base a
regole gerarchiche facendo prevalere uno stile sull’altro.
3.3.1 Css 1
Le specificazioni fornite da CSS1 sono un semplice bilanciamento fra il real-
izzare un semplice controllo di stile sul Web e le richieste dei Web Designer.
CSS1 è in grado di intervenire su :
• Proprietà dei font
• Proprietà quali il colore ed il background
• Proprietà sulla formattazione del testo (Spaziatura fra caratteri, tutto
il testo minuscolo, ecc... )
• Proprietà di posizionamento assoluto e relativo (CSS-P), e sulle Box
Propreties.
• Proprietà di visualizzazione (quali ad esempio di liste, di immagini, di
formattazione orientata ai Box, ecc...).
-
3.4. XML (EXTENSIBLE MARKUP LANGUAGE). 18
3.3.2 Css 2
CSS2 semplifica il Web Authoring ed il mantenimento dei siti Web; è stato
costruito sopra le specifiche di CSS1 e a parte poche eccezzioni, ne conserva
la piena compatibilità.
CSS2 supporta specifici dispositivi Media-Type con i quali gli autori
possono presentare i loro documenti su Browser visuali, dispositivi audio,
stampanti, dispositivi braille, e altri.
Le nuove specifiche inoltre supportano un miglior posizionamento dei
contenuti nella pagina Web, nuovi fonts scaricabili, accorgimenti per l’in-
ternazionalizzazione, contatori e numeratori automatici ed infine alcune pro-
prietà relative all’interfaccia utente.
3.4 XML (Extensible Markup Language).
XML [26, 24, 5, 6, 7] è oggi considerato come il linguaggio del futuro nelle
applicazioni web e non solo, in quanto può essere utilizzato per definire
documenti di qualsiasi tipo e formato.
Il linguaggio per eccellenza, che è considerato la base dell’World Wide
Web è HTML (Hypertext Markup Language), il quale consente di creare
pagine di informazione formattate in grado di raggiungere tramite internet
un numero di utenti in continuo aumento. Lo scopo principale per cui è
stato realizzato HTML è la visualizzazione contenuti testuali e grafici e per
questo motivo esso prende in considerazione soprattutto il modo in cui le in-
formazioni vengono presentate agli utenti sulla rete e non il tipo e la struttura
di tali informazioni.
Proprio per questo motivo è stato sviluppato, da parte di un gruppo di la-
voro coordinato dal W3C, (Web Consortium), il linguaggio XML, (Extensible
Markup Language).
XML è un linguaggio di markup aperto e basato su testo, che fornisce
informazioni di tipo strutturale (o sintattico) e semantico relative ai dati
-
3.4. XML (EXTENSIBLE MARKUP LANGUAGE). 19
veri e propri. È un metalinguaggio, che permette a gruppi di persone o ad
organizzazioni di creare dei linguaggi personalizzati di markup specifici per i
tipi di informazione che devono trattare.
Per molte applicazioni infatti gli esperti hanno già creato linguaggi di
markup specifici come ad esempio il Channel Definition Format, (CDF),
il Mathematical Markup Language, (MML), utilizzato per definire espres-
sioni matematiche, il Chemical Markup Language, (CML), usato per definire
formule chimiche, e molti altri. XML nasce dall’esigenza di portare nel
Web lo Standard Generalized Markup Language (SGML), il linguaggio in-
ternazionale per la descrizione della struttura e del contenuto dei documenti
elettronici di qualsiasi tipo, non contiene però tutte le funzioni complesse che
SGML possiede. Per questo XML si caratterizza per la semplicità con cui è
possibile scrivere documenti.
L’utilizzo di XML permette di superare il grosso limite attuale del Web
che risiede nelle limitazioni del linguaggio HTML, cioè la dipendenza da
un tipo di documento HTML, singolo e non estensibile, quindi dipendente
dal tipo di visualizzatore utilizzato. Infatti se ci poniamo il problema di
visualizzare i vari tipi di documenti esistenti per il Web, ci accorgiamo che
ne esistono numerosissimi dai formati più svariati, ad esempio i documenti
Word o quelli HTML, dei quali inoltre ne esistono varie versioni.
Pensare di tradurre tutti questi possibili formati che chiamiamo (di orig-
ine) in tutti i possibili formati di destinazione è impensabile.
La strada da percorrere è di avere un unico formato di origine, al quale
applicare dei metodi standard semplici ed efficaci per la traduzione nei cor-
rispondenti formati di destinazione.
Come primo approccio si potrebbe pensare di usare come formato stan-
dard HTML, ma non va bene, in quanto se pur ricco di funzioni non ha
attualmente la caratteristica di un formato universale; per esempio non è in
grado di esprimere la complessità dei documenti Word e non prevede molte
possibilità, tra le quali per esempio la scrittura di spartiti musicali o le formule
chimiche.
-
3.4. XML (EXTENSIBLE MARKUP LANGUAGE). 20
È inoltre uno standard di tipo proprietario infatti la sua sintassi contiene
tag predefiniti e non è possibile quindi descrivere tag personalizzati.
Come secondo approccio si può pensare di usare come formato per es-
primere i nostri documenti origine SGML, che in realtà è nato come formato
standard e neutrale per esprimere vari tipi di documento.
3.4.1 DTD (Document Type Definition)
I documenti XML che sono scambiati tra agenti software raramente con-
tengono markup arbitrari non vincolati. Al contrario, questi documenti
seguono una struttura comune condivisa da molti documenti XML in un
certo dominio.
Il DTD (Document Type Definition) [5] contiene le regole che definiscono
i tag usati nel documento XML, ovvero definisce la struttura del documento.
Esso, infatti, specifica gli annidamenti e le combinazioni permesse di elementi,
attributi e cos̀ı via. Il DTD può essere un file esterno oppure può essere
specificato direttamente all’interno del documento XML.
3.4.2 XML Schema
Per consentire sia al software che riconosce XML sia agli umani, di sapere
quale contenuto ci si aspetta in un determinato scenario, si richiede che queste
strutture comuni siano documentate in una formato comprensibile sia alla
macchina che all’uomo. E’ questa la motivazione primaria dietro a XML
Schema [5, 9] il quale permette di definire un vocabolario XML che può essere
utilizzato per descrivere documenti XML facendo uso della sua stessa sintassi.
Nonostante XML Schema offra un numero di vantaggi sui DTD, come l’uso
dei namespace e la definizione di tipi, il suo ruolo è essenzialmente lo stesso:
definire una grammatica per i documenti XML.
-
3.4. XML (EXTENSIBLE MARKUP LANGUAGE). 21
3.4.3 XPath (XML Path Language)
Un’espressione XPath [8] è un percorso di posizione (location path), costituito
da più passaggi di posizione (location step), i quali sono separati da barre
trasversali ( / ). Queste espressioni possono essere paragonate ai percorsi
utilizzati ad esempio nel prompt del dos per passare da una directory ad
un’altra.
Un tipico percorso che fa riferimento ai dati dello studente contenuti in un
documento XML può essere il seguente: /student/indirizzo/via dove la barra
iniziale orienta la ricerca verso il nodo radice student per poi scendere al nodo
figlio indirizzo che a sua volta contiene l’elemento figlio via. Ogni passaggio
di posizione viene considerato il contesto di quello/i che lo precedono, per
cui /student considera l’elemento student nel contesto del nodo radice del
documento ( / ). Il nodo che definisce il contesto viene detto nodo di contesto.
3.4.4 XSLT (Extensible Stylesheet Language Transfor-
mations)
Perché un documento XML non sia solo un insieme di contenuti senza alcu-
na particolare formattazione è necessario trasformarlo in un’altra forma per
essere utilizzabile.
Lo standard più diffuso per effettuare questo tipo di trasformazioni è il
linguaggio XSLT, il quale si appoggia ad un altro linguaggio, XPath, che
consente di individuare parti specifiche di un documento XML, consentendo
inoltre di rimodellare il contenuto dei documenti per adattarlo a quasi tutti
gli ambienti di destinazione ( Figura 3.2 ).
Il concetto più importante di XSLT è quello della trasformazione di una
struttura in un’altra, ciascuna delle quali viene detta albero. Gli alberi
definiti in XSLT sono due: l’albero del sorgente e quello del risultato.
Una trasformazione XSLT non fa altro che trasformare un albero del
sorgente (il documento XML), in un albero del risultato (ad esempio in una
pagina HTML).
-
3.4. XML (EXTENSIBLE MARKUP LANGUAGE). 22
Una cosa importante da notare è che l’albero del sorgente non viene
modificato durante una trasformazione ma viene soltanto ristrutturato.
Per effettuare una trasformazione è necessario sapere quali parti del-
l’albero del sorgente devono essere recuperate in modo tale che appaiano
nell’albero del risultato e quindi identificarle nel foglio di stile.
Le parti dell’albero del sorgente sono dette nodi e devono essere individ-
uate tramite dei costrutti definiti dal linguaggio XPath. XSLT identifica i
seguenti tipi di nodi: nodo radice, nodi di elemento, di attributo, di testo, di
istruzioni di elaborazione (o PI, PROCESSING INSTRUCTION ), e infine
nodi di commento e di namespace.
Figura 3.2 � Struttura del Web.
-
3.4. XML (EXTENSIBLE MARKUP LANGUAGE). 23
3.4.5 WML (Wireless Markup Language)
WML è un linguaggio di formattazione del testo basato su XML. Esso è
progettato specificatamente per le interfacce utente dei dispositivi mobili
come ad esempio i display dei telefonini, dei pager o dei PDA.
WML è stato progettato specificatamente per i dispositivi aventi partico-
lari caratteristiche: display di piccole dimensioni, limitata capacità elabora-
tiva, banda limitata e alta latenza.
Dispositivi di questo genere sono tipicamente i telefonini mobili, che han-
no un display piccolo (con un numero di righe compreso tra le 4 e le 10 linee)
e supportano l’input da utente tramite il tastierino numerico di scomodo uti-
lizzo, ed i PDA, che tipicamente dispongono di un display più grande (circa
320x300 pixel) e di una tastiera alfabetica e numerica più comoda da usare.
Il WAP Forum è l’ente preposto a fornire le specifiche del linguaggio ed i
successivi aggiornamenti.
3.4.6 DOM XML (Document Model Object XML)
Il DOM è un’interfaccia di programmi applicativi che permette di accedere
dinamicamente alla struttura e aggiornare il contenuto di documenti XML
o HTML. La struttura del documento viene paragonata ad un albero o, per
essere più precisi, ad una foresta.
L’aspetto da sottolineare è che DOM è semplicemente un modello logico
e non impone al documento una struttura ad albero. Esso è progettato
per essere utilizzato con ogni tipo di linguaggio in modo da garantirne una
diffusione più ampia.
In questo lavoro è stata utilizzata l’implementazione PHP, costituita da
una serie di interfacce in grado di manipolare in modo completo ogni elemento
di un documento XML. Fra queste sicuramente la più importante è Node che
gestisce il tipo di dato principale nel DOM, ovvero il nodo.
-
3.5. WAP (WIRELESS MARKUP LANGUAGE) 24
3.5 WAP (Wireless Markup Language)
Esamineremo ora le differenze tra la comunicazione client-server in una tipica
applicazione Web e quella tra un dispositivo Wap e il server Web.
In una tipica applicazione Web, un utente digita un indirizzo URL nel
browser, il quale invia una richiesta HTTP al server Web. Quest’ultimo inter-
preta la richiesta e determina quali risorse (file, script ecc), deve recuperare
o eseguire.
Ad esempio se l’URL specifica un file, questo viene inviato direttamente
al client, altrimenti nel caso venga specificata una pagina PHP, il server ne
esegue il codice e restituisce il risultato al client.
A differenza del caso precedente, per accedere ad un sito Web da un
dispositivo mobile, è necessario un server intermedio detto Gateway, che
gestisca i messaggi scambiati tra il cellulare e il server Web, e viceversa.
Per accedere ad un sito Web da un dispositivo cellulare basta digitare
l’URL nel browser Wap come nel caso precedente. Quest’ultimo crea una
richiesta dell’URL contenente l’identificativo dell’utente, e la invia attraver-
so il protocollo WSP (Wireless Session Protocol), al server Gateway. La
comunicazione dei dati tra il Gateway e il dispositivo cellulare avviene in
formato binario.
Poichè i dispositivi Wap non possono comunicare con dati in formato
basato su testo (o textbased), a causa della poca banda disponibile, cos̀ı come
avviene nelle comunicazioni sulla rete internet con il protocollo HTTP, viene
utilizzato il protocollo WSP che converte gli Header HTTP (pacchetti di
dati in formato basato su testo), in formato binario, diminuendo cos̀ı anche
la quantità di dati trasmessi. WSP utilizza il protocollo WTP (Wireless
Transaction Protocol) invece di TCP (Transmission Control Protocol), per
trattare le richieste e le risposte tra il server Gateway e il server Web.
Il Gateway interpreta le richieste inviategli dal browser WAP [21, ?] in
formato binario, le traduce in richieste di tipo http (formato testo), e poi
le invia al server Web. Quest’ultimo dopo aver ricevuto tali richieste le
-
3.6. 3.8 PHP 25
interpreta, determina quale/i risorse deve recuperare o eseguire e invia i
risultati che possono essere dei file o l’output ottenuto eseguendo uno script,
al Gateway.
Ciò che viene restituito al Gateway deve esser nella forma di documento
WML, il quale verrà poi convertito dal Gateway in formato binario per essere
inviato al dispositivo mobile. Quest’ultimo di conseguenza interpreta il codice
WML e visualizza la pagina sul display.
3.6 3.8 Php
Php [16, 12]è un modulo aggiuntivo per web servers che permette di creare
delle pagine web dinamiche. In pratica, una pagina in Php è composta sia
da tag html, sia da parti in codice di programmazione Php. Ogni porzione
di codice viene eseguito prima di essere inviato all’utente che ne fa richiesta.
Per funzionare, Php necessita di un suo motore di scripting (script engine)
che esegue le parti in codice prima che il web server invii la pagina all’utente.
Quando un utente richiede una pagina Php, il motore esegue il codice
contenuto all’interno di quella pagina. Durante l’esecuzione, il codice produce
delle informazioni in formato html. Infine il file (in completo formato html)
viene inviato all’utente. Se proviamo a visualizzare il sorgente di una pagina
in Php si può notare che non vi compare nessuna riga di codice Php.
Il vantaggio è proprio questo: nessun utente esterno, tranne il webmaster,
può accedere al codice e modificarlo. Per l’utente esterno, la pagina in Php
è esattamente uguale a una qualsiasi pagina in Html.
-
Capitolo 4
Sviluppo del progetto
Di seguito si parlerà della struttura del nostro progetto, attraverso alcuni
esempi di codice e sintassi generale delle tecnologie usate, dei linguaggi di
programmazione e di altri aspetti importanti.
Inoltre a seconda del client, verrà inclusa la visulizzazione dei vari output.
4.1 Struttura e sintassi di un documento xml
Una delle caratteristiche principali di XML [26, 24, 5, 6, 7] è la possibilità
di fornire una struttura ad un documento. Ogni documento comprende sia
una struttura logica, che una fisica. La struttura logica è simile a un modello
che indica quali elementi includere nel documento e in quale ordine, mentre
la struttura fisica contiene i dati effettivi utilizzati in un documento, quali
il testo memorizzato nella memoria del computer, un immagine, un video e
cos̀ı via.
4.1.1 Struttura logica
La struttura logica fa riferimento all’organizzazione delle parti di un docu-
mento; in altre parole indica il modo in cui viene creato un documento in
contrapposizione al contenuto del documento stesso. Un documento XML è
26
-
4.1. STRUTTURA E SINTASSI DI UN DOCUMENTO XML 27
Figura 4.1 � Struttura di un documento XML.
costituito da dichiarazioni, elementi, istruzioni di elaborazione e commenti.
Alcune componenti sono essenziali altre sono opzionali.
4.1.2 Il prologo
Il primo elemento strutturale di un documento XML è un prologo iniziale,
costituito da due componenti principali anch’esse opzionali: la dichiarazione
XML e la dichiarazione del tipo di documento.
-
4.1. STRUTTURA E SINTASSI DI UN DOCUMENTO XML 28
4.1.3 Dichiarazione XML
La dichiarazione XML identifica la versione delle specifiche XML a cui è
conforme il documento. Sebbene la dichiarazione XML sia un elemento
opzionale, deve sempre essere inserita in documento XML. Il documento
inizia con una dichiarazione XML di base:
L’indicazione 1.0 specifica la versione dello standard XML alla quale è
conforme il documento XML stesso. Una dichiarazione XML può inoltre
contenere una dichiarazione di codifica (encoding) e una dichiarazione di
documento autonomo (standalone), nel seguente modo:
La dichiarazione di codifica identifica lo schema di codifica dei caratteri,
ad esempio UTF-8 o EUC-JP. Schemi di codifica diversi assegnano formati
di caratteri o linguaggi diversi.
La dichiarazione di documento autonomo, specifica se il documento XML
contiene al suo interno una DTD (standalone=Yes), o se la DTD è un
documento esterno (standalone=No), al quale ci si riferisce attraverso la
dichiarazione del tipo di documento che analizzeremo di seguito.
4.1.4 Dichiarazione del tipo di documento
La dichiarazione del tipo di documento è costituita da codice di markup che
indica le regole grammaticali o la definizione del tipo di documento DTD
per una particolare classe di documenti. Questa dichiarazione può anche es-
sere diretta a un file esterno che contiene tutta o parte della DTD e deve
essere visualizzata dopo la dichiarazione XML e prima dell’elemento Docu-
ment. Le seguenti stringhe di codice aggiungono una dichiarazione del tipo
di documento alle righe di codice precedenti:
-
4.1. STRUTTURA E SINTASSI DI UN DOCUMENTO XML 29
Vediamo che oltre alla parola chiave !DOCTYPE, bisogna specificare il
tipo di documento, che non è altro che un identificatore. La parola chiave
SYSTEM permette al sistema di andare a recuperare il file DTD esterno il
cui nome è stato specificato tra i doppi apici.
4.1.5 L’elemento document
L’elemento Document (detto anche tag radice), contiene tutti i dati di un
documento XML, inclusi tutti i sottoelementi annidati e le entità esterne. È
paragonabile al tag
del linguaggio HTML. Può essere considerato simile anche all’unità C:
del computer.
Tutti i dati del computer sono memorizzati in questa singola unità, in
cui le cartelle e le sottocartelle, contengono le singole parti di dati in una
struttura logica e di semplice gestione.
Nel seguente esempio scriviamo delle stringhe di codice che aggiungono
all’esempio precedente un elemento Document, in questo caso l’elemento rac-
coltadati, e il nome del file DTD nella dichiarazione del tipo di documento
(ad esempio database.dtd) :
Aeroporto
Cronoca
-
4.1. STRUTTURA E SINTASSI DI UN DOCUMENTO XML 30
Caratteristica molto importante in un documento XML è l’annidamento,
cioè il processo che consente di incorporare un oggetto o un costrutto all’in-
terno di un altro come nell’esempio precedente. Un documento XML può ad
esempio contenere elementi annidati e altri documenti. Ogni elemento secon-
dario, cioè un elemento diverso dall’elemento Document risiede interamente
all’interno del relativo elemento principale, cos̀ı :
XML segue regole di struttura rigide: ogni volta che un tag viene aperto
deve venir chiuso
dopo che tutti i tag aperti successivamente siano stati a loro volta chiusi.
Inoltre come abbiamo detto più volte, XML non ha marcatori predefiniti,
perciò non è possibile distinguere a priori tra tag singoli e tag accoppiati. Per
esempio in HTML abbiamo marcatori come hl che sono sempre accoppiati,
ma ne esistono altri, come img che non hanno bisogno di essere accoppiati.
Per questo motivo, in XML tutti i tag devono essere accoppiati.
Il linguaggio XML supporta anche un collegamento per elementi vuoti, il
tag di elemento vuoto. Questo tag unisce i tag di apertura e di chiusura per
un elemento senza alcun contenuto. Viene utilizzato un formato speciale:
NOMETAG/. In questo caso la barra segue il nome del tag, il che non è
possibile nel linguaggio HTML.
-
4.1. STRUTTURA E SINTASSI DI UN DOCUMENTO XML 31
4.1.6 Struttura fisica del linguaggio XML
La struttura fisica di un documento XML è costituita da tutto il contenuto
del documento stesso. Le unità di memorizzazione definite entità, possono
essere parte integrante del documento o possono essere esterne.
Ogni entità è identificata da un nome univoco e da un contenuto specifico
che può essere costituito da un singolo carattere all’interno del documento o
da un file esterno di grandi dimensioni.
In termini di struttura logica di un documento XML, le entità vengono
dichiarate nel prologo e viene loro fatto riferimento nell’elemento Document.
Dopo aver dichiarato la DTD, l’entità può essere utilizzata in un punto
qualsiasi del documento.
Un riferimento di entità indica all’elaboratore di recuperare il contenuto
di un’entità, come stabilito dalla dichiarazione di entità, e di utilizzarla all’
interno del documento.
Un documento XML è costituito, oltre che dagli elementi visti preceden-
temente, da elementi, attributi, entità e commenti.
4.1.7 Gli elementi
Gli elementi sono indicati nel documento XML come i tag di HTML, tra
parentesi angolari
< >
e a differenza di HTML, possono essere personalizzati, attribuendogli nomi
qualsiasi.
Ogni tag aperto deve essere chiuso con le parentesi angolari e la barra (
/ ), seguita dal nome dell’elemento.
La sintassi per definire un elemento è la seguente:
testo (opzionale)
-
4.1. STRUTTURA E SINTASSI DI UN DOCUMENTO XML 32
Per esempio definiamo un elemento di tipo INFO:
XML è molto più rigoroso di HTML, infatti mentre in quest’ultimo è possibile
omettere i tag di chiusura per alcuni elementi per esempio
, ,in XML ciò provocherebbe un errore da parte dell’analizzatore del docu-
mento.
Come si può notare dall’esempio precedente all’interno dei due tag è
possibile inserire del testo, il cui tipo dipende dalla definizione del tipo di
contenuto. Quest’ultimo può essere di due tipi:
PCDATA, Parsed Character Data, ossia dati carattere che possono essere
analizzati dall’analizzatore sintattico, e CDATA, Character Data, cioè dati
considerati come testo. La definizione del tipo di contenuto si trova nella
dichiarazione del tipo ELEMENT della DTD. Nel caso in cui tra i due tag
non vi sia alcun testo, (ecco perché la scritta testo(opzionale) tra i due tag),
l’elemento viene detto vuoto o empty.
Oltre al normale testo gli elementi possono contenere riferimenti a dati
binari o a character data, (cdata). I dati binari assumono la forma di file
esterni, quali immagini e altre applicazioni. Di contro i file di testo possono
contenere character data, che possono essere costituiti da riferimenti ad entità
esterne o caratteri di testo standard.
Le sezioni di testo identificate come CDATA sono elaborate dall’analiz-
zatore XML come informazioni di caratteri di semplice testo, e non come
markup. Ciò consente di visualizzare del testo di markup di esempio all’in-
terno del testo visibile del documento.
Nella creazione degli elementi inoltre, bisogna tenere presenti le varie
regole di assegnazione dei nomi agli elementi.
-
4.1. STRUTTURA E SINTASSI DI UN DOCUMENTO XML 33
Il nome di un elemento può essere costituito da qualsiasi combinazione
di lettere, numeri, punti, trattini e caratteri di sottolineatura. Essi possono
iniziare con un qualsiasi di questi elementi, ma non è possibile inserire spazi
nel nome dell’elemento, in quanto lo spazio viene utilizzato come separatore
per identificare la transizione da un elemento ad un attributo.
Un esempio di elementi sintatticamente corretti è il seguente:
invece il seguente elemento è sintatticamente errato:
perché vi è uno spazio tra l’elemento e il numero 1.
4.1.8 Gli attributi
Gli attributi consentono di associare valori a un elemento, senza che siano
considerati parte del contenuto dell’elemento stesso. Ad esempio osserviamo
un comune elemento HTML e l’utilizzo di un attributo:
Microsoft Home Page
In questo caso l’elemento Anchor indicato dal tag
contiene un attributo denominato HREF.
Il valore dell’attributo è http://www.microsoft.com. Mentre il valore
non viene mai visualizzato dall’utente, l’attributo contiene importanti in-
formazioni relative all’elemento e fornisce la destinazione dell’ancora.
Questo formato del nome e del valore mostra il modo in cui sono utilizzati
gli attributi nel linguaggio XML.
La sintassi per definire un attributo è la seguente:
-
4.1. STRUTTURA E SINTASSI DI UN DOCUMENTO XML 34
-
4.1. STRUTTURA E SINTASSI DI UN DOCUMENTO XML 35
• I nomi degli attributi possono contenere qualsiasi lettera o numero, il
punto o il carattere di sottolineatura, (è possibile usare i due punti ma
essi sono riservati ai namespace).
• I valori degli attributi devono essere racchiusi sempre tra le virgo-
lette(””), a differenza di quanto accade in HTML nel quale vengono
omesse.
• Non sono ammessi più attributi con lo stesso nome in un unico elemen-
to.
Come si può notare le regole non sono moltissime. Un altro aspetto
importante è che uno stesso attributo può essere utilizzato in un numero
illimitato di elementi ad esempio:
(elemento document o elemento radice)
Aeroporto
Cronaca
(elemento document o elemento radice)
Aeroporto
Cronaca
.....
(chiusura dell’elemento radice)
Affinché gli attributi possano essere definiti devono essere dichiarati nella
DTD, tramite una dichiarazione di tipo
La mancanza di tale dichiarazione comporta un errore da parte del processore
XML.
-
4.1. STRUTTURA E SINTASSI DI UN DOCUMENTO XML 36
4.1.9 Documenti ben-formati (Well Formed)
Un documento XML è considerato valido se segue tutte le regole, sia strut-
turali che grammaticali.
Un documento valido è conforme quindi anche a tutti i limiti di validità
relativi ad XML. L’elaboratore dovrà comprendere i limiti di validità delle
specifiche XML e verificare possibili violazioni all’interno del documento.
Se l’elaboratore trova un errore, deve comunicarlo all’applicazione XML.
Dovrà inoltre leggere la DTD, convalidare il documento e riportare qualsi-
asi violazione all’applicazione XML. Dato che questi controlli possono richiedere
tempo e occupare larghezza di banda e poiché la convalida non sempre è nec-
essaria, il linguaggio XML supporta la nozione di documento ben formato o
Well Formed.
Anche se ben formato significa che è necessario seguire alcune regole, non
è richiesto la stessa rigidità dei limiti di validità. Il concetto di documento
ben formato è relativamente nuovo in XML.
Un documento XML ben formato è più facile da leggere per un program-
ma ed è pronto per la distribuzione in rete.
Più specificatamente, i documenti ben formati hanno queste caratteris-
tiche:
• Tutti i tag di apertura e di chiusura corrispondono.
• I tag vuoti utilizzano una sintassi XML speciale.
• Tutti i valori degli attributi sono racchiusi tra virgolette.
• Tutte le entità sono dichiarate.
Quindi, un documento XML valido rispetta i tag e le norme di annida-
mento impostate nella DTD del documento, mentre un documento XML ben
formato viene strutturato in modo appropriato per l’utilizzo da parte di un
computer.
-
4.1. STRUTTURA E SINTASSI DI UN DOCUMENTO XML 37
4.1.10 Struttura dei fogli di stile
Cos̀ı come i documenti anche i fogli di stile contengono come prima istruzione
la dichiarazione XML
Un tipico foglio di stile XSLT contiene un elemento radice che è identificato
dalla seguente sintassi:
dove:
• version, indica la versione della specifica XML a cui il foglio di stile è
conforme
• altre dichiarazioni di namespace, rappresenta la possibilità di aggiun-
gere dei namespace, oltre a quello predefinito indicato nella seconda
riga della sintassi precedente.
Questi namespace devono tener conto dei requisiti dell’elaboratore XSLT
ed eventualmente dell’elaboratore che deve produrre l’output. Alcuni dei
namespace più utilizzati sono:
• xmlns=http://www.w3.org/TR/REC-HTML40 il quale indica che gli
elementi del foglio di stile deve essere conformi ad HTML versione 4.0.
• xmlns=http://www.w3.org/1999/xhtml questo namespace è utilizzato
per indicare che il foglio di stile è conforme alla specifica XHTML 1.0.
-
4.1. STRUTTURA E SINTASSI DI UN DOCUMENTO XML 38
• xmlns:wml=http://www.wapforum.org/xmlns/wml viene utilizzato per
trasformare XML nel linguaggio WML (WIRELESS APPLICATION
PROTOCOL), il linguaggio utilizzato nella telefonia cellulare. Utiliz-
zato anche per il nostro progetto.
Questo è un esempio di foglio di stile un po più complesso per il nostro
progetto:
mostra.php?val=&var=1
-
4.1. STRUTTURA E SINTASSI DI UN DOCUMENTO XML 39
4.1.11 Le pagine WML
Le pagine o documenti WML sono strutturate in deck. Ogni deck consiste di
una o più cards, che sono le unità di visualizzazione sul browser, quelle che
per il dispositivo WAP sono le pagine vere e proprie.
Ogni deck inizia e termina con
.. .
e ogni card con
. . .
Quando il browser WAP accede ad un deck, lo legge interamente, e la
navigazione al suo interno è fatta senza bisogno di scaricare nuovi dati dal
server. Una volta che il deck è scaricato dal browser, tutte le sue cards
rimangono staticamente all’interno della sua memoria, finchè non si accede
ad un altro deck o si forza un reload.
I deck devono avere una dimensione massima, per assicurare la compati-
bilità tra vari dispositivi cellulari, in quanto questi hanno memorie di diversa
capacità. Ecco un esempio di deck che contiene al suo interno due card:
. . .
. . .
L’elemento card può avere uno o più attributi (o proprietà), di cui solo id
è indispensabile, in quanto definisce il nome stesso della card, indispensabile
per poterla utilizzare e richiamare, pertanto risulta necessario, deve essere
univoco e deve essere composto da una sola parola.
-
4.1. STRUTTURA E SINTASSI DI UN DOCUMENTO XML 40
La difficoltà nel nostro progetto è stata di non avere una pagina WML ma
un documento XML, cosi da potergli applicare un foglio di stile e generare
un documento con sintassi WML.
Di seguito riporto una parte del codice:
’]]>’
’]
]>’
(con questo tag diventa un documento WML)
-
4.1. STRUTTURA E SINTASSI DI UN DOCUMENTO XML 41
. . .
che genera :
’<?xml version="1.0"?>’
’/p>
PUBLIC"-//WAPFORUM//DTD WML
1.1//EN""http://www.wapforum.org/DTD/wml_1.1.xml">’
-
4.2. PHP 42
4.2 Php
La principale peculiarità del web dinamico è la possibilità di variare i con-
tenuti delle pagine in base alle richieste degli utenti.
Questa possibilità si materializza attraverso i meccanismi che permet-
tono agli utenti, oltre che di richiedere una pagina ad un web server, anche
di specificare determinati parametri che saranno utilizzati dallo script php
per determinare quali contenuti la pagina dovrà mostrare. Come esempio,
possiamo immaginare una pagina il cui scopo è quello di visualizzare le carat-
teristiche di un certo tipo di dato, prelevandole da un database nel quale sono
conservati. Nel momento in cui si richiama la pagina, si dovrà specificare il
-
4.2. PHP 43
codice del dato che deve essere visualizzato, per consentire allo script di
prelevare dal database i dati appropriati e mostrarli all’utente.
4.2.1 Sintassi php
Si tratta dei tag
Le variabili sono alcuni dei componenti fondamentali di qualsiasi linguag-
gio di programmazione, in quanto ci consentono di trattare i dati del nostro
programma senza sapere a priori quale sarà il loro valore. Possiamo immag-
inare una variabile come una specie di contenitore all’interno del quale viene
conservato il valore che ci interessa, e che può cambiare di volta in volta.
In PHP possiamo scegliere il nome delle variabili usando lettere, primo
carattere del nome deve essere però una lettera o un underscore (non un
numero). Dobbiamo inoltre ricordarci che il nome delle variabili è sensibile
all’uso delle maiuscole e delle minuscole:
di conseguenza, se scriviamo due volte un nome di variabile usando le
maiuscole in maniera differente, per PHP si tratterà di due variabili distinte!
Nello script PHP il nome delle variabili è preceduto dal simbolo del dollaro
($).
PHP [16, 12] ha una caratteristica che lo rende molto più flessibile rispet-
to ad altri linguaggi di programmazione: non richiede, infatti, che le vari-
abili vengano dichiarate prima del loro uso. Possiamo quindi permetterci di
riferirci ad una variabile direttamente con la sua valorizzazione:
$a = 5;
$a = 9;
$b = 4;
$c = $a * $b;
print $z;
-
4.2. PHP 44
Vediamo un altro esempio:
$a = 74; $b = 29; $risultato = $a + $b;
print $risulato;
$colori =array(’bianco’, ’nero’, ’giallo’, ’verde’, ’rosso’);
print$ colori[2]; //stampa ’giallo’
4.2.2 Php e html
PHP è un linguaggio la cui funzione fondamentale è quella di produrre codice
HTML, che è quello dal quale sono formate le pagine web. Siccome però
PHP è un linguaggio di programmazione, abbiamo la possibilità di analizzare
diverse situazioni (l’input degli utenti, i dati contenuti in un database) e di
decidere, di conseguenza, di produrre codice HTML condizionato ai risultati
dell’elaborazione. Questo è, in parole povere, il Web dinamico.
Quando il server riceve una richiesta per una pagina php, la fa analizzare
dall’interprete del PHP stesso, il quale restituisce un file contenente solo il
codice che deve essere inviato al browser (in linea di massima HTML, ma
può esserci anche codice JavaScript, fogli di stile css eccetera).
Dunque, come si realizza la produzione di codice HTML?
La prima cosa da sapere è come fa PHP (inteso come interprete) a ri-
conoscere il codice php contenuto nel file che sta analizzando. Il codice php
infatti deve essere compreso fra appositi tag di apertura e di chiusura, che
sono i seguenti:
Pagina di prova in PHP
-
4.2. PHP 45
4.2.3 Le variabili GET e POST
Ora non ci occuperemo di come vengono salvati o recuperati i dati da un
database, ma del modo in cui PHP li riceve dall’utente. Esistono due sistemi
per passare dati ad uno script: il metodo GET e il metodo POST.
Il metodo GET consiste nell’accodare i dati all’indirizzo della pagina richi-
esta, facendo seguire il nome della pagina da un punto interrogativo e dalle
coppie nome/valore dei dati che ci interessano. Nome e valore sono sepa-
rati da un segno di uguale. Le diverse coppie nome/valore sono separate dal
segno ’&’.
Quindi, immaginando di avere la pagina prova.php che mostra le carat-
teristiche di un dato passandole il codice (val) e la categoria(pos) del dato
stesso, diciamo che, per visualizzare i dati del prodotto 7 della categoria 2,
dovremo richiamare la pagina in questo modo:
La stringa che si trova dopo il punto interrogativo, contenente nomi e val-
ori dei parametri, viene detta query string. Quando la pagina prodotto.php
viene richiamata in questo modo, essa avrà a disposizione, al suo interno, le
variabili
$_GET[’val’] (con valore ’7’) e \$_GET[’pos’] (con valore ’2’)
-
4.2. PHP 46
Il metodo POST viene utilizzato con i moduli: quando una pagina HTML
contiene un tag
uno dei suoi attributi è method, che può valere GET o POST. Se il metodo
è GET, i dati vengono passati nella query string, come abbiamo visto prima.
Se il metodo è POST, i dati vengono invece inviati in maniera da non essere
direttamente visibili per l’utente, attraverso la richiesta HTTP che il browser
invia al server.
I dati che vengono passati attraverso il metodo POST sono memorizzati
nell’array
$_POST
Anche questo array, come
$_GET
è un array superglobale. Quindi, per fare un esempio attraverso un piccolo
modulo:
-
4.2. PHP 47
Questo modulo contiene semplicemente una casella di testo che si chiama
’nome’ e una checkbox che si chiama ’nuovo’, il cui valore è definito come
’si’. Poi c’è il tasto che invia i dati, attraverso il metodo POST, alla pagina
elabora.php. Questa pagina si troverà a disposizione la variabile
$_POST[’nome’]
contenente il valore che l’utente ha digitato nel campo di testo; inoltre, se è
stata selezionata la checkbox, riceverà la variabile
$_POST[’nuovo’]
con valore ’si’. Attenzione però: se la checkbox non viene selezionata
dall’utente, la variabile corrispondente risulterà non definita.
4.2.4 Codici e funzioni principali
L’introduzione appena descritta servirà per spiegare come funziona il nostro
codice per la realizzazione del progetto.
La prima funziona che si trova nell’indice è:
\$browse = getenv("HTTP_USER_AGENT");
if (preg_match("/MSIE/i","\$browse")){
header ("Location: web/sitoweb.php");
}
elseif (preg_match("/Netscape/i","$browse")){
header ("Location: web/sitoweb.php");
-
4.2. PHP 48
}
/// Gestione palmari Pocket PC && WINDOWS
elseif (preg_match("/MSPIE/i","\$browse")){
header ("Location: palmare/sitopalmare.php");
}
elseif (preg_match("/Windows CE/i","\$browse")){
header ("Location: palmare/sitopalmare.php");
}
elseif (preg_match("/PalmSource/i","\$browse")){
header ("Location: palmare/sitopalmare.php");
}
/// Gestione cellulari
elseif (preg_match("/nokia/i","\$browse")){
header ("Location: cellulare/sitocellulare.php");
}
grazie a questo codice riusciamo a capire il tipo di client che fa la richiesta
al server o meglio con
\$browse = getenv("HTTP_USER_AGENT");
viene restituito dal server un certo tipo di informazioni utili al client.
Una seconda funziona è la trasformazione di un documento xml, tramite
xsl, in html:
-
4.2. PHP 49
$xh = xslt_create();
// Process the document
if (xslt_process($xh, ’sample.xml’, ’sample.xsl’, ’result.xml’)) {
readfile(’result.xml’);
print "\n";
} else {
print "error code is " . xslt_errno($xh);
}
xslt_free(\$xh);
?>
Una terza funzione importante è il passaggio della variabile per il diverso
tipo di client con il passaggio di una var col metodo GET:
Con la stringa
-
4.2. PHP 50
$var = ($HTTP_GET_VARS[’var’]);
$stile = "xsl/palmare/stile$var.xsl";
riusciamo ad ottenere lo stile giusto creato da noi in xsl.
Un’ultima funzione, la più impegnativa, è data dalla figura di un capore-
dattore (figura 4.10) che si preoccupa di far scegliere all’utente il tipo di
navigazione che vuole fare all’interno del progetto e in che modo vuole venga
visualizzata (figura 4.11).
Codice 4.1:
-
4.2. PHP 51
$value) {
$stringa .= "\r\n\r\n";
$stringa .= "\r\n";
$stringa .= "\r\n";
$stringa .= "\r\n";
$stringa .= "\r\n\r\n";
}
$stringa .= "\r\n";
$filename = "../apache/o.xsl";
.
.
.
-
4.2. PHP 52
?>
Una volta passato al caporedattore i valori inseriti nel modulo, il codice
4.2 crea, scrivendolo come stringa, un foglio xsl apposito per la visualizzazione
dall’utente scelta.
4.2.5 Visualizzazione in base al client
Arriviamo alla visualizzazione vera e proprio dei diversi tipi di client.
Nel caso si tratta di un palmare, cioè viene rsetituita una stringa che fa
match con
(preg_match("/MSPIE/i","\$browse"))
(preg_match("/Windows CE/i","\$browse"))
(preg_match("/PalmSource/i","\$browser"))
la visualizzaizone sarà del tipo (figura 4.2, figura 4.3, figura 4.4).
Nel caso si tratta di un PC, cioè viene restituita una stringa che fa match
con
(preg_match("/MSIE/i","\$browse"))
(preg_match("/Netscape/i","$browse"))
(preg_match("/Opera/i","$browse"))
(preg_match("/Mozilla/i","$browse"))
la visualizzaizone sarà del tipo (figura 4.5, figura 4.6, figura 4.7).
Nel caso si clicca sul collegamento sito accessibile si avrà la seguente
visualizzazione (figura 4.8, figura 4.9):
Nell’ultimo caso, i telefonini, si avrà una visualizzazione del tipo (figura
4.12, figura 4.13) con codice:
(preg_match("/nokia/i","$browse"))
(preg_match("/ericsson/i","$browse"))
anche se noi abbiamo avuto un po di problemi per la visualizzazione del
nostro progetto su cellulari.
-
4.2. PHP 53
Figura 4.2 � Visualizzazione palmare (a).
-
4.2. PHP 54
Figura 4.3 � Visualizzazione palmare (b).
-
4.2. PHP 55
Figura 4.4 � Visualizzazione palmare (c).
-
4.2. PHP 56
Figura 4.5 � Web (a).
Figura 4.6 � Web (b).
-
4.2. PHP 57
Figura 4.7 � Web (c).
Figura 4.8 � Accessibile (a).
-
4.2. PHP 58
Figura 4.9 � Accessibile (b).
-
4.2. PHP 59
Figura 4.10 � Caporedattore.
Figura 4.11 � Trasformazione del caporedattore.
-
4.2. PHP 60
Figura 4.12 � Wml (a).
-
4.2. PHP 61
Figura 4.13 � Wml (b).
-
Conclusioni
Come si è già stato accennato nel capitolo introduttivo, per garantire lo
sviluppo del Semantic Web è necessario che l’intera comunità web unisca gli
sforzi per creare sistemi validi atti a rendere semanticamente accessibile un
insieme sempre maggiore di informazioni. I tentativi per facilitare quest’op-
erazione sono stati molteplici, ma solo una piccola parte di essi, o addirittura
nessuno, ha raggiunto realmente un’ampia realizzazione. Questo fallimento
non è dovuto ad un cattivo approccio (la maggior parte degli esperimenti si
è rilevata utile e ben testata): la motivazione principale è da ricercarsi nella
mancanza di una vera e propria applicazione efficiente, ossia talmente valida
da sbaragliare le altre. Un altro aspetto che ha rallentato lo sviluppo del
Semantic Web è la mancanza di un sistema scalabile, in grado di integrare la
semantica nel web attuale senza precludere futuri sviluppi. Il sistema propos-
to cerca di risolvere questi problemi, proponendo un prototipo interamente
basato sugli standard esistenti e concepito con una struttura modulare in
grado di permettere successive espansioni e modifiche. La validità dell’ap-
proccio è stata testata attraverso alcune prove, le quali hanno evidenziato i
vantaggi che si possono ottenere dal sopracitato sistema. Questo lavoro non
ha la presunzione di rappresentare una soluzione perfetta e definitiva, sem-
plicemente vuole costituire un piccolo passo in avanti verso una direzione che
sembra essere molto promettente. In futuro, infatti, si potrebbero realizzare
algoritmi di frammentazione più efficienti, in grado di scomporre una risorsa,
anche differente da un semplice documento testuale, in modo intelligente.
62
-
Bibliografia
[1] B. Bos and H. Wium Lie. CSS, http://www.w3.org/TR/1999/REC-CSS1-19990111.
[2] K.I. Aardal, S.P.M. van Hoesel, A.M.C.A. Koster, C. Mannino, and A. Sassano.
Models and solution techniques for frequency assignment problems. Technical report,
Konrad-Zuse-Zentrum fur Informationstechnik, December 2001.
[3] T. Berners-Lee, J. Hendler, and O. Lassila. The semantic web. Scientific American,
May 2001.
[4] B. Bos, H. Wium Lie, C. Lilley, and I.Jacobs. CSS, level 2 Recommendation -
http://www.w3.org/TR/1998/REC-CSS2-19980512/.
[5] D. Box. Essential XML, beyond markup. Addison-Wesley, 2000.
[6] T. Bray and J. Paoli. Extensible Markup Language (XML) -
http://www.w3.org/TR/REC-xml.
[7] World Wide Web Consortium. XML Linking Language (XLink)Version 1.0., W3C
Recommendation.
[8] World Wide Web Consortium. XML Path Language (XPath)Version 1.0 W3C
Recommendation.
[9] D. C. Fallside. XML Schema Part 0: Primer - http://www.w3.org/TR/xmlschema-0.
[10] http://i dome.giallo.it/docs/pagina.phtml?
[11] http://www.aib.it/aib/cwai/WAI trad.
[12] http://www.apache.org.
[13] http://www.cemonster.com/.
[14] http://www.constile.org/.
[15] http://www.html.it.
[16] http://www.php.net.
63
-
BIBLIOGRAFIA 64
[17] http://www.w3.org/TR/REC smil.
[18] http://www.w3.org/WAI/Resources/WAI UA-Support.
[19] http://www.wapforum.com.
[20] http://www.webaccessibile.org.
[21] MobileWAP. Introduzione al WAP - http://www.mobilewap.com.
[22] Sofia Postai. Il mestiere del Web. Hops, 2003.
[23] Sofia Postai. Siti che funzionano. Hops, 2004.
[24] Bonnie SooHoo. XML tutorial - http://webreview.com/pub/2000/08/04/feature/index04.html.
[25] S.U. Thiel, S. Hurley, and D.H. Smith. Frequency assignment algorithms. Technical
report, Radiocommunications Agency Agreement, April 1997.
[26] J. Veen. XML, Metadata for the rest of us, - http://www.hotwires.lycos.com/.