Verbundene Daten erfassen

Es wurde bereits die Möglichkeit erwähnt, in IEG Beziehungen zu erfassen. Das Kombinieren von Beziehungsentität und Beziehungsseite bietet einen bequemen Mechanismus zur Erfassung der Beziehungen zwischen den Personen eines Haushalts. Die Beziehung zwischen den Personen eines Haushalts ist nur eine Form der Beziehung. Es werden von IEG auch andere Typen von Beziehungen unterstützt. IEG und der DS ermöglichen eine Verschachtelung von Entitäten durch Erstellen einer Beziehung zwischen übergeordneter und untergeordneter Entität. Beispiel: Es müssen Informationen zu den Einkommen der Personen eines Haushalts erfasst werden. Die Entität "Einkommen" wird definiert wie jede andere Entität auch. Sie wird in der Personenentität verschachtelt, indem man in einer Sequenz auf sie verweist, wie das folgende Fragment aus einem Beispielcode zeigt:

Abbildung 1. Schema einer Beziehung zwischen übergeordneter und untergeordneter Entität
<xsd:element name="Person">
  <xsd:complexType>
    <xsd:sequence minOccurs="0">
      <xsd:element ref="Income" minOccurs="0"
        maxOccurs="unbounded" />
    </xsd:sequence>
    ...
    <xsd:attribute name="hasIncome" type="IEG_BOOLEAN"
      default="false"/>
  </xsd:complexType>
  ...
</xsd:element>
<xsd:element name="Income">
  <xsd:complexType>
    <xsd:attribute name="type" type="IEG_STRING" />
    <xsd:attribute name="amount" type="IEG_MONEY" />
  </xsd:complexType>
</xsd:element>

Anschließend können durch Anwendung von Schleifen für jede Person, die über ein Einkommen verfügt, Informationen zum Einkommen der Personen eines Haushalts erfasst werden. Das Schleifenkriterium verwendet die boolesche Frage "hasIncome", die beim Erfassen der Einzeldaten für jede Person abgefragt wird. Eine Seite innerhalb der Schleife kann der Entität "Einkommen" zugeordnet werden, wodurch die verschachtelte Beziehung entsteht, wie folgendes Beispiel zeigt:

Abbildung 2. Verschachtelte Entitäten erstellen
<loop loop-type="for-each" entity="Person"
        criteria="hasIncome==true">
  <loop loop-type="while" loop-expression="hasMoreIncome" 
          entity="Income">
    <question-page id="IncomePage" entity="Income"
    ...