» XForms define una variación de los webforms tradicionales los cuales permiten ser usados en una gran variedad de plataformas y navegadores o inclusive en medios no tradicionales como los documentos PDF.
La primera diferencia clave con XForms es la forma en que los formularios son enviados al cliente. » XForms for HTML Authors contiene una descripción detallada de como crear XForms, para el fin de este tutorial únicamente veremos un ejemplo simple.
Ejemplo #1 Un formulario simple de búsqueda con XForms
<h:html xmlns:h="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/2002/xforms"> <h:head> <h:title>Search</h:title> <model> <submission action="http://example.com/search" method="post" id="s"/> </model> </h:head> <h:body> <h:p> <input ref="q"><label>Find</label></input> <submit submission="s"><label>Go</label></submit> </h:p> </h:body> </h:html>
El formulario anterior muestra una caja de texto (llamada q
),
y un botón submit. Cuando el botón submit es presionado, el formulario
será enviado a la página referenciada por action.
Aquí es donde comienza a verse diferente desde el punto de vista de la aplicación web. En un formulario normal HTML, los datos serían enviados como application/x-www-form-urlencoded, en el mundo XForms, esta información es enviada como datos formateados enXML.
Si se ha elegido trabajar con XForms, entonces probablemente se quiera esos datos como XML, en ese caso, ver en $HTTP_RAW_POST_DATA donde se puede encontrar el XML generado por el navegador el cual se puede pasar en el motor XSLT favorito o parseador.
Si no se esta interesado en formatear y solo se desea que la data sea cargada
en la variable tradicional $_POST, se puede instruir al
navegador del cliente para enviarlos como application/x-www-form-urlencoded
cambiando el atributo method
a urlencoded-post.
Ejemplo #2 Usando un Xform para rellenar $_POST
<h:html xmlns:h="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/2002/xforms"> <h:head> <h:title>Busqueda</h:title> <model> <submission action="http://example.com/search" method="urlencoded-post" id="s"/> </model> </h:head> <h:body> <h:p> <input ref="q"><label>Buscar</label></input> <submit submission="s"><label>Ir</label></submit> </h:p> </h:body> </h:html>
Nota: Así como esta escrito, muchos navegadores no soportan Xforms. Compruebe la versión de su navegador si el ejemplo falla.