Конвертировать DublinCore в MARC
516
Pouria
Я пытаюсь преобразовать следующий каталог DublinCore XML:
<?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>
в каталог MARC, используя официальный файл XLST следующим образом:
<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>
Полученный преобразованный файл накапливает все элементы в двух статьях в одну запись следующим образом (я цитирую только часть этого):
<?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>
Однако мне нужно преобразовать коллекцию элементов в DoublineCore в коллекцию элементов в формате MARC. У кого-нибудь есть идея, как я могу отредактировать выражение XPATH в файле XLST (второй блок кода), чтобы получить желаемый результат?
Заранее спасибо.
0 ответов на вопрос
Похожие вопросы
-
8
Отображение XML в браузере Chrome
-
4
Как я могу просмотреть неформатированный RSS XML в браузере?
-
5
Grep инструмент для XML
-
-
6
Проблема с документом: неверный байт 3 из 3-байтовой последовательности UTF-8
-
3
Как сохранить документ XML в Mac OS X?
-
2
Инструмент для заполнения XML-файла на основе XSD
-
3
Заставьте emacs не удалять спецификацию из файлов XML
-
2
Преобразовать DTD в схему XSD
-
1
Чтение сводной таблицы Excel из xml
-
5
Преимущества формата DOCX перед DOC