Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 10 Next »

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.

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 = 'æ')


Eksempel 2:

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}$')

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.

Avancerede XPath funktioner

  • No labels