» XForms define una variación de los tradicionales formularios web que permite que éstos sean usados en una variedad más amplia de plataformas y navegadores, e incluso en medios no-tradicionales como documentos PDF.
La primera diferencia clave en XForms es el modo en que el formulario es enviado al cliente. » XForms para Autores HTML contiene una descripción detallada de cómo crear XForms; para los propósitos de este tutorial, tan solo estaremos viendo un ejemplo sencillo.
Example#1 Un formulario XForms de búsqueda simple
<h:html xmlns:h="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/2002/xforms"> <h:head> <h:title>Búsqueda</h:title> <model> <submission action="http://example.com/buscar" method="post" id="s"/> </model> </h:head> <h:body> <h:p> <input ref="q"><label>Buscar</label></input> <submit submission="s"><label>Iniciar</label></submit> </h:p> </h:body> </h:html>
El anterior formulario despliega una caja de entrada de texto (llamada q ), y un botón de enviar. Cuando el botón de enviar es pulsado, el formulario será enviado a la página indicada por action.
Aquí es en donde empieza a lucir diferente desde el punto de vista de su aplicación web. En un formulario HTML normal, los datos serían enviados como application/x-www-form-urlencoded, sin embargo, en el mundo de XForms, esta información es enviada como datos en formato XML.
Si ha tomado la decisión de trabajar con XForms, entonces probablemente quiera los datos en XML, en ese caso, debe echar un vistazo a $HTTP_RAW_POST_DATA en donde encontrará el documento XML generado por el navegador, el cual puede pasar a su motor XSLT o intérprete de documentos favorito.
Si no se encuentra interesado en dar formato, y sólo desea que los datos sean cargados en la variable $_POST tradicional, puede indicarle al navegador del cliente que envíe sus datos como application/x-www-form-urlencoded modificando el atributo method al valor urlencoded-post.
Example#2 Uso de un XForm para poblar $_POST
<h:html xmlns:h="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/2002/xforms"> <h:head> <h:title>Búsqueda</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>Iniciar</label></submit> </h:p> </h:body> </h:html>
Note: Al momento en que se escriben estas líneas, muchos navegadores no ofrecen soporte para XForms. Revise la versión de su navegador si el anterior ejemplo falla.