Mapeamento entre uma Lista e um Elemento de Repetição

Considere o formato da seguinte mensagem de entrada XML:
   <MRM>
     <inner>abcde fghij 12345</inner>
   </MRM>
em que o elemento interno é de tipo xsd:list, e, portanto, possui três valores de cadeia associados, em vez de um único valor.
Para copiar três valores para uma mensagem de saída, na qual cada valor está associado a uma instância de elementos de repetição, conforme mostrado aqui:
   <MRM>
     <str1>abcde</str1>
     <str1>fghij</str1>
     <str1>12345</str1>
   </MRM>
você pode esperar que a seguinte sintaxe ESQL funcione:
   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;
No entanto, a instrução:
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, a instrução cria-o e seu valor e tipo são configurados a partir da origem.
Portanto, para criar a mensagem de saída com o formato necessário, especificado um elemento de entrada que seja de tipo xsd:list, utilize a Função FIELDVALUE para recuperar explicitamente apenas o valor do elemento de origem:
SET OutputRoot.MRM.str1[M] = FIELDVALUE(InputBody.inner.*[M]);
Tarefas relacionadas
Desenvolvendo ESQL
Acessando Elementos no Corpo da Mensagem
Referências relacionadas
Instrução SET
Função FIELDVALUE
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Última atualização : 2009-02-13 16:12:49

ak20820_