Manipulación de mensajes del dominio XMLNS

Este tema proporciona información específica para tratar los mensajes que pertenecen al dominio XMLNS y que el analizador XML genérico analiza. El dominio XMLNS es una extensión del dominio XML y proporciona soporte de espacio de nombres. Siga la información de guía proporcionada para los mensajes XML del apartado Manipulación de mensajes del dominio XML, junto con la información del tema Manipulación del contenido del texto del mensaje.

El ejemplo siguiente muestra cómo utilizar ESQL para trabajar con espacios de nombres. El ejemplo declara constantes de espacio de nombres al principio del módulo principal para que pueda utilizar prefijos en las sentencias ESQL en lugar de los URI de espacio de nombres completos.

Las constantes de espacio de nombres sólo afectan a ESQL; no controlan los prefijos generados en el mensaje de salida. Los prefijos del mensaje de salida generado los controlan las declaraciones de espacio de nombres. Puede incluir declaraciones de espacio de nombres en el árbol utilizando el nombre de correlación XML.NamespaceDecl. Entonces estos elementos se utilizan para generar declaraciones de espacio de nombres en el mensaje de salida.

Si, cuando se genera el mensaje de salida, el espacio de nombres con el que se califica un elemento o atributo no tiene ninguna declaración de espacio de nombres correspondiente, se genera automáticamente una utilizando prefijos del formato NSn, donde n es un entero positivo.

CREATE COMPUTE MODULE xmlns_doc_flow_Compute
CREATE ROUTINE Main() RETURNS BOOLEAN
BEGIN
CALL CopyMessageHeaders();

-- Declaración de constantes de espacio de nombres
DECLARE sp1 NAMESPACE 'http://www.ibm.com/space1';
DECLARE sp2 NAMESPACE 'http://www.ibm.com/space2';
DECLARE sp3 NAMESPACE 'http://www.ibm.com/space3';

-- Declaración de espacio de nombres para asociar el prefijo 'space1' con el espacio de nombres
SET OutputRoot.XMLNS.message.(XML.NamespaceDecl)xmlns:space1 = 'http://www.ibm.com/space1';  
SET OutputRoot.XMLNS.message.sp1:data1 = 'Hello!';      
 
-- Declaración de espacio de nombres por omisión
SET OutputRoot.XMLNS.message.sp2:data2.(XML.NamespaceDecl)xmlns = 'http://www.ibm.com/space2';
SET OutputRoot.XMLNS.message.sp2:data2.sp2:subData1 = 'Hola!';
SET OutputRoot.XMLNS.message.sp2:data2.sp2:subData2 = 'Guten Tag!';

SET OutputRoot.XMLNS.message.sp3:data3 = 'Bonjour!';

SET OutputRoot.Properties.MessageDomain = 'XMLNS';

RETURN TRUE;
END;

CREATE ROUTINE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;

END MODULE;
Cuando se ejecuta este ESQL, se genera el mensaje de salida siguiente:
<message xmlns:space1="http://www.ibm.com/space1">
 <space1:data1>Hello!</space1:data1>
 <data2 xmlns="http://www.ibm.com/space2">
  <subData1>Hola!</subData1>
  <subData2>Guten Tag!</subData2>
 </data2>
 <NS1:data3 xmlns:NS1="http://www.ibm.com/space3">Bonjour!</NS1:data3>
</message>
Conceptos relacionados
Visión general de flujos de mensajes
Analizadores y dominios XML
Visión general de ESQL
Tareas relacionadas
Diseño de un flujo de mensajes
Definición del contenido del flujo de mensajes
Manipulación de mensajes del dominio XML
Referencia relacionada
Referencia de ESQL
Sentencia DECLARE
Sentencia SET
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2005 Última actualización: 11/11/2005
ac17330_