Zusammenführen mehrerer Felder mit "set_field"

,

Hallo,

ich bin auf der Suche nach einem Weg, mehrere gleichnamige Felder innerhalb eines einzelnen XML-Entries zu bearbeiten. Ich habe meinen bisherig erarbeiteten Workflow einmal im Playground aufbereitet.

Ziel ist es, die im XML-Format vorliegenden Daten auszulesen, die relevanten zu filtern, in die gewünschte Form zu bringen und als CSV zu exportieren. Kann jemand von euch nachvollziehen, warum dieser Prozess daran scheitert, mehrere gleichnamige innerhalb eines Entries zu verarbeiten?

Mein Ziel ist es, den nummerischen Wert unter <045W.9> auszulesen, mit dem Präfix „<BLL-Thesaurus“ und dem Suffix „>“ zu ergänzen, und gesammelt unter dem Feld „subject_uris“ zusammenzustellen. Dabei sollen sie folgendem Schema nach angeordnet werden:

subject_uris: „<subject_uri1> <subject_uri2> <subject_uri>“

Hat jemand von euch vergleichbare Erfahrungen gemacht und/oder kann mir hier weiterhelfen?

Danke und beste Grüße,

Ruben

Hallo Ruben,

cool, dass du dich in Metafacture reinfuchst!!!

Bei deiner Fix kommen ein paar Dinge zusammen, die das verhindern:

Fix Z.6 und Z.7: Die Pfade subject_uris und subject_uri haben nicht übereingestimmt.

Fix Z.6: Das Schreibverhalten von den meisten neue Felder erzeugenden Fix-Funktionen wie auch paste ist „destruktiv“ und überschreibt bestehende Felder. Du hättest somit Immer nur einen Wert subject_uris

Z.6 Der Pfad "9" verweist nirgendwo hin. Du möchtest vermutlich alle Werte 045W Unterfeld 9 zu verarbeiten, dafür musst du mit dem list Bind über das Feld 045W iterieren.

Die Lösung könnte zum Beispiel so aussehehen. ich habe den Link als Code gemacht, weil der die Forumssoftware escape zeichen ignoriert:

retain("003@","021A","045W")
move_field("003@.0","document_id")
paste("text","021A.a","~.","~ ","021A.d","~.",join_char:"")
remove_field("021A.a","021A.d","021A.f","021A.h")
set_field("basic_uri", "<http://data.linguistik.de/bll/bll-thesaurus#")

# Iteriere über das sich möglicherweise wiederholbare Feld 045:
do list(path: "045W","var":"$i")
    paste("subject_uris.$append","basic_uri","$i.9","~>",join_char:"") # Schreibe das Ergebnis in eine Liste "subject_uris" mit $append. Hier habe ich auch nochmal die Feldpfade angepasst.
end
join_field("subject_uris", " ")
remove_field("basic_uri","045W","045W") # Hier habe ich die Top-Level Felder gelöscht.
vacuum()

https://metafacture.org/playground/?flux=inputFile%0A%7Copen-file%0A%7Cas-records%0A%7Cmatch%28pattern%3D%22%3Cdelivery-message%3E%22%2Creplacement%3D%22%3Crecord+xmlns%3D\%22http%3A//www.oclcpica.org/xmlns/ppxml-1.0\%22%3E%3Cglobal+opacflag%3D\%22\%22+status%3D\%22\%22%3E%22%29%0A%7Cmatch%28pattern%3D%22%3C/delivery-message%3E%22%2Creplacement%3D%22%3C/global%3E%3C/record%3E%22%29%0A%7Cmatch%28pattern%3D%22sbf%3E%22%2Creplacement%3D%22subf%3E%22%29%0A%7Cmatch%28pattern%3D%22%3Csbf%22%2Creplacement%3D%22%3Csubf%22%29%0A%7Cmatch%28pattern%3D%22%3Ctag%22%2Creplacement%3D%22%3Ctag+occ%3D\%22\%22%22%29%0A%7Cread-string+%0A%7Cdecode-xml%0A%7Chandle-picaxml%0A%7Cfix%28transformationFile%29%0A%7Cencode-yaml%0A%7Cprint%3B&transformation=retain%28%22003@%22%2C%22021A%22%2C%22045W%22%29%0Amove_field%28%22003@.0%22%2C%22document_id%22%29%0Apaste%28%22text%22%2C%22021A.a%22%2C%22~.%22%2C%22~+%22%2C%22021A.d%22%2C%22~.%22%2Cjoin_char%3A%22%22%29%0Aremove_field%28%22021A.a%22%2C%22021A.d%22%2C%22021A.f%22%2C%22021A.h%22%29%0Aset_field%28%22basic_uri%22%2C+%22%3Chttp%3A//data.linguistik.de/bll/bll-thesaurus%23%22%29%0A%0A%23+Iteriere+%C3%BCber+das+sich+m%C3%B6glicherweise+wiederholbare+Feld+045%3A%0Ado+list%28path%3A+%22045W%22%2C%22var%22%3A%22%24i%22%29%0A++++paste%28%22subject_uris.%24append%22%2C%22basic_uri%22%2C%22%24i.9%22%2C%22~%3E%22%2Cjoin_char%3A%22%22%29+%23+Schreibe+das+Ergebnis+in+eine+Liste+%22subject_uris%22+mit+%24append.+Hier+habe+ich+auch+nochmal+die+Feldpfade+angepasst.%0Aend%0Ajoin_field%28%22subject_uris%22%2C+%22+%22%29%0Aremove_field%28%22basic_uri%22%2C%22045W%22%2C%22045W%22%29+%23+Hier+habe+ich+die+Top-Level+Felder+gel%C3%B6scht.%0Avacuum%28%29%0A&data=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22ISO-8859-1%22%3F%3E%0A%3Cbll-export+startDate%3D%22STARTD%22+endDate%3D%22ENDD%22%3E%0A%3Cdelivery-message%3E%0A%09%09%3Ctag+id%3D%22001A%22%3E%0A%09%09%09%3Csbf+id%3D%220%22%3E4505%3A13-03-06%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22001B%22%3E%0A%09%09%09%3Csbf+id%3D%220%22%3E1999%3A06-07-19%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%22t%22%3E01%3A01%3A14.000%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22001C%22%3E%0A%09%09%09%3Csbf+id%3D%220%22%3E6050%3A14-03-07%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%22t%22%3E05%3A10%3A33.000%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22001D%22%3E%0A%09%09%09%3Csbf+id%3D%220%22%3E4505%3A13-03-06%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22001U%22%3E%0A%09%09%09%3Csbf+id%3D%220%22%3Eutf8%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22001X%22%3E%0A%09%09%09%3Csbf+id%3D%220%22%3E0%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22002@%22%3E%0A%09%09%09%3Csbf+id%3D%220%22%3EAox%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22003@%22%3E%0A%09%09%09%3Csbf+id%3D%220%22%3E173087493%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22007A%22%3E%0A%09%09%09%3Csbf+id%3D%22a%22%3EHEB%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%220%22%3E173087493%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22007I%22%3E%0A%09%09%09%3Csbf+id%3D%220%22%3EBLLt650199%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22010@%22%3E%0A%09%09%09%3Csbf+id%3D%22a%22%3Eeng%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22011@%22%3E%0A%09%09%09%3Csbf+id%3D%22a%22%3E1982%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22021A%22%3E%0A%09%09%09%3Csbf+id%3D%22a%22%3EWhat+no+bedtime+story+means%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%22d%22%3Enarrative+skills+at+home+and+school%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22028A%22%3E%0A%09%09%09%3Csbf+id%3D%229%22%3E184321034%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%228%22%3EHeath%2C+Shirley+Brice%24Z1939-%240%28DE-588%29132564637%247Tp1%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22031A%22%3E%0A%09%09%09%3Csbf+id%3D%22d%22%3E11%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%22j%22%3E1982%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%22e%22%3E1%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%22h%22%3E49-76%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22039B%22%3E%0A%09%09%09%3Csbf+id%3D%22a%22%3EIn%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%229%22%3E047109092%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%228%22%3E%24tLanguage+in+society.+-+London+%7B%5Bu.a.%5D+%3A+Cambridge+Univ.+Press%2450047-4045%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%22x%22%3E198200000110001951%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22045T%22%3E%0A%09%09%09%3Csbf+id%3D%22a%22%3E7%2C11%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22045T%22%3E%0A%09%09%09%3Csbf+id%3D%222%22%3EFID%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%22a%22%3ELING%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%22q%22%3EDE-30%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22045W%22%3E%0A%09%09%09%3Csbf+id%3D%229%22%3E133070409%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%228%22%3E01.01.02%24jEnglisch%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22045W%22%3E%0A%09%09%09%3Csbf+id%3D%229%22%3E133071227%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%228%22%3E03.11.01%24jKindersprache%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22045W%22%3E%0A%09%09%09%3Csbf+id%3D%229%22%3E133094081%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%228%22%3E03.21.07.046.01%24jErz%C3%A4hlen%24vim+Unterricht%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22046M%22%3E%0A%09%09%09%3Csbf+id%3D%22a%22%3E30+Literaturangaben%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22201B/01%22%3E%0A%09%09%09%3Csbf+id%3D%220%22%3E13-03-06%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%22t%22%3E19%3A18%3A56.000%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22203@/01%22%3E%0A%09%09%09%3Csbf+id%3D%220%22%3E368791556%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22208@/01%22%3E%0A%09%09%09%3Csbf+id%3D%22a%22%3E09-03-06%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%22b%22%3Ee%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22209A/01%22%3E%0A%09%09%09%3Csbf+id%3D%22a%22%3E0%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%22f%22%3E000%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%22x%22%3E00%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22209B/01%22%3E%0A%09%09%09%3Csbf+id%3D%22a%22%3E8%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%22x%22%3E05%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22247C/01%22%3E%0A%09%09%09%3Csbf+id%3D%229%22%3E129368261%3C/sbf%3E%0A%09%09%09%3Csbf+id%3D%228%22%3EFrankfurt%2C+Bibliographie+Linguistischer+Literatur%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%09%09%3Ctag+id%3D%22201U/01%22%3E%0A%09%09%09%3Csbf+id%3D%220%22%3Eutf8%3C/sbf%3E%0A%09%09%3C/tag%3E%0A%3C/delivery-message%3E+%0A%3C/bll-export%3E
1 „Gefällt mir“

Hallo Tobias,

perfekt, vielen Dank für deine Hilfe!

Als Markdwon-Link funktioniert es aber, oder? Für das konkrete Beispiel: link

Der von Tobias abgelegte Link funktioniert soweit, der in deiner letzten Amtwort resultiert im Playground in der folgenden Fehlermeldung:

Error

  • Response from Server with Status-Code „500“ and Status-Text „Server Error“.

  • Exception with Message „missing ‚;‘ at ‚http‘ in Flux“.

Ah ok. Danke für den Hinweis, ich hatte nicht auf „Process“ geklickt.