Containerinhalt validieren

Diese Aktion liest einen Datensatz aus einem Container und validiert ihn anhand von Kriterien.

Funktionen:

Parameter

idfield der Request-Parameter, der die ID des Datensatzes enthält
list die Liste, aus welcher der Datensatz entnommen wird (Container-ID oder Containername)
config die Validierungsregeln
alternativ auch Dateiname, wo die Regeln drin stehen

XML-Syntax der Validierungsregeln

<model>
	<bind nodeset="Name" index="alias" required="true()" match="..." constraint="..." type="xsd:anyURI"/>
	<bind nodeset="Feld1" required="Feld2 = 'Wert'"/>
	<bind nodeset="Location" .../>
</model>

Es kann auch ein Pfad angegeben werden, wo dann die Regeln hinterlegt sind (für mehr Flexibilität, da kann man die Regeln im Container speichern oder so)

nodeset gibt das Feld im Container an, welches validiert werden soll
index ist ein Bezeichner für diesen Test (beliebiger Text)
required required="true()" - Feld muß gefüllt sein

required="Feld2 = 'Wert'" - Feld muß in Abhängigkeit eines anderen Feldwertes gefüllt sein. Wichtig sind die Leerzeichen vor und nach dem = . Allerdings keine Leerzeichen vor und nach Feldname bzw. Wertangabe.
match kann einen regulären Ausdruck enthalten (für einzeilige und mehrzeilige Textfelder)
constraint kann eine Bedingung angegeben werden, die der Feldinhalt erfüllen muß (z.B. ". > 18:00", zur Zeit "< >" für Datumsangaben, "< > =" für Zahlen und "=" für einzeiligen Text)
type gibt den xsd-Typnamen an (zur Zeit noch nicht unterstützt)

Beispiele

Feld muß gefüllt sein

...
<bind nodeset="Zaehlernummer" required="true()"/>
...

Die Zählernummer (z.B. eines Stromanschlusses) muß immer angegeben werden (im Container muß im entsprechenden Textfeld etwas stehen).

Feld muß in Abhängigkeit eines anderen Feldwertes gefüllt sein

...
<bind nodeset="Zaehlernummer" required="Neuanschluß = false"/>
...

Die Zählernummer muß angegeben werden, wenn im Formular das Häkchen bei "Neuanschluß" nicht gesetzt wurde (im Container angelegtes Häckchenfeld darf nicht angehakt sein).

Feld muß in Abhängigkeit eines anderen Feldwertes gefüllt sein

...
<bind nodeset="Zaehlernummer" required="Neuanschluß = 'nein'"/>
...

Gleiches Beispiel wie oben, nur daß das Feld "Neuanschluß" ein Textfeld ist und das Wort "nein" drin steht.

E-Mail-Validierung

...
<bind nodeset="Email" index="2" match="^[_a-zA-Z0-9-](\.{0,1}[_a-zA-Z0-9-])*@([_a-zA-Z0-9-]{2,}\.){0,}[_a-zA-Z0-9-]{3,}(\.[_a-zA-Z]{2,4}){1,2}$"/>
...

Der im Feld "Email" gespeicherte Wert muß dem angegebenen Regex ensprechen (dieser Regex ist nur einer von vielen).

Datum prüfen

...
<bind nodeset="Geburtsdatum" index="2" constraint="Geburtsdatum < #today"/>
...

Das Geburtsdatum muß vor heute liegen.

constraint

Mit constraint werden Gültigkeitsbedingungen des Feldinhalts angegeben. Diese sind je nach Typ des Feldes unterschiedlich. Der Wert im Parameter constraint muß folgende Form haben:

<bind nodeset="..." constraint="{Containerfeld} {Operator} {Vergleichswert}" />

Wichtig sind die Leerzeichen, die die 3 Werte trennen.

Hier ist die Liste der unterstützten Bedingungen, geordnet nach Feldtyp:

Textfelder (einzeilig, mehrzeilig)

{Vergleichswert}: Gültig sind:

{Operator}:

Datumsfelder

{Vergleichswert}

{Operator}

Zahlenfelder

{Vergleichswert}

{Operator}

Häkchenfelder (Wahrheitswert)

{Vergleichswert}

{Operator}

Verknüpfungen, Untercontainer

werden in Version 2.5.8 noch nicht unterstützt


Revision #2
Created 28 May 2026 09:31:36 by Batix
Updated 28 May 2026 09:31:36 by Batix