Puede utilizar dominios XML para analizar y grabar mensajes que cumplan el estándar XML de W3C.
El término dominios XML hace referencia a un grupo de tres dominios que WebSphere Message Broker utiliza para analizar documentos XML.
Cuando se lee un mensaje XML, el analizador asociado al dominio crea un árbol de mensajes a partir de la 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 ó 1.1).
Al escribir un mensaje, el analizador crea una corriente de bits XML a partir de un árbol de mensajes.
Los dominios tienen características diferentes; si desea directrices sobre qué dominio elegir, consulte Qué analizador XML debe utilizar.
El dominio MRM también proporciona recursos de análisis y escritura de XML. Para obtener indicaciones acerca de cuándo puede utilizar XML de MRM, en lugar de uno de los analizadores XML, consulte el apartado Qué analizador XML debe utilizar.
De forma predeterminada, los tres analizadores XML son analizadores programados y no utilizan un conjunto de mensajes durante la ejecución durante el análisis y la escritura. No obstante, el analizador XMLNSC puede funcionar como un analizador dirigido por modelo y puede validar si los los mensajes XML son correctos para el Esquema XML generado a partir de un conjunto de mensajes.
Cuando utilice los analizadores XMLNS o XML o el analizador XMLNSC sin un conjunto de mensajes, es una buena práctica crear y utilizar un conjunto de mensajes en WebSphere Message Broker Toolkit; esta acción simplifica el desarrollo de las aplicaciones de flujos de mensajes, aunque el conjunto de mensajes no se despliegue durante el tiempo de ejecución del intermediario.
Para obtener información acerca de las ventajas de crear un conjunto de mensajes, consulte el apartadoPor qué se deben modelar mensajes.
Los analizadores XML son analizadores bajo demanda. Para obtener más información, consulte Análisis a petición.
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 siguientes secciones muestran la salida creada por el nodo Trace cuando este mensaje de ejemplo se ha analizado en los analizadores XMLNS y XMLNSC. Muestran las diferencias en las estructuras internas que se utilizan para representar los datos cuando los procesa el intermediario.
En el ejemplo siguiente, los elementos de espacios en blanco contenidos en el á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'. El espacio en blanco (WhiteSpace) contenido en un elemento XML tiene significado de negocio y se representa utilizando el elemento de sintaxis Content. XmlDecl, DTD y los comentarios se representan en el dominio XML utilizando elementos de sintaxis explícitos con tipos de campos específicos.
(0x01000010):XMLNS = (
(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 negocio 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 negocio ya no ocupan ningún espacio en el árbol de mensajes del intermediario en tiempo de ejecución. Sin embargo, el texto mixto en Element04.P también se descarta y sólo se conserva el valor de la carpeta hija, Element04.P.B 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 negocio; por lo que generalmente es preferible utilizar el analizador compacto XMLNSC. No obstante, en el caso de que desee este tipo de proceso, no utilice el analizador XMLNSC ni lo utilice con la modalidad Retener texto mixto habilitada.
El manejo de la declaración XML también es diferente del analizador XMLNSC. Los atributos Version, Encoding y StandAlone se conservan como entidades hijo de XmlDeclaration, en vez de hacerlo como elementos de un tipo de campo determinado.
(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'
)
)
)
Puede ver información sobre los ejemplos sólo cuando utilice el Information Center que está integrado en WebSphere Message Broker Toolkit o el Information Center en línea. Puede ejecutar ejemplos sólo cuando utilice el Information Center que está integrado en WebSphere Message Broker Toolkit.
algunos modelos de mensajes predefinidos se suministran con WebSphere Message Broker Toolkit y se pueden importar utilizando el asistente de Nuevo archivo de definición de mensajes y seleccionando la opción de mensaje suministrado por IBM®. Consulte Conjuntos de mensajes: mensajes proporcionados por IBM que puede importar.