Skip to content
Snippets Groups Projects
Commit 71fc7ece authored by Josef Moravec's avatar Josef Moravec Committed by Demian Katz
Browse files

Update DOAJ OAI configuration (#944)

parent ebef5a3d
No related merge requests found
......@@ -3,17 +3,17 @@
xmlns:php="http://php.net/xsl"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/2001/XMLSchema-instance"
xmlns:doaj="http://www.doaj.org/schemas/">
xmlns:oai_doaj="http://doaj.org/features/oai_doaj/1.0/">
<xsl:output method="xml" indent="yes" encoding="utf-8"/>
<xsl:param name="institution">My University</xsl:param>
<xsl:param name="institution">Directory of Open Access Journals</xsl:param>
<xsl:param name="collection">DOAJ</xsl:param>
<xsl:template match="doaj:record">
<xsl:template match="oai_doaj:doajArticle">
<add>
<doc>
<!-- ID -->
<!-- Important: This relies on an <identifier> tag being injected by the OAI-PMH harvester. -->
<field name="id">
<xsl:value-of select="//doaj:doajIdentifier"/>
<xsl:value-of select="//identifier"/>
</field>
<!-- RECORDTYPE -->
......@@ -22,13 +22,13 @@
<!-- FULLRECORD -->
<!-- disabled for now; records are so large that they cause memory problems!
<field name="fullrecord">
<xsl:copy-of select="php:function('VuFind::xmlAsText', /doaj:record)"/>
<xsl:copy-of select="php:function('VuFind::xmlAsText', /oai_doaj:record)"/>
</field>
-->
<!-- ALLFIELDS -->
<field name="allfields">
<xsl:value-of select="normalize-space(string(/doaj:record))"/>
<xsl:value-of select="normalize-space(string(/oai_doaj:doajArticle))"/>
</field>
<!-- INSTITUTION -->
......@@ -42,16 +42,11 @@
</field>
<!-- LANGUAGE -->
<!-- TODO: add language support; in practice, there don't seem to be
many records with <language> tags in them. If we encounter any,
the code below is partially complete, but we probably need to
build a new language map for ISO 639-2b, which is the standard
specified by the DOAJ XML schema.
<xsl:if test="/doaj:record/doaj:language">
<xsl:for-each select="/doaj:record/doaj:language">
<xsl:if test="/oai_doaj:doajArticle/oai_doaj:language">
<xsl:for-each select="/oai_doaj:doajArticle/oai_doaj:language">
<xsl:if test="string-length() > 0">
<field name="language">
<xsl:value-of select="php:function('VuFind::mapString', normalize-space(string(.)), 'language_map_iso639-1.properties')"/>
<xsl:value-of select="php:function('VuFind::mapString', normalize-space(string(.)), 'language_map.properties')"/>
</field>
</xsl:if>
</xsl:for-each>
......@@ -62,8 +57,8 @@
<field name="format">Article</field>
<!-- AUTHOR -->
<xsl:if test="//doaj:authors/doaj:author/doaj:name">
<xsl:for-each select="//doaj:authors/doaj:author/doaj:name">
<xsl:if test="//oai_doaj:authors/oai_doaj:author/oai_doaj:name">
<xsl:for-each select="//oai_doaj:authors/oai_doaj:author/oai_doaj:name">
<xsl:if test="normalize-space()">
<field name="author">
<xsl:value-of select="normalize-space()"/>
......@@ -79,69 +74,69 @@
</xsl:if>
<!-- TITLE -->
<xsl:if test="//doaj:title[normalize-space()]">
<xsl:if test="//oai_doaj:title[normalize-space()]">
<field name="title">
<xsl:value-of select="//doaj:title[normalize-space()]"/>
<xsl:value-of select="//oai_doaj:title[normalize-space()]"/>
</field>
<field name="title_short">
<xsl:value-of select="//doaj:title[normalize-space()]"/>
<xsl:value-of select="//oai_doaj:title[normalize-space()]"/>
</field>
<field name="title_full">
<xsl:value-of select="//doaj:title[normalize-space()]"/>
<xsl:value-of select="//oai_doaj:title[normalize-space()]"/>
</field>
<field name="title_sort">
<xsl:value-of select="php:function('VuFind::stripArticles', string(//doaj:title[normalize-space()]))"/>
<xsl:value-of select="php:function('VuFind::stripArticles', string(//oai_doaj:title[normalize-space()]))"/>
</field>
</xsl:if>
<!-- PUBLISHER -->
<xsl:if test="//doaj:publisher[normalize-space()]">
<xsl:if test="//oai_doaj:publisher[normalize-space()]">
<field name="publisher">
<xsl:value-of select="//doaj:publisher[normalize-space()]"/>
<xsl:value-of select="//oai_doaj:publisher[normalize-space()]"/>
</field>
</xsl:if>
<!-- SERIES -->
<xsl:if test="//doaj:journalTitle[normalize-space()]">
<xsl:if test="//oai_doaj:journalTitle[normalize-space()]">
<field name="series">
<xsl:value-of select="//doaj:journalTitle[normalize-space()]"/>
<xsl:value-of select="//oai_doaj:journalTitle[normalize-space()]"/>
</field>
</xsl:if>
<!-- ISSN -->
<xsl:if test="//doaj:issn[normalize-space()]">
<xsl:if test="//oai_doaj:issn[normalize-space()]">
<field name="issn">
<xsl:value-of select="//doaj:issn[normalize-space()]"/>
<xsl:value-of select="//oai_doaj:issn[normalize-space()]"/>
</field>
</xsl:if>
<!-- ISSN -->
<xsl:if test="//doaj:eissn[normalize-space()]">
<xsl:if test="//oai_doaj:eissn[normalize-space()]">
<field name="issn">
<xsl:value-of select="//doaj:eissn[normalize-space()]"/>
<xsl:value-of select="//oai_doaj:eissn[normalize-space()]"/>
</field>
</xsl:if>
<!-- PUBLISHDATE -->
<xsl:if test="//doaj:publicationDate">
<xsl:if test="//oai_doaj:publicationDate">
<field name="publishDate">
<xsl:value-of select="//doaj:publicationDate"/>
<xsl:value-of select="//oai_doaj:publicationDate"/>
</field>
<field name="publishDateSort">
<xsl:value-of select="//doaj:publicationDate"/>
<xsl:value-of select="//oai_doaj:publicationDate"/>
</field>
</xsl:if>
<!-- DESCRIPTION -->
<xsl:if test="//doaj:abstract">
<xsl:if test="//oai_doaj:abstract">
<field name="description">
<xsl:value-of select="//doaj:abstract" />
<xsl:value-of select="//oai_doaj:abstract" />
</field>
</xsl:if>
<!-- SUBJECT -->
<xsl:if test="//doaj:keywords">
<xsl:for-each select="//doaj:keywords/doaj:keyword">
<xsl:if test="//oai_doaj:keywords">
<xsl:for-each select="//oai_doaj:keywords/oai_doaj:keyword">
<xsl:if test="string-length() > 0">
<field name="topic">
<xsl:value-of select="normalize-space()"/>
......@@ -151,13 +146,13 @@
</xsl:if>
<!-- URL -->
<xsl:if test="//doaj:fullTextUrl">
<xsl:if test="//oai_doaj:fullTextUrl">
<xsl:choose>
<xsl:when test="contains(//doaj:fullTextUrl, '://')">
<field name="url"><xsl:value-of select="//doaj:fullTextUrl[normalize-space()]"/></field>
<xsl:when test="contains(//oai_doaj:fullTextUrl, '://')">
<field name="url"><xsl:value-of select="//oai_doaj:fullTextUrl[normalize-space()]"/></field>
</xsl:when>
<xsl:otherwise>
<field name="url">http://<xsl:value-of select="//doaj:fullTextUrl[normalize-space()]"/></field>
<field name="url">http://<xsl:value-of select="//oai_doaj:fullTextUrl[normalize-space()]"/></field>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment