Ao fazer referência a ou configurar elementos em um corpo de mensagem XML, você deve utilizar os nomes de correlação corretos, em referências de campo ESQL, para abordá-los. A tabela a seguir lista os nomes de correlação para todos os elementos válidos. Para obter os nomes de correlação para os atributos XmlDec e DocTypeDecl, consulte Acessando Atributos em Mensagens XML, Acessando o XmlDecl em uma Mensagem XML e Acessando o DocTypeDecl em uma Mensagem XML. Para obter informações sobre as referências aos campos, consulte Referências de Campos ESQL.
Elemento de Sintaxe | Nome de correlação |
---|---|
CDataSection | (XML.CDataSection) |
Comment | (XML.Comment) |
Content | (XML.Content) - (XML.pcdata) também é suportado |
Element | (XML.Element) - (XML.tag) também é suportado |
EntityReferenceEnd | (XML.EntityReferenceEnd) |
EntityReferenceStart | (XML.EntityReferenceStart) |
ProcessingInstruction | (XML.ProcessingInstruction) |
WhiteSpace | (XML.WhiteSpace) |
Quando um tipo não está presente em um elemento de caminho, o tipo do elemento de sintaxe não é importante. Ou seja, um elemento de caminho de name corresponde qualquer elemento de sintaxe ao nome de name, independentemente do tipo de elemento.Da mesma forma que um elemento de caminho pode especificar um nome e não um tipo, um elemento de caminho pode especificar um tipo e não um nome. Este tipo de elemento de caminho corresponde qualquer elemento de sintaxe que tenha o tipo especificado, independentemente do nome. A seguir está um exemplo disso:
FIELDNAME(InputBody.(XML.Element)[1])
Este exemplo retorna o nome do primeiro elemento no corpo da mensagem. O exemplo de XML genérico a seguir, mostra quando é necessário utilizar tipos em caminhos:
<tag1 attr1='abc'> <attr1>123<attr1> </tag1>
O caminho InputBody.tag1.attr1 refere-se ao atributo chamado attr1, porque os atributos aparecem antes dos elementos aninhados em uma árvore de sintaxe gerada por um analisador XML. Para referir-se ao elemento chamado attr1 é necessário utilizar um caminho:
InputBody.tag1.(XML.Element)attr1
É sempre recomendável incluir tipos nestes casos para que fique explícito qual elemento de sintaxe está sendo referido.
O seguinte ESQL:
SET OutputRoot.XML.Element1.(XML.Element)Attribute1 = '123';
é essencialmente prático para o caminho qualificado a seguir:
SET OutputRoot.XML.(XML.Element)Element1.(XML.Element)Attribute1. (XML.Content) = '123';
Considere o seguinte XML:
<?xml version="1.0"?> <!DOCTYPE Order SYSTEM "Order.dtd"> <Order> <ItemNo>1</ItemNo> <Quantity>2</Quantity> </Order>
O caminho InputBody.Order refere-se ao elemento de sintaxe (XML.DocTypeDecl), porque ele aparece antes do Corpo XML na árvore de sintaxe e possui o mesmo nome. Para referir-se ao elemento ItemNo é necessário utilizar um caminho InputBody.(XML.Element)Order.ItemNo. O exemplo a seguir demonstra a mesma idéia, utilizando a seguinte mensagem XML de entrada:
<doc><i1>100</i1></doc>
Para designar 112233 a <i1>, utilize a seguinte expressão ESQL:
SET OutputRoot.XML.(XML.Element)doc.I1=112233;