La specifica dello schema XML consente ad un elemento o attributo di contenere un elenco di valori in base ad un tipo semplice con i valori singoli separati da spazi.
<message1> <listE1 listAttr="one two three"> four five six</listE1> </message1>
Nella struttura ad albero del messaggio risultanti, un tipo xsd::list è rappresentato come un nodo del nome con un child di valore anonimo per ciascun elemento di elenco. Ciò consente di gestire gli elenchi ripetuti senza perdita di informazioni.
MRM listEl (Name) listAttr (Name) "one" (Value) "two" (Value) "three" (Value) "four" (Value) "five" (Value) "six" (Value)
SET OutputRoot.MRM.listEl.listAttr.*[3] = ...modifica la terza voce di listAttr.
<MRM> <inner>abcde fghij 12345</inner> </MRM>in cui l'elemento interno è di tipo xsd::list, per cui ad esso sono associati tre valori stringa e non un valore singolo.
<MRM> <str1>abcde</str1> <str1>fghij</str1> <str1>12345</str1> </MRM>è ragionevole supporre che la seguente sintassi ESQL funzioni correttamente:
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];richiede una copia della struttura ad albero dall'origine alla destinazione. Poiché l'elemento di destinazione non esiste ancora, viene creato ed i relativi valore e tipo vengono impostati dall'origine.
Ciò è congruente con il funzionamento di ESQL in altri punti, ma nel caso di elementi che hanno valori di tipo list, tale codice può determinare errori di convalida.
SET OutputRoot.MRM.str1[M] = FIELDVALUE(InputBody.inner.*[M]);