Cuando haga referencia a elementos de un cuerpo de mensaje XML o establezca dichos elementos, deberá utilizar los nombres de correlación correctos, en las referencias de campo ESQL, para direccionarlos. La tabla siguiente lista los nombres de correlación para todos los elementos válidos. Para conocer los nombres de correlación para los atributos XmlDec y DocTypeDecl, consulte los apartado Acceder a atributos en mensajes XML, Acceder a XmlDecl en un mensaje XML y Acceder a DocTypeDecl en un mensaje XML. Para obtener información sobre las referencias de campos, consulte Referencias de campo ESQL.
Elemento de sintaxis | Nombre de correlación |
---|---|
CDataSection | (XML.CDataSection) |
Comment | (XML.Comment) |
Content | (XML.Content) - también se soporta (XML.pcdata) |
Element | (XML.Element) - también se soporta (XML.tag) |
EntityReferenceEnd | (XML.EntityReferenceEnd) |
EntityReferenceStart | (XML.EntityReferenceStart) |
ProcessingInstruction | (XML.ProcessingInstruction) |
WhiteSpace | (XML.WhiteSpace) |
Cuando no existe un tipo en un elemento de vía de acceso, el tipo del elemento de sintaxis no es importante. Es decir, un elemento de vía de acceso de name coincide con cualquier elemento de sintaxis con el nombre de name, independientemente del tipo de elemento. Del mismo modo que un elemento de vía de acceso puede especificar un nombre y no un tipo, un elemento de vía de acceso puede especificar un tipo y no un nombre. Este tipo de elemento de vía de acceso coincide con cualquier elemento de sintaxis que tenga el tipo especificado, independientemente del nombre. A continuación se muestra 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 las vías de acceso:
<tag1 attr1='abc'> <attr1>123<attr1> </tag1>
La vía de acceso InputBody.tag1.attr1 hace referencia al atributo denominado attr1, porque los atributos aparecen antes que los elementos anidados en un árbol de sintaxis generado por un analizador XML. Para hacer referencia al elemento denominado attr1, debe utilizar una vía de acceso:
InputBody.tag1.(XML.Element)attr1
Siempre es aconsejable incluir tipos en estos casos para ser explícito sobre el elemento de sintaxis al que se está haciendo referencia.
El ESQL siguiente:
SET OutputRoot.XML.Element1.(XML.Element)Attribute1 = '123';
es esencialmente escaso para la siguiente vía de acceso totalmente calificada:
SET OutputRoot.XML.(XML.Element)Element1.(XML.Element)Attribute1. (XML.Content) = '123';
Examine el XML siguiente:
<?xml version="1.0"?> <!DOCTYPE Order SYSTEM "Order.dtd"> <Order> <ItemNo>1</ItemNo> <Quantity>2</Quantity> </Order>
La vía de acceso InputBody.Order hace referencia al elemento de sintaxis (XML.DocTypeDecl), porque éste aparece antes que el Cuerpo XML en el árbol de sintaxis y tiene el mismo nombre. Para hacer referencia al elemento ItemNo necesita utilizar una vía de acceso InputBody.(XML.Element)Order.ItemNo. El ejemplo siguiente muestra la misma idea, utilizando el mensaje de entrada XML siguiente:
<doc><i1>100</i1></doc>
Para asignar 112233 a <i1>, debe utilizar la siguiente expresión ESQL:
SET OutputRoot.XML.(XML.Element)doc.I1=112233;