Puede utilizar los dominios XML para modelar mensajes que cumplan el estándar XML de W3C.
Puede crear modelos de mensajes que representen mensajes XML utilizando uno de los dominios XML (XMLNSC, XMLNS o XML); consulte Los dominios XML. Los mensajes de estos dominios los procesan los analizadores XML.
WebSphere Message Broker utiliza los analizadores XML para leer y escribir mensajes XML que pertenecen a los dominios XMLNSC, XMLNS o XML, sin utilizar un modelo de mensaje. Al leer un mensaje XML, los analizadores XML construyen un árbol de mensaje a partir de una corriente de bits de entrada. La corriente de bits de entrada debe ser un documento XML bien formado que cumpla las normas de la Especificación XML de W3C (versión 1.0 o 1.1). Al escribir un mensaje, los analizadores XML crean una corriente de bits XML a partir de un árbol de mensaje. Los analizadores XML están programados y nunca utilizan un modelo de mensaje en tiempo de ejecución, pero es una buena práctica crear y utilizar un modelo de mensaje para tiempo de diseño porque puede simplificar la construcción de su aplicación de flujo de mensajes; consulte Por qué se deben modelar mensajes.
Para obtener más información sobre sobre cómo maneja el analizador XML los elementos nulos, consulte El analizador XML y los valores nulos.
La información que se ofrece con WebSphere Message Broker proporciona un resumen de terminología, conceptos y construcciones de mensajes XML que destaca los aspectos que son importantes cuando se utilizan mensajes XML con intermediarios y flujos de mensajes. Para obtener más información sobre XML, consulte el sitio web de developerWorks.
Los elementos de nombre que se utilizan en esta descripción (por ejemplo XmlDecl) los proporciona WebSphere Message Broker y se denominan nombres de correlación. Están disponibles para uso simbólico en el ESQL que define el proceso de contenido de mensaje que realizan los nodos, por ejemplo un nodo Compute o Filter, dentro de un flujo de mensajes. Los nombres de correlación 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. Puede ver cómo se utilizan estas constantes en la salida que crea el nodo Trace cuando se rastrea un mensaje, o una parte de un mensaje.
Un mensaje XML sencillo puede tener el siguiente 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> <!-- 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 que crea el nodo Trace cuando el mensaje precedente se ha analizado en los analizadores XML y XMLNSC para mostrar las diferencias en las estructuras internas que se utilizan para representar los datos tal como los procesa el intermediario.
En el ejemplo siguiente, los elementos WhiteSpace dentro del árbol están presentes debido a los espacios, tabuladores y saltos de línea que dan formato al documento XML original; por motivos de claridad, los caracteres reales del rastreo se han sustituido por "WhiteSpace". WhiteSpace dentro de un elemento XML sí tiene significado de empresa y se representa utilizando el elemento de sintaxis Content. Los elementos XmlDecl, DTD y los comentarios se representan en el dominio XML utilizando elementos de sintaxis con nombres de correlación explícitos.
(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' )
El rastreo siguiente muestra los elementos que se crean para representar la misma estructura XML en el analizador compacto XMLNSC en la modalidad predeterminada. En esta modalidad, el analizador compacto no retiene comentarios, instrucciones de proceso ni texto mixto.
El ejemplo ilustra el ahorro significativo en el número de elementos de sintaxis que se utilizan para representar el mismo contexto de empresa del mensaje XML de ejemplo cuando se utiliza el analizador compacto.
Al no retener texto mixto, todos los elementos WhiteSpace que no tienen contenido de datos de empresa ya no ocupan ningún espacio de ejecución en el árbol de mensaje del intermediario. Sin embargo, el texto mixto en Element04.P también se descarta, y sólo el valor de la carpeta hijo, Element04.P.B, se conserva en el árbol; el texto "This is " y "text" en P se descarta. Este tipo de estructura XML no está asociado normalmente a formatos de datos de empresa, por lo que generalmente es preferible utilizar el analizador compacto XMLNSC. No obstante, si necesita este tipo de proceso, no utilice el analizador XMLNSC o utilícelo con la modalidad Retener texto mixto habilitada.
El manejo de la declaración XML también es diferente en el analizador compacto ya que los atributos Version, Encoding y Standalone se establecen como hijos de XmlDeclaration, en vez de como 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' ) ) )