Dieses Thema enthält Informationen, die sich speziell auf die Verarbeitung von Nachrichten beziehen, die der XMLNS-Domäne angehören und vom generischen XML-Parser syntaktisch analysiert werden. Die XMLNS-Domäne ist eine Erweiterung der XML-Domäne und bietet ein e Namespace-Unterstützung. Halten Sie sich an die Richtlinien für XML-Nachrichten, die im Abschnitt Nachrichten in der XML-Domäne bearbeiten genannt werden, sowie an die Informationen im Abschnitt Inhalt des Hauptteils einer Nachricht bearbeiten.
Das folgende Beispiel zeigt die Verwendung von ESQL bei der Arbeit mit Namespaces. In dem Beispiel werden Namespace-Konstanten am Anfang des Hauptmoduls deklariert, damit Sie anstelle der vollständigen Namespace-URIs Präfixe in den ESQL-Anweisungen verwenden können.
Die Namespace-Konstanten wirken sich nur auf den ESQL-Code aus; sie steuern nicht die Präfixe, die in der Ausgabenachricht generiert werden. Die Präfixe in der generierten Ausgabenachricht werden von Namespace-Deklarationen gesteuert. Sie können unter Verwendung des Korrelationsnamens 'XML.NamespaceDecl' Namespace-Deklarationen in der Baumstruktur einfügen. Diese Elemente werden dann für die Generierung von Namespace-Deklarationen in der Ausgabenachricht verwendet.
Wenn der Namespace, über den ein Element oder Attribut qualifiziert wird, bei der Generierung der Ausgabenachricht keine entsprechende Namespace-Deklaration hat, wird automatisch eine generiert, wobei Präfixe der Form NSn verwendet werden. Hierbei steht n für eine positive ganze Zahl.
CREATE COMPUTE MODULE xmlns_doc_flow_Compute CREATE ROUTINE Main() RETURNS BOOLEAN BEGIN CALL CopyMessageHeaders(); -- Deklaration von Namespace-Konstanten DECLARE sp1 NAMESPACE 'http://www.ibm.com/space1'; DECLARE sp2 NAMESPACE 'http://www.ibm.com/space2'; DECLARE sp3 NAMESPACE 'http://www.ibm.com/space3'; -- Namespace-Deklaration für die Zuordnung des Präfixes 'space1' zum Namespace SET OutputRoot.XMLNS.message.(XML.NamespaceDecl)xmlns:space1 = 'http://www.ibm.com/space1'; SET OutputRoot.XMLNS.message.sp1:data1 = 'Hello!'; -- Standard-Namespace-Deklaration 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>