이 주제에서는 XMLNS 도메인에 포함된 메시지를 처리하는 데 특정한 정보 및 XML 구문 분석기에 의해 구문 분석된 정보를 제공합니다. XMLNS 도메인은 XML 도메인의 확장이며 네임스페이스 지원을 제공합니다. 메시지 본문 컨텐츠 가공 주제의 정보와 함께 XML 도메인에서 메시지 가공에서 XML 메시지에 대해 제공된 지침을 따르십시오.
다음 예에서는 ESQL을 사용하여 네임스페이스에 대해 작업하는 방법을 보여줍니다. 이 예에서는 전체 네임스페이스 URI 대신 ESQL문에 접두부를 사용할 수 있도록 기본 모듈 시작 부분에 네임스페이스 상수를 선언합니다.
네임스페이스 상수는 ESQL에만 영향을 줍니다. 이 상수는 출력 메시지에 생성된 접두부는 제어하지 않습니다. 생성된 출력 메시지의 접두부는 네임스페이스 선언에서 제어합니다. XML.NamespaceDecl 상관 이름을 사용하여 트리에 네임스페이스 선언을 포함시킬 수 있습니다. 그런 다음 이러한 요소는 출력 메시지의 네임스페이스 선언을 생성하는 데 사용됩니다.
출력 메시지 생성 시 요소 또는 속성이 규정된 네임스페이스에 해당 네임스페이스 선언이 없는 경우 NSn 형식의 접두부를 사용하여 네임스페이스 선언이 자동으로 생성됩니다. 여기서 'n'은 양의 정수입니다.
CREATE COMPUTE MODULE xmlns_doc_flow_Compute CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN CALL CopyMessageHeaders(); -- Declaration of namespace constants 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 declaration to associate prefix 'space1' with the namespace SET OutputRoot.XMLNS.message.(XML.NamespaceDecl)xmlns:space1 = 'http://www.ibm.com/space1'; SET OutputRoot.XMLNS.message.sp1:data1 = 'Hello!'; -- Default Namespace declaration 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.Properties.MessageDomain = 'XMLNS'; RETURN TRUE; END; CREATE PROCEDURE 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>
이름 지정된 XML 요소(복합 요소인 경우 요소의 하위 포함)가 명확하지 않게 구문 분석되도록 지정할 수도 있습니다. 즉 단일 이름 지정된 요소는 불명확한 요소의 시작 및 종료 태그 사이에 들어 있는 실제 XML 비트스트림이 포함된 값(UTF-16 인코딩)을 가진 메시지 트리에 작성됩니다. 이 옵션은 요소의 컨텐츠가 메시지 플로우 내에서 그다지 중요하지 않을 경우 성능상의 이점을 제공합니다.
XML 요소가 불명확하게 구문 분석되도록 정의하려면 ESQL CREATE문에 PARSE 절을 사용하여 XML 문서를 구문 분석하십시오. PARSE 절의 FORMAT 규정자를 상수 대소문자 구분 문자열 'XMLNS_OPAQUE' 로 설정하고 PARSE 절의 TYPE 규정자를 불명확한 방법으로 구문 분석할 XML 요소의 이름으로 설정하십시오. TYPE 절은 네임스페이스 없이 요소 이름을 지정하거나(임의의 네임스페이스와의 일치를 위해), 네임스페이스 접두부와 함께 또는 전체 네임스페이스 URI와 함께(특정 네임스페이스와의 일치를 위해) 요소 이름을 지정할 수 있습니다.
다음의 예를 고려해 보십시오.
DECLARE soap NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/'; DECLARE BitStream BLOB ASBITSTREAM(InputRoot.XMLNS ENCODING InputRoot.Properties.Encoding CCSID InputRoot.Properties.CodedCharSetId); --No Namespace CREATE LASTCHILD OF OutputRoot DOMAIN('XMLNS') PARSE (BitStream ENCODING InputRoot.Properties.Encoding CCSID InputRoot.Properties.CodedCharSetId FORMAT 'XMLNS_OPAQUE' TYPE 'Body'); --Namespace Prefix CREATE LASTCHILD OF OutputRoot DOMAIN('XMLNS') PARSE (BitStream ENCODING InputRoot.Properties.Encoding CCSID InputRoot.Properties.CodedCharSetId FORMAT 'XMLNS_OPAQUE' TYPE 'soap:Body'); --Namespace URI CREATE LASTCHILD OF OutputRoot DOMAIN('XMLNS') PARSE (BitStream ENCODING InputRoot.Properties.Encoding CCSID InputRoot.Properties.CodedCharSetId FORMAT 'XMLNS_OPAQUE' TYPE '{http://schemas.xmlsoap.org/soap/envelope/}Body');
XML 요소의 불명확한 구문 분석은 XMLNS 도메인에서만 사용 가능하며 이를 지정하는 방법에 대한 제어는 보다 최신 릴리스의 변경사항으로 다룹니다.
CREATE 및 CREATE 사용의 예제에 대한 추가 정보는 CREATE문을 참조하십시오.