xsd:: list 유형 요소에 대한 작업

XML 스키마 스펙은 요소 또는 속성이 공백으로 분리된 개별 값을 가진 단순 유형을 기반으로 하는 값 목록을 포함하도록 허용합니다.

다음 XML 입력 메시지를 고려하십시오.
   <message1>
     <listE1 listAttr="one two three"> four five six</listE1>
   </message1> 

결과 메시지 트리에서 xsd::list 유형이 각 목록에 하위인 익명 값을 갖는 이름 노드로 표시됩니다. 이를 통해 정보 손실 없이도 반복 목록을 핸들링할 수 있습니다.

반복 목록은 각각 해당 목록 항목에 하위 노드인 고유한 익명 값을 갖는 동위 이름 요소로 표시됩니다. 선행하는 메시지 예는 다음과 같은 논리적 트리를 생성합니다.
   MRM
	   	listEl  (Name)
		     	listAttr (Name)
			        "one"   (Value)
			        "two"   (Value) 
			        "three" (Value)
		       "four" (Value)
		       "five" (Value)
		       "six"  (Value)
ElementName.*[n]으로 개별 목록 항목에 액세스할 수 있습니다. 예를 들면 다음과 같습니다.
  SET OutputRoot.MRM.listEl.listAttr.*[3] = ...
이 명령문은 listAttr의 세 번째 항목을 수정합니다.

목록과 반복 요소 간의 맵핑

다음 XML 입력 메시지 형식을 고려하십시오.
   <MRM>
     <inner>abcde fghij 12345</inner>
   </MRM> 
여기서 inner 요소는 xsd::list 유형이므로 단일 열이 아닌 연관된 문자열 값을 갖습니다.
세 개의 값을 출력 메시지에 복사하려는 경우, 각 값은 다음과 같이 반복 요소의 인스턴스와 연관됩니다.
   <MRM>
     <str1>abcde</str1>
     <str1>fghij</str1>
     <str1>12345</str1>
   </MRM> 
다음 ESQL 구문이 작동한다고 가정할 수 있습니다.
   DECLARE D INTEGER;
   SET D = CARDINALITY(InputBody.str1.*[]);
   DECLARE M INTEGER 1;
   WHILE M <= D DO
      SET OutputRoot.MRM.str1[M] = InputBody.inner.*[M];
      SET M = M + 1;
   END WHILE;
그러나 다음 명령문은
   SET OutputRoot.MRM.str1[M] = InputBody.inner.*[M];
소스에서 대상으로 트리 복사를 요청합니다. 대상 요소가 아직 없으므로 대상 요소가 작성되고 값 및 유형이 소스에서 송신됩니다.

이는 ESQL의 작동과 일치하지만 list 유형 값을 가진 요소의 경우 이 코드는 가짜 유효성 검증 오류를 생성할 수 있습니다.

이런 문제점을 방지하려면 다음과 같이 FIELDVALUE 함수를 사용하여 소스 요소 값만 명시적으로 검색하는 것이 좋습니다.
      SET OutputRoot.MRM.str1[M] = FIELDVALUE(InputBody.inner.*[M]);
관련 태스크
ESQL 개발
메시지의 요소 액세스
관련 참조
SET문
FIELDVALUE 함수
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ak05141_