XMLValue identifies the potential structure of the XML elements that are represented by fields in a Record type.
eglx.xml.binding.annotation
Record XMLValue type Annotation { targets = [ ElementKind.libraryPart, ElementKind.programPart, ElementKind.handlerPart, ElementKind.recordPart, ElementKind.servicePart, ElementKind.interfacePart ] } kind XMLStructureKind = XMLStructureKind.simpleContent; end
The explanations that follow 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 {XMLValue = 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 nonnull, and the value of only one field can be nonnull. The function XMLLib.convertToXML issues a RuntimeException if all fields in the input record are null or if more than one field is nonnull.
Record Employee{XMLValue = XMLStructureKind.sequence} EmpNo EmpNumber; LastName STRING; end Record EmpNumber {XMLValue = XMLStructureKind.simpleContent} type STRING {@XMLAttribute{}}; value INT; // any field name is acceptable here end <Employee> <EmpNo type="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 XMLAttribute annotation. The annotation indicates that a given field represents an attribute. The same subordinate record might 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 can have any name.
Record Employee {XMLValue = XMLStructureKind.unordered} EmpNo INT; LastName STRING; end <Employee> <LastName>Jones</LastName> <EmpNo>20</EmpNo> </Employee> <Employee> <EmpNo>20</EmpNo> <LastName>Jones</LastName> </Employee>
Target | Issue |
---|---|
Java | No issues. |
JavaScript | No issues. |