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 を構成します。


フィードバック