ESQL로 노드를 구성하여 반복 필드를 여러 방법으로 복사할 수 있습니다.
반복 구조가 포함된 입력 XML 메시지를 고려하십시오.
... <Field_top> <field1></field1> <field1></field1> <field1></field1> <field1></field1> <field1></field1> </Field_top> .....
다음 명령문으로 이 구조 필드 전체를 복사할 수 없습니다.
SET OutputRoot.XML.Output_top.Outfield1 = InputRoot.XML.Field_top.field1;
명령문이 첫 번째 반복만을 복사하기 때문에 이 명령문과 동일한 결과를 생성합니다.
SET OutputRoot.XML.Output_top.Outfield1[1] = InputRoot.XML.Field_top.field1[1];
루프 내에서 필드를 복사하고 입력 필드의 CARDINALITY로 반복을 제어할 수 있습니다.
SET I = 1; SET J = CARDINALITY(InputRoot.XML.Field_top.field1[]); WHILE I <= J DO SET OutputRoot.XML.Output_top.Outfield1[I] = InputRoot.XML.Field_top.field1[I]; SET I = I + 1; END WHILE;
입력 필드에서 복사하거나(예를 들어 수를 추가하거나 컨텐츠를 대문자로 만듬) 복사가 완료된 이후 출력 메시지의 각 필드를 수정할 경우 이것이 적합할 수도 있습니다. 입력 메시지에 있는 것보다 많은 Field1 필드가 출력 메시지에 이미 포함된 경우 과다한 필드가 루프에 의해 수정되지 않으며 출력 메시지에 남게 됩니다.
다음 단일 명령문은 입력 필드의 반복을 출력 필드에 복사하며 출력 메시지의 과다한 필드를 삭제합니다.
SET OutputRoot.XML.Output_top.Outfield1.[] = InputRoot.XML.Field_top.field1[];
아래의 예에는 출력 트리로 복사할 때 요소의 이름을 바꾸는 방법이 표시되어 있습니다. 이 명령문으로는 소스 요소 이름 전반에 걸쳐 복사가 되지 않기 때문에 각 field1 요소가 대상 요소가 됩니다.
SET OutputRoot.XML.Output_top.Outfield1.Target[] = (SELECT I FROM InputRoot.XML.Field_top.field1[] AS I );
다음 예에는 동일한 조작을 수행하는 다른 방법이 표시되어 있습니다. 이 방법에 따라 동일한 결과가 생성됩니다.
SET OutputRoot.XML.Output_top.Outfield2.Target[] = InputRoot.XML.Field_top.field1[];
다음 예에서는 소스 요소 이름 전반에 걸친 복사가 수행됩니다. 각 field1 요소는 대상 요소 아래의 field1 요소로 보유됩니다.
SET OutputRoot.XML.Output_top.Outfield3.Target.[] = InputRoot.XML.Field_top.field1[];
이 예는 field1 요소가 대상 요소 아래에 작성된 상태에서 동일한 결과를 얻을 수 있는 다른 방법을 표시합니다.
SET OutputRoot.XML.Output_top.Outfield4.Target.*[] = InputRoot.XML.Field_top.field1[];
이 예에는 ESQL을 코드화하여 소스에서 대상으로 반복 필드를 복사하는 여러 방법이 표시되어 있습니다. 필요한 결과를 얻는 데 가장 적합한 메소드를 선택하십시오.
여기에서 표시된 프린시펄은 단순한 출력 메시지 트리가 아닌 데이터를 작성할 수 있는 메시지 트리의 모든 영역에 균등하게 적용됩니다.