if-Anweisungen

Mithilfe von if-Anweisungen lässt sich steuern, ob ein collector Werte ausgibt oder nicht. Die Syntax sieht folgendermassen aus:

<combine name="ausgabe" value="${a}+${b}">
  <if>
    <data source="feldA">
      <equals string="wertA"/>
    </data>
  </if>
  <data source="feldA" name="a"/>
  <data source="feldB" name="b"/>
</combine>

Wenn der Wert im feldA tatsächlich wertA ist, dann wird das Ergebnis von ${a}+${b} ausgegeben, ansonsten nicht.

Verwendung von Quantoren

In der if-Anweisung lässt sich jede Filter-Funktion sowie die collectors all, any und none verwenden. Ein Beispiel mit all:

<combine name="ausgabe" value="${a}+${b}">
  <if>
    <all>
      <data source="feldA"/>
      <data source="feldB"/>
    </all>
  </if>
  <data source="feldA" name="a"/>
  <data source="feldB" name="b"/>
</combine>

Wenn beide Literale einen Wert liefern, wird das Ergebnis von ${a}+${b} weitergeleitet.

Komplexere Bedingungen

Zwar kann nur eine if-Anweisung innerhalb eines collector vorkommen und pro if-Anweisung nur ein all, any oder none als direktes Kindelement, doch ist es möglich, Quantoren ineinander zu verschachteln, um komplexere Bedingungen zu definieren. Im folgenden Beispiel wird ${a}+${b} nur weitergeleitet, wenn im Datensatz kein Feld feldC vorhanden ist:

<combine name="ausgabe" value="${a}+${b}">
  <if>
    <all>
      <data source="feldA"/>
      <data source="feldB"/>
      <none>
        <data source="feldC"/>
      </none>
    </all>
  </if>
  <data source="feldA" name="a"/>
  <data source="feldB" name="b"/>
</combine>