The simple property XMLStructure identifies the potential structure of the XML elements that are represented by fields in a Record part. In this topic, we show examples that describe what happens when you transfer record data to an XML string. However, the relationships also apply in the opposite direction, when the EGL Runtime validates the transfer of an XML string to an input record.
Record Employee {XMLStructure = XMLStructureKind.sequence}
EmpNo INT;
LastName STRING;
end
<Employee>
<EmpNo>10</EmpNo>
<LastName>Smith</LastName>
</Employee>
Record Employee{XMLStructure = XMLStructureKind.choice}
ImmigrationStatus STRING?;
YearsOfCitizenship INT?;
end
<Employee>
<ImmigrationStatus>A1</ImmigrationStatus>
</Employee>
<Employee>
<YearsOfCitizenship>20</YearsOfCitizenship>
</Employee>
In this case, the XML string cannot include both kinds of elements.
If a record has the XMLStructure value "choice", each field must be nullable, as is indicated by the question marks in our example. Furthermore, the value of one field must be non-null, and the value of only one field can be non-null. The function XMLLib.convertToXML issues a RuntimeException if all fields in the input record are null or if more than one field is non-null.
Record Employee{XMLStructure = XMLStructureKind.sequence}
EmpNo EmpNumber;
LastName STRING;
end
Record EmpNumber {XMLStructure = XMLStructureKind.simpleContent}
department STRING {@XMLAttribute{}};
value INT; // any field name is acceptable here
end
<Employee>
<EmpNo department="Sales">10</EmpNo>
<LastName>Smith</LastName>
</Employee>
The subordinate record (here, EmpNumber) may include zero to many fields that are of type STRING and that have the property @XMLAttribute. The property indicates that a given field represents an attribute. The same subordinate record may have a field that lacks the property @XMLAttribute; and that non-attribute field, if any, holds the value of the related element. The non-attribute field may have any name.
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>
Those values constitute the enumeration xmlStructureKind.