Sie können einen Knoten auf verschiedene Weise mit ESQL so codieren, dass Wiederholungsfelder kopiert werden.
Beispiel: Eine XML-Eingabenachricht mit einer Wiederholungsstruktur:
... <Field_top> <field1></field1> <field1></field1> <field1></field1> <field1></field1> <field1></field1> </Field_top> .....
Sie können dieses gesamte Strukturfeld nicht mit folgender Anweisung kopieren:
SET OutputRoot.XML.Output_top.Outfield1 = InputRoot.XML.Field_top.field1;
Diese Anweisung kopiert lediglich die erste Wiederholung und erzielt daher dasselbe Ergebnis wie die folgende Anweisung:
SET OutputRoot.XML.Output_top.Outfield1[1] = InputRoot.XML.Field_top.field1[1];
Sie können die Felder in einer Schleife kopieren und dabei die Iterationen mit der KARDINALITÄT des Eingabefeldes steuern:
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;
Dieser Code ist nützlich, wenn Sie jedes Feld in der Ausgabenachricht ändern möchten, während Sie sie vom Eingabefeld kopieren (fügen Sie ihm beispielsweise eine Zahl hinzu oder setzen Sie den Inhalt ihn in Großbuchstaben um) oder sie kopiert wurde. Wenn die Ausgabenachricht bereits mehr 'Field1'-Felder enthielt als in der Eingabenachricht vorhanden, werden die überzähligen Felder nicht von der Schleife geändert und verbleiben in der Ausgabenachricht.
Folgende Einzelanweisung kopiert die Iterationen der Eingabefelder in die Ausgabefelder und löscht alle überzähligen Felder in der Ausgabenachricht.
SET OutputRoot.XML.Output_top.Outfield1.[] = InputRoot.XML.Field_top.field1[];
Das folgende Beispiel zeigt Ihnen, wie Sie die Elemente umbenennen, während Sie sie in die Ausgabebaumstruktur kopieren. Da diese Anweisung nicht über den Quellelementnamen hinaus kopiert, wird jedes field1-Element zu einem Target-Element (Zielelement).
SET OutputRoot.XML.Output_top.Outfield1.Target[] = (SELECT I FROM InputRoot.XML.Field_top.field1[] AS I );
Das nächste Beispiel zeigt eine andere Vorgehensweise für dieselbe Operation; es erzielt dasselbe Endergebnis.
SET OutputRoot.XML.Output_top.Outfield2.Target[] = InputRoot.XML.Field_top.field1[];
Im folgenden Beispiel wird über den Quellelementnamen hinaus kopiert. Jedes field1-Element wird als field1-Element unter dem Target-Element beibehalten.
SET OutputRoot.XML.Output_top.Outfield3.Target.[] = InputRoot.XML.Field_top.field1[];
Dieses Beispiel zeigt eine Alternative zur Erzielung desselben Ergebnisses, wobei field1-Elemente unter dem Target-Element erstellt werden.
SET OutputRoot.XML.Output_top.Outfield4.Target.*[] = InputRoot.XML.Field_top.field1[];
Diese Beispiele zeigen, dass ESQL auf verschiedene Weise codiert werden kann, um Wiederholungsfelder von ihrer Quelle in ein Ziel zu kopieren. Wählen Sie die für sich geeignete Methode, um die erforderlichen Ergebnisse zu erzielen.
Die hier gezeigten Teilnehmer gelten nicht ausschließlich für die Ausgabenachrichtenbaumstruktur, sondern für alle Bereiche der Nachrichtenbaumstruktur, in die Daten geschrieben werden können.