Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

XForms

XForms: costruire forms (moduli) all'interno di un documento XML
XForms: costruire forms (moduli) all'interno di un documento XML
Link copiato negli appunti

XForms (XML Forms) è un linguaggio basato su XML per la definizione delle form all'interno di documenti XML (XHTML e SVG in particolare). Le form costituiscono uno strumento molto diffuso per comunicare dei dati ad un'applicazione in ambito Internet.
Le form HTML permettono di definire dei campi, all'interno di una pagina HTML, dove l'utente può inserire dei dati da inviare ad un'applicazione residente su un server Web.
Sono numerosi i siti Internet nei quali vengono utilizzate le form HTML sia per costruire delle ricerche personalizzate all'interno dei loro database (ad esempio ricerca di orari di treni o di aerei, ricerca di prodotti all'interno dei loro cataloghi, etc.), sia per le applicazioni di commercio elettronico dove l'utente utilizza le form per comunicare i propri dati personali (tra i quali il numero di carta di credito) necessari per l'acquisto dei prodotti.
XForms nasce con l'intento di fornire uno strumento più evoluto e più flessibile, rispetto alle form HTML, per la definizione e la gestione delle form.
La specifica di XForms è divisa in tre livelli:

  • Presentazione: è il livello che comprende i tag per la definizione degli elementi delle form XML (campi di input, bottoni, etc.);
  • Logico: è il livello che permette di stabilire delle relazioni tra i campi di una form (ad esempio che certi campi siano attivi solo in funzione del valore di altri campi, etc.);
  • Dati: è il livello che si occupa della gestione dei dati della form. Permette di definire il modello di dati utilizzati dalla form e consente di effettuare delle validazioni sui dati senza dover utilizzare alcun linguaggio di Scripting (come avviene adesso nelle form HTML).

La separazione in questi tre livelli consente a XForms di dividere i dati e la loro logica dalla loro rappresentazione, seguendo una delle caratteristiche fondamentali di XML: la separazione tra contenuto e rappresentazione dei dati.
tramite XForms si possono quindi definire delle form che sono indipendenti dall'applicazione e dal dispositivo che le visualizzerà. In questo modo la stessa form e lo stesso modello di dati possono essere personalizzati in modo da essere rappresentato secondo differenti interfacce, ad esempio quella di un palmare, di un telefono cellulare, di un browser Web o anche di un lettore Braille.
I dati inseriti tramite una form XML vengono trasferiti all'applicazione sul server in formato XML, utilizzando una struttura che ricalca il modello di dati della form.

Come esempio di XForms, vediamo come trasformare una semplice form HTML in una form XML.
Consideriamo la seguente form HTML:

<html>
  <head>
    <title>Form HTML</title>
  </head>
  <body>
    <form action="http://nome_di_un_dominio/esempio_app" method="post">
      Title:
      Mr.<input type="radio" name="titolo" value="Mr."/>
      Ms.<input type="radio" name="titolo" value="Ms."/><br/>
      Name: <input type="text" id="name"/><br/>
      Birth Date: <input type="text" id="bdate"/><br/>
      <input type="submit" value="Submit"/>
    </form>
  </body>
</html>

form HTML per  inviare dei dati

Questo esempio definisce una form HTML (visualizzata in figura), tramite la quale è possibile inviare dei dati (titolo, nome e data di nascita) ad un'applicazione (chiamata esempio_app) su un server web.
La stessa form può essere espressa in XForms, all'interno di un documento XHTML, nel seguente modo:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xforms="http://www.w3.org/2001/08/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <head>
    <title>Form HTML</title>
    <xforms:model id="personal_data">
      <xforms:instance>
      <personal_data>
         <title/>
          <name/>
          <bdate/>
      </personal_data>
    </xforms:instance>
    <xforms:submission id="pdata_submit" action="http://nome_di_un_dominio/esempio_app" method="post" />     
    <xforms:bind nodeset="bdate" relevant="../title='Mr.'" required="true()" type="xsd:date"/>
  </xforms:model>    
  </head>
  <body>
    <xforms:select1 model="personal_data" ref="title">
      <xforms:label>Title</xforms:label>
      <xforms:choices>
        <xforms:item>
          <xforms:label>Mr.</xforms:label>
          <xforms:value>Mr.</xforms:value>
        </xforms:item>
        <xforms:item>
          <xforms:label>Ms.</xforms:label>
          <xforms:value>Ms.</xforms:value>
        </xforms:item>
      </xforms:choices>
    </xforms:select1>
    <xforms:input model="personal_ata" ref="name">
      <xforms:label>Name:</xform:label>    
    </xform:input>
    <xform:input model="personal_data" ref="bdate">
      <xforms:label>Birth Date:</xforms:label>    
    </xform:input>
    <xforms:submit subbmission="pdata_submit">
      <xforms:label>Submit</xforms:label>
    </xforms:submit>
  </body>
</html>

Differentemente dal caso HTML, ora troviamo all'interno dell'elemento <head> la definizione di alcuni elementi della form XML.
Attraverso l'elemento <xforms:model> definiamo le form presenti all'interno del nostro documento (nel nostro caso abbiamo un'unica form chiamata personal_data) e le loro caratteristiche: modello dei dati, relazione tra i dati ed azione legata all'invio dei dati.
L'elemento <xforms:instance> indica la struttura secondo la quale saranno inviati i dati contenuti nella form, mentre con <xforms:submission> si definisce l'applicazione (esempio_app) a cui dovranno essere inviati i dati e il metodo utilizzato per inviarli (metodo post del protocollo HTTP).
Utilizzando <xforms:bind> è possibile definire delle relazioni tra i dati della form e i loro tipi di dati, in modo tale da consentire le opportune verifiche prima dell'invio dei dati dei dati stessi.
A scopo di esempio è stato definito un legame tra il valore di <titolo> e quello di <bdate>: se il valore del primo elemento è 'Mr.' allora il campo indicato da <bdate> diventa obbligatorio, altrimenti nel caso di una signora possiamo anche evitare di inserire la data di nascita.

All'interno dell'elemento <body> troviamo la definizione dei controlli presenti all'interno del nostro form. Nel caso di XForms questi non sono definiti come figli dell'elemento <form> ma vengono definiti ciascuno indipendentemente dall'altro e vengono messi in relazione tra di loro attraverso l'uso dell'attributo model che indica a quale form appartiene il singolo controllo.
Nel nostro esempio abbiamo tre controlli (select1, input e submit) che appartengono tutti alla stessa form.
Ciascun elemento non contiene alcuna informazione su come deve essere rappresentato e la sua visualizzazione dipenderà esclusivamente dal browser utilizzato. Ad esempio il controllo select1 potrebbe essere rappresentato con dei radio button, come nel caso della form HTML, oppure utilizzare un menù a tendina o altri tipi di rappresentazioni.
I dati della form XML vengono trasmessi in formato XML con una struttura dati che ricalca il modello dei dati della form e la struttura del file XML contenente i dati del nostro esempio è quindi:

<personal_data>  
  <title>Mr.</title>
  <name>Mario Rossi</name>
  <bdate>2000-01-20</bdate>
</personal_data>

XForms mette anche a disposizione una serie di funzioni predefinite per elaborare i tipi di dati che costituiscono la form, come ad esempio stringhe, numeri, booleani, date, etc.

La specifica di XForms non ha ancora raggiunto il livello di Raccomandazione Ufficiale ma il lavoro del Working Group del W3C è oramai in dirittura d'arrivo e potete trovare ulteriori informazioni sul linguaggio andando a leggere la 'Candidate Recommendation' all'indirizzo: http://www.w3.org/tr/2002/CR-xforms-20021112/.

Ti consigliamo anche