<NOT/> Negation in dynamischen Formularen
Die Negation eines logischen Ausdrucks in einer Regel ist durch das Tag <NOT/> möglich:
<NOT>
Ausdruck 1
Ausdruck 2
...
Ausdruck n
</NOT>
<NOT/> kann im Bereich Wertermittlung der Regeldefinition (oder für die Definition einer Vorbedingung) eingesetzt werden und dient dazu, zum Wahrheitswert eines logischen Ausdrucks einen Ausdruck mit entgegengesetztem Wahrheitswert zu bilden, d.h. wenn:
- der Ausdruck a 'true' ist, dann ist die Verneinung 'false'
- der Ausdruck a 'false' ist, dann ist die Verneinung 'true'
Die Negation eines logischen Ausdrucks kann in einer Regel gezielt verwendet werden, um - abhängig von bestimmten Bedingungen - die Regelausführung zu verhindern (Vorbedingung ist NICHT erfüllt) oder eine Validierung zu erzwingen (Validierung wird ausgeführt, solange die Bedingung NICHT erfüllt ist) (vgl. Aufbau einer Regel).
<NOT/> ist besonders geeignet, wenn eine „unerwünschte“ Eigenschaft in einem Formular geprüft werden soll, beispielsweise EMPTY. Diese Eigenschaft kann verwendet werden, um das Speichern einer leeren Eingabekomponente im Formular zu unterbinden. Der Ausdruck <PROPERTY source="st_text" name="EMPTY"/> liefert für eine leere Eingabekomponente immer TRUE. Die Validierung wird in diesem Fall nicht ausgeführt und das Speichern der leeren Eingabekomponente nicht unterbunden:
<ON_SAVE>
<WITH>
<PROPERTY source="st_text" name="EMPTY"/>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="st_text" name="VALID"/>
<MESSAGE lang="*" text="The editor must not be empty!"/>
<MESSAGE lang="DE" text="Der Editor darf nicht leer sein!"/>
</VALIDATION>
</DO>
</ON_SAVE>
Wird die Bedingung innerhalb der Wertermittlung aber negiert, liefert die Regel das gewünschte Verhalten. Beim Versuch das Formular mit der leeren Eingabekomponente zu speichern, wird eine Fehlermeldung unterhalb der Eingabekomponente angezeigt und das Speichern unterbunden:
<ON_SAVE>
<WITH>
<NOT>
<PROPERTY source="st_text" name="EMPTY"/>
</NOT>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="st_text" name="VALID"/>
<MESSAGE lang="*" text="The editor must not be empty!"/>
<MESSAGE lang="DE" text="Der Editor darf nicht leer sein!"/>
</VALIDATION>
</DO>
</ON_SAVE>