Die For-Schleife

Die For-Schleife wird verwendet, um eine angegebene Anzahl von Iterationen der Schleife durchzuführen. Die Anzahl der Iterationen wird durch den Wert des Attributs "loop-expression" bestimmt, das ungefähr wie folgt aussieht:

Abbildung 1. Vereinfachte For-Schleife
<loop loop-type="for" loop-expression="numPeople">
  <question-page id="PersonDetailsPage" entity="Person">
    ...        
  </question-page>
</loop>

In anderen Worten: Wie oft "PersonDetailsPage" angezeigt wird, hängt vom Wert der Antwort auf die Kontrollfrage "numPeople" ab. Der erste Durchlauf dieser Schleife ist kein Problem. Es ist jedoch wichtig zu berücksichtigen, was passiert, wenn die Schleife beim Prüfen oder Ändern von Antworten ein zweites oder drittes Mal durchlaufen wird. Beispiel: Während der vorherigen Iterationen wurden eine oder mehrere Personen erfasst, daher ist es sinnvoll, eine Schleife zu durchlaufen anstatt weiterhin neue Personen hinzuzufügen.

Tatsächlich ist die For-Schleife eine For-Each-Schleife, sobald einige Daten in die Entität eingegeben wurden, gegen die die Einträge aufgenommen werden. Daher ist es wichtig, dass die For-Schleife dieselben Informationen erhält wie die For-Each-Schleife: eine Entität, die iteriert wird, und ein optionales Kriterium. Wenn die Entität in der Schleife angegeben wurde, muss sie nicht mehr für die Seiten in der Schleife angegeben werden, wenn es sich um identische Entitäten handelt. Die Schleife könnte wie folgt aussehen:

Abbildung 2. For-Schleife mit Entität und Kriterien
<loop loop-type="for" loop-expression="numPeople"
        entity="Person" criteria="isPrimary==false">
  <question-page id="PersonDetailsPage">
    ...        
  </question-page>
</loop>

Bei der Verwendung von For-Schleifen wird empfohlen, dass der Schleifenausdruck ein einfacher Ausdruck sein sollte, der nur auf die ID der Frage verweist, die vor der Schleife abgefragt wird, um die Anzahl der zu erstellenden Datensätze zu bestimmen. Diese Frage sollte eine Kontrollfrage mit dem Typ "Ganzzahl" sein.

Diese Kontrollfrage wird nicht automatisch aktualisiert, daher stimmt sie mit der tatsächlichen Anzahl von Entitäten nicht überein, wenn über die Zusammenfassungsseite Entitäten hinzugefügt oder gelöscht wurden. Aus diesem Grund sollte dieser Wert ausschließlich für den Schleifenausdruck verwendet werden.

Sobald die Schleife gestartet wurde, ist es nicht mehr möglich, den Wert dieser Kontrollfrage zu ändern. Der Wert ist standardmäßig schreibgeschützt, es sei denn, das Attribut "hide-for-control-question" wurde im Element "ieg-script" auf "true" festgelegt. In diesem Fall werden die Beschriftung und der Wert der Kontrollfrage ausgeblendet. Der Scriptentwickler muss dann sicherstellen, dass die Kontrollfrage nicht die einzige Frage auf der Seite ist, auf der sie definiert wurde, da dies dazu führt, dass eine leere Seite angezeigt wird.

In der Praxis finden For-Schleifen nur eingeschränkt Anwendung. Deshalb werden im Allgemeinen While-Schleifen zum Erfassen von Informationen empfohlen, da deren Verwendung für Benutzer intuitiver ist.