Você pode utilizar os domínios XML para modelar mensagens em conformidade com o padrão W3C XML.
Você pode criar modelos de mensagem para representar mensagens XML utilizando um dos domínios XML (XMLNSC, XMLNS ou XML); consulte Os Domínios XML. As mensagens nesses domínios são processadas pelos analisadores XML.
O WebSphere Message Broker utiliza os analisadores XML para ler e gravar mensagens XML que pertencem aos domínios XMLNSC, XMLNS ou XML, sem utilizar um modelo de mensagem. Ao ler uma mensagem XML, os analisadores XML constroem uma árvore de mensagens de um fluxo de bits de entrada. O fluxo de bits de entrada deve ser um documento XML bem formado e em conformidade com a Especificação W3C XML (versão 1.0 ou 1.1). Ao gravar uma mensagem, os analisadores XML criam um fluxo de bits XML de uma árvore de mensagens. Os analisadores XML são programados e nunca utilizam um modelo de mensagem no tempo de execução, mas é prática recomendada criar e utilizar um modelo de mensagem para fins de tempo de design, visto que ele pode simplificar a construção do aplicativo de fluxo de mensagens; consulte Por Que Modelar Mensagens?.
Para obter informações adicionais sobre como o analisador de XML trata elementos nulos, consulte Analisador XML e Valores Nulos.
As informações fornecidas com o WebSphere Message Broker oferecem um resumo da terminologia XML, dos conceitos e dos constructos de mensagens que destaca aspectos importantes ao utilizar 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 que são utilizados nessa descrição (por exemplo, XmlDecl) são fornecidos pelo WebSphere Message Broker, sendo referidos como nomes de correlação. Eles estão disponíveis para utilização simbólica na ESQL que define o processamento do conteúdo da mensagem desempenhado pelos nós, tais como um nó Compute ou Filter, em um fluxo de mensagens. Os nomes de correlação não fazem 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. É possível ver estas constantes utilizadas na saída criada pelo nó Trace quando uma mensagem, ou uma parte dela, é rastreada.
Uma mensagem XML simples pode ter o seguinte 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 anterior tiver sido analisada nos analisadores XML e XMLNSC para demonstrar as diferenças nas estruturas internas utilizadas para representar os dados conforme são processados pelo intermediário.
No exemplo a seguir, os elementos WhiteSpace na árvore estão presentes por causa de espaço, tabulação e quebras de linha que formatam o documento XML original; para clareza de apresentação, os caracteres reais no rastreio foram substituídos por "WhiteSpace". WhiteSpace em um elemento XML possui significado de negócios e é representado utilizando o elemento de sintaxe Content. XmlDecl, DTD e comentários são representados no domínio XML utilizando elementos de sintaxe denominados por 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 no analisador XMLNSC compacto em seu modo padrão. Nesse modo, o analisador compacto não retém componentes, instruções de processamento ou texto misto.
O exemplo ilustra a significativa economia no número de elementos de sintaxe que são utilizados para representar o mesmo conteúdo de negócios da mensagem XML de exemplo ao utilizar o analisador compacto.
Não retendo o texto combinado, todos os elementos WhiteSpace que não possuem conteúdo de dados de negócios não estão mais utilizando nenhuma área de cobertura de tempo de execução na árvore de mensagens do intermediário. Entretanto, o texto misto em Element04.P também é descartado e somente o valor da pasta filho, Element04.P.B, é mantido na árvore; o texto "This is " e "text" em P é descartado. Esse tipo de estrutura XML em geral não está associado a formatos de dados de negócios; por isso, o uso do analisador XMLNSC compacto normalmente é desejável. Entretanto, se você precisar desse tipo de processamento, não utilize o analisador XMLNSC ou use-o 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, de codificação e independentes sendo suspensos como filhos de XmlDeclaration, em vez de elementos denominados de correlação especiais.
(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' ) ) )