Zum Inhalt

Element <while>

Zweck: Wiederholt Kindelemente unter einem Iterationslimit, solange eine Bedingung wahr ist.

Warum: Verwende dieses Element für eine begrenzte Schleife pro Datensatz, wenn sich die wiederholte Ausführung nicht direkt ausdrücken lässt.

Beispiel

1
<while condition="should_continue"/>

Entscheidungshilfe

Fachlicher Nutzen: Drückt begrenzte wiederholte Kindausführung aus, wenn die Stoppbedingung datenabhängig ist.

  • Verwenden, wenn

    • Wenn ein zeilenbezogener Workflow bis zu einer Bedingung oder Grenze wiederholt werden muss.
  • Anderen Ansatz wählen, wenn

    • Wenn feste Anzahl, Sammlung oder direkter Ausdruck die Wiederholung darstellen können.
  • Voraussetzungen

    • Gib eine terminierende Bedingung und eine sichere maximale Iterationszahl an.
  • Alternativen

    • Verwende generate für feste oder quellabgeleitete Anzahlen. (Siehe: <generate>)
    • Verwende list für begrenzte Sammlungen ohne Schleife. (Siehe: <list>)

Vollständige Beispiele

Eine datensatzlokale Operation mit expliziter Abbruchbedingung wiederholen

Verwende while nur für begrenzte Iterationslogik, die nicht als direkte Feldabhängigkeit ausdrückbar ist; echo dient dabei der Diagnose und nicht als Exporter.

bounded-loop/datamimic.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<setup>
    <generate name="loop_result" count="1" target="LogExporter">
        <key name="n" script="0"/>
        <while condition="3 > n">
            <echo>looping, n is {n}</echo>
            <key name="n" script="n + 1"/>
        </while>
        <key name="final_value" script="n"/>
    </generate>
</setup>

Regeln und ungültige Kombinationen

Keine zusätzlichen elementspezifischen Regeln. Pflichtattribute, Typen und unterstützte Werte stehen unten.

Erlaubte Elternelemente / Erlaubte Kindelemente

Erlaubte Elternelemente: else, else-if, generate, if, iterate, nestedKey, while

Erlaubte Kindelemente:

Jedes registrierte DSL-Element.

Attribute

Alle 2 Attribute anzeigen

condition

Condition to evaluate before each loop iteration.

erforderlich; string.

maxIterations

Maximum number of iterations before raising an error (default 10000).

optional; integer; Standardwert: null.