Script de conversión de MARC21 a MARCXML
El formato MARC o Machine Readable Cataloging nació en los años 60 para compartir registros bibliográficos y catálogos entre bibliotecas.
Ejemplo de un registro en formato MARC21:
00549nam 2200181 450 008004100000021002100041035001500062080001000077100\
00280008724500630011525000100017826000300018830000300021849000380024850400270028\
6650002400313999003000337^^920413s1988 sp ad W 000 cat ^^10^_a84-7596-137-1^_bm^^ ^_a0000-00560^^00^_a82.08^^10^_aCassany i Comas^_hDaniel^^10^_aDescriure escriure^_bcom s'aprèn a escriure^_dDaniel Cassany^^00^_a2ª ed^^00^_aBarcelona^_bEmpúries^_c1988^^00^_a192 p.^_bil.^_igràf.^_c20 cm^^00^_aBiblioteca Universal Empúries^_v35^^00^_aBibliogr.: p.[185]-190^^00^_aLiteratura^_xTècnica^^00^_aVTLSFF4002 930429 0002^^^]
Posteriormente nace MARCXML, con la definición de un XML Schema para describir la estructura MARC21 y así poder codificar los registros MARC en XML:
http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd
El equivalente al ejemplo anterior, pero en formato MARC es el siguiente:
<?xml version="1.0" encoding="iso-8859-1" ?>
<marc:collection xmlns:marc="http://www.loc.gov/MARC21/slim"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd">
<marc:record>
<marc:leader>00549nam 2200181 450</marc:leader>
<marc:controlfield tag="008">920413s1988 sp ad W 000 cat</marc:controlfield>
<marc:datafield tag="021" ind1="1" ind2="0">
<marc:subfield code="a">84-7596-137-1</marc:subfield>
<marc:subfield code="b">m</marc:subfield>
</marc:datafield>
<marc:datafield tag="035" ind1="" ind2="">
<marc:subfield code="a">0000-00560</marc:subfield>
</marc:datafield>
<marc:datafield tag="080" ind1="0" ind2="0">
<marc:subfield code="a">82.08</marc:subfield>
</marc:datafield>
<marc:datafield tag="100" ind1="1" ind2="0">
<marc:subfield code="a">Cassany i Comas</marc:subfield>
<marc:subfield code="h">Daniel</marc:subfield>
</marc:datafield>
<marc:datafield tag="245" ind1="1" ind2="0">
<marc:subfield code="a">Descriure escriure</marc:subfield>
<marc:subfield code="b">com s'aprèn a escriure</marc:subfield>
<marc:subfield code="d">Daniel Cassany</marc:subfield>
</marc:datafield>
<marc:datafield tag="250" ind1="0" ind2="0">
<marc:subfield code="a">2ª ed</marc:subfield>
</marc:datafield>
<marc:datafield tag="260" ind1="0" ind2="0">
<marc:subfield code="a">Barcelona</marc:subfield>
<marc:subfield code="b">Empúries</marc:subfield>
<marc:subfield code="c">1988</marc:subfield>
</marc:datafield>
<marc:datafield tag="300" ind1="0" ind2="0">
<marc:subfield code="a">192 p.</marc:subfield>
<marc:subfield code="b">il.</marc:subfield>
<marc:subfield code="i">gràf.</marc:subfield>
<marc:subfield code="c">20 cm</marc:subfield>
</marc:datafield>
<marc:datafield tag="490" ind1="0" ind2="0">
<marc:subfield code="a">Biblioteca Universal Empúries</marc:subfield>
<marc:subfield code="v">35</marc:subfield>
</marc:datafield>
<marc:datafield tag="504" ind1="0" ind2="0">
<marc:subfield code="a">Bibliogr.: p.[185]-190</marc:subfield>
</marc:datafield>
<marc:datafield tag=”650″ ind1=”0″ ind2=”0″>
<marc:subfield code=”a”>Literatura</marc:subfield>
<marc:subfield code=”x”>Tècnica</marc:subfield>
</marc:datafield>
<marc:datafield tag=”999″ ind1=”0″ ind2=”0″>
<marc:subfield code=”a”>VTLSFF4002 930429 0002</marc:subfield>
</marc:datafield>
</marc:record>
</marc:collection>
Así pues, ante la necesidad de convertir de MARC21 a MARCXML, he desarrollado un sencillo script en Python que realiza el proceso. Para utilizarlo, sólo es necesario pasarle como parámetro el fichero de origen y el destino:
python marc2xml.py
Usage: run.py <fichero_marc> <fichero_xml>
Podeis descargar el script aquí