シンプル・プロパティー XMLStructure は、レコード・パーツのフィールドで表される XML 要素の可能性のある構造を指定します。このトピックでは、レコード・データを XML 文字列に転送したときの動作について説明する例を示します。ただし、EGL ランタイムにより XML 文字列が入力レコードに転送されるときは、この関連は逆の方向にも適用されます。
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>
この場合、XML 文字列に両方の種類の要素を含めることはできません。
レコードの XMLStructure 値が「choice」の場合は、例の中で疑問符 (?) で示されているように、各フィールドは NULL 可能である必要があります。さらに、フィールドの 1 つは値が NULL 以外である必要があり、フィールドの 1 つのみに対して NULL 以外の値が可能です。入力レコードのすべてのフィールドが NULL の場合、または複数のフィールドが NULL 以外の場合は、関数 XMLLib.convertToXML により RuntimeException が発行されます。
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>
従属レコード (ここでは、EmpNumber) には、データ型が STRING で、プロパティー @XMLAttribute を持つフィールドが含まれている場合があります (ゼロ個~多数)。 このプロパティーは、特定のフィールドが属性を表していることを示します。同じ従属レコードが、プロパティー @XMLAttribute が欠落しているフィールドを持つ場合があります。その非属性フィールドは (存在する場合)、関連する要素の値を保持します。 非属性フィールドには任意の名前を持つことができます。
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>
これらの値は、列挙 xmlStructureKind を構成します。