Quando consultar ou configurar elementos em um corpo da mensagem XML, é necessário utilizar as constantes de tipo de campo corretas, em referências de campo ESQL para tratá-los.
A tabela a seguir lista as constantes de tipo de campo para todos os elementos válidos.
Elemento de Sintaxe | constante do tipo de campo |
---|---|
CDataSection | (XML.CDataSection) |
Comment | (XML.Comment) |
Content | (XML.Content) |
Element | (XML.Element) |
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. Considere o seguinte exemplo:
FIELDNAME(InputBody.(XML.Element)[1])
Este exemplo retorna o nome do primeiro elemento no corpo da mensagem. O exemplo a seguir de XML genérico mostra quando você deve 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 inclua tipos nesses casos para ser explícito sobre a qual elemento de sintaxe você está se referindo.
O seguinte ESQL:
SET OutputRoot.XML.Element1.(XML.Element)Attribute1 = '123';
é essencialmente prático para o caminho completo 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 se referir ao elemento ItemNo, utilize um caminho InputBody.(XML.Element)Order.ItemNo. Por exemplo, considere a seguinte mensagem de entrada XML:
<doc><i1>100</i1></doc>
Para designar 112233 a <i1>, utilize a seguinte expressão ESQL:
SET OutputRoot.XML.(XML.Element)doc.I1=112233;