Blanketter i Blanketmotoren er bygget op som XML-data og Orbeon Forms, der ligger i kernen af Blanketmotoren understøtter en masse muligheder for at indlejre logik i de enkelte blanketter via sproget XPath. Logikken kan bruges til en lang række til, bl.a.
Felter med beregnede værdier baseret tidligere indtastninger
Validering af brugerinput
Vise/skjule felter
Gøre felter skrivebeskyttede
Hvad er XPath?
XPath er et sprog, der anvendes til at navigere mellem elementer og attributter i et XML dokument.
Læs en kort introduktion til Xpath her.
Ønsker I at dykke længere ned i redigering af XML, kan vi anbefale Notepad++, der er et gratis redskab til koderedigering.
Eksempler på valideringsregler
Blanketmotoren tilbyder rig mulighed for at opsætte valideringsregler på de enkelte felter i blanketten
Datoer
De mest almindelige valideringsregler på datofelter går på, hvorvidt en dato ligger før eller efter en anden dato, eksempelvis dags dato.
I tabellen nedenfor ses et par eksempler på, hvordan valideringsregler for datoer kan se ud
Regel | Formel |
---|---|
Dato må ikke være efter 22. juni 2022 | . <= xs:date('2022-06-22') |
Dato skal være før 22. juni 2022 | . < xs:date('2022-06-22') |
Dato må ikke være efter dags dato | . <= current-date() |
Dato må ikke være mere end 7 dage efter dags dato | days-from-duration(. - current-date()) <= 7 |
Tal
Tekstfelter
De mest almindelige valideringsregler på tekstfelter går på enten længden af feltet eller hvorvidt værdien af feltet har et bestemt mønster, eks. 8 cifre til et CVR-nummer.
Længden af feltet kan valideres med indbyggede valideringsregler i Orbeon, mens at formatet af et tekstfelt kan valideres ved at bruge såkaldte Regex-udtryk (https://en.wikipedia.org/wiki/Regular_expression ) og functionen matches som i eksemplerne nedenfor
Regel | Formel |
---|---|
CVR-validering (8-cifre) | matches(., '^[0-9]{8}$') |
CPR-validering (6 + 4 cifre med bindestreg) | matches(., '^\d{6}-\d{4}$') |
Når man skal til at lave disse Regex-udtryk til sine valideringer, så kan et værktøj som eksempelvis https://regex101.com/ være nyttigt til at teste og forstå, hvad de enkelte dele af udtrykket betyder.