Statistify – Statistik- & Methodenberatung DE / EN

wissen / limesurvey · logik

Warum das Größer-Zeichen Ihre Bedingung zerlegt

# Felix Kretschmer · Stand: 21.08.2026 · Lesezeit ~2 min · ← alle Artikel

Sie bauen eine Filterführung: Die Nachfrage soll nur erscheinen, wenn jemand älter als 65 ist. Sie schreiben alter > 65. Beim nächsten Öffnen ist die Bedingung kaputt oder tut nichts.

Was passiert

Die Zeichen < und > sind in HTML die Klammern für Tags. Läuft Ihr Ausdruck durch einen HTML-Editor oder durch die XSS-Filterung, kann alles zwischen einem < und dem nächsten > als vermeintliches Tag interpretiert – und dabei verändert oder entfernt – werden. Ihr Vergleich überlebt das nicht immer.

Die Lösung ist offiziell vorgesehen

Das ExpressionScript kennt zu jedem Vergleichsoperator eine Textentsprechung. Sie sind gleichwertig und im Manual dokumentiert:

ZeichenTextformBedeutung
<ltkleiner als
<=lekleiner oder gleich
>gtgrößer als
>=gegrößer oder gleich
==eqgleich
!=neungleich
&&andlogisches UND
||orlogisches ODER

Aus alter > 65 wird also alter gt 65 – gleiche Bedeutung, aber ohne Zeichen, die HTML in Versuchung führen. Die Textformen sind keine Notlösung, sondern gleichwertiger Teil der Syntax.

Betroffen sind genau drei Zeichen, die der Editor in HTML-Entitäten verwandelt: & wird zu &amp;, < zu &lt;, > zu &gt;. Selten trifft das auch normalen Text. Wechseln Sie über die Schaltfläche Quellcode die Ansicht im Editor, um mögliche HTML-Fehler zu finden.

Drei weitere Stolpersteine bei Bedingungen

  • „=“ und „==“ nicht verwechseln. In ExpressionScript ist = eine Zuweisung, == ein Vergleich. Schreiben Sie versehentlich alter=65 statt alter==65, wird die Variable alter auf 65 gesetzt – und die Bedingung ist danach immer wahr, ohne jede Fehlermeldung. Das ist der gefährlichste Fehler in diesem Artikel, weil er nicht auffällt: Die Bedingung tut scheinbar etwas, nur eben nicht das, was Sie wollten.
  • Zahl oder Text? Vergleiche funktionieren nur dann wie erwartet, wenn beide Seiten denselben Typ haben. Ein Antwortcode "05" ist eine Zeichenkette, keine Zahl. Wer numerisch vergleichen will, sollte die Codes auch numerisch anlegen.
  • Im Zweifel den Bedingungsdesigner rechnen lassen. In neueren Versionen erzeugt er die Relevanzgleichung, die anschließend direkt im Feld Relevanzgleichung weiterbearbeitet werden kann. Wer sich bei einer verschachtelten Bedingung unsicher ist, klickt sie zusammen und schaut sich das Ergebnis an – und prüft dabei gleich, ob der Designer spitze Klammern verwendet hat.

Angewöhnen lohnt sich: In Bedingungen grundsätzlich gt, lt, ge, le und auch eq statt == schreiben. Es liest sich nach kurzer Zeit genauso flüssig, nimmt eine ganze Fehlerquelle aus dem Projekt – und wer eq tippt, kann gar nicht erst aus Versehen nur ein = statt zwei setzen.

Ausführlich im offiziellen Manual: ExpressionScript – HTML-Editor-Problem.

← alle Artikel · Eine Frage dazu? Schreiben Sie mir.