Skip to content

Instantly share code, notes, and snippets.

@mjlassila
Created March 7, 2014 09:32
Show Gist options
  • Save mjlassila/0692f11ace4e5258e955 to your computer and use it in GitHub Desktop.
Save mjlassila/0692f11ace4e5258e955 to your computer and use it in GitHub Desktop.
import module namespace functx="http://www.functx.com";
declare option output:indent "no";
declare option output:item-separator "\n";
declare option output:method "text";
(: Käydään dumppi läpi tietue kerrallaan:)
for $record in /OAI-PMH/ListRecords/record/metadata/record
(: Muuttujaan talteen kaikki tietueen kentän 593 arvot.:)
(: On otettava huomioon, että 593-kenttiä voi olla useampi :)
(: Kentässä kurssikoodeja voi olla useita, pilkulla erotettuna :)
let $raw_course_codes:=$record/datafield[@tag="593"]/subfield[@code='a']
(: :)
(: Pilkotaan potentiaaliset kurssikoodit.:)
(: On otettava huomioon, että kenttään on voitu tallettaa:)
(: myös jotain muuta kuin kurssikoodeja:)
let $course_codes:=
for $raw_course_code in $raw_course_codes
let $codes:=tokenize($raw_course_code, ', ')
return $codes
(: Käydään läpi koodit ja suodatetaan pois tapaukset :)
(: jotka eivät todennäköisseti ole kurssikoodeja, l. ovat :)
(: yli kymmenen merkkiä pitkiä. Erotetaan kurssikoodeista vuodet:)
let $years:=
for $course_code in $course_codes
where string-length($course_code) <=10
let $year:=functx:reverse-string(substring(functx:reverse-string($course_code), 1,2))
return $year
(: Otetaan muuttujaan talteen 2013 tai aiemmat vuodet:)
let $years_to_include:=
for $year in $years
return
if (xs:int($year) <=13) then
$year
else()
return
(: Mikäli muuttujaan on tallennettu vuosia, kyseessä on :)
(: teos jossa on vanhempi kuin 2013 vuoden kurssikoodi :)
(: Palautetaan teoksen BIBID.:)
if (count($years_to_include) > 0) then
data($record/controlfield[@tag="001"])
else()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment