...
Ønsker I at dykke længere ned i redigering af XML, kan vi anbefale Notepad++, der er et gratis redskab til koderedigering.
Brug af felter i formler
I standard XPath vil man normalt henvise til værdien af et felt ved brug af to skråstreger, eksempelvis //felt1 med risiko for at pege på flere felter.
I Orbeon skal felter dog have et unikt navn og de har derfor indført en separat notation med brug af $-tegn som er nemmere at bruge, eksempelvis $felt1
Eneste undtagelse for ovenstående er brug af felter fra section templates, da man kan have den samme template flere gange i en blanket og feltnavnene derfor ikke vil være unikke. Her skal du i stedet pege på både sektionens og feltets navn, som følger $sektion1//felt1
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’) |
contains | Tjek om feltets værdi indeholder en del | contains($felt1, 'a') |
!= | 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
...
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 |
Dato er den første i en måned | substring(string(.), 9, 2) = '01' |
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. Du finder et Regex cheatsheet her: Regex cheatsheet
Tjekbokse
Hvor dropdowns og radio buttons bar har en enkelt strengværdi og derfor kan valideres med de generiske operatorer beskrevet ovenfor, så opfører tjekbokse sig lidt anderledes
Regel | Formel |
---|---|
Single-checkbox er markeret | . = true() |
Single-checkbox er ikke markeret | . = false() |
Værdien A er valgt blandt flere tjekbokse | contains(., 'A') |
Mindste to valgmuligheder valgt | count(xxf:split(., ' ')) >= 2 |
Vedhæftninger
På vedhæftningsfelter er der lidt anderledes muligheder for valideringsregler, som gør det nemt at validere på størrelse og type af vedhæftninger
Hent data fra brugerens login
...
I tabellen nedenfor ses en oversigt over de tilgængelige værdier, og hvilke logins de matcher:
Værdi | Indhold | Personlig |
---|
MitID |
---|
MitID Erhverv | Personligt eID |
---|
eID Business | |||
---|---|---|---|
xxf:get-request-attribute('nemlogin-id') | Loginet's ID | X | X |
X
X
xxf:get-request-header('x-sector9-saml-organizationName')
X |
X | |||||
xxf:get-request-header('x-sector9-saml-commonname') | Brugerens navn | X | X | X | X |
xxf:get-request-header('x-sector9-saml-mail') | Brugerens mail, hvis oplyst | (X) | (X) | (X) | (X) |
xxf:get-request-header('x-sector9-saml-cvrnumberidentifier') | CVR-nummer hørende til brugerens medarbejdersignatur. Kan også trækkes fra personligt NemLog-in for enkeltmandsvirksomheder og lignende |
X |
xxf:get-request-header('x-sector9-saml-cprnumberidentifier') | Brugerens CPR-nummer | X | X | ||
xxf:get-request-header('x-sector9-saml-legalpersonidentifier') | ID på medarbejder eID | X | |||
xxf:get-request-header('x-sector9-saml-personidentifier') | ID på personlig eID | X | |||
xxf:get-request-header('x-sector9-saml-birthdate') | Brugerens fødselsdag | (X) | (X) | (X) | (X) |
X = Værdien vil altid hente et resultat på signaturtypen
...
Avancerede XPath funktioner
Hvis du savner yderligere eksempler på brug af XPath i blanketter, så kig på siden Avancerede XPath operationer for mere inspiration