I'm trying to set up a DSpace community containing two collections. Collection 1 contains conference papers uploaded manually into DSpace using the submit feature. Collection 2 contains only metadata of journal papers harvested from an OJS site via OAI-PMH. I would like to be able to browse through and search among all conference and journal papers together. There are, however, a few discrepancies in the metadata fields assigned to the manually uploaded conference papers compared to the metadata fields of the harvested journal papers. For example, the journal papers contain the abstract in the "dc.description" field, which does not show in the Mirage2 theme since it requires the abstract to be stored in "dc.description.abstract". Similarly, the Mirage2 theme expects the date to be stored in "dc.date.issued", while the journal papers contain issue dates in the field "dc.date". Is there any way DSpace can be instructed to map one metadata field into another to resolve this issue?
I've tried editing the [dspace]/webapps/xmlui/themes/Mirage2/xsl/aspect/artifactbrowser/item-view.xsl file to make DSpace look for either the "dc.date" or "dc.date.issued" fields when displaying the issue date, but this doesn't resolve issues like the Discovery feature filtering only based on "dc.date.issued". I'm thinking there's got to be a more straightforward solution to this.
Here's an example of the modifications I've made to the itemSummaryView-DIM-date template
<xsl:template name="itemSummaryView-DIM-date">
<xsl:if test="dim:field[@element='date' and @qualifier='issued' and descendant::text()]">
<div class="simple-item-view-date word-break item-page-field-wrapper table">
<h5>
<b><i18n:text>xmlui.dri2xhtml.METS-1.0.item-date</i18n:text></b>
</h5>
<xsl:for-each select="dim:field[@element='date' and @qualifier='issued']">
<xsl:copy-of select="substring(./node(),1,10)"/>
<xsl:if test="count(following-sibling::dim:field[@element='date' and @qualifier='issued']) != 0">
<br/>
</xsl:if>
</xsl:for-each>
</div>
</xsl:if>
<xsl:if test="dim:field[@element='date' and not(@qualifier) and descendant::text()]">
<div class="simple-item-view-date word-break item-page-field-wrapper table">
<h5>
<b><i18n:text>xmlui.dri2xhtml.METS-1.0.item-date</i18n:text></b>
</h5>
<xsl:for-each select="dim:field[@element='date' and not(@qualifier)]">
<xsl:copy-of select="substring(./node(),1,10)"/>
<xsl:if test="count(following-sibling::dim:field[@element='date' and not(@qualifier)]) != 0">
<br/>
</xsl:if>
</xsl:for-each>
</div>
</xsl:if>
</xsl:template>
I've made similar edits to the itemSummaryView-DIM-abstract and itemSummaryView-DIM-URI templates, but I think there should be a more elegant solution to this.