Glitre

5.08.2010

Sortering med XSLT

Filed under: MARC,NORMARC,Sortering — magnusenger @ 14:41

Sortering med XSLT er nå implementert. Antagelig vil det trenges litt finpuss på fjerning av tegn fra årstall* osv, men den grunnleggende funksjonaliteten er på plass.

Kommentarer fra Twitter tyder på at andre mener det vil være raskere å implementere sorteringen i PHP (dvs plukke data fra postene og legge dem i array i PHP, sortere arrayene og så sette sammen postene i ny rekkefølge basert på denne sorteringen), men i første omgang nøyer vi oss med den nå værende løsningen. Dersom det blir tid til det senere i prosjektet kan vi komme tilbake til saken og prøve å implementere sorteringen på den foreslåtte måten. Da blir det både mulig å gjøre tester av hurtigheten til de to metodene, og tilby begge som konfigurerbare alternativer i Glitre.

* Årstall i MARC-poster er et glitrende eksempel på at de «maskinlesbare» dataene i MARC langt fra er så maskinlesbare som de burde ha vært:

I følge NORMARC inneholder 260$a «År. Dette er utgivelsesår, produksjonsår eller copyrightår.». Allerede her ser vi et problem. Vi har et årstall, men vi vet ikke egentlig hva årstallet representerer. Dette burde egentlig vært tre adskilte felt, eller det burde vært et ekstra felt/indikator som fortalte akkurat hva slags felt det egentlig er snakk om.

Et annet problem er at feltet ofte ikke inneholder rene årstall. Tilfeldige stikkprøver har avslørt følgende varianter:

  • [2003?]
  • [200-?]
  • pp1992
  • [2004]

Hvordan skal man kunne sortere disse på en fornuftig måte? Jo, man blir nødt til å skrelle bort de ekstra tegnene etter beste evne. Glitre har foreløpig løst dette på følgende vis:

<xsl:sort select="translate(datafield[@tag=260]/subfield[@code='c'], 'cop.[]', '')" data-type="text" order="{$sortOrder}"/>

Dette innebærer at alle forekomster av tegnene «cop.[]» i 260$c fjernes før sorteringen gjøres. Dersom MARC skulle vært virkelig maskinlesbart burde feltet inneholdt kun et rent årstall, og de opplysningene som de ekstra tegnene representerer burde vært kodet ved help av andre delfelt.

Advertisements

Legg igjen en kommentar »

Ingen kommentarer så langt.

RSS feed for comments on this post. TrackBack URI

Legg igjen en kommentar

Fyll inn i feltene under, eller klikk på et ikon for å logge inn:

WordPress.com-logo

Du kommenterer med bruk av din WordPress.com konto. Logg ut / Endre )

Twitter picture

Du kommenterer med bruk av din Twitter konto. Logg ut / Endre )

Facebookbilde

Du kommenterer med bruk av din Facebook konto. Logg ut / Endre )

Google+ photo

Du kommenterer med bruk av din Google+ konto. Logg ut / Endre )

Kobler til %s

Opprett en gratis blogg eller et nettsted på WordPress.com.

%d bloggers like this: