Desde hace unos años, el W3C trabaja en el desarrollo de un remplazo de los formularios web actuales. XForms es una aplicación de XML que será la próxima generación de los formularios en la Web. XForms no está destinado a crear documentos independientes, sino que está destinado a ser integrado dentro de otros documentos como XHTML, ODF o SVG. La arquitectura de XForms permite separar la presentación, el propósito y el contenido de un formulario (emplea el patrón de diseño Modelo Vista Controlador).
Los principales beneficios que ofrece XForms son:
- Fuerte tipado: los datos enviados están fuertemente tipados y pueden ser validados sin esperar validación por parte del servidor.
- Envío de datos en XML: evita la necesidad de emplear lógica hecha a medida en el servidor para gestionar los datos.
- Reuso de esquemas: evita la duplicación y asegura que la actualización de las reglas de validación por cambios en la lógica de negocio no supone tener que reescribir las restricciones de validación en los formularios.
- Internacionalización: el empleo de XML 1.0 para el envío de los datos asegura que los datos no presentan ningún problema de internacionalización.
- Accesibilidad mejorada: XForms separa el contenido de la presentación. Los controles de usuario encapsulan todos los metadatos como etiquetas, ayudas y teclas de acceso.
- Soporte de múltiples dispositivos
- Menos uso de scripting
El siguiente ejemplo muestra un fragmento de un formulario creado con XForms:
<select1 ref="method">
<label>Select Payment Method:</label>
<item>
<label>Cash</label>
<value>cash</value>
</item>
<item>
<label>Credit</label>
<value>cc</value>
</item>
</select1>
<input ref="number">
<label>Credit Card Number:</label>
</input>
<input ref="expiry">
<label>Expiration Date:</label>
</input>
<submit submission="submit">
<label>Submit</label>
</submit>
En XForms, todos los controles que forman parte del núcleo tienen siempre una etiqueta asociada como un elemento hijo con el fin de mejorar la accesibilidad.
Los controles que forman parte del núcleo son:
- input
- secret
- textarea
- output
- upload
- range
- trigger
- submit
- select
- select1