Manipulando caminhos e tipos em uma mensagem XML

Ao referir-se a elementos ou ao defini-los em um corpo de mensagem XML, você deve utilizar os nomes corretos de correlação para endereçá-los em instruções ESQL. A tabela a seguir lista os nomes de correlação para todos os elementos válidos. Para 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.

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 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 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 para <i1>, você deve utilizar a seguinte expressão ESQL:

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

Conceitos relacionados
Fluxos de Mensagem
ESQL
Modelagem de Mensagens

Tarefas relacionadas
Projetando um Fluxo de Mensagens
Definindo o Conteúdo do Fluxo de Mensagens
Gerenciando Arquivos ESQL

Referências relacionadas
Nó Compute
Nó Database
Nó Filter
ESQL
Função FIELDNAME
Instrução SET