XSLT – XML Dateien in die richtige Form bringen

Bei meiner Arbeit im META Projekt (und zuvor für meine Magisterarbeit) habe ich viel mit XSLT zu tun. Zur Info – Wikipedia sagt: XSLT, das ist eine Programmiersprache zur „Transformation von XML-Dokumenten„.

Das XSLT-Skript, welches die XML-Daten der Genderbibliothek umwandelt, umfasst nach heutigem Stand knapp 2000 Zeilen. Im Skript werden alle Objektarten homogenisiert (z.B. Buch, Hochschulschriften, Videos etc.) und mit zusätzlichen Informationen (z.B. Sprachcodes, Projektmarkierungen) angereichert.

Die Umwandlung der Rohdaten für VuFind erfolgt in zwei Schritten:

  1. Die Rohdaten werden in ein Zwischenformat umgewandelt, das wir liebevoll als Arbeitsxml bezeichnen (ein Preis für die Namensgebung wird es wahrscheinlich nicht geben)
  2. Die Arbeitsxml wird in das SOLR spezifische XML umgewandelt.

Letztlich sind das dieselben Schritte, die auch größere Player, wie die DDB, bei ihrer Datentransformation leisten muss – nur in einem kleinerem Maßstab.

Ziel dieser Arbeit ist es die Daten so aufzubereiten (Homogenisieren & Anreichern), dass sie in beliebig viele Formate umgewandelt werden kann. Denkbar sind Formate wie Marcxml, MODS oder EAD. An erster Stelle steht für das META Projekt und die Genderbibliothek allerdings die Integration der Daten in VuFind.

Achso – was kleinerer Maßstab heißt? Die Umwandlung der gesamten Datensätze dauert 111 Minuten und die Dateigröße schwillt von ca. 50 MB (ca. 58000 Datensätze) auf das Dreifache, ca. 150 MB, an.

… wenn ich das so schreibe, klingt es gar nicht mehr so viel. So oder so es steckt eine Menge Arbeit drin.

Zu sehen ist ein Bildschirmfoto eines XSLT Skriptes

Auszug aus dem XSLT-Skript für die Genderbibliothek

Datensätze direkt einspielen – VuFind / Solr

Heute hatte ich endlich die Zeit und die Muße mich um ein besonderes Problem zu kümmern. Der Import von Daten im XML-Format gestaltete sich für mich bisher als etwas mühsam. Jeder Datensatz musste in einer eigenen Datei vorliegen. Bei dem eingebauten Importskript von VuFind wurde dann jede einzelne Datei eingespielt. Bei 50.000 Datensätzen handelt es sich um 50.000 einzelne XML-Dateien. Das war müßig.

Mit der Hilfe von Oliver Goldschmidt aus Hamburg habe ich jetzt endlich den Trick raus, wie ich die Daten aus einer einzelnen Datei einlesen kann, in der alle einzelnen Datensätze gespeichert sind.

Die Datensätze, die innerhalb einer XML-Datei gespeichert sind, können wie folgt in das System eingespielt werden:

/usr/bin/curl -d @result.xml 
http://localhost:4040/solr/biblio/update -H 
"Content-Type:text/xml; charset: UTF-8"

Die Daten müssen natürlich die richtige Form haben und die schema.xml Datei von SOLR muss entsprechend angepasst sein.

Vielen Dank an dieser Stelle nach Hamburg.