Wenn Sie auf Elemente innerhalb eines XML-Nachrichtenhauptteils verweisen oder diese festlegen, müssen Sie in ESQL-Feldverweisen die richtigen Feldtypkonstanten verwenden, um diese zu adressieren.
In der folgenden Tabelle sind die Feldtypkonstanten aller gültigen Elemente aufgeführt.
Syntaxelement | Feldtypkonstante |
---|---|
CDataSection | (XML.CDataSection) |
Comment | (XML.Comment) |
Content | (XML.Content) |
Element | (XML.Element) |
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. Betrachten Sie das folgende 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
Sie sollten in solchen Fällen stets Typen einfü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, verwenden Sie den Pfad InputBody.(XML.Element)Order.ItemNo. Sehen Sie sich beispielsweise folgende XML-Eingabenachricht an:
<doc><i1>100</i1></doc>
112233 wird <i1> mit dem folgenden ESQL-Ausdruck zugeordnet:
SET OutputRoot.XML.(XML.Element)doc.I1=112233;