XForms/Submit
Elemento Submit
[editar]Después de guardar nuestros datos en el modelo, será más fácil para un cliente web organizar los datos en el modelo XML, y enviar un archivo, un servicio web, o posiblemente, a una base de datos. El comando submit es un disparador (trigger) con un atributo que apunta al elemento (submission) en el modelo. Normalmente esto se hace con un botón que lleva la palabra "Enviar" o "Guardar". Con el comando submit puede ser usado de muchas formas como un disparador, y no solo mediante un boton de enviar. El evento submit se comporta exactamente como un disparador (trigger), pero con una excepción, que el evento xforms-submit es tambien un despachador.
Un modelo puede tener más de un elemento (submission) identificado por id:
<xforms:submission id="s001" method="post" action="action.php"/>
<xforms:submission id="s002" method="post" action="action2.php" replace="instance"/>
<xforms:submission id="s003" method="put" action="file:///tmp/final.xml"/>
El primer comando submission envía los datos a la acción especificada.
El segundo comando submission se espera obtener un retorno XML para actualizar el documento o instancia actual
El tercero guardará el archivo localmente, en la ubicación especificada: /tmp/final.xml
Visualización
[editar]La interfaz se trata de un simple botón "Guardar" creado por un desencadenante denominado "submit".
Ejemplo
[editar]
<?xml-stylesheet href="xsltforms/xsltforms.xsl" type="text/xsl"?>
<?xsltforms-options debug="yes"?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms">
<head>
<title>Crear un nuevo producto</title>
<xf:model>
<xf:instance src="producto.xml">
</xf:instance>
<xf:submission id="doput" action="nuevoproducto.xml" method="put" replace="none"/>
</xf:model>
</head>
<body>
<xf:input ref="/Producto/Nombre">
<xf:label>Nombre del Producto</xf:label>
</xf:input>
<xf:submit submission="doput">
<xf:label>Guardar</xf:label>
</xf:submit>
</body>
</html>
Prueba
[editar]Cuando se pulsa el botón Guardar se creará un archivo en el mismo directorio en el formulario que fue llamado "mydata.xml". Este archivo contendrá los datos de instancia XML en el modelo.
Contenido de "myData.xml":
<?xml version="1.0" encoding="UTF-8"?>
<MyData
xmlns:xf="http://www.w3.org/2002/xforms"
xmlns:ev="http://www.w3.org/2001/xml-events">
<Data1>One</Data1>
<Data2>Two</Data2>
<Data3>Three</Data3>
</MyData>
Este programa funciona con facilidad cuando el formulario y los datos de instancia se encuentran en un sistema de archivos local. Conseguir este ejemplo para guardar en un servidor web, es un proceso mucho más complejo debido a cuestiones de seguridad.
Análisis
[editar]El botón Guardar en realidad es sólo un disparador con el nombre de "enviar" y un atributo llamado submission.
<xf:submit submission="save">
El atributo submission="save"
apunta al ID del elemento submission dentro del modelo.
<xf:submission id="save" method="put" action="myData.xml" ref="/MyData"/>
Debido a que se utilizó un "nombre de archivo relativo" (en relación con el directorio donde estaba el formulario) se guardarán los datos en la misma ubicación del directorio que el formulario.