Containerinhalt validieren

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

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)

Attribute

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.

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.

match

kann einen regulären Ausdruck enthalten (für einzeilige und mehrzeilige Textfelder)

Beispiel: 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).

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). Details siehe Abschnitt constraint unten.

Beispiel: Datum prüfen

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

Das Geburtsdatum muß vor heute liegen.

type

gibt den xsd-Typnamen an (zur Zeit noch nicht unterstützt)

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 #5
Created 2026-05-28 09:31:36 CEST by Batix
Updated 2026-06-09 11:57:15 CEST by Batix