Konvertieren Sie DublinCore in MARC
610
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.
0 Antworten auf die Frage
Verwandte Probleme
-
8
Anzeigen von XML im Chrome-Browser
-
4
Wie kann ich unformatierte RSS-XML in einem Browser anzeigen?
-
5
Grep-Tool für XML
-
6
Problem mit einem Dokument: Ungültiges Byte 3 der 3-Byte-UTF-8-Sequenz
-
3
Wie speichert man ein XML-Dokument in Mac OS X?
-
2
Tool zum Ausfüllen von XML-Dateien auf XSD-Basis
-
3
Stellen Sie sicher, dass Emacs die Stückliste nicht aus XML-Dateien entfernen
-
2
Transformieren Sie eine DTD in ein XSD-Schema
-
1
Excel Pivot-Tabelle aus XML lesen
-
5
Vorteile des DOCX-Formats gegenüber DOC