Analizadores y dominios XML

El dominio de mensajes XML incluye todos los mensajes que cumplen con el estándar XML W3C.

Los mensajes de este dominio los procesa el analizador XML, XMLNS o XMLNSC. El dominio XMLNS es una extensión del dominio XML y contiene mensajes que cumplen con el mismo estándar y que aprovechan la característica de espacios de nombres de la especificación XML. Los mensajes de este dominio los procesa el analizador XML.

El analizador XML es un programa que interpreta un árbol o una corriente de bits que representa un mensaje que pertenece al dominio XML, y genera el árbol correspondiente a partir de la corriente de bits en la entrada o la corriente de bits a partir del árbol, en la salida. La corriente de bits es una representación de un archivo XML. (El analizador XML también interpreta una corriente de bits o un árbol que representa un mensaje que pertenece a los dominios JMS; no hay ningún analizador JMS.)

Sus aplicaciones pueden intercambiar mensajes XML (con o sin soporte de espacio de nombres) con los intermediarios de WebSphere Message Broker de dos maneras:

  1. Puede predefinir (crear un modelo) la plantilla de mensajes para crear un diccionario de mensajes. Si lo hace, el analizador MRM analiza sus mensajes XML y se procesan de la misma manera que todos los mensajes que modela.
  2. Puede utilizar mensajes autodefinidos que no se especifican de ninguna manera antes de enviar.

    Todos los nodos incorporados pueden manejar un mensaje autodefinido. El mensaje entero puede almacenarse en una base de datos y pueden añadirse o eliminarse cabeceras del mensaje cuando éste pasa por el flujo de mensajes.

Un mensaje autodefinido también se conoce como mensaje XML genérico. No tiene un formato registrado, pero lleva la información sobre su contenido y estructura dentro del mensaje en forma de un documento que sigue la especificación XML. Su definición no está en ningún otro lugar. Cuando el intermediario recibe un mensaje XML, lo interpreta el analizador XML y se crea una estructura de árbol de mensaje interna según las definiciones XML que contiene ese mensaje.

En El analizador XML y los valores nulos se proporciona información sobre cómo maneja el analizador XML los elementos y valores nulos.

La información que se proporciona con WebSphere Message Broker no proporciona una definición o descripción completa de la terminología, los conceptos y las construcciones de mensajes XML: es un resumen que resalta los aspectos importantes cuando se utilizan los mensajes XML con intermediarios y flujos de mensajes.

Para obtener más información sobre XML, consulte el sitio Web de developerWorks.

Análisis de mensaje XML de ejemplo

Los elementos de nombre utilizados en esta descripción (por ejemplo, XmlDecl) los proporciona WebSphere Message Broker y se denominan nombres de correlaciones. Están disponibles para uso simbólico en el ESQL que define el proceso del contenido de mensaje realizado por los nodos, por ejemplo un nodo Compute o Filter, en un flujo de mensajes. No forman parte de la especificación XML. Cada analizador XML define su propio conjunto de nombres de correlación porque el manejo del contenido XML varía.

Los nombres de correlación para los elementos de nombre XML (por ejemplo, Element y XmlDecl) equivalen a un valor constante con el formato 0x01000000, etc. Puede ver la utilización de estas constantes en la salida creada por el nodo Trace cuando se efectúa el rastreo de un mensaje, o una parte de un mensaje.

Un mensaje XML sencillo puede tener esta forma:

<?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>
<!-- This is a comment -->
	</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>

Las secciones siguientes muestran la salida creada por el nodo Trace cuando el mensaje anterior se ha analizado en los analizadores XML y XMLNSC para mostrar las diferencias en las estructuras internas utilizadas para representar los datos tal como los procesa el Intermediario.

Mensaje XML de ejemplo analizado en el dominio XML

Tenga en cuenta que en el ejemplo siguiente los elementos WhiteSpace del árbol se encuentran allí debido a los espacios, los tabuladores y los saltos de línea que formatean el documento XML original. Para que la presentación sea más clara, se han sustituido por 'WhiteSpace' los caracteres reales del rastreo. WhiteSpace dentro de un elemento XML sí tiene significado comercial y se representa utilizando el elemento de sintaxis Content. Tenga en cuenta que la XmlDecl, la DTD y los comentarios se representan en el dominio XML utilizando elementos de sintaxis con nombre de correlación 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):        = ' This is a comment  '
        (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'
    )

Mensaje XML de ejemplo analizado en el dominio XMLNSC

El rastreo siguiente muestra los elementos creados para representar la misma estructura XML en el analizador compacto XMLNSC en la modalidad por omisión. En esta modalidad el analizador compacto no retiene comentarios, instrucciones de proceso o texto mixto.

Si se realiza una comparación, se puede ver claramente que al utilizar el analizador compacto hay un gran ahorro en el número de elementos de sintaxis utilizados para representar el mismo contexto de negocio del mensaje XML de ejemplo.

Tenga en cuenta que al no retener texto mixto, todos los elementos WhiteSpace que no incluyan contenido de datos de negocio ya no siguen ningún rastro de ejecución en el árbol de mensaje de Intermediario. Sin embargo, esto también hace que el texto mixto de "Element04.P" se descarte y que sólo se conserve en el árbol el valor de la carpeta hijo "Element04.P.B", el texto 'This is ' y ' text' en "P" se descarta. Dado que normalmente este tipo de estructura XML no está asociada con formatos de datos de negocio, en general será deseable utilizar el analizador XMLNSC. No obstante, en el caso de que necesite este tipo de proceso, no utilizará el analizador XMLNSC o lo utilizará con la modalidad de "retención de texto mixto" habilitada.

El manejo de la declaración XML también es diferente en el analizador compacto si se mantienen los atributos de Version, Encoding y Standalone como hijos de XmlDeclaration en lugar de elementos con nombre de correlación especiales.

(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'
          )
        )
   )

La mayoría de los ejemplos de la Galería de ejemplos utilizan el analizador XML para procesar mensajes. Por ejemplo, examine el Ejemplo de respuesta de petición coordinada, el Ejemplo Mensajería grande y el Ejemplo Direccionamiento de mensajes.

Referencia relacionada
Nodos incorporados
Construcciones XML
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ac00600_