From ef9ed865d7455d357d9933d039c1bf7acc6aa79a Mon Sep 17 00:00:00 2001 From: Jens Kupferschmidt <kupferschmidt@rz.uni-leipzig.de> Date: Thu, 10 Sep 2020 15:41:01 +0200 Subject: [PATCH] fix oai2 support --- src/main/resources/xsl/biocol2mods.xsl | 463 +++++++++++---------- src/main/resources/xsl/biocol2oai_dc.xsl | 121 +++--- src/main/resources/xsl/biocol2oai_lido.xsl | 22 + src/main/resources/xsl/biocol2oai_mods.xsl | 17 +- 4 files changed, 309 insertions(+), 314 deletions(-) create mode 100644 src/main/resources/xsl/biocol2oai_lido.xsl diff --git a/src/main/resources/xsl/biocol2mods.xsl b/src/main/resources/xsl/biocol2mods.xsl index fa9f1f5..e5f11f3 100644 --- a/src/main/resources/xsl/biocol2mods.xsl +++ b/src/main/resources/xsl/biocol2mods.xsl @@ -1,267 +1,272 @@ <?xml version="1.0" encoding="UTF-8"?> -<xsl:stylesheet version="1.0" xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" - xmlns:mods="http://www.loc.gov/mods/v3" > +<xsl:stylesheet version="1.0" xmlns="http://www.openarchives.org/OAI/2.0/" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:mods="http://www.loc.gov/mods/v3"> - <!-- for compatibility --> - <xsl:template match="mycoreobject[contains(@ID,'_biocol_')]" priority="1" mode="metsmeta"> + <xsl:template match="mycoreobject[contains(@ID,'_biocol_')]" mode="mods" priority="1"> <mods:mods> <xsl:attribute name="ID"> <xsl:value-of select="@ID" /> </xsl:attribute> - <xsl:apply-templates mode="mods-elements" select="." /> - </mods:mods> - </xsl:template> - - <!-- normal converter --> - <xsl:template match="mycoreobject[contains(@ID,'_biocol_')]" priority="1" mode="mods"> - <mods:mods> - <xsl:apply-templates mode="mods-elements" select="." /> - </mods:mods> - </xsl:template> - - <xsl:template match="mycoreobject[contains(@ID,'_biocol_')]" mode="mods-elements"> + + <xsl:variable name="xml" + select="document(concat('xslStyle:mycoreobject-xml:mcrobject:',@ID))/mycoreobject" /> + <!-- mods:title - Objektbezeichnung, Gattung/Art --> - <xsl:choose> - <xsl:when test="./metadata/def.biocol09/biocol09"> - <mods:titleInfo> - <mods:title> - <xsl:value-of select="./metadata/def.biocol09/biocol09/text()" /> - </mods:title> - <xsl:if test="./metadata/def.biocol30/biocol30 or ./metadata/def.biocol31/biocol31"> - <mods:subTitle> - <xsl:value-of select="concat(./metadata/def.biocol30/biocol30/text(), ' | ', ./metadata/def.biocol31/biocol31/text())" /> - </mods:subTitle> - </xsl:if> - </mods:titleInfo> - </xsl:when> - <xsl:otherwise> - <mods:titleInfo> - <mods:title> - <xsl:value-of select="concat(./metadata/def.biocol30/biocol30/text(), ' | ', ./metadata/def.biocol31/biocol31/text())" /> - </mods:title> - </mods:titleInfo> - </xsl:otherwise> - </xsl:choose> + <xsl:choose> + <xsl:when test="$xml/metadata/def.biocol09/biocol09"> + <mods:titleInfo> + <mods:title> + <xsl:value-of select="$xml/metadata/def.biocol09/biocol09/text()" /> + </mods:title> + <xsl:if test="$xml/metadata/def.biocol30/biocol30 or $xml/metadata/def.biocol31/biocol31"> + <mods:subTitle> + <xsl:value-of + select="concat($xml/metadata/def.biocol30/biocol30/text(), ' | ', $xml/metadata/def.biocol31/biocol31/text())" /> + </mods:subTitle> + </xsl:if> + </mods:titleInfo> + </xsl:when> + <xsl:otherwise> + <mods:titleInfo> + <mods:title> + <xsl:value-of + select="concat($xml/metadata/def.biocol30/biocol30/text(), ' | ', $xml/metadata/def.biocol31/biocol31/text())" /> + </mods:title> + </mods:titleInfo> + </xsl:otherwise> + </xsl:choose> <!-- mods:creator - Editor des Datensatzes --> - <xsl:for-each select="./metadata/def.biocol06/biocol06"> - <mods:name type="personal"> - <mods:namePart> - <xsl:value-of select="." /> - </mods:namePart> - <mods:role> - <mods:roleTerm type="text" authroity="marcrelator">creator</mods:roleTerm> - <mods:roleTerm type="code" authority="marcrelator">cre</mods:roleTerm> - <mods:roleTerm type="text" authority="marcrelator">author</mods:roleTerm> - <mods:roleTerm type="code" authority="marcrelator">aut</mods:roleTerm> - </mods:role> - </mods:name> - </xsl:for-each> + <xsl:for-each select="$xml/metadata/def.biocol06/biocol06"> + <mods:name type="personal"> + <mods:namePart> + <xsl:value-of select="." /> + </mods:namePart> + <mods:role> + <mods:roleTerm type="text" authroity="marcrelator">creator</mods:roleTerm> + <mods:roleTerm type="code" authority="marcrelator">cre</mods:roleTerm> + <mods:roleTerm type="text" authority="marcrelator">author</mods:roleTerm> + <mods:roleTerm type="code" authority="marcrelator">aut</mods:roleTerm> + </mods:role> + </mods:name> + </xsl:for-each> <!-- mods:genre - see https://www.loc.gov/standards/valuelist/marcgt.html --> - <mods:genre authority="marcgt">realia</mods:genre> + <mods:genre authority="marcgt">realia</mods:genre> - <!-- mods:originInfo - Fundort, Finder, Bestimmung / -er des Fundes, Funddatum --> - <xsl:if test="./metadata/def.biocol40/biocol40 or ./metadata/def.biocol42/biocol42 - or ./metadata/def.biocol43/biocol43 or ./metadata/def.biocol44/biocol44"> - <mods:originInfo> - <xsl:attribute name="eventyType">discovery</xsl:attribute> - <xsl:for-each select="./metadata/def.biocol40/biocol40"> - <mods:placeTerm> - <mods:place> + <!-- mods:originInfo - Fundort, Finder, Bestimmung / -er des Fundes, Funddatum --> + <xsl:if + test="$xml/metadata/def.biocol40/biocol40 or $xml/metadata/def.biocol42/biocol42 + or $xml/metadata/def.biocol43/biocol43 or $xml/metadata/def.biocol44/biocol44"> + <mods:originInfo> + <xsl:attribute name="eventyType">discovery</xsl:attribute> + <xsl:for-each select="$xml/metadata/def.biocol40/biocol40"> + <mods:placeTerm> + <mods:place> + <xsl:value-of select="text()" /> + </mods:place> + </mods:placeTerm> + </xsl:for-each> + <xsl:for-each select="$xml/metadata/def.biocol42/biocol42"> + <mods:publisher> <xsl:value-of select="text()" /> - </mods:place> - </mods:placeTerm> - </xsl:for-each> - <xsl:for-each select="./metadata/def.biocol42/biocol42"> - <mods:publisher> - <xsl:value-of select="text()" /> - </mods:publisher> - </xsl:for-each> - <xsl:for-each select="./metadata/def.biocol44/biocol44"> - <mods:publisher> - <xsl:value-of select="text()" /> - </mods:publisher> - </xsl:for-each> - <xsl:for-each select="./metadata/def.biocol43/biocol43"> - <mods:dateIssued> - <xsl:value-of select="text/text()" /> - </mods:dateIssued> - </xsl:for-each> - </mods:originInfo> - </xsl:if> - - <mods:language> - <mods:languageTerm type="text">German</mods:languageTerm> - <mods:languageTerm type="code" authority="iso639-2b">ger</mods:languageTerm> - </mods:language> + </mods:publisher> + </xsl:for-each> + <xsl:for-each select="$xml/metadata/def.biocol44/biocol44"> + <mods:publisher> + <xsl:value-of select="text()" /> + </mods:publisher> + </xsl:for-each> + <xsl:for-each select="$xml/metadata/def.biocol43/biocol43"> + <mods:dateIssued> + <xsl:value-of select="text/text()" /> + </mods:dateIssued> + </xsl:for-each> + </mods:originInfo> + </xsl:if> + + <mods:language> + <mods:languageTerm type="text">German</mods:languageTerm> + <mods:languageTerm type="code" authority="iso639-2b">ger</mods:languageTerm> + </mods:language> <!-- mods:physicalDescription/typeOfResource - richtet sich nach dem Objekttypen --> <!-- typeOfResource: see https://www.loc.gov/standards/valuelist/rdacontent.html --> - <xsl:choose> - <xsl:when test="./metadata/def.biocol07/biocol07[@categid='objecttype_otolith']"> - <mods:physicalDescription> - <mods:digitalOrigin>reformatted digital</mods:digitalOrigin> - <mods:form>biogenes Kalkkonkrement</mods:form> - </mods:physicalDescription> - <mods:typeOfResource authority="rdacontent">three dimensional object</mods:typeOfResource> - </xsl:when> - <xsl:when test="./metadata/def.biocol07/biocol07[@categid='objecttype_herbar']"> - <mods:physicalDescription> - <mods:digitalOrigin>reformatted digital</mods:digitalOrigin> - <mods:form>Plantea</mods:form> - </mods:physicalDescription> - <mods:typeOfResource authority="rdacontent">still image</mods:typeOfResource> - </xsl:when> - <xsl:otherwise> - <mods:physicalDescription> - <mods:digitalOrigin>reformatted digital</mods:digitalOrigin> - <mods:form>unknown</mods:form> - </mods:physicalDescription> - <mods:typeOfResource authority="rdacontent">mixed material</mods:typeOfResource> - </xsl:otherwise> - </xsl:choose> - - <mods:subject> + <xsl:choose> + <xsl:when test="$xml/metadata/def.biocol07/biocol07[@categid='objecttype_otolith']"> + <mods:physicalDescription> + <mods:digitalOrigin>reformatted digital</mods:digitalOrigin> + <mods:form>biogenes Kalkkonkrement</mods:form> + </mods:physicalDescription> + <mods:typeOfResource authority="rdacontent">three dimensional object</mods:typeOfResource> + </xsl:when> + <xsl:when test="$xml/metadata/def.biocol07/biocol07[@categid='objecttype_herbar']"> + <mods:physicalDescription> + <mods:digitalOrigin>reformatted digital</mods:digitalOrigin> + <mods:form>Plantea</mods:form> + </mods:physicalDescription> + <mods:typeOfResource authority="rdacontent">still image</mods:typeOfResource> + </xsl:when> + <xsl:otherwise> + <mods:physicalDescription> + <mods:digitalOrigin>reformatted digital</mods:digitalOrigin> + <mods:form>unknown</mods:form> + </mods:physicalDescription> + <mods:typeOfResource authority="rdacontent">mixed material</mods:typeOfResource> + </xsl:otherwise> + </xsl:choose> + + <mods:subject> + + <!-- mods:subject/titleInfo - objectType --> + <xsl:if test="$xml/metadata/def.biocol07"> + <mods:titleInfo> + <xsl:for-each select="./metadata/def.biocol07/biocol07"> + <xsl:variable name="subjectlinkURL"> + <xsl:call-template name="linkClassQueryURL"> + <xsl:with-param name="classid" select="@classid" /> + <xsl:with-param name="categid" select="@categid" /> + </xsl:call-template> + </xsl:variable> + <xsl:for-each + select="document($subjectlinkURL)/mycoreclass/categories/category/label[lang($DefaultLang)]"> + <xsl:value-of select="@text" /> + </xsl:for-each> + </xsl:for-each> + </mods:titleInfo> + </xsl:if> + + <!-- mods:subject/topic - family, kind, genus, ... --> + <xsl:if + test="$xml/metadata/def.biocol20/biocol20 or $xml/metadata/def.biocol21/biocol21 or $xml/metadata/def.biocol22/biocol22 + or $xml/metadata/def.biocol23/biocol23 or $xml/metadata/def.biocol24/biocol24 or $xml/metadata/def.biocol25/biocol25 + or $xml/metadata/def.biocol26/biocol26 or $xml/metadata/def.biocol27/biocol27 or $xml/metadata/def.biocol28/biocol28 + or $xml/metadata/def.biocol29/biocol29"> + <mods:topic> + <xsl:value-of + select="concat($xml/metadata/def.biocol20/biocol20, ' | ', $xml/metadata/def.biocol21/biocol21, ' | ', $xml/metadata/def.biocol22/biocol22, + ' | ', $xml/metadata/def.biocol23/biocol23, ' | ', $xml/metadata/def.biocol24/biocol24, ' | ', $xml/metadata/def.biocol25/biocol25, + ' | ', $xml/metadata/def.biocol26/biocol26, ' | ', $xml/metadata/def.biocol27/biocol27, ' | ', $xml/metadata/def.biocol28/biocol28, + ' | ', $xml/metadata/def.biocol29/biocol29)" /> + </mods:topic> + </xsl:if> + + <!-- mods:subject/hierarchicalGeographic - places --> + <xsl:if + test="$xml/metadata/def.biocol61/biocol61 or $xml/metadata/def.biocol62/biocol62 or $xml/metadata/def.biocol63/biocol63"> + <mods:hierarchicalGeographic> + <xsl:for-each select="$xml/metadata/def.biocol61/biocol61"> + <mods:country> + <xsl:value-of select="text()" /> + </mods:country> + </xsl:for-each> + <xsl:for-each select="$xml/metadata/def.biocol62/biocol62"> + <mods:region> + <xsl:value-of select="text()" /> + </mods:region> + </xsl:for-each> + <xsl:for-each select="$xml/metadata/def.biocol63/biocol63"> + <mods:city> + <xsl:value-of select="text()" /> + </mods:city> + </xsl:for-each> + </mods:hierarchicalGeographic> + </xsl:if> + </mods:subject> - <!-- mods:subject/titleInfo - objectType --> - <mods:titleInfo> - <xsl:for-each select="./metadata/def.biocol07/biocol07"> + <!-- mods:classification - ddc --> + <xsl:for-each select="$xml/metadata/def.biocol08/biocol08"> + <mods:classification> + <xsl:attribute name="authority">ddc</xsl:attribute> <xsl:variable name="subjectlinkURL"> <xsl:call-template name="linkClassQueryURL"> - <xsl:with-param name="classid" select="@classid"/> - <xsl:with-param name="categid" select="@categid"/> + <xsl:with-param name="classid" select="@classid" /> + <xsl:with-param name="categid" select="@categid" /> </xsl:call-template> </xsl:variable> - <xsl:for-each select="document($subjectlinkURL)/mycoreclass/categories/category/label[lang($DefaultLang)]"> - <xsl:value-of select="@text"/> - </xsl:for-each> - </xsl:for-each> - </mods:titleInfo> - - <!-- mods:subject/topic - family, kind, genus, ... --> - <xsl:if test="./metadata/def.biocol20/biocol20 or ./metadata/def.biocol21/biocol21 or ./metadata/def.biocol22/biocol22 - or ./metadata/def.biocol23/biocol23 or ./metadata/def.biocol24/biocol24 or ./metadata/def.biocol25/biocol25 - or ./metadata/def.biocol26/biocol26 or ./metadata/def.biocol27/biocol27 or ./metadata/def.biocol28/biocol28 - or ./metadata/def.biocol29/biocol29"> - <mods:topic> - <xsl:value-of select="concat(./metadata/def.biocol20/biocol20, ' | ', ./metadata/def.biocol21/biocol21, ' | ', ./metadata/def.biocol22/biocol22, - ' | ', ./metadata/def.biocol23/biocol23, ' | ', ./metadata/def.biocol24/biocol24, ' | ', ./metadata/def.biocol25/biocol25, - ' | ', ./metadata/def.biocol26/biocol26, ' | ', ./metadata/def.biocol27/biocol27, ' | ', ./metadata/def.biocol28/biocol28, - ' | ', ./metadata/def.biocol29/biocol29)" /> - </mods:topic> - </xsl:if> - - <!-- mods:subject/hierarchicalGeographic - places --> - <xsl:if test="./metadata/def.biocol61/biocol61 or ./metadata/def.biocol62/biocol62 or ./metadata/def.biocol63/biocol63"> - <mods:hierarchicalGeographic> - <xsl:for-each select="./metadata/def.biocol61/biocol61"> - <mods:country> - <xsl:value-of select="text()" /> - </mods:country> + <xsl:for-each + select="document($subjectlinkURL)/mycoreclass/categories/category/label[lang($DefaultLang)]"> + <xsl:value-of select="@text" /> </xsl:for-each> - <xsl:for-each select="./metadata/def.biocol62/biocol62"> - <mods:region> - <xsl:value-of select="text()" /> - </mods:region> - </xsl:for-each> - <xsl:for-each select="./metadata/def.biocol63/biocol63"> - <mods:city> - <xsl:value-of select="text()" /> - </mods:city> - </xsl:for-each> - </mods:hierarchicalGeographic> - </xsl:if> - </mods:subject> - - <!-- mods:classification - ddc --> - <xsl:for-each select="./metadata/def.biocol08/biocol08"> - <mods:classification> - <xsl:attribute name="authority">ddc</xsl:attribute> - <xsl:variable name="subjectlinkURL"> - <xsl:call-template name="linkClassQueryURL"> - <xsl:with-param name="classid" select="@classid"/> - <xsl:with-param name="categid" select="@categid"/> - </xsl:call-template> - </xsl:variable> - <xsl:for-each select="document($subjectlinkURL)/mycoreclass/categories/category/label[lang($DefaultLang)]"> - <xsl:value-of select="@text"/> - </xsl:for-each> - </mods:classification> - </xsl:for-each> + </mods:classification> + </xsl:for-each> - <!-- mods:relatedItem - collection information --> - <mods:relatedItem type="host"> + <!-- mods:relatedItem - collection information --> + <mods:relatedItem type="host"> - <!-- mods:relatedItem/title - Teilsammlung --> - <mods:titleInfo> - <mods:title> - <xsl:for-each select="./metadata/def.biocol02/biocol02"> - <xsl:variable name="subjectlinkURL"> - <xsl:call-template name="linkClassQueryURL"> - <xsl:with-param name="classid" select="@classid"/> - <xsl:with-param name="categid" select="@categid"/> - </xsl:call-template> - </xsl:variable> - <xsl:for-each select="document($subjectlinkURL)/mycoreclass/categories/category/label[lang($DefaultLang)]"> - <xsl:value-of select="@text"/> - </xsl:for-each> - </xsl:for-each> - </mods:title> - </mods:titleInfo> + <!-- mods:relatedItem/title - Teilsammlung --> + <xsl:if test="$xml/metadata/def.biocol02"> + <mods:titleInfo> + <mods:title> + <xsl:for-each select="$xml/metadata/def.biocol02/biocol02"> + <xsl:variable name="subjectlinkURL"> + <xsl:call-template name="linkClassQueryURL"> + <xsl:with-param name="classid" select="@classid" /> + <xsl:with-param name="categid" select="@categid" /> + </xsl:call-template> + </xsl:variable> + <xsl:for-each + select="document($subjectlinkURL)/mycoreclass/categories/category/label[lang($DefaultLang)]"> + <xsl:value-of select="@text" /> + </xsl:for-each> + </xsl:for-each> + </mods:title> + </mods:titleInfo> + </xsl:if> - <!-- mods:relatedItem/name - contributor --> - <mods:name type="personal"> - <mods:namePart type="given">Jens</mods:namePart> - <mods:namePart type="family">Kupferschmidt</mods:namePart> - <mods:affiliation>Universitätsrechenzentrum Leipzig; Deutschland</mods:affiliation> - <mods:displayForm> - <xsl:text>Jens Kupferschmidt; Universitätsrechenzentrum Leipzig; Deutschland</xsl:text> - </mods:displayForm> - <mods:role> - <mods:roleTerm type="text" authroity="marcrelator">contributor</mods:roleTerm> - <mods:roleTerm type="code" authority="marcrelator">ctb</mods:roleTerm> - </mods:role> - </mods:name> + <!-- mods:relatedItem/name - contributor --> + <mods:name type="personal"> + <mods:namePart type="given">Jens</mods:namePart> + <mods:namePart type="family">Kupferschmidt</mods:namePart> + <mods:affiliation>Universitätsrechenzentrum Leipzig; Deutschland</mods:affiliation> + <mods:displayForm> + <xsl:text>Jens Kupferschmidt; Universitätsrechenzentrum Leipzig; Deutschland</xsl:text> + </mods:displayForm> + <mods:role> + <mods:roleTerm type="text" authroity="marcrelator">contributor</mods:roleTerm> + <mods:roleTerm type="code" authority="marcrelator">ctb</mods:roleTerm> + </mods:role> + </mods:name> - <!-- mods:relatedItem/mods:genre - see https://www.loc.gov/standards/valuelist/marcgt.html --> - <mods:genre authority="marcgt">online system or service</mods:genre> + <!-- mods:relatedItem/mods:genre - see https://www.loc.gov/standards/valuelist/marcgt.html --> + <mods:genre authority="marcgt">online system or service</mods:genre> - <!-- mods:relatedItem/mods:typeOfResource - see https://www.loc.gov/standards/valuelist/rdacontent.html --> - <mods:typeOfResource collection="yes">software, multimedia</mods:typeOfResource> + <!-- mods:relatedItem/mods:typeOfResource - see https://www.loc.gov/standards/valuelist/rdacontent.html --> + <mods:typeOfResource collection="yes">computer dataset</mods:typeOfResource> - <!-- mods:relatedItem/location - URL --> - <mods:location> - <mods:url> - <xsl:value-of select="$WebApplicationBaseURL" /> - </mods:url> - <mods:physicalLocation>Universität Leipzig</mods:physicalLocation> - </mods:location> - - </mods:relatedItem> + <!-- mods:relatedItem/location - URL --> + <mods:location> + <mods:url> + <xsl:value-of select="$WebApplicationBaseURL" /> + </mods:url> + <mods:physicalLocation>Universität Leipzig</mods:physicalLocation> + </mods:location> + + </mods:relatedItem> - <!-- mods:identifier - URI to WebPage --> - <mods:identifier type="uri"> - <xsl:value-of select="concat($WebApplicationBaseURL,'receive/',@ID)" /> - </mods:identifier> + <!-- mods:identifier - URI to WebPage --> + <mods:identifier type="uri"> + <xsl:value-of select="concat($WebApplicationBaseURL,'receive/',@ID)" /> + </mods:identifier> - <!-- mods:location - inventory number --> - <mods:location> - <mods:shelfLocator> - <xsl:for-each select="./metadata/def.biocol01/biocol01"> - <xsl:value-of select="." /> - </xsl:for-each> - </mods:shelfLocator> - </mods:location> + <!-- mods:location - inventory number --> + <mods:location> + <mods:shelfLocator> + <xsl:for-each select="$xml/metadata/def.biocol01/biocol01"> + <xsl:value-of select="." /> + </xsl:for-each> + </mods:shelfLocator> + </mods:location> - <!-- mods:accessConditions - rights --> - <xsl:apply-templates select="." mode="accessConditions" /> + <!-- mods:accessConditions - rights --> + <xsl:apply-templates select="$xml" mode="accessConditions" /> - <!-- mods:recordInfo - System Control Number --> - <xsl:apply-templates select="." mode="recordInfo" /> + <!-- mods:recordInfo - System Control Number --> + <xsl:apply-templates select="$xml" mode="recordInfo" /> + </mods:mods> </xsl:template> </xsl:stylesheet> \ No newline at end of file diff --git a/src/main/resources/xsl/biocol2oai_dc.xsl b/src/main/resources/xsl/biocol2oai_dc.xsl index bf4a603..4a49ccd 100644 --- a/src/main/resources/xsl/biocol2oai_dc.xsl +++ b/src/main/resources/xsl/biocol2oai_dc.xsl @@ -10,55 +10,40 @@ <xsl:include href="object2record.xsl" /> - <xsl:template match="mycoreobject[contains(@ID,'_biocol_')]" mode="header"> - <xsl:apply-templates select="@ID" /> - <xsl:apply-templates select="service/servdates/servdate[@type='modifydate']" /> - </xsl:template> - - <xsl:template match="mycoreobject" mode="metadata"> - <xsl:variable name="sourcedoc" select="document(concat('xslStyle:mycoreobject-xml:mcrobject:',@ID))" /> - <xsl:apply-templates select="$sourcedoc/mycoreobject" mode="dc" /> - </xsl:template> - - <xsl:template match="mycoreobject" mode="dc"> + <xsl:template match="mycoreobject[contains(@ID,'_biocol_')]" mode="oai2_metadata" priority="1"> + <xsl:variable name="native" + select="document(concat('xslStyle:mycoreobject-native:mcrobject:',@ID))/mycoreobject" /> <oai_dc:dc> <!-- dc:title - title --> - <dc:title> - <xsl:choose> - <xsl:when test="./metadata/def.biocol09/biocol09"> - <xsl:value-of select="./metadata/def.biocol09/biocol09/text()" /> - </xsl:when> - <xsl:otherwise> - <xsl:value-of - select="concat(./metadata/def.biocol30/biocol30/text(), ' | ', ./metadata/def.biocol31/biocol31/text())" /> - </xsl:otherwise> - </xsl:choose> - </dc:title> + <xsl:if test="$native/metadata/def.biocol09"> + <dc:title> + <xsl:choose> + <xsl:when test="$native/metadata/def.biocol09/biocol09"> + <xsl:value-of select="$native/metadata/def.biocol09/biocol09/text()" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of + select="concat($native/metadata/def.biocol30/biocol30/text(), ' | ', $native/metadata/def.biocol31/biocol31/text())" /> + </xsl:otherwise> + </xsl:choose> + </dc:title> + </xsl:if> <!-- dc:type - objectType --> - <xsl:for-each select="./metadata/def.biocol07/biocol07"> + <xsl:for-each select="$native/metadata/def.biocol07/biocol07"> <dc:type> - <xsl:variable name="subjectlinkURL"> - <xsl:call-template name="linkClassQueryURL"> - <xsl:with-param name="classid" select="@classid" /> - <xsl:with-param name="categid" select="@categid" /> - </xsl:call-template> - </xsl:variable> - <xsl:for-each - select="document($subjectlinkURL)/mycoreclass/categories/category/label[lang($DefaultLang)]"> - <xsl:value-of select="@text" /> - </xsl:for-each> + <xsl:value-of select="." /> </dc:type> </xsl:for-each> <!-- dc:format - format --> <xsl:choose> - <xsl:when test="./metadata/def.biocol07/biocol07[@categid='objecttype_otolith']"> + <xsl:when test="$native/metadata/def.biocol07/biocol07[@categid='objecttype_otolith']"> <dc:format>biogenes Kalkkonkrement</dc:format> </xsl:when> - <xsl:when test="./metadata/def.biocol07/biocol07[@categid='objecttype_herbar']"> + <xsl:when test="$native/metadata/def.biocol07/biocol07[@categid='objecttype_herbar']"> <dc:format>Plantea</dc:format> </xsl:when> <xsl:otherwise> @@ -68,26 +53,26 @@ <!-- dc:coverage - places --> <xsl:if - test="./metadata/def.biocol61/biocol61 or ./metadata/def.biocol62/biocol62 or ./metadata/def.biocol63/biocol63"> + test="$native/metadata/def.biocol61/biocol61 or $native/metadata/def.biocol62/biocol62 or $native/metadata/def.biocol63/biocol63"> <dc:coverage> <xsl:value-of - select="concat(./metadata/def.biocol61/biocol61, ' | ', ./metadata/def.biocol62/biocol62, ' | ', - ./metadata/def.biocol63/biocol63)" /> + select="concat($native/metadata/def.biocol61/biocol61, ' | ', $native/metadata/def.biocol62/biocol62, ' | ', + $native/metadata/def.biocol63/biocol63)" /> </dc:coverage> </xsl:if> <!-- dc:subject - genre and type --> <xsl:if - test="./metadata/def.biocol20/biocol20 or ./metadata/def.biocol21/biocol21 or ./metadata/def.biocol22/biocol22 - or ./metadata/def.biocol23/biocol23 or ./metadata/def.biocol24/biocol24 or ./metadata/def.biocol25/biocol25 - or ./metadata/def.biocol26/biocol26 or ./metadata/def.biocol27/biocol27 or ./metadata/def.biocol28/biocol28 - or ./metadata/def.biocol29/biocol29"> + test="$native/metadata/def.biocol20/biocol20 or $native/metadata/def.biocol21/biocol21 or $native/metadata/def.biocol22/biocol22 + or $native/metadata/def.biocol23/biocol23 or $native/metadata/def.biocol24/biocol24 or $native/metadata/def.biocol25/biocol25 + or $native/metadata/def.biocol26/biocol26 or $native/metadata/def.biocol27/biocol27 or $native/metadata/def.biocol28/biocol28 + or $native/metadata/def.biocol29/biocol29"> <dc:subject> <xsl:value-of - select="concat(./metadata/def.biocol20/biocol20, ' | ', ./metadata/def.biocol21/biocol21, ' | ', ./metadata/def.biocol22/biocol22, - ' | ', ./metadata/def.biocol23/biocol23, ' | ', ./metadata/def.biocol24/biocol24, ' | ', ./metadata/def.biocol25/biocol25, - ' | ', ./metadata/def.biocol26/biocol26, ' | ', ./metadata/def.biocol27/biocol27, ' | ', ./metadata/def.biocol28/biocol28, - ' | ', ./metadata/def.biocol29/biocol29)" /> + select="concat($native/metadata/def.biocol20/biocol20, ' | ', $native/metadata/def.biocol21/biocol21, ' | ', $native/metadata/def.biocol22/biocol22, + ' | ', $native/metadata/def.biocol23/biocol23, ' | ', $native/metadata/def.biocol24/biocol24, ' | ', $native/metadata/def.biocol25/biocol25, + ' | ', $native/metadata/def.biocol26/biocol26, ' | ', $native/metadata/def.biocol27/biocol27, ' | ', $native/metadata/def.biocol28/biocol28, + ' | ', $native/metadata/def.biocol29/biocol29)" /> </dc:subject> </xsl:if> @@ -95,36 +80,30 @@ <dc:language>ger</dc:language> <!-- dc:creator - author of record --> - <dc:creator> - <xsl:for-each select="./metadata/def.biocol06/biocol06"> - <xsl:if test="position() != 1"> - <xsl:value-of select="' ; '" /> - </xsl:if> - <xsl:value-of select="." /> - </xsl:for-each> - </dc:creator> + <xsl:if test="$native/metadata/def.biocol06"> + <dc:creator> + <xsl:for-each select="$native/metadata/def.biocol06/biocol06"> + <xsl:if test="position() != 1"> + <xsl:value-of select="' ; '" /> + </xsl:if> + <xsl:value-of select="." /> + </xsl:for-each> + </dc:creator> + </xsl:if> <!-- dc:publisher - collection --> - <xsl:for-each select="./metadata/def.biocol02/biocol02"> - <xsl:variable name="subjectlinkURL"> - <xsl:call-template name="linkClassQueryURL"> - <xsl:with-param name="classid" select="@classid" /> - <xsl:with-param name="categid" select="@categid" /> - </xsl:call-template> - </xsl:variable> - <xsl:for-each - select="document($subjectlinkURL)/mycoreclass/categories/category/label[lang($DefaultLang)]"> - <dc:publisher> - <xsl:value-of select="concat(@text, ' ; ', 'Universität Leipzig')" /> - </dc:publisher> - </xsl:for-each> - </xsl:for-each> - - + <xsl:for-each select="$native/metadata/def.biocol02/biocol02"> + <dc:publisher> + <xsl:value-of select="." /> + </dc:publisher> + </xsl:for-each> + <dc:publisher> + <xsl:value-of select="'Universität Leipzig'" /> + </dc:publisher> <!-- dc:identifier - inventory number, alternate ID and @ID --> <dc:identifier> - <xsl:value-of select="./metadata/def.biocol01/biocol01" /> + <xsl:value-of select="$native/metadata/def.biocol01/biocol01" /> <xsl:value-of select="' ; '" /> <xsl:value-of select="concat($WebApplicationBaseURL,'receive/',@ID)" /> </dc:identifier> diff --git a/src/main/resources/xsl/biocol2oai_lido.xsl b/src/main/resources/xsl/biocol2oai_lido.xsl new file mode 100644 index 0000000..4dfc06f --- /dev/null +++ b/src/main/resources/xsl/biocol2oai_lido.xsl @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<xsl:stylesheet version="1.0" xmlns="http://www.openarchives.org/OAI/2.0/" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:mods="http://www.loc.gov/mods/v3" xmlns:lido="http://www.lido-schema.org"> + + <xsl:param name="DefaultLang" /> + <xsl:param name="WebApplicationBaseURL" /> + <xsl:param name="MCR.OAIDataProvider.OAI2.RepositoryIdentifier" /> + + <xsl:include href="object2record.xsl" /> + + <xsl:template match="mycoreobject[contains(@ID,'_biocol_')]" mode="oai2_metadata" priority="1"> + <xsl:variable name="native" + select="document(concat('xslStyle:mycoreobject-native:mcrobject:',@ID))/mycoreobject" /> + + <lido:lido> + </lido:lido> + + </xsl:template> + +</xsl:stylesheet> diff --git a/src/main/resources/xsl/biocol2oai_mods.xsl b/src/main/resources/xsl/biocol2oai_mods.xsl index 9943745..40c5f6d 100644 --- a/src/main/resources/xsl/biocol2oai_mods.xsl +++ b/src/main/resources/xsl/biocol2oai_mods.xsl @@ -2,7 +2,7 @@ <xsl:stylesheet version="1.0" xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:mods="http://www.loc.gov/mods/v3" > + xmlns:mods="http://www.loc.gov/mods/v3"> <xsl:param name="DefaultLang" /> <xsl:param name="WebApplicationBaseURL" /> @@ -12,19 +12,8 @@ <xsl:include href="biocol2mods.xsl" /> <xsl:include href="common4mods.xsl" /> - <xsl:template match="mycoreobject" mode="header"> - <xsl:apply-templates select="@ID" /> - <xsl:apply-templates select="service/servdates/servdate[@type='modifydate']" /> - </xsl:template> - - <xsl:template match="mycoreobject" mode="metadata"> - <modsCollection xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.loc.gov/mods/v3" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-7.xsd"> - <xsl:variable name="sourcedoc" - select="document(concat('xslStyle:mycoreobject-xml:mcrobject:',@ID))" /> - <xsl:apply-templates select="$sourcedoc/mycoreobject" mode="mods" /> - </modsCollection> + <xsl:template match="mycoreobject[contains(@ID,'_biocol_')]" mode="oai2_metadata" priority="1"> + <xsl:apply-templates select="." mode="mods" /> </xsl:template> </xsl:stylesheet> -- GitLab