Erba, como vão?
Aqui a coisa tá hard rock! Muito peixe, lula, caranguejo apimentado e forms na veia hehehehe
Hoje passei por uma situação e vou compartilhar aqui, pode ajudar muita gente.
Digamos que você está trabalhando num projeto que envolva formulários PDF. Você desenvolve esses formulários que serão utilizados em um sistema web de workflow qualquer (não LiveCycle). O papel do LiveCycle (Output nesse caso) vai ser somente receber via web service um XML desse sistema e fazer o merge com o seu template de formulário PDF.
Mas aí o time de desenvolvedores do sistema de worflow te pergunta: Como eu devo gerar esse XML? Claro, agora você tem que fazer um schema pra eles. Mas isso já estava previsto, não é?
Dentro do seu formulário você tem um dropdownlist que é pre-populado com os dados vindos do XML deles. Mas quando você clica em submit, o formulário envia novamente o XML com os dados preenchidos pelo usuário, mas manda também toda a lista que veio pre-populada do dropdownlist anteriormente. Mas o outro time não quer receber toda essa informação de novo, certo? Só querem receber o item que o usuário selecionou. Compreensível.
Então antes de submeter o formulário você precisa tirar no script na mão os outros itens. Seleciona o botão de submit e no evento mouseUp coloca a seguinte linha:
$record.nodes.remove($record.MeuDropDownList);
Beleza, vai funcionar. E o que isso faz? Remove a informação a mais. Mas no lugar do MeuDropDownList você claro coloca a identificação do nó no seu XML.
Mas de repente você vai testar seu formulário feito no LiveCycle Designer, e que tem mais de 1000 campos e vê que quando clica em Submit mesmo os campos em branco aparecem no XML de saída:
<\nome>
<\fax>
Então é por isso que no seu Schema você precisa definir em todos esses campos como minOccurs=”0″:
<xs:element minOccurs="0" maxOccurs="1" name="nome" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" name="fax" type="xs:string" />
Assim se o campo estiver vazio, ele não aparece no XML final.
É isso.


