Betrachten Sie das Format der folgenden XML-Eingabenachricht:
<MRM>
<inner>abcde fghij 12345</inner>
</MRM>
Dabei ist dem Element 'inner' der Typ
xsd:list
zugeordnet. Ihm sind also drei Zeichenfolgewerte statt eines einzelnen Wertes zugeordnet.
Sie können die drei Werte in eine Ausgabenachricht kopieren, in der jeder Wert wie folgt
einer Instanz der sich wiederholenden Elemente zugeordnet ist:
<MRM>
<str1>abcde</str1>
<str1>fghij</str1>
<str1>12345</str1>
</MRM>
Es kann davon ausgegangen werden, dass die folgende ESQL-Syntax gültig
ist:
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;
Die Anweisung
SET OutputRoot.MRM.str1[M] = InputBody.inner.*[M];
fordert eine Kopie der Baumstruktur von der Quelle in das Ziel an. Da das Zielelement noch nicht vorhanden ist, wird es mit der Anweisung erstellt, und der zugehörige
Wert und Typ werden von der Quelle aus definiert.
Um bei einem Eingabeelement des Typs
xsd:list die Ausgabenachricht mit dem erforderlichen Format zu erstellen, müssen
Sie deshalb die
FIELDVALUE-Funktion verwenden, um explizit nur den
Wert des Quellenelements abzurufen:
SET OutputRoot.MRM.str1[M] = FIELDVALUE(InputBody.inner.*[M]);