XForms
Introdução
XForms é uma recomendação da w3c e representa a nova geração de formulários para a web. Ele foi projetado para se integrar à outras linguagens de marcação, como XHTML, ODF e SVG.
Um formulário XForm reúne e processa dados XML usando uma arquitetura que separa a apresentação do conteúdo.
Ele organiza os dados em instâncias, com isso há uma maior consistência nos dados e facilidade de manipulação.
Principais vantagens
- Incrementa a experiência do usuário, trazendo a maioria das verificações de campos para o browser;
- Usa tecnologias XML existentes, como XPath para endereçar e calcular valores e XML Schema para definir tipos de dados;
- Independe do dispositivo usado;
- Facilita o desenvolvimento de formulários complicados;
- É acessível, pois foi projetado de modo a servir convenientemente às tecnologias assistivas (cegos por exemplo).
O que se pode fazer com XForms?
XForms pode fazer tudo que formulários HTML fazem e mais. XForms permite:
- Verificar entrada de dados tão logo sejam digitados pelo usuário.
- Indicar obrigatoriedade de preenchimento de campos e ressaltar que o formulário não poderá ser enviado sem o devido preenchimento daqueles campos
- Submeter os dados do formulário como XML.
- Integrar os dados com serviços WEB, por exemplo, usando SOAP e XML RPC.
- Submeter o mesmo formulário a diferentes servidores (por exemplo, uma string de busca para diferentes mecanismos de busca).
- Salvar e recuperar valores de um arquivo.
- Usar os resultados de uma submissão do formulário para preenchimento de futuros formulários.
- Capturar em um documento externo os dados iniciais para um formulário.
- Processar cálculos com valores alternativos aos de submissão.
- Fixar condições de entrada de valores, tal como requerer que estejam em uma determinada faixa de valores.
- Construir 'carrinhos de compras' e 'assistentes' de formulários que não tenham necessidade de scripts de reavalição.
Controles
Single-Line Text Input
<input type="text" name="teste"/>
Multi-Line Text Input
<textarea name="teste"></textarea>
Password Text Input
<input type="password" name="teste"/>
Submit, Reset e Button
<input type="submit" value="Enviar"/>
<input type="reset" value="Resetar"/>
<input type="button" value="teste"/>
Radio Buttons
<input type="radio" name="car" value="0"/> None<br/>
<input type="radio" name="car" value="1"/> 1 car<br/>
<input type="radio" name="car" value="2"/> 2 cars<br/>
<input type="radio" name="car" value="many"/> 5 or more<br/>
Exemplos
Salvar e recuperar valores de um arquivo
Exemplo de instância, em um arquivo separado do formulário:
<exempItems xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<exempItem itemID="">
<cor />
<valor />
</exempItem>
</exempItems>
Chamada no formulário:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:xforms="http://www.w3.org/2002/xforms">
<head>
<title>Exemplo</title>
<xforms:model id="exempItems">
<xforms:instance id="itens" src="itens.xml"/>
<xforms:submission id="submit_model_items" action="http://xformstest.org/cgi-bin/showinstance.sh"
method="post" instance="itens"/>
</xforms:model>
</head>
Popular formulário
<xforms:repeat nodeset="instance('itens')/exempItem" id="repeatItems">
<h2>Item</h2>
<xforms:input ref="@itemID">
<xforms:label>Item ID</xforms:label>
</xforms:input>
<br />
<xforms:input ref="cor">
<xforms:label>Cor</xforms:label>
</xforms:input>
<br />
<xforms:input ref="valor">
<xforms:label>Valor</xforms:label>
</xforms:input>
<br />
</xforms:repeat>
Inserir ou deletar itens
<xforms:group>
<br />
<xforms:trigger>
<xforms:label>Inserir</xforms:label>
<xforms:insert nodeset="instance('itens')/exempItem" at="index('repeatItems')"
position="after" ev:event="DOMActivate" />
</xforms:trigger>
<xforms:trigger>
<xforms:label>Deletar</xforms:label>
<xforms:delete nodeset="instance('itens')/exempItem" at="index('repeatItems')"
ev:event="DOMActivate" />
</xforms:trigger>
</xforms:group>
Browsers
Atualmente, nenhum dos tradicionais browsers suporta, nativamente, o XForms. O que se tem são plugins.
Firefox: https://addons.mozilla.org/pt-BR/firefox/addon/824/
Geralmente quem mexe com XForms usa X-Smiles (http://www.x-smiles.org)
Referências
http://www.w3.org/MarkUp/Forms/
http://www.w3schools.com/xforms/
http://maujor.com/w3c/xformfaq.html
http://www.w3.org/TR/2009/REC-xforms-20091020/
http://www.w3.org/MarkUp/Forms/wiki/XForms_Implementations