Konvertieren Sie DublinCore in MARC

571
Pouria

Ich versuche den folgenden DublinCore XML-Katalog zu konvertieren:

<?xml version="1.0" encoding="UTF-8"?> <articlesinDublinCore xmlns:dc="http://purl.org/dc/elements/1.1/"> <article> <dc:creator>Laura Steinert</dc:creator> <dc:creator>Ulrich Hoppe</dc:creator> <dc:language>English</dc:language> <dc:date>2015-09-16</dc:date> <dc:title>Using Network Analytics for the Recommendation of Scientific Papers </dc:title> <dc:format>PDF</dc:format> <dc:publisher>Springer</dc:publisher> <dc:type>Text</dc:type> </article> <article> <dc:contributor>Nicholas Baloian</dc:contributor> <dc:contributor>Yasser Zorian</dc:contributor> <dc:language>English</dc:language> <dc:date>2015-09-16</dc:date>  <dc:title>Collaboration and Technology</dc:title> <dc:format>PDF</dc:format>  <dc:publisher>Springer</dc:publisher> <dc:type>Collection</dc:type> </article> </articlesinDublinCore> 

zu einem MARC-Katalog mit der offiziellen XLST-Datei wie folgt:

<xsl:template match="/"> <record 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" >  <datafield tag="042" ind1=" " ind2=" "> <subfield code="a">dc</subfield> </datafield>  <xsl:for-each select="//dc:contributor"> <datafield tag="720" ind1="0" ind2="0"> <subfield code="a"> <xsl:value-of select="."/> </subfield> <subfield code="e">collaborator</subfield> </datafield> </xsl:for-each>  <xsl:for-each select="//dc:coverage"> <datafield tag="500" ind1=" " ind2=" "> <subfield code="a"> <xsl:value-of select="."/> </subfield> </datafield> </xsl:for-each>  <xsl:for-each select="//dc:creator"> <datafield tag="720" ind1=" " ind2=" "> <subfield code="a"> <xsl:value-of select="."/> </subfield> <subfield code="e">author</subfield> </datafield> </xsl:for-each>  <xsl:for-each select="//dc:date"> <datafield tag="260" ind1=" " ind2=" "> <subfield code="c"> <xsl:value-of select="."/> </subfield> </datafield> </xsl:for-each>   <xsl:for-each select="//dc:description"> <datafield tag="520" ind1=" " ind2=" "> <subfield code="a"> <xsl:value-of select="."/> </subfield> </datafield> </xsl:for-each>  <xsl:for-each select="//dc:format"> <datafield tag="856" ind1=" " ind2=" "> <subfield code="q"> <xsl:value-of select="."/> </subfield> </datafield> </xsl:for-each>  <xsl:for-each select="//dc:identifier"> <datafield tag="024" ind1="8" ind2=" "> <subfield code="a"> <xsl:value-of select="."/> </subfield> </datafield> </xsl:for-each>  <xsl:for-each select="//dc:language"> <datafield tag="546" ind1=" " ind2=" "> <subfield code="a"> <xsl:value-of select="."/> </subfield> </datafield> </xsl:for-each>  <xsl:for-each select="//dc:publisher"> <datafield tag="260" ind1=" " ind2=" "> <subfield code="b"> <xsl:value-of select="."/> </subfield> </datafield> </xsl:for-each>  <xsl:for-each select="//dc:relation"> <datafield tag="787" ind1="0" ind2=" "> <subfield code="n"> <xsl:value-of select="."/> </subfield> </datafield> </xsl:for-each>  <xsl:for-each select="//dc:rights"> <datafield tag="540" ind1=" " ind2=" "> <subfield code="a"> <xsl:value-of select="."/> </subfield> </datafield> </xsl:for-each>  <xsl:for-each select="//dc:source"> <datafield tag="786" ind1="0" ind2=" "> <subfield code="n"> <xsl:value-of select="."/> </subfield> </datafield> </xsl:for-each>  <xsl:for-each select="//dc:subject"> <datafield tag="653" ind1=" " ind2=" "> <subfield code="a"> <xsl:value-of select="."/> </subfield> </datafield> </xsl:for-each>  <xsl:for-each select="//dc:title[1]"> <datafield tag="245" ind1="0" ind2="0"> <subfield code="a"> <xsl:value-of select="."/> </subfield> </datafield> </xsl:for-each>  <xsl:for-each select="//dc:title[position()>1]"> <datafield tag="246" ind1="3" ind2="3"> <subfield code="a"> <xsl:value-of select="."/> </subfield> </datafield> </xsl:for-each>  <xsl:for-each select="//dc:type"> <datafield tag="655" ind1="7" ind2=" "> <subfield code="a"> <xsl:value-of select="."/> </subfield> <subfield code="2">local</subfield> </datafield> </xsl:for-each> </record> </xsl:template> 

Die resultierende konvertierte Datei sammelt alle Elemente in zwei Artikeln in einem einzigen Datensatz wie folgt (ich zitiere nur einen Teil davon):

<?xml version="1.0" encoding="utf-8"?> <record xmlns="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"> <datafield tag="042" ind1=" " ind2=" "> <subfield code="a">dc</subfield> </datafield> <datafield tag="720" ind1="0" ind2="0"> <subfield code="a">Nicholas Baloian</subfield> <subfield code="e">collaborator</subfield> </datafield> <datafield tag="720" ind1="0" ind2="0"> <subfield code="a">Yasser Zorian</subfield> <subfield code="e">collaborator</subfield> </datafield> </record> 

Ich muss jedoch die Sammlung von Elementen in DoublineCore in eine Sammlung von Elementen im MARC-Format konvertieren. Hat jemand eine Idee, wie ich den XPATH-Ausdruck in der XLST-Datei (zweiter Codeblock) bearbeiten kann, um mein gewünschtes Ergebnis zu erhalten?

Danke im Voraus.

1

0 Antworten auf die Frage