# XML/XForms

XML
Copertina Tutti i moduli · Sviluppo
PrefazioneXML/Prefazione
* IntroduzioneXML/Introduzione
* Entità singoleXML/Entità singole
* Strutture dati di baseXML/Strutture dati di base
* Relazione uno-moltiXML/Relazione uno-molti
* Relazione uno-unoXML/Relazione uno-uno
* Relazione molti-moltiXML/Relazione molti-molti
* Relazioni ricorsiveXML/Relazioni ricorsive
* Schemi di datiXML/Schemi di dati
* Document Type Definition (DTD)XML/DTD
* XHTMLXML/XHTML
* XPathXML/XPath
* XLinkXML/XLink
* CSSXML/CSS
* XSLT e fogli di stileXML/XSLT e fogli di stile
* CocoonXML/Cocoon
* Parsing di file XMLXML/Parsing di file XML
* XULXML/XUL
* Asynchronous JavaScript and XML (AJAX)XML/AJAX
* Web serviceXML/Web service
* XMLHttpRequestXML/XMLHttpRequest
* Database e XMLXML/Database e XML
* SVGXML/SVG
* VoiceXMLXML/VoiceXML
* DocBookXML/DocBook
* SMILXML/SMIL
* XBRLXML/XBRL
* WDDX
* RPCXML/RPC
* RDFXML/RDF - Resource Description Framework
* RSSXML/RSS
* NamespaceXML/Namespace
* Gestire XML con MySQL
* XML EncryptionXML/XML Encryption
* XQueryXML/XQuery
* XML e JDBC
* XFormsXML/XForms
* OpenOffice.org e l'OpenDocument FormatXML/OpenOffice.org e l'OpenDocument Format
* KML e Google EarthXML/KML
* Lo standard ACORD - XML nel settore delle assicurazioniXML/ACORD
Modifica il sommario
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

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

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

Con XForms, i dati di input sono descritti in due parti diverse:
* il modello XForms,
* l'interfaccia utente di XForms.

### Modello XForm

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

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ì:
Dopo avere raccolto i dati, il documento XML sarà così:

#### L'elemento <submission>

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

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

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:

## Processore XForms

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:
Oppure potranno essere inviati come testo, in questo modo:

## Il namespace XForms

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.

## Controlli XForms

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

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

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 |