Correlación entre una lista y un elemento de repetición

Observe el formato del mensaje de entrada XML siguiente:
   <MRM>
     <inner>abcde fghij 12345</inner>
   </MRM> 
donde el elemento inner es del tipo xsd:list y, por consiguiente, tiene tres valores de serie de caracteres asociados, en lugar de un solo valor.
Para copiar los tres valores en un mensaje de salida, donde cada valor está asociado a una instancia de elementos de repetición como se muestra aquí:
   <MRM>
     <str1>abcde</str1>
     <str1>fghij</str1>
     <str1>12345</str1>
   </MRM> 
es de esperar que la siguiente sintaxis 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;
Sin embargo, la sentencia:
	SET OutputRoot.MRM.str1[M] = InputBody.inner.*[M];
requiere una copia de árbol, del origen al destino. Dado que el elemento de destino aún no existe, la sentencia lo crea y se establecen el valor y el tipo desde el origen.
Por consiguiente, para crear el mensaje de salida con el formato necesario, dado un elemento de entrada que es de tipo xsd:list, utilice la Función FIELDVALUE para recuperar de forma explícita sólo el valor del elemento de origen:
	SET OutputRoot.MRM.str1[M] = FIELDVALUE(InputBody.inner.*[M]);
Tareas relacionadas
Desarrollo de ESQL
Acceder a elementos en el cuerpo del mensaje
Referencia relacionada
Sentencia SET
Función FIELDVALUE
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Última actualización : 2009-02-16 13:55:40

ak20820_