XMLStructure
シンプル・プロパティー XMLStructure は、レコード・パーツのフィールドで表される XML 要素の可能性のある構造を指定します。このトピックでは、レコード・データを XML 文字列に転送したときの動作について説明する例を示します。ただし、EGL ランタイムにより XML 文字列が入力レコードに転送されるときは、この関連は逆の方向にも適用されます。
XMLStructure のサポートされる値は以下のとおりです。
- sequence (デフォルト)
- 出力時、XML 文字列には、レコード・パーツ内のすべてのフィールドが、レコード・フィールドがリストされている順序で含まれる必要があります。以下のレコード・パーツと XML 文字列が関連しています。
Record Employee {XMLStructure = XMLStructureKind.sequence} EmpNo INT; LastName STRING; end <Employee> <EmpNo>10</EmpNo> <LastName>Smith</LastName> </Employee> - choice
- 出力時、XML 文字列には、レコード・フィールドに対応する従属エレメントが 1 つのみ含まれている必要があります。例えば、以下のレコード・パーツを検討します。
Record Employee{XMLStructure = XMLStructureKind.choice} ImmigrationStatus STRING?; YearsOfCitizenship INT?; end以下の XML 文字列のいずれかが有効です。<Employee> <ImmigrationStatus>A1</ImmigrationStatus> </Employee><Employee> <YearsOfCitizenship>20</YearsOfCitizenship> </Employee>この場合、XML 文字列に両方の種類の要素を含めることはできません。
レコードの XMLStructure 値が「choice」の場合は、例の中で疑問符 (?) で示されているように、各フィールドは NULL 可能である必要があります。さらに、フィールドの 1 つは値が NULL 以外である必要があり、フィールドの 1 つのみに対して NULL 以外の値が可能です。入力レコードのすべてのフィールドが NULL の場合、または複数のフィールドが NULL 以外の場合は、関数 XMLLib.convertToXML により RuntimeException が発行されます。
- simpleContent
- 出力時には、XML 文字列に転送されたシンプル・コンテンツは、上位レコードのフィールドの値と、一連の属性です。
例えば、以下の太字体のレコード・パーツと XML コンテンツが関連しています。
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 が欠落しているフィールドを持つ場合があります。その非属性フィールドは (存在する場合)、関連する要素の値を保持します。 非属性フィールドには任意の名前を持つことができます。
- unordered
- XML 文字列には、指定した要素が任意の順序で含まれます。次のレコード・パーツは、後続の XML 文字列のいずれかを記述します。
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 を構成します。