XMLOut | Início Anterior Próximo

Grid XMLOut

O grid XMLOut é usado para a geração de conteúdo XML tendo como fonte de dados uma consulta feita a um banco de dados. A estrutura XML a ser gerada segue o seguinte esquema baseado nas definições dos campos:
[<valor-do-campo-HEADER>]
[<valor-do-campo-ROOT>]
[<valor-do-campo-CHILD>
|conteúdo-do-arquivo-do-campo-MODELO|
</valor-do-campo-CHILD>]
</valor-do-campo-ROOT>
Nesta estrutura os elementos HEADER e ROOT apenas são processados uma vez enquanto que o elemento CHILD é processado tantas vezes quanto haja dados ainda a serem recuperados do banco de dados.
Para exemplificar caso quiséssemos gerar um conteúdo XML como o que segue logo abaixo:

<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE NoRaiz [ <!ELEMENT NoRaiz (#PCDATA)> <!ENTITY nbsp &#160;> <!ENTITY cr &#13;> <!ENTITY lf &#10;> ]> <NoRaiz> <NoFilho Id="0"> <Elemento1>valor0.1</Elemento1> <Elemento2>valor0.2</Elemento2> <Elemento3>valor0.3</Elemento3> </NoFilho> <NoFilho Id="1"> <Elemento1>valor1.1</Elemento1> <Elemento2>valor1.2</Elemento2> <Elemento3>valor1.3</Elemento3> </NoFilho> <NoFilho Id="2"> <Elemento1>valor2.1</Elemento1> <Elemento2>valor2.2</Elemento2> <Elemento3>valor2.3</Elemento3> </NoFilho> </NoRaiz>

nós usaríamos as seguintes definições:

Nome do Campo | Valor
Cabeçalho | <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE |wi.xml.root| [ <!ELEMENT NoRaiz (#PCDATA)> <!ENTITY nbsp &#160;> <!ENTITY cr &#13;> <!ENTITY lf &#10;> ]>
Root | NoRaiz
Child | NoFilho Id="|rowid|"
Conteúdo | <Elemento1>|valor1|</Elemento1> <Elemento2>|valor2|</Elemento2> <Elemento3>|valor3|</Elemento3>

Logo abaixo segue a relação dos campos que são utilizados para se definir a estrutura do conteúdo que será montada pelo grid XMLOut.
O campo Banco de Dados indica o identificador de um dos servidores de bancos de dados definidos para o projeto que será usado para executar o comando.
O rótulo Cabeçalho é um link para a página de edição do cabeçalho do conteúdo XML a ser gerado. O cabeçalho de um arquivo XML deverá possuir no mínimo uma entrada semelhante à:
<?xml version="1.0" encoding="ISO-8859-1"?>
Ainda no cabeçalho, opcionalmente, poderá ser definido qual o prólogo desse conteúdo XML.
O campo Child define como será a estrutura dos elementos filhos.
O rótulo Conteúdo é um link para a página de edição do conteúdo XML que será populado e gerado de acordo com o resultado vindo da consulta à fonte de dados.
O campo Descrição serve para que o desenvolvedor da aplicação escreva um breve comentário sobre a ação a ser executada pelo componente em questão.
O campo Filtrar define quais os caracteres que deverão ser filtrados do conteúdo das variáveis de sessão do WebIntegrator que estão sendo referenciadas no campo SQL antes da execução do comando. O objetivo é impedir que certos caracteres sejam passados para o comando a ser executada pelo banco de dados evitando que assim que o resultado do comando não seja intencionalmente alterado.
Como exemplo suponha que haja a instrução SELECT * FROM tabCadastros WHERE nome LIKE |tmp.nome|% AND publico = 1 e o usuário da aplicação ao preencher o formulário coloque no campo correspondente à variável tmp.nome um valor como % OR nome = . Se o campo Filtrar não estiver definido com os caracteres % e o WebIntegrator irá processar a seguinte instrução SELECT * FROM cadastros WHERE nome LIKE % OR nome = % AND publico = 1 retornando como resultado todos as linhas da tabela.
A opção Gerar indica se o WebIntegrator irá gerar o modelo simples do grid baseado nas configurações atuais. O modelo só será criado após a gravação da definição. Esse campo apenas se refere aos grids que utilizem o modelo simples.
O campo Identação indica a quantidade de espaços em branco que será utilizada para realizar a identação do conteúdo XML gerado.
O campo Identificador serve para que o desenvolvedor entre com um identificador único para o componente de página ou de projeto que está sendo definido. Será através desse identificador que o componente e/ou seus valores serão referenciado nas páginas do projeto.
A depender do componente que se estiver definindo para que o mesmo seja referenciado numa página será necessário o acréscimo de um prefixo como é o caso dos componentes Grid e Combo, nesses dois casos é obrigatório o uso dos prefixos grid. e combo. antes dos respectivos identificadores para que o conteúdo correto seja exibido.
O campo Root define como será a estrutura do elemento raiz do conteúdo XML a ser gerado.
O campo SQL contém o comando que será enviado para ser processado pelo banco de dados. Caso o comando seja composto por mais de uma instrução SQL separe-as por ponto-e-vírgula.
No componente Upload de Banco de Dados o valor da coluna relativo ao conteúdo deverá ser referenciado por um sinal de interrogação, exemplo: INSERT INTO MinhaTabela (arquivo, conteudo) VALUES (|tmp.arquivo|, ?).
A estrutura do comando a ser executado é dependente do banco de dados, podendo ser feitas chamadas a stored procedures, rotinas M (através do MJava), métodos de objetos do CachéFactory, execução de instruções SQL, etc. Para saber maiores detalhes como fazer essas chamadas clique aqui.