Wenn Sie auf Elemente innerhalb eines XML-Nachrichtenhauptteils verweisen oder diese festlegen, müssen Sie die richtigen Korrelationsnamen in ESQL-Feldverweisen verwenden, um diese zu adressieren. In der folgenden Tabelle sind die Korrelationsnamen aller gültigen Elemente aufgeführt. Die Abschnitte Zugriff auf Attribute in XML-Nachrichten, Zugriff auf XmlDecl in einer XML-Nachricht und Zugriff auf DocTypeDecl in einer XML-Nachricht enthalten Korrelationsnamen für die Attribute XmlDec und DocTypeDecl.Informationen zu Feldverweisen finden Sie unter ESQL-Feldreferenzen.
Syntaxelement | Korrelationsname |
---|---|
CDataSection | (XML.CDataSection) |
Comment | (XML.Comment) |
Content | (XML.Content) - (XML.pcdata) wird ebenfalls unterstützt |
Element | (XML.Element) - (XML.tag) wird ebenfalls unterstützt |
EntityReferenceEnd | (XML.EntityReferenceEnd) |
EntityReferenceStart | (XML.EntityReferenceStart) |
ProcessingInstruction | (XML.ProcessingInstruction) |
WhiteSpace | (XML.WhiteSpace) |
Wenn ein Typ in einem Pfadelement nicht vorhanden ist, spielt der Typ des Syntaxelements keine Rolle. D. h., das Pfadelement name entspricht jedem Syntaxelement mit dem Namen name, und zwar ungeachtet des Elementtyps. Ebenso wie ein Pfadelement einen Namen und keinen Typ angeben kann, kann es einen Typen und keinen Namen angeben. Dieser Typ des Pfadelements entspricht allen Syntaxelementen, die den angegebenen Typ haben, und zwar ungeachtet des Namens. Siehe hierzu folgendes Beispiel:
FIELDNAME(InputBody.(XML.Element)[1])
Bei diesem Beispiel wird der Name des ersten Elements im Hauptteil der Nachricht zurückgegeben. Das folgende Beispiel generischen XML-Codes zeigt, wann in den Pfaden Typen verwendet werden müssen:
<tag1 attr1='abc'> <attr1>123<attr1> </tag1>
Der Pfad InputBody.tag1.attr1 verweist auf das Attribut attr1, da Attribute in einer Syntaxbaumstruktur, die von einem XML-Parser generiert wurde, vor verschachtelten Elementen angezeigt werden. Zum Verweis auf das Element attr1 müssen Sie einen Pfad verwenden:
InputBody.tag1.(XML.Element)attr1
Es ist immer ratsam, in solchen Fällen Typen einzufügen, damit deutlich wird, auf welches Syntaxelement verwiesen wird.
Der ESQL-Code
SET OutputRoot.XML.Element1.(XML.Element)Attribute1 = '123';
ist im Wesentlichen eine Kurzform des folgenden vollständig qualifizierten Pfads:
SET OutputRoot.XML.(XML.Element)Element1.(XML.Element)Attribute1. (XML.Content) = '123';
Beachten Sie folgenden XML-Code:
<?xml version="1.0"?> <!DOCTYPE Order SYSTEM "Order.dtd"> <Order> <ItemNo>1</ItemNo> <Quantity>2</Quantity> </Order>
Der Pfad InputBody.Order verweist auf das Syntaxelement (XML.DocTypeDecl), da dieses vor dem XML-Hauptteil in der Syntaxbaumstruktur angezeigt wird und denselben Namen trägt. Wenn Sie auf das Element ItemNo verweisen möchten, müssen Sie den Pfad InputBody.(XML.Element)Order.ItemNo verwenden. Das folgende Beispiel veranschaulicht das folgende Konzept, wobei die folgende XML-Eingabenachricht verwendet wird:
<doc><i1>100</i1></doc>
112233 wird <i1> mit dem folgenden ESQL-Ausdruck zugeordnet:
SET OutputRoot.XML.(XML.Element)doc.I1=112233;