Acerca del ejemplo Espacios de nombres XMLNSC

Puede utilizar mensajes XML que hagan uso o no de espacios de nombres en WebSphere Message Broker.

El siguiente es un ejemplo de un mensaje que no utiliza espacios de nombres:

<?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> 

El siguiente es un ejemplo de un mensaje que sí que utiliza espacios de nombres:

<?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>

Este ejemplo contiene un conjunto de mensajes y tres flujos de mensajes.

Detalles del conjunto de mensajes

El conjunto de mensajes CHANGENAMESPACEMS tiene un dominio de tiempo de ejecución de XMLNSC y contiene archivos de definición de mensajes generados a partir de tres esquemas XML:

Los archivos de definición de mensajes modelan todos el mensaje SaleListMessage, que se utiliza en muchos de los ejemplos de WebSphere Message Broker. Estas definiciones de mensajes son idénticas salvo en sus espacios de nombres. Los esquemas son necesarios para validar los mensajes al entrar y salir de los flujos de mensajes.

Detalles del flujo de mensajes

El proyecto de Message Broker CHANGENAMESPACEMF contiene los siguientes flujos de mensajes:

  1. Añadir un espacio de nombres: ADDNAMESPACEMF
  2. Modificar un espacio de nombres existente: CHANGENAMESPACEMF
  3. Suprimir un espacio de nombres: DELETENAMESPACEMF

Descripciones de estos flujos de mensajes:

Flujo de mensajes ADDNAMESPACEMF

Este flujo de mensaje consta de nodos MQInput, Compute y MQOutput.

Este flujo de mensajes recibe un mensaje XML a través del protocolo WebSphere MQ y envía un mensaje de salida XML utilizando WebSphere MQ. El flujo de mensajes utiliza el analizador XMLNSC y la validación está activa.

El mensaje de entrada de WebSphere MQ no contiene elementos con espacios de nombres. El flujo de mensajes añade un espacio de nombres al elemento raíz del mensaje. El mensaje de entrada de WebSphere MQ puede contener una cabecera MQRFH2 para especificar el espacio de nombres de destino de forma dinámica. La cabecera debe contener lo siguiente en el elemento NameValueData:

<usr>
<targetNamespace>URL2</targetNamespace> 
<targetSchemaLocation>URL3</targetSchemaLocation> 
</usr>

El elemento targetSchemaLocation es opcional.

Si no hay ninguna cabecera MQRFH2 presente, o si la cabecera MQRFH2 no se puede procesar, el espacio de nombres se cambia según los valores siguientes:

El nodo Calcular llama a una función ESQL denominada ChangeNamespaceInOutputRoot. Para más detalles sobre la función ESQL, consulte Crear el ejemplo Espacios de nombres XMLNSC.

Flujo de mensajes CHANGENAMESPACEMF

Este flujo de mensaje consta de nodos MQInput, Compute y MQOutput.

Este flujo de mensajes recibe un mensaje XML a través del protocolo WebSphere MQ y envía un mensaje de salida XML utilizando WebSphere MQ. El flujo de mensajes utiliza el analizador XMLNSC y la validación está activa.

El mensaje de entrada de WebSphere MQ contiene elementos con espacios de nombres, y puede contener elementos de varios espacios de nombres. El flujo de mensajes puede cambiar uno de los espacios de nombres existentes. el mensaje de entrada de WebSphere MQ también puede contener una cabecera MQRFH2 para especificar dinámicamente el espacio de nombres de origen, de destino o ambos. La cabecera contiene lo siguiente en el elemento NameValueData:

<usr>
<sourceNamespace>URL1</sourceNamespace>
<targetNamespace>URL2</targetNamespace>
<targetSchemaLocation>URL3</targetSchemaLocation>
</usr>

El elemento targetSchemaLocation es opcional.

Si no hay ninguna cabecera MQRFH2 presente, o si la cabecera MQRFH2 no se puede procesar, el espacio de nombres se cambia según los valores siguientes:

Si el origen o el destino no tiene ningún espacio de nombres, especifique NONAMESPACE como sourceNamespace, targetNamespace o ambos.

<usr>
<sourceNamespace>URL1</sourceNamespace>
<targetNamespace>NONAMESPACE</targetNamespace>
</usr>

El nodo Calcular llama a una función ESQL denominada ChangeNamespaceInOutputRoot. Para más detalles sobre la función ESQL, consulte Crear el ejemplo Espacios de nombres XMLNSC.

Flujo de mensajes DELETENAMESPACEMF

Este flujo de mensaje consta de nodos MQInput, Compute y MQOutput.

Este flujo de mensajes recibe un mensaje XML a través del protocolo WebSphere MQ y envía un mensaje de salida XML utilizando WebSphere MQ. El flujo de mensajes utiliza el analizador XMLNSC y la validación está activa.

El mensaje de entrada de WebSphere MQ contiene elementos con espacios de nombres, y puede contener elementos de varios espacios de nombres. Este flujo de mensajes suprime referencias a uno de los espacios de nombres existentes.

El mensaje de entrada de WebSphere MQ puede contener una cabecera MQRFH2 para especificar el espacio de nombres de origen dinámicamente. La cabecera debe contener lo siguiente en el elemento NameValueData:

<usr>
<sourceNamespace>URL1</sourceNamespace>
</usr>

Si no hay ninguna cabecera MQRFH2 presente, o si la cabecera MQRFH2 no se puede procesar, el espacio de nombres se cambia según los valores siguientes:

El nodo Calcular llama a una función ESQL denominada ChangeNamespaceInOutputRoot. Para más detalles sobre la función ESQL, consulte Crear el ejemplo Espacios de nombres XMLNSC.

Si desea ver una explicación detallada sobre cómo ejecutar cada ejemplo, consulte el apartado Ejecutar el ejemplo de XMLNSC.

Volver a la página inicial del ejemplo