Indice del libro

Obiettivi di apprendimento

  • 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

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

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

Con XForms, i dati di input sono descritti in due parti diverse:

  • il modello XForms,
  • l'interfaccia utente di XForms.

Modello XForm

modifica

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

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

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

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

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

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

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
  <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

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

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

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