XML/XForms
- Comprendere cos'è XForms e quali sono le sue potenzialità
- Conoscere i comandi e le funzionalità di XForms
I moduli (o form) sono oggi una parte importante di molte applicazioni web. Un modulo HTML permette alle applicazioni web di accettare input da un utente. Gli utenti web però oggi svolgono transazioni complesse che vanno al di là dei limiti dei moduli HTML standard. XForms è una nuova generazione di moduli, più ricca e flessibile dei moduli HTML.
XForms utilizza XML per la definizione dei dati e HTML o XHTML per la visualizzazione dei dati. XForms separa la logica dei dati di un modulo dalla loro presentazione. Ciò rende XForms indipendente dal device, perché il modello di dati può essere utilizzato per tutti i dispositivi. La presentazione può essere personalizzata per diverse interfacce utente, come telefoni cellulari e dispositivi palmari, e può fornire interattività tra tali dispositivi. È anche possibile aggiungere elementi XForms direttamente in altre applicazioni XML come VoiceXML, WML (Wireless Markup Language) e SVG (Scalable Vector Graphics).
Scopo di XForms
[modifica | modifica sorgente]Sintetizzando, XForms separa la funzione dalla presentazione. Ad esempio, lo scopo di un'applicazione per questionari è quello di raccogliere informazioni sull'utente. Questo viene fatto creando una presentazione grafica che permetta all'utente di fornire le informazioni richieste. Le applicazioni web di solito rendono tale presentazione come un documento interattivo che viene continuamente aggiornato durante l'interazione con l'utente. Separando la funzione dalla sua presentazione, XForms permette di legare le diverse interazioni ad un unico modello.
Aspetti principali di XForms
[modifica | modifica sorgente]Il modello XForms definisce cos'è il modulo, quali dati contiene e cosa dovrebbe fare. L'interfaccia utente di XForms definisce i campi di input e come devono essere visualizzati. Il XForms Submit Protocol definisce come XForms invia e riceve i dati, inclusa la possibilità di sospendere e riprendere la compilazione di un modulo. Quelli di XForms sono dati di istanza, una rappresentazione interna dei dati mappati ai familiari "form controls". I dati di istanza sono basati su XML, definiti con una rappresentazione ad albero all'interno di XPath ed elaborati in XML.
Framework XForms
[modifica | modifica sorgente]Con XForms, i dati di input sono descritti in due parti diverse:
- il modello XForms,
- l'interfaccia utente di XForms.
Modello XForm
[modifica | modifica sorgente]Il modello XForm definisce cos'è il form, quali dati contiene e cosa dovrebbe fare. Il modello di dati è un'istanza (un modello) di un documento XML. Il modello XForms definisce un modello dati all'interno di un elemento <model>
:
<model>
<instance>
<person>
<fname/>
<lname/>
</person>
</instance>
<submission id="form1" action="submit.asp" method="get"/>
</model>
Dall'esempio precedente si può vedere che il modello XForms usa un elemento <instance>
per definire il template XML per i dati da raccogliere, e un elemento <submission>
per descrivere come inviare i dati. Il modello XForms non dice invece nulla sulla parte grafica del form (l'interfaccia utente).
L'elemento <instance>
[modifica | modifica sorgente]I dati raccolti da XForms sono espressi come dati di istanza XML. XForms raccoglie sempre dati per un documento XML. L'elemento <instance>
nel modello XForms definisce il documento XML.
Nell'esempio precedente il modulo sta raccogliendo dati per apparire così:
<person>
<fname/>
<lname/>
</person>
Dopo avere raccolto i dati, il documento XML sarà così:
<person>
<fname>Jim</fname>
<lname>Jones</lname>
</person>
L'elemento <submission>
[modifica | modifica sorgente]Il modello XForms usa un elemento <submission>
per descrivere come inviare i dati. L'elemento <submission>
definisce un form e come deve essere inviato. Nell'esempio precedente, l'attributo id="form1"
identifica il form, l'attributo action="submit.asp"
definisce l'URL a cui il form deve essere inviato, e l'attributo method="get"
definisce il metodo da usare per inviare i dati.
L'interfaccia utente di XForms
[modifica | modifica sorgente]L'interfaccia utente di XForms viene utilizzata per visualizzare e inserire i dati. Gli elementi dell'interfaccia utente sono chiamati controlli (o controlli di ingresso):
<input ref="fname"><label>First Name</label></input>
<input ref="lname"><label>Last Name</label></input>
<submit submission="form1"><label>Submit</label></submit>
Nell'esempio sopra i due elementi <input>
definiscono due campi di input. Gli attributi ref="fname"
e ref="lname"
puntano agli elementi <fname>
e <lname>
del modello XForms. L'elemento <submit>
ha un attributo submission="form1"
che si riferisce all'elemento <submission>
nel modello XForms. Un elemento submit
è solitamente visualizzato come un pulsante. Notare gli elementi <label>
nell'esempio. Con XForms ogni elemento di controllo di input ha un elemento <label>
richiesto.
XForms e HTML
[modifica | modifica sorgente]XForms deve essere eseguito all'interno di un altro documento XML. Può essere eseguito all'interno di un file XHTML 1.0, e verrà eseguito all'interno di XHTML 2.0. Se mettiamo tutto insieme, il documento avrà questo aspetto:
<xforms>
<model>
<instance>
<person>
<fname/>
<lname/>
</person>
</instance>
<submission id="form1" action="submit.asp" method="get"/>
</model>
<input ref="fname"><label>First Name</label></input>
<input ref="lname"><label>Last Name</label></input>
<submit submission="form1"><label>Submit</label></submit>
</xforms>
Processore XForms
[modifica | modifica sorgente]Un processore XForms integrato nel browser sarà responsabile dell'invio dei dati XForms a una destinazione. I dati possono essere inviati come XML e potrebbero avere un aspetto simile a questo:
<person>
<fname>Jim</fname>
<lname>Jones</lname>
</person>
Oppure potranno essere inviati come testo, in questo modo:
fname=Jim;lname=Jones
Il namespace XForms
[modifica | modifica sorgente]Il namespace ufficiale per XForms è: http://www.w3.org/2002/xforms. Se si desidera utilizzare XForms in HTML (o XHTML 1.0), è necessario dichiarare tutti gli elementi XForms con un namespace XForms. In futuro XForms dovrebbe diventare una parte standard di XHTML 2.0, eliminando così la necessità del namespace XForms.
Un esempio di documento XForms
[modifica | modifica sorgente] <xforms>
<model>
<instance>
<person>
<fname/>
<lname/>
</person>
</instance>
<submission id="form1" method="get" action="submit.asp"/>
</model>
<input ref="fname">
<label>First Name</label></input><br />
<input ref="lname">
<label>Last Name</label></input><br /><br />
<submit submission="form1">
<label>Submit</label></submit>
</xforms>
Controlli XForms
[modifica | modifica sorgente]I componenti del modulo che si occupano dell'immissione e della visualizzazione dei dati sono denominati controlli del modulo o controlli dell'interfaccia utente. XForms definisce una serie completa di controlli dei moduli indipendenti dal dispositivo e indipendenti dalla piattaforma. Per ogni elemento dei dati definiti nel modello, un controllo ne definisce l'aspetto tramite il client. Questi controlli possono essere combinati con fogli di stile per fornire sofisticate visualizzazioni dei moduli.
Controllo del modulo XForms | Equivalente XHTML | Descrizione |
---|---|---|
<input> |
<input type="text"> |
Per l'immissione di piccole quantità di testo |
<textarea> |
<textarea> |
Per l'immissione di grandi quantità di testo |
<secret> |
<textarea> |
Per l'immissione di grandi quantità di testo |
<secret> |
<input type="password"> |
Per l'immissione di informazioni sensibili |
<output> |
— | Per la visualizzazione in linea di tutti i dati dell'istanza |
<range> |
— | Per un'agevole selezione del "controllo volume" di un valore |
<upload> |
<input type="file"> |
Per il caricamento di file o dati del dispositivo |
<trigger> |
<button> |
Per l'attivazione di eventi del modulo |
<submit> |
<input type="submit"> |
Per l'invio dei dati del modulo |
<select> |
<select multiple="multiple"> o più <input type="checkbox"> |
Per la selezione di una, nessuna o più opzioni |
<select1> |
<select> o più <input type="radio"> |
Per la selezione di una sola opzione tra le varie |
Azioni XForm
[modifica | modifica sorgente]Nel corso dell'elaborazione dei moduli, spesso sono necessarie azioni particolari.
Azioni XForms | Descrizione |
---|---|
setfocus |
Si concentra su un particolare controllo del modulo. |
setvalue |
Imposta il valore di un nodo particolare. |
message |
Visualizza un messaggio per l'utente. |
send |
Invia tutti o parte dei dati dell'istanza. |
reset |
Reimposta tutti o parte dei dati dell'istanza. |
load |
Apre un documento nella stessa finesta o in una nuova. |
refresh |
Aggiorna la vista dei dati dell'istanza. |
recalculate |
Ricalcola i dati dell'istanza. |
revalidate |
Valida nuovamente i dati dell'istanza. |
setindex |
Naviga attraverso una sequenza ripetuta. |
insert |
Inserisce un nodo da una sequenza ripetuta. |
delete |
Rimuove un nodo da una sequenza ripetuta. |
toggle |
Seleziona un caso di un interruttore |
dispatch |
Invia un evento. |
Metodi XForms
[modifica | modifica sorgente]La specifica XForms utilizza e si basa su XPath, che include l'aggiunta di alcuni metodi di chiamata utili per i moduli. Queste possono essere chiamate ovunque sia consentito l'uso di XPath. Inoltre, le implementazioni possono supportare "funzioni di estensione" per fornire funzionalità aggiuntive.
Metodo | Descrizione |
---|---|
avg() |
Restituisce la media aritmetica dei nodi indicati |
min() e max() |
Restituisce il valore minimo o massimo dei nodi indicati |
count-non-empty() |
Restituisce il numero di nodi non vuoti |
if() |
Restituisce una delle due stringhe in base a un valore booleano |
index() |
Indica la posizione corrente in una sequenza ripetuta |
days-from-date() |
Converte un tipo di dati dello schema XML in un numero di giorni |
seconds-from-dateTime() |
Converte un tipo di dati dello schema XML in un numero di secondi |
seconds() |
Converte una durata dello schema XML in un numero di secondi |
months() |
Converte la durata di uno schema XML in un numero di mesi |
now() |
Restituisce la data / ora correnti |