Manipulación de las vías de acceso y los tipos en un mensaje XML

Cuando haga referencia o establezca elementos en un cuerpo de mensaje XML, debe utilizar los nombres de correlación correctos para direccionarlos en sentencias ESQL. La tabla siguiente lista los nombres de correlación de todos los elementos válidos. Para los nombres de correlación de los atributos XmlDec y DocTypeDecl, consulte Acceso a los atributos de los mensajes XML, Acceso a XmlDecl en un mensaje XML y Acceso a DocTypeDecl en un mensaje XML.

Elemento de sintaxis Nombre de la correlación
CDataSection (XML.CDataSection)
Comment (XML.Comment)
Content (XML.Content) - (XML.pcdata) también está soportado
Element (XML.Element) - (XML.tag) también está soportado
EntityReferenceEnd (XML.EntityReferenceEnd)
EntityReferenceStart (XML.EntityReferenceStart)
ProcessingInstruction (XML.ProcessingInstruction)
WhiteSpace (XML.WhiteSpace)

Cuando no hay un elemento type en un elemento path, el tipo del elemento de sintaxis no es importante. Esto es, un elemento path de name coincide con cualquier elemento de sintaxis que tenga el nombre name, independientemente del tipo de elemento. Del mismo modo que un elemento path puede especificar un nombre y no un tipo, un elemento path puede especificar un tipo y no un nombre. Este tipo de elemento path coincide con cualquier elemento de sintaxis que tenga el tipo especificado, independientemente del nombre. El siguiente es un ejemplo de esto:

 FIELDNAME(InputBody.(XML.Element)[1])

Este ejemplo devuelve el nombre del primer elemento en el cuerpo del mensaje. El ejemplo siguiente de XML genérico muestra cuándo es necesario utilizar tipos en los elementos path:

<tag1 attr1='abc'>
  <attr1>123<attr1>
</tag1>

El elemento path InputBody.tag1.attr1 hace referencia al atributo denominado attr1, porque los atributos aparecen antes de los elementos anidados en un árbol de sintaxis generado por un analizador XML. Para hacer referencia al elemento attr1, debe utilizar un elemento path:

InputBody.tag1.(XML.Element)attr1

En estos casos, se recomienda incluir siempre tipos para que resulte explícito el elemento de sintaxis al que se hace referencia.

El ESQL siguiente:

SET OutputRoot.XML.Element1.(XML.Element)Attribute1 = '123';

es esencialmente la vía de acceso abreviada de la vía de acceso completa siguiente :

SET OutputRoot.XML.(XML.Element)Element1.(XML.Element)Attribute1.
 (XML.Content) = '123';

Considere el XML siguiente:

 <?xml version="1.0"?>
<!DOCTYPE Order SYSTEM "Order.dtd">
<Order>
   <ItemNo>1</ItemNo>
   <Quantity>2</Quantity>
</Order>

El elemento path InputBody.Order hace referencia al elemento de sintaxis (XML.DocTypeDecl), porque aparece antes del cuerpo XML del árbol de sintaxis y tiene el mismo nombre. Para hacer referencia al elemento ItemNo tiene que utilizar un elemento path InputBody.(XML.Element)Order.ItemNo. El ejemplo siguiente muestra la misma idea, utilizando el mensaje de entrada XML:

<doc><i1>100</i1></doc>

Para asignar 112233 a <i1>, debe utilizar la expresión ESQL:

SET OutputRoot.XML.(XML.Element)doc.I1=112233;

Conceptos relacionados
Flujos de mensajes
ESQL
Diseño de mensajes

Tareas relacionadas
Diseño de un flujo de mensajes
Definición del contenido del flujo de mensajes
Gestión de archivos ESQL

Referencia relacionada
Nodo Compute
Nodo Database
Nodo Filter
ESQL
Función FIELDNAME
Sentencia SET