XMLStructure

Die einfache Eigenschaft 'XMLStructure' gibt die potenzielle Struktur der XML-Elemente an, die durch Felder in einem Datensatzabschnitt (Record) dargestellt werden. Dieses Thema enthält Beispiele, die die Auswirkungen veranschaulichen, wenn Sie Datensatzdaten an eine XML-Zeichenfolge übertragen. Die Beziehungen gelten jedoch auch in umgekehrter Richtung, wenn die EGL-Laufzeit die Übertragung einer XML-Zeichenfolge an einen Eingabedatensatz auswertet.

Folgende Werte werden für 'XMLStructure' unterstützt:
sequence (Standardwert)
Bei Ausgabe muss die XML-Zeichenfolge sämtliche Felder im Datensatzabschnitt in der Reihenfolge einschließen, in der die Datensatzfelder aufgelistet sind. Der folgende Datensatzabschnitt und die folgende XML-Zeichenfolge gehören zusammen:
Record Employee {XMLStructure = XMLStructureKind.sequence}
   EmpNo INT;
   LastName STRING;
end

<Employee>
   <EmpNo>10</EmpNo>
   <LastName>Smith</LastName> 
</Employee>
choice
Bei Ausgabe darf die XML-Zeichenfolge nur ein einziges untergeordnetes Element enthalten, das einem Datensatzfeld entspricht. Dieses eine untergeordnete Element ist obligatorisch. Betrachten Sie beispielsweise den folgenden Datensatzabschnitt:
Record Employee{XMLStructure = XMLStructureKind.choice}
   ImmigrationStatus STRING?; 
   YearsOfCitizenship INT?;
end
Die beiden folgenden XML-Zeichenfolgen sind jeweils gültig:
<Employee>
   <ImmigrationStatus>A1</ImmigrationStatus>
</Employee>
<Employee>
   <YearsOfCitizenship>20</YearsOfCitizenship>
</Employee>

In diesem Fall darf die XML-Zeichenfolge nicht beide Elementtypen enthalten.

Wenn ein Datensatz den XMLStructure-Wert 'choice' aufweist, muss jedes Feld nullfähig sein, was im vorliegenden Beispiel durch die Fragezeichen angezeigt wird. Darüber hinaus muss der Wert eines Felds ungleich null sein. Gleichzeitig darf jedoch auch nur der Wert eines einzigen Felds ungleich null sein. Die Funktion 'XMLLib.convertToXML' gibt eine Laufzeitausnahmebedingung (RuntimeException) aus, wenn alle Felder im Eingabedatensatz null sind oder wenn mehr als ein Feld ungleich null ist.

simpleContent
Bei Ausgabe ist der einfache Inhalt, der an eine XML-Zeichenfolge übertragen wird, der Wert eines Felds in einem übergeordneten Datensatz, zusammen mit einer Gruppe von Attributen. Beispiel: Der folgende Datensatzabschnitt und der folgende XML-Inhalt in Fettdruck gehören zusammen:
Record Employee{XMLStructure = XMLStructureKind.sequence}
   EmpNo EmpNumber;
   LastName STRING;
end

Record EmpNumber {XMLStructure = XMLStructureKind.simpleContent}
  	department STRING {@XMLAttribute{}};
  	value INT; // ein beliebiger Feldname ist hier zulässig
end
<Employee>
   <EmpNo department="Sales">10</EmpNo>
   <LastName>Smith</LastName> 
</Employee>

Der untergeordnete Datensatz (hier EmpNumber) darf null bis viele Felder einschließen, die den Typ STRING und die Eigenschaft '@XMLAttribute' aufweisen. Die Eigenschaft gibt an, dass ein entsprechendes Feld ein Attribut darstellt. Derselbe untergeordnete Datensatz darf ein Feld ohne die Eigenschaft '@XMLAttribute' enthalten. Dieses Feld ohne Attribute, sofern vorhanden, enthält den Wert des zugehörigen Elements. Das Feld ohne Attribute kann einen beliebigen Namen haben.

unordered
Die XML-Zeichenfolge schließt die angegebenen Elemente in beliebiger Reihenfolge ein. Der folgende Datensatzabschnitt beschreibt beide der nachfolgenden XML-Zeichenfolgen:
Record Employee {XMLStructure = XMLStructureKind.unordered}
   EmpNo INT;
   LastName STRING;
end

<Employee>
   <LastName>Jones</LastName> 
   <EmpNo>20</EmpNo>
</Employee>

<Employee>
   <EmpNo>20</EmpNo>
   <LastName>Jones</LastName> 
</Employee>

Diese Werte stellen die Aufzählung 'xmlStructureKind' dar.


Feedback