O domínio da mensagem XML inclui todas as mensagens em conformidade com o padrão W3C XML.
As mensagens nesse domínio são processadas por um dos analisadores XML, XMLNS ou XMLNSC. O domínio XMLNS é uma extensão do domínio XML e contém mensagens que estão em conformidade com o mesmo padrão e que exploram o recurso espaços de nomes da especificação XML. As mensagens nesse domínio são processadas pelo analisador XML.
O analisador XML é um programa que interpreta um fluxo de bits ou árvore que representa uma mensagem que pertença ao domínio XML e gera a árvore correspondente a partir do fluxo de bits na entrada ou a partir da árvore na saída. O fluxo de bits é uma representação de um arquivo XML. (O analisador XML também interpreta um fluxo de bits ou árvore que represente uma mensagem pertencente aos domínios JMS; não existe analisador JMS).
Seus aplicativos podem trocar mensagens XML (com ou sem suporte para espaço de nomes) com os intermediários do WebSphere Message Broker, de duas maneiras diferentes:
Uma mensagem de autodefinição pode ser tratada por cada nó interno. Toda a mensagem pode ser armazenada em um banco de dados e os cabeçalhos podem ser incluídos ou removidos da mensagem conforme ela passa pelo fluxo de mensagens.
Uma mensagem de autodefinição também é conhecida como uma mensagem XML genérica. Ela não possui um formato registrado, mas transporta as informações sobre seu conteúdo e estrutura na mensagem no formato de um documento que adere a uma especificação XML. Sua definição não está contida em nenhum outro lugar. Quando uma mensagem XML é recebida pelo intermediário, ela é interpretada pelo analisador XML e uma estrutura de árvore de mensagens interna é criada, de acordo com as definições XML contidas nessa mensagem.
Detalhes de como o analisador XML manipula os elementos e valores nulos estão descritos em Analisador XML e Valores Nulos.
As informações fornecidas com o WebSphere Message Broker não oferecem uma definição ou descrição completa de terminologia, conceitos e construções de mensagens XML: são um resumo que realça os aspectos importantes quando você utiliza mensagens XML com intermediários e fluxos de mensagens.
Para obter informações adicionais sobre o XML, consulte o Web site developerWorks.
Os elementos de nome utilizados nessa descrição (por exemplo, XmlDecl) são fornecidos pelo WebSphere Message Broker e são referidos como nomes de correlação. Eles estão disponíveis para utilização simbólica no ESQL que define o processamento do conteúdo da mensagem executado pelos nós, como um nó Compute ou Filter, dentro de um fluxo de mensagens. Eles não são parte da especificação XML. Cada analisador XML define seu próprio conjunto de nomes de correlação, pois a manipulação do conteúdo XML varia.
Os nomes de correlação para elementos de nome XML (por exemplo, Element e XmlDecl) equivalem a um valor de constante do formato 0x01000000, etc. Você pode ver estas constantes utilizadas na saída criada pelo nó Trace quando uma mensagem, ou uma parte da mensagem é rastreada.
Uma mensagem XML simples pode ter o formato:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE Envelope PUBLIC "http://www.ibm.com/dtds" "example.dtd" [<!ENTITY Example_ID "ST_TimeoutNodes Timeout Request Input Test Message">] > <Envelope version="1.0"> <Header> <Example>&Example_ID;</Example> <!-- Isso é um comentário --> </Header> <Body version="1.0"> <Element01>Value01</Element01> <Element02/> <Element03> <Repeated>ValueA</Repeated> <Repeated>ValueB</Repeated> </Element03> <Element04><P>This is <B>bold</B> text</P></Element04> </Body> </Envelope>
As seções a seguir mostram a saída criada pelo nó Trace quando a mensagem acima tiver sido analisada nos analisadores XML e XMLNSC para demonstrar as diferenças nas estruturas internas utilizadas para representar os dados à medida que são processados pelo Intermediário.
Observe a seguir que os elementos WhiteSpace da árvore estão lá devido a espaço, tabulação e quebras de linha que formatam o documento XML original. Para clareza de apresentação, os caracteres em si do rastreio foram substituídos por 'WhiteSpace'. WhiteSpace em um elemento XML possui significado de negócios e é representado utilizando o elemento de sintaxe Content. Observe que XmlDecl, DTD e comentários são apresentados no domínio XML utilizando elementos de sintaxe denominados de correlação explícita.
(0x01000010):XML = ( (0x05000018):XML = ( (0x06000011): = '1.0' (0x06000012): = 'UTF-8' (0x06000014): = 'no' ) (0x06000002): = 'WhiteSpace' (0x05000020):Envelope = ( (0x06000004): = 'http://www.ibm.com/dtds' (0x06000008): = 'example.dtd' (0x05000021): = ( (0x05000011):Example_ID = ( (0x06000041): = 'ST_TimeoutNodes Timeout Request Input Test Message' ) ) ) (0x06000002): = 'WhiteSpace' (0x01000000):Envelope = ( (0x03000000):version = '1.0' (0x02000000): = 'WhiteSpace' (0x01000000):Header = ( (0x02000000): = 'WhiteSpace' (0x01000000):Example = ( (0x06000020): = 'Example_ID' (0x02000000): = 'ST_TimeoutNodes Timeout Request Input Test Message' (0x06000021): = 'Example_ID' ) (0x02000000): = 'WhiteSpace' (0x06000018): = ' Este é um comentário ' (0x02000000): = 'WhiteSpace' ) (0x02000000): = 'WhiteSpace' (0x01000000):Body = ( (0x03000000):version = '1.0' (0x02000000): = 'WhiteSpace' (0x01000000):Element01 = ( (0x02000000): = 'Value01' ) (0x02000000): = 'WhiteSpace' (0x01000000):Element02 = (0x02000000): = 'WhiteSpace' (0x01000000):Element03 = ( (0x02000000): = 'WhiteSpace' (0x01000000):Repeated = ( (0x02000000): = 'ValueA' ) (0x02000000): = 'WhiteSpace' (0x01000000):Repeated = ( (0x02000000): = 'ValueB' ) (0x02000000): = 'WhiteSpace' ) (0x02000000): = 'WhiteSpace' (0x01000000):Element04 = ( (0x01000000):P = ( (0x02000000): = 'This is ' (0x01000000):B = ( (0x02000000): = 'bold' ) (0x02000000): = ' text' ) ) (0x02000000): = 'WhiteSpace' ) (0x02000000): = 'WhiteSpace' )
O rastreio a seguir mostra os elementos criados para representar a mesma estrutura XML do analisador XMLNSC Compacto em seu modo padrão. Nesse modo, o analisador compacto não retém comentários, instruções de processamento nem texto misto.
Pode ser claramente visto, comparando-se que há uma grande economia no número de elementos de sintaxe utilizados para representar o mesmo conteúdo de negócios da mensagem XML de exemplo utilizando o analisador compacto.
Observe que, por não manter texto misto, todos os elementos WhiteSpace que não tiverem conteúdo de dados de negócios não estão mais utilizando qualquer espaço de tempo de execução na árvore de mensagens do Intermediário. No entanto, isso também resulta no texto misto de "Element04.P" ser descartado e somente o valor da pasta filho "Element04.P.B" ser mantido na árvore. O texto 'This is ' e ' text' em "P" são descartados. Esse tipo de estrutura XML não está normalmente associado a formatos de dados de negócios, portanto, a utilização do analisador XMLNSC compacto será desejada em geral. No entanto, caso você precisasse desse tipo de processamento, não utilizaria o analisador XMLNSC ou o utilizaria com o modo "manter texto misto" ativado.
A manipulação da declaração XML também é diferente no analisador compacto com os atributos de versão, codificação e independente sendo mantidos como filhos do XmlDeclaration em vez de elementos denominados de correlação especial.
(0x01000000):XMLNSC = ( (0x01000400):XmlDeclaration = ( (0x03000100):Version = '1.0' (0x03000100):Encoding = 'UTF-8' (0x03000100):StandAlone = 'no' ) (0x01000000):Envelope = ( (0x03000100):version = '1.0' (0x01000000):Header = ( (0x03000000):Example = 'ST_TimeoutNodes Timeout Request Input Test Message' ) (0x01000000):Body = ( (0x03000100):version = '1.0' (0x03000000):Element01 = 'Value01' (0x01000000):Element02 = (0x01000000):Element03 = ( (0x03000000):Repeated = 'ValueA' (0x03000000):Repeated = 'ValueB' ) (0x01000000):Element04 = ( (0x01000000):P = ( (0x03000000):B = 'bold' ) ) )
A maioria das amostras do Galeria de Exemplos utilizam o analisador de XML para processar mensagens. Por exemplo, dê uma olhada na Amostra Coordinated Request Reply , na Amostra Large Messaging e na Amostra Message Routing.