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
Indholdsfortegnelse
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.
XPath operatorer
Operator | Beskrivelse | Eksempel |
---|---|---|
+ | Addition af værdier | 6 + 4 $felt + $felt2 |
- | Subtraktion af værdier | 6 - 4 $felt1 - $felt2 |
* | Multiplikation af værdier | 6 * 4 $felt1 * $felt2 |
div | Division af værdier | 6 div 4 $felt1 div $felt2 |
= | Lighedsudtryk | $felt1/text() = ‘abc’ $skiftkommune = 'ja' |
= ( ) | Tjek om værdien ligger i en liste | $felt1 = ('a', ‘b', 'c’) |
!= | Ikke-lighedsudtryk | $beloeb != 1000 $felt2 != $felt1 |
< | Mindre end | $beloeb < 5000 |
<= | Mindre end eller lig med | $beloeb <= 5000 |
> | Større end | $beloeb > 5000 |
>= | Større end eller lig med | $beloeb >= 5000 |
or | Eller – enten det ene eller det andet udtryk skal være opfyldt | $beloeb > 5000 or $momsfri = 'ja' |
and | Og – begge udtryk skal være opfyldt | $beloeb < 5000 and $told != 'nej' |
not | "not" kan bruges til at validere, hvis et udtryk ikke opfyldes | Eksempel 1: I følgende valideres der, hvis feltets indhold er "æ": $control-1 = 'æ' I følgende valideres der ikke, hvis feltet er "æ": not ($control-1 = 'æ')
I følgende valideres der, hvis feltet indeholder "æ": contains($control-1, 'æ') I følgende valideres der, hvis feltet ikke indeholder "æ": not (contains($control-1, 'æ')) |
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- eller telefonnummervalidering (8-cifre) | matches(., '^\d{8}$') |
CPR-validering (6 + 4 cifre med bindestreg) | matches(., '^\d{6}-\d{4}$') |
CPR-validering (6 + 4 cifre uden bindestreg) | matches(., '^\d{10}$') |
CPR-validering (6 + 4 cifre og valgfri bindestreg) | matches(., '^\d{6}-?\d{4}$') |
Kun bogstaver og tal | matches(., '^[A-Za-z0-9]+$') |
Kun bogstaver | matches(., '^[A-Za-z]+$') |
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.