Você pode utilizar mensagens XML que utilizam ou não espaços de nomes no WebSphere Message Broker.
A seguir está um exemplo de uma mensagem que não utiliza espaços de nomes:
<?xml version="1.0" encoding="UTF-8"?> <SaleListMessage> <SaleEnvelope> <Header> <SaleListCount>1</SaleListCount> </Header> <SaleList> <Invoice> ..... </SaleList> <Trailer> <CompletionTime>2000-01-0100:00:01.000000</CompletionTime> </Trailer> </SaleEnvelope></SaleListMessage>
A seguir está um exemplo de uma mensagem que utiliza espaços de nomes:
<?xml version="1.0" encoding="UTF-8"?> <samp:SaleListMessage xmlns:samp="http://www.samplemessage.broker.hursley.ibm.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.samplemessage.broker.hursley.ibm.com/SampleMessageNamespace1.xsd">
<SaleEnvelope> <Header> <SaleListCount>1</SaleListCount> </Header> <SaleList> <Invoice> ..... </SaleList> <Trailer> <CompletionTime>2000-01-0100:00:01.000000</CompletionTime> </Trailer> </SaleEnvelope> </samp:SaleListMessage>
Esta amostra contém um conjunto de mensagens e três fluxos de mensagens.
O conjunto de mensagens CHANGENAMESPACEMS tem um domínio de tempo de execução XMLNSC e contém arquivos de definição de mensagens gerados a partir de três esquemas XML:
Os arquivos de definições de mensagens modelam SaleListMessage que é usado em muitas amostras do WebSphere Message Broker. Essas definições de mensagens são idênticas, exceto por seus espaços de nomes. Os esquemas são necessários para validar as mensagens ao entrar e sair dos fluxos de mensagens.
O projeto do Message Broker CHANGENAMESPACEMF contém os seguintes fluxos de mensagens:
Descrições de cada um desses fluxos de mensagens:
Esse fluxo de mensagens inclui os nós MQInput, Compute e MQOutput.
O fluxo de mensagens recebe uma mensagem XML via protocolo do WebSphere MQ e emite como saída uma mensagem de resposta XML usando o WebSphere MQ. O analisador XMLNSC é utilizado pelo fluxo de mensagens e a validação está ativa.
A mensagem de entrada do WebSphere MQ não contém nenhum elemento com espaços de nomes. O fluxo de mensagens inclui um espaço de nomes para o elemento-raiz da mensagem. A mensagem de entrada do WebSphere MQ pode conter um cabeçalho MQRFH2 para especificar o espaço de nomes de destino dinamicamente. O cabeçalho deve conter o seguinte no elemento NameValueData:
<usr> <targetNamespace>URL2</targetNamespace> <targetSchemaLocation>URL3</targetSchemaLocation> </usr>
O elemento targetSchemaLocation é opcional.
Se nenhum cabeçalho MQRFH2 estiver presente, ou se o cabeçalho MQRFH2 não puder ser processado, o espaço de nomes será alterado de acordo com os seguintes valores:
O nó Compute chama uma função ESQL denominada ChangeNamespaceInOutputRoot. Para obter detalhes da função ESQL, consulte Construindo a Amostra XMLNSC Namespaces.
Esse fluxo de mensagens inclui os nós MQInput, Compute e MQOutput.
O fluxo de mensagens recebe uma mensagem XML via protocolo do WebSphere MQ e emite como saída uma mensagem de resposta XML usando o WebSphere MQ. O analisador XMLNSC é usado pelo fluxo de mensagens e a validação está ativa.
A mensagem de entrada do WebSphere MQ contém elementos com espaços de nomes e pode conter elementos de diversos espaços de nomes. O fluxo de mensagens pode alterar um dos espaços de nomes existentes. A mensagem de entrada do WebSphere MQ também pode conter um cabeçalho MQRFH2 para especificar o espaço de nomes de origem, de destino ou ambos, dinamicamente. O cabeçalho contém o seguinte no elemento NameValueData:
<usr> <sourceNamespace>URL1</sourceNamespace> <targetNamespace>URL2</targetNamespace> <targetSchemaLocation>URL3</targetSchemaLocation> </usr>
O elemento targetSchemaLocation é opcional.
Se nenhum cabeçalho MQRFH2 estiver presente, ou se o cabeçalho MQRFH2 não puder ser processado, o espaço de nomes será alterado de acordo com os seguintes valores:
Se a origem ou o destino não tiver um espaço de nomes, especifique NONAMESPACE como sourceNamespace, targetNamespace ou ambos.
<usr> <sourceNamespace>URL1</sourceNamespace> <targetNamespace>NONAMESPACE</targetNamespace> </usr>
O nó Compute chama uma função ESQL denominada ChangeNamespaceInOutputRoot. Para obter detalhes da função ESQL, consulte Construindo a Amostra XMLNSC Namespaces.
Esse fluxo de mensagens inclui os nós MQInput, Compute e MQOutput.
Esse fluxo de mensagens recebe uma mensagem XML via protocolo do WebSphere MQ e emite como saída uma mensagem de resposta XML usando o WebSphere MQ. O analisador XMLNSC é usado pelo fluxo de mensagens e a validação está ativa.
A mensagem de entrada do WebSphere MQ contém elementos com espaços de nomes e pode conter elementos de diversos espaços de nomes. Este fluxo de mensagens exclui referências a um dos espaços de nomes existentes.
A mensagem de entrada do WebSphere MQ pode conter um cabeçalho MQRFH2 para especificar o espaço de nomes de origem dinamicamente. O cabeçalho deve conter o seguinte no elemento NameValueData:
<usr> <sourceNamespace>URL1</sourceNamespace> </usr>
Se nenhum cabeçalho MQRFH2 estiver presente, ou se o cabeçalho MQRFH2 não puder ser processado, o espaço de nomes será alterado de acordo com os seguintes valores:
O nó Compute chama uma função ESQL denominada ChangeNamespaceInOutputRoot. Para obter detalhes da função ESQL, consulte Construindo a Amostra XMLNSC Namespaces.
Para obter uma explicação detalhada sobre como executar cada amostra, consulte Executando a Amostra XMLNSC Namespaces.