Listenfrage mit Schleife

Unter Verwendung derselben Listenfrage wie unter Listenfragen beschrieben, sollen nun Informationen zu den Einkommen der Personen eines Haushalts gesammelt werden. Dazu verwendet man eine verschachtelte Fast-Path-Schleife, wie sie im folgenden Beispiel beschrieben wird:

Abbildung 1. Codebeispiel für Fast-Path-Listenfrage mit Schleife
...
<loop loop-type="for-each" entity="Person"
  criteria="hasIncome==true" fast-path="true">
  <loop loop-type="while" loop-expression="hasMoreIncome"
    entity="Income">
    <question-page id="IncomePage" entity="Income"
      show-person-tabs="true">
      <title id="IncomePage.Title">
        <![CDATA[Income Details]]>
      </title>
      <cluster>
        <title id="IncomeDetails.Title">
          <![CDATA[Income Details]]>
        </title>
        <question id="type">
          <label id="Type.Label">
            <![CDATA[Type:]]>
          </label>
        </question>
        <question id="amount">
          <label id="Amount.Label">
            <![CDATA[Amount:]]>
          </label>
        </question>
        <question id="hasMoreIncome"
          control-question="true"
          control-question-type="IEG_BOOLEAN">
          <label id="ContinueQuestion.Label">
            <![CDATA[Does %1s have any more income?]]>
            <argument id="Person.firstName" />
          </label>
        </question>
      </cluster>
    </question-page>
  </loop>
</loop>

Beim ersten Vorkommen einer Listenfrage erfassen die Seiten, die auf die Schleife folgen, das Einkommen der ausgewählten Personen. Beim erneuten Besuch der Seite, die die Listenfrage enthält, kann Folgendes geschehen: