XSLT Transform

Ein XSLT Skript kann im Schritt https://ub-basel.atlassian.net/wiki/spaces/MD/pages/618430874/Importschritte#Structural-Normalization eingebunden werden um ein beliebiges XML in ein flacheres XML zu transformieren. Dieses wird anschliessend in ein einfaches JSON-Format transformiert und ist Input für den Schritt https://ub-basel.atlassian.net/wiki/spaces/MD/pages/618430874/Importschritte#RDF-Resource-and-Property-Mapping.

Ziel der XSLT Transformation ist es, ein XML mit maximal zwei Ebenen unterhalb des Knotens für das Dokument zu erstellen, welches alle relevanten Daten in eigenen Feldern enthält, die anschliessend im https://ub-basel.atlassian.net/wiki/spaces/MD/pages/642220068 genutzt werden können.

Eine Transformation mit XSLT ist notwendig, wenn:

  • das gelieferte XML unterhalb des Knotens für ein einzelnes Dokument mehr als zwei Ebenen hat

  • die Inhalte von Attributen ausgewertet werden sollen

  • Informationen in den Daten aufgrund von vorhandenen Daten ergänzt werden müssen

  • eine andere Transformation der Daten notwendig ist, als über Mapping und Normalisierung möglich ist

Beispiel für ein flaches XML

Dieses Beispiel stammt aus der initialen Datenmigration und wurde für die einfachere Lesbarkeit gekürzt.

Knoten für das Dokument ist <record>.

Z.B. bei <creatorPerson> ist eine zweite Ebene mit <name> und <role> vorhanden.

<?xml version="1.0" encoding="UTF-8"?> <record> <title>Maestria! (0626-2)</title> <BroadcastTitle>Cinegiornale svizzero del 04.06.1954</BroadcastTitle> <SerieTitle>Cinegiornale svizzero</SerieTitle> <creatorPerson> <name>Cinegiornale svizzero (CGS)</name> <role>Author</role> </creatorPerson> <Keywords>LAVORO, MESTIERI</Keywords> <Abstract>Comunicato: &lt;br&gt; Una visita a Obfelden, durante i difficili esami di capacità federale nel ramo</Abstract> <Context>Link sull'edizione: &lt;br&gt; &lt;a href="../search?field[0][0][term]=%22Cinegiornale%20svizzero%20del%2004.06.1954</Context> <Claim>Questo documento è stato salvaguardato grazie al sostegno di Memoriav.</Claim> <RecordingLocation>o.O. (Schweiz)</RecordingLocation> <publisherCorporateBody> <name>CGS</name> </publisherCorporateBody> <producerCorporateBodyName>CGS</producerCorporateBodyName> <issuedDate>1954-06-04</issuedDate> <genre>Cinegiornale</genre> <objectType>Film</objectType> <medium>35mm acetato di cellulosa</medium> <videoFormatRatio>4:3</videoFormatRatio> <videoFormatColor>B/N</videoFormatColor> <duration>00:01:07</duration> <essenceLocator>https://media.zem.ch/01WS/1954/CGS_0626.mp4?start=51&amp;end=118</essenceLocator> <identifierOriginal>CGS_0626-2</identifierOriginal> <identifierCallNumber>Archivio federale svizzero: J2.143#1996/386#626-3#2*</identifierCallNumber> <identifierMain>SFW_CJS_CGS-CGS_0626-2</identifierMain> <language>italiano</language> <references>https://www.recherche.bar.admin.ch/recherche/#/it/ricerca/piano-di-archivio/30690825</references> <location>Europa occidentale</location> <rightsHolder>Cinémathèque suisse, Archivio federale svizzero</rightsHolder> <accessDigital>public</accessDigital> <rightsStatementText>In Copyright - Educational Use Permitted (InC-EDU)</rightsStatementText> <rightsStatementURL>http://rightsstatements.org/vocab/InC-EDU/1.0/</rightsStatementURL> <rightsUsage>I diritti di utilizzo possono essere assegnati dai titolari dei diritti di cui sopra.</rightsUsage> </record>

XSLT Skript für die Migration

Für die Migration der Daten in die neue Memobase wurden XSLT Skripte genutzt. Als Basis wurde ein generisches Skript erstellt, welches anschliessend individuell für die einzelnen Bestände angepasst wurde. Das generische Skript ist im Repository import-process-cli abgelegt und kann als Beispiel verwendet werden.

XSLT Referenz

  • viele weitere