A especificação do Esquema XML permite que um elemento ou atributo contenha uma lista de valores baseados em um tipo simples com os valores individuais separados por um espaço em branco.
<message1> <listE1 listAttr="one two three"> four five six</listE1> </message1>
Na árvore de mensagens resultante, um tipo xsd::list é representado como um nome do nó com um filho de valor anônimo para cada item da lista. Isto permite que listas de repetição sejam manipuladas sem perda de informações.
MRM listEl (Name) listAttr (Name) "one" (Value) "two" (Value) "three" (Value) "four" (Value) "five" (Value) "six" (Value)
SET OutputRoot.MRM.listEl.listAttr.*[3] = ...modifica o terceiro item de listAttr.
<MRM> <inner>abcde fghij 12345</inner> </MRM>em que o elemento interno é de tipo xsd::list, portanto, ele possui três valores de cadeia associados, em vez de um valor único.
<MRM> <str1>abcde</str1> <str1>fghij</str1> <str1>12345</str1> </MRM>será aceitável assumir que a seguinte sintaxe ESQL funciona:
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];solicita uma cópia da árvore da origem para o destino. Como o elemento de destino ainda não existe, ele será criado e seu valor e tipo serão configurados a partir da origem.
Isto é consistente com o comportamento do ESQL em outro lugar mas, no caso de elementos que possuem valores de tipo list, este código pode produzir erros de validação falsos.
SET OutputRoot.MRM.str1[M] = FIELDVALUE(InputBody.inner.*[M]);