Manejo de XForms

Cap铆tulo 37. Manejo de XForms

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.

Ejemplo 37-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&uacute;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.

Ejemplo 37-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&uacute;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>

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