Legekontoret

kode-filer

Schema-filer

pasient
lege
legekontor

XML-fil

legekontor

XSL(style)-fil

legekontor

Se resultat(krever IE5 eller nyere)

xpath

Finn xml-fila legekontor.xml

find document('/db/legekontor/legekontor.xml')
Resultat

Finn alle leger i collection legekontor

find collection('/db/legekontor')//lege
Resultat

Finn alle pasienter

find //legekontor/pasient
Resultat

Finn pasienter som har vært behandlet for lungebetennelse

find //legekontor/pasient[contains(legebesok/journal, 'lungebetennelse')]
Resultat

Finn pasienter som har hatt enten influensa eller lungebetennelse

find //legekontor/pasient[contains(legebesok/journal, 'lungebetennelse') or contains (legebesok/journal, 'influensa')]
Resultat

Finn leger som både heter Pedersen og bor på et nes

find //legekontor/lege[contains(navn, 'pedersen') and contains (hjemAdresse, 'nes')]
Resultat

xquery

Finn antall pasienter

xquery version "1.0";

count(//legekontor/pasient)

Resultat

3

Finn navnet på alle pasienter

xquery version "1.0";

data(//pasient/navn)

Resultat

Arne B. Olsen
Ilma S. Arnesen
Eivind Moen

Finn ut om dato-feltet finnes

xquery version "1.0";

exists(//pasient/legebesok/dato)

Resultat

true

Skriv ut formatert dato for alle legebesøk

xquery version "1.0";

for $dato in //pasient/legebesok/dato
  let $dag := day-from-date(xs:dateTime($dato)),
  $maaned := month-from-date(xs:dateTime($dato)),
  $aar := year-from-date(xs:dateTime($dato))
  return concat("Dato(format: dd/mm yyyy):", $dag, "/", $maaned, " ", $aar)

Resultat

Dato(format: dd/mm yyyy):9/10 2000
Dato(format: dd/mm yyyy):12/10 2001
Dato(format: dd/mm yyyy):23/4 2001
Dato(format: dd/mm yyyy):22/5 2001
Dato(format: dd/mm yyyy):2/6 2002

Skriv ut formatert dato for alle legebesøk, men ta med pasientens navn også

xquery version "1.0";

let $lk := collection("/db/legekontor")//pasient

for $item in $lk
  let $navn := data($item/navn)

  for $dato in $item/legebesok/dato
    let $dag := day-from-date(xs:dateTime($dato)),
    $maaned := month-from-date(xs:dateTime($dato)),
    $aar := year-from-date(xs:dateTime($dato))
    return concat($navn, ":", $dag, "/", $maaned, " ", $aar)

Resultat

Arne B. Olsen:9/10 2000
Arne B. Olsen:12/10 2001
Ilma S. Arnesen:23/4 2001
Eivind Moen:22/5 2001
Eivind Moen:2/6 2002

Skriv ut antall ganger hver pasient har vært hos legen

xquery version "1.0";

declare function lk:antLegebesok($item as node()) as xs:integer {
  let $ant_legebesok := count($item/legebesok)
  return $ant_legebesok
};

let $lk := collection("/db/legekontor")//pasient

for $item in $lk
  let $navn := data($item/navn),
  $ant_legebesok := lk:antLegebesok($item)
    
  return concat($navn, " har vært hos legen ", $ant_legebesok, " gang(er)")

Resultat

Arne B. Olsen har vært hos legen 2 gang(er)
Ilma S. Arnesen har vært hos legen 1 gang(er)
Eivind Moen har vært hos legen 2 gang(er)

Del opp alle datoer i dato og klokkeslett

xquery version "1.0";

for $dato in //pasient/legebesok/dato
  return tokenize($dato, "T")

Resultat

2000-10-09
08:45:00
2001-10-12
10:15:00
2001-04-23
10:45:00
2001-05-22
07:45:00
2002-06-02
14:30:00

Finn ut om dagen pasienten var hos legen var en partallsdag eller en oddetallsdag

xquery version "1.0";

let $lk := collection("/db/legekontor")//pasient

for $item in $lk
  for $dato in $item/legebesok/dato
    let $dag := day-from-date(xs:dateTime($dato)),
    $maaned := month-from-date(xs:dateTime($dato)),
    $aar := year-from-date(xs:dateTime($dato))

    return 
      if($dag mod 2 = 0) then
        concat($aar, "-", $maaned, "-", $dag, " er en partallsdag")
      else
        concat($aar, "-", $maaned, "-", $dag, " er en oddetallsdag")

Resultat

2000-10-9 er en oddetallsdag
2001-10-12 er en partallsdag
2001-4-23 er en oddetallsdag
2001-5-22 er en partallsdag
2002-6-2 er en partallsdag

xupdate

Hvordan kjøre xupdate?

xupdate-kommandoer må kjøres fra kommandolinjen.
All xupdate-kode må ligge i xml-filer
For at logging skal virke, må man stå i katalogen c:\eXist1.0b2 når man kjører eksemplene

NB! Hvis det skjer feil under kjøring av xupdate-filer, hender det at client.bat blir ødelagt. Lag en backup av denne fila i tilfelle dette skjer.

Kommando for å kjøre xupdate-fila insert_legekontor.xml i katalogen c:\existdata:

  client.bat -c /db/legekontor -f legekontor.xml -X c:\eXistdata\insert_legekontor.xml -u admin

insert

Eksempelfil
Resultat

append

Eksempelfil
Resultat

update

Eksempelfil
Resultat

remove

Eksempelfil
Resultat