Você pode explorar o suporte a espaço de nomes para mensagens que são analisadas pelo analisador MRM.
Quando desejar acessar elementos de uma mensagem e os espaços de nomes estiverem ativados, será necessário incluir o espaço de nomes quando codificar a referência ESQL ao elemento. Se isso não for feito, o intermediário pesquisará o espaço de nomes notarget. Se o elemento não for localizado no espaço de nomes notarget, o intermediário pesquisará todos os demais espaços de nomes conhecidos no dicionário de mensagens (ou seja, no conjunto de mensagens implementado). Por razões de desempenho e integridade, especifique espaços de nomes sempre que aplicáveis.
A forma mais eficiente de referir-se a elementos quando espaços de nomes estão ativados é definir uma constante de espaço de nomes e utilizá-la em instruções ESQL apropriadas. Isto facilita a leitura e manutenção de seu código ESQL.
Defina uma constante utilizando a instrução DECLARE NAMESPACE:
DECLARE ns01 NAMESPACE 'http://www.ns01.com' . . SET OutputRoot.MRM.Element1 = InputBody.ns01:Element1;
ns01 é interpretado corretamente como um espaço de nomes devido à forma como é declarado.
Também é possível utilizar uma variável CHARACTER para declarar um espaço de nomes:
DECLARE ns02 CHARACTER 'http://www.ns02.com' . . SET OutputRoot.MRM.Element2 = InputBody.{ns02}:Element2;
Se você utilizar este método, deverá colocar a variável declarada entre colchetes para assegurar que ela seja interpretada como um espaço de nomes.
Se você achar que uma variável CHARACTER pode ser alterada, poderá utilizar uma declaração CONSTANT CHARACTER:
DECLARE ns03 CONSTANT CHARACTER 'http://www.ns03.com' . . SET OutputRoot.MRM.Element3 = InputBody.{ns03}:Element3;
Você pode declarar um espaço de nomes, uma constante e uma variável em um módulo ou função. No entanto, você declara apenas um espaço de nomes ou uma constante no escopo do esquema (ou seja, fora de um escopo do módulo).
A amostra Video fornece exemplos adicionais da utilização de espaços de nomes.
Os espaços de nomes não são suportados pela Versão 2.1, portanto não é possível implementar um conjunto de mensagens ou um fluxo de mensagens que utiliza espaços de nomes em um intermediário da Versão 2.1.