...
Den første dato i måneden for en given dato
Der kan nogle gange være behov for at udregne den 1. i en måned baseret på en anden dato, hvilket der ikke umiddelbart er nogen oplagt XPath funktion til at beregne, men dog er noget som kan løses ved at lege lidt med datoerne som tekststrenge
Code Block | ||
---|---|---|
| ||
xs:date(concat(substring($dato-til-manipulation/text(), 1, 7), '-01')) |
Formlen består her af en række skridt indefra og ud i formlen ovenfor
Først laves datoen om til en tekststreng via /text() funktionen
Herefter udtrækkes de første syv tegn af datoen som tekststreng via substring(.., 1, 7) svarende til år og måned for datoen
Så sættes den forkortede tekststreng sammen med strengen ‘-01’ som erstatning for den dato der blev skåret fra
Slutteligt bruges funktionen xs:date til at lave tekststrengen tilbage til en dato
Formatering af datoer
Det kan ofte være interessant at formatere datoer forskelligt enten for at øge læsbarheden eller for at skjule eller vise relevante dele af en dato. Her kan man bruge XPath funktionen format-date, hvor du kan se en lang række eksempler herinde https://www.w3.org/TR/xslt20/#date-time-examples
...
Code Block | ||
---|---|---|
| ||
format-date($datofelt, '[D]. [MNn] [Y]', 'da', (), ()) |
Formler med tekststrenge
Nedenfor finder du en række forskellige XPath formler til at manipulere med og udtrække data af tekststrenge
Sammensætning af tekststrenge
Hvis du vil sammensætte to eller flere tekststreng, så kan du bruge XPath funktionen concat, hvor du angiver de tekststrenge eller henvisninger til tekstfelter, der skal sættes sammen, eksempelvis
Code Block |
---|
concat($felt1, '-', $felt2) |
Her vil værdierne af de to felter blive sat sammen med en bindestreg i mellem
Bemærk: Hvis du skal sammensætte en række tekstfelter fra et repeated grid, så kig ovenfor under Formler med gentaget data
Udsnit af tekststrenge
Hvis du har behov for at udtrække en del af en tekststreng, eksempelvis en dato fra et CPR-nummer, så kan du bruge XPath funktionen substring, hvor du skal angive, hvilket tegn, der skal være det første i den nye streng og hvor lange den nye streng skal være.
I eksemplet nedenfor returneres eksempelvis strengen 010161
Code Block |
---|
substring('0101610246', 1, 6) |
Note |
---|
Til forskel fra de fleste programmeringssprog starter XPath nummeringen ved 1 og ikke 0, dvs. første tegn i en tekststreng har positionen 1 |
Deling af tekststrenge
Hvis du vil dele en tekststreng i én eller flere dele og placere i andre felter, kan du bruge funktionen xxf:split, hvor du skal angive hvilket tegn, der skal fungere som skel ,og herefter kan tilgå de enkelte elementer i listen
Nedenstående to formler vil eksempelvis give hhv 010161 og 0246
Code Block |
---|
xxf:split('010161-0246', '-')[1]
xxf:split('010161-0246', '-')[2] |
Denne funktionalitet kan eksempelvis også bruges på værdien af en dropdown, hvor alle valgmulighederne er en kombination af to eller flere elementer, og du vil have det valgte resultat delt ud i separate felter
Tæl antal ord i en tekststreng
Splitfunktionen ovenfor kan også bruges til at tælle antallet af ord i en tekststreng ved at splitte på et mellemrum. Herfra kan funktionen count tælle, hvor mange elementer der er opstået efter splittet
Code Block |
---|
count(xxf:split(.,' ')) |
Andre nyttige funktioner
Nedenfor vedligeholdes en liste af nyttige XPath funktioner som kan bruges i forskellige sammenhænge
fr:lang()
Funktionen fortæller, hvilket sprog brugeren udfylder blanketten på og kan bruges til at tilpasse blanketter efter anmelders sprog, eksempelvis kan nedenstående bruges til at vise et felt, som kun skal være der, hvis blanketten udfyldes på engelsk
Code Block |
---|
fr:lang() = 'en' |
fr:mode()
Funktionen fortæller, hvor i livsforløbet blanketten er i og kan have følgende værdier
Værdi | Beskrivelse |
---|---|
new | Første gang brugeren tilgår blanketten |
edit | Ved genoptagelse af kladde eller tryk på redigering fra opsummeringssiden |
test | Testvinduet i Blanketdesigneren |
view | Opsummeringssiden |
PDF’en |
Funktionen kan bruges til at lave regler baseret på blankettens tilstand og er især nytter ift. visningsregler, hvor nedenstående eksempelvis skjuler et felt i PDF’en, men viser det alle andre steder
Code Block |
---|
fr:mode() != 'pdf' |