Manipulando Mensagens no Domínio XMLNS

Este tópico fornece informações específicas para tratar mensagens que pertencem ao domínio XMLNS e que são analisadas pelo analisador genérico XML. O domínio XMLNS é uma extensão do domínio XML e fornece suporte para espaço de nomes. Siga a orientação fornecida para mensagens XML em Manipulando Mensagens no Domínio XML, em conjunto com as informações no tópico Manipulando o Conteúdo do Corpo da Mensagem.

O exemplo a seguir mostra como é possível utilizar o ESQL para trabalhar com espaços de nomes. O exemplo declara constantes de espaços de nomes no início do módulo principal, para que você possa utilizar prefixos nas instruções ESQL ao invés de URIs de espaço de nomes completas.

As constantes de espaço de nomes afetam somente o ESQL; não controlam os prefixos gerados na mensagem de saída. Os prefixos na mensagem de saída gerada são controlados por declarações de espaços de nomes. Você pode incluir declarações de espaços de nomes na árvore utilizando o nome de correlação XML.NamespaceDecl. Esses elementos são, então, utilizados para gerar declarações de espaços de nomes na mensagem de saída.

Se, quando a mensagem de saída for gerada, o espaço de nomes com o qual um elemento ou atributo estiver qualificado não possuir declaração de espaço de nomes correspondente, será gerada uma automaticamente utilizando prefixos do formato NSn, em que n indica um inteiro positivo.

CREATE COMPUTE MODULE xmlns_doc_flow_Compute
CREATE ROUTINE Main() RETURNS BOOLEAN
BEGIN
CALL CopyMessageHeaders();

-- Declaração de constantes de espaço de nomes
DECLARE sp1 NAMESPACE 'http://www.ibm.com/space1';
DECLARE sp2 NAMESPACE 'http://www.ibm.com/space2';
DECLARE sp3 NAMESPACE 'http://www.ibm.com/space3';

-- Declaração do espaço de nomes para associar o prefixo 'space1' ao espaço de nomes
SET OutputRoot.XMLNS.message.(XML.NamespaceDecl)xmlns:space1 = 'http://www.ibm.com/space1';
SET OutputRoot.XMLNS.message.sp1:data1 = 'Hello!';      
 
-- Declaração do Espaço de Nomes padrão
SET OutputRoot.XMLNS.message.sp2:data2.(XML.NamespaceDecl)xmlns = 'http://www.ibm.com/space2';
SET OutputRoot.XMLNS.message.sp2:data2.sp2:subData1 = 'Hola!';
SET OutputRoot.XMLNS.message.sp2:data2.sp2:subData2 = 'Guten Tag!';

SET OutputRoot.XMLNS.message.sp3:data3 = 'Bonjour!';

SET OutputRoot.Properties.MessageDomain = 'XMLNS';

RETURN TRUE;
END;

CREATE ROUTINE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;

END MODULE;
Quando esse ESQL for executado, será gerada a seguinte mensagem de saída:
<message xmlns:space1="http://www.ibm.com/space1">
  <space1:data1>Hello!</space1:data1>
  <data2 xmlns="http://www.ibm.com/space2">
    <subData1>Hola!</subData1>
    <subData2>Guten Tag!</subData2>
  </data2>
  <NS1:data3
xmlns:NS1="http://www.ibm.com/space3">Bonjour!</NS1:data3>
</message>
Conceitos relacionados
Visão Geral de Fluxos de Mensagens
Analisadores e Domínios XML
Visão Geral do ESQL
Tarefas relacionadas
Projetando um Fluxo de Mensagens
Definindo o Conteúdo do Fluxo de Mensagens
Manipulando Mensagens no Domínio XML
Referências relacionadas
Referência de ESQL
Instrução DECLARE
Instrução SET
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2005 Última Atualização: 04/11/2005
ac17330_