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