fix base tr

This commit is contained in:
Michele Artini 2024-11-14 09:29:10 +01:00
parent ed560dacc0
commit c5b9a1592e
1 changed files with 493 additions and 424 deletions

View File

@ -1,41 +1,51 @@
<RESOURCE_PROFILE> <RESOURCE_PROFILE>
<HEADER> <HEADER>
<RESOURCE_IDENTIFIER value="2ad0cdd9-c96c-484c-8b0e-ed56d86891fe_VHJhbnNmb3JtYXRpb25SdWxlRFNSZXNvdXJjZXMvVHJhbnNmb3JtYXRpb25SdWxlRFNSZXNvdXJjZVR5cGU=" /> <RESOURCE_IDENTIFIER
<RESOURCE_TYPE value="TransformationRuleDSResourceType" /> value="2ad0cdd9-c96c-484c-8b0e-ed56d86891fe_VHJhbnNmb3JtYXRpb25SdWxlRFNSZXNvdXJjZXMvVHJhbnNmb3JtYXRpb25SdWxlRFNSZXNvdXJjZVR5cGU="/>
<RESOURCE_KIND value="TransformationRuleDSResources" /> <RESOURCE_TYPE value="TransformationRuleDSResourceType"/>
<RESOURCE_URI value="" /> <RESOURCE_KIND value="TransformationRuleDSResources"/>
<DATE_OF_CREATION value="2024-03-05T11:23:00+00:00" /> <RESOURCE_URI value=""/>
<DATE_OF_CREATION value="2024-03-05T11:23:00+00:00"/>
</HEADER> </HEADER>
<BODY> <BODY>
<CONFIGURATION> <CONFIGURATION>
<SOURCE_METADATA_FORMAT interpretation="cleaned" layout="store" name="dc" /> <SOURCE_METADATA_FORMAT interpretation="cleaned" layout="store" name="dc"/>
<SINK_METADATA_FORMAT name="odf_hbase" /> <SINK_METADATA_FORMAT name="odf_hbase"/>
<IMPORTED /> <IMPORTED/>
<SCRIPT> <SCRIPT>
<TITLE>xslt_base2odf_hadoop</TITLE> <TITLE>xslt_base2odf_hadoop</TITLE>
<CODE> <CODE>
<xsl:stylesheet xmlns:oaire="http://namespace.openaire.eu/schema/oaire/" xmlns:dateCleaner="http://eu/dnetlib/transform/dateISO" xmlns:base_dc="http://oai.base-search.net/base_dc/" <xsl:stylesheet xmlns:oaire="http://namespace.openaire.eu/schema/oaire/"
xmlns:datacite="http://datacite.org/schema/kernel-4" xmlns:dr="http://www.driver-repository.eu/namespace/dr" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dateCleaner="http://eu/dnetlib/transform/dateISO"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:vocabulary="http://eu/dnetlib/transform/clean" xmlns:oaf="http://namespace.openaire.eu/oaf" xmlns:base_dc="http://oai.base-search.net/base_dc/"
xmlns:oai="http://www.openarchives.org/OAI/2.0/" xmlns:dri="http://www.driver-repository.eu/namespace/dri" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:datacite="http://datacite.org/schema/kernel-4"
xmlns:dr="http://www.driver-repository.eu/namespace/dr"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:vocabulary="http://eu/dnetlib/transform/clean"
xmlns:oaf="http://namespace.openaire.eu/oaf"
xmlns:oai="http://www.openarchives.org/OAI/2.0/"
xmlns:dri="http://www.driver-repository.eu/namespace/dri"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:dc="http://purl.org/dc/elements/1.1/"
exclude-result-prefixes="xsl vocabulary dateCleaner base_dc" version="2.0"> exclude-result-prefixes="xsl vocabulary dateCleaner base_dc" version="2.0">
<xsl:param name="varOfficialName" /> <xsl:param name="varOfficialName"/>
<xsl:param name="varDataSourceId" /> <xsl:param name="varDataSourceId"/>
<xsl:param name="varFP7" select="'corda_______::'" /> <xsl:param name="varFP7" select="'corda_______::'"/>
<xsl:param name="varH2020" select="'corda__h2020::'" /> <xsl:param name="varH2020" select="'corda__h2020::'"/>
<xsl:param name="repoCode" select="substring-before(//*[local-name() = 'header']/*[local-name()='recordIdentifier'], ':')" /> <xsl:param name="repoCode"
<xsl:param name="index" select="0" /> select="substring-before(//*[local-name() = 'header']/*[local-name()='recordIdentifier'], ':')"/>
<xsl:param name="transDate" select="current-dateTime()" /> <xsl:param name="index" select="0"/>
<xsl:param name="transDate" select="current-dateTime()"/>
<xsl:template name="terminate"> <xsl:template name="terminate">
<xsl:message terminate="yes"> <xsl:message terminate="yes"> record is not compliant, transformation is
record is not compliant, transformation is interrupted. interrupted. </xsl:message>
</xsl:message>
</xsl:template> </xsl:template>
<xsl:template match="/"> <xsl:template match="/">
<record> <record>
<xsl:apply-templates select="//*[local-name() = 'header']" /> <xsl:apply-templates select="//*[local-name() = 'header']"/>
<!-- NOT USED <!-- NOT USED
@ -56,7 +66,7 @@
<xsl:for-each select="//base_dc:doi"> <xsl:for-each select="//base_dc:doi">
<datacite:identifier identifierType="DOI"> <datacite:identifier identifierType="DOI">
<xsl:value-of select="." /> <xsl:value-of select="."/>
</datacite:identifier> </datacite:identifier>
</xsl:for-each> </xsl:for-each>
@ -64,55 +74,67 @@
<xsl:for-each <xsl:for-each
select="distinct-values(//dc:identifier[starts-with(., 'http') and (not(contains(., '://dx.doi.org/') or contains(., '://doi.org/') or contains(., '://hdl.handle.net/')))])"> select="distinct-values(//dc:identifier[starts-with(., 'http') and (not(contains(., '://dx.doi.org/') or contains(., '://doi.org/') or contains(., '://hdl.handle.net/')))])">
<datacite:identifier alternateIdentifierType="url"> <datacite:identifier alternateIdentifierType="url">
<xsl:value-of select="." /> <xsl:value-of select="."/>
</datacite:identifier> </datacite:identifier>
</xsl:for-each> </xsl:for-each>
<xsl:for-each select="distinct-values(//dc:identifier[starts-with(., 'http') and contains(., '://hdl.handle.net/')]/substring-after(., 'hdl.handle.net/'))"> <xsl:for-each
<datacite:identifier alternateIdentifierType="handle"> select="distinct-values(//dc:identifier[starts-with(., 'http') and contains(., '://hdl.handle.net/')]/substring-after(., 'hdl.handle.net/'))">
<xsl:value-of select="." /> <datacite:identifier
alternateIdentifierType="handle">
<xsl:value-of select="."/>
</datacite:identifier> </datacite:identifier>
</xsl:for-each> </xsl:for-each>
<xsl:for-each select="distinct-values(//dc:identifier[starts-with(., 'urn:nbn:nl:') or starts-with(., 'URN:NBN:NL:')])"> <xsl:for-each
<datacite:identifier alternateIdentifierType='urn'> select="distinct-values(//dc:identifier[starts-with(., 'urn:nbn:nl:') or starts-with(., 'URN:NBN:NL:')])">
<xsl:value-of select="." /> <datacite:identifier alternateIdentifierType="urn">
<xsl:value-of select="."/>
</datacite:identifier> </datacite:identifier>
</xsl:for-each> </xsl:for-each>
<datacite:identifier alternateIdentifierType="oai-original"> <datacite:identifier
<xsl:value-of alternateIdentifierType="oai-original">
select="//oai:header/oai:identifier" /> <xsl:value-of select="//oai:header/oai:identifier"/>
</datacite:identifier> </datacite:identifier>
</datacite:alternateIdentifiers> </datacite:alternateIdentifiers>
<datacite:relatedIdentifiers /> <datacite:relatedIdentifiers/>
<xsl:for-each select="//base_dc:typenorm"> <xsl:for-each select="//base_dc:typenorm">
<datacite:resourceType><xsl:value-of select="vocabulary:clean(., 'base:normalized_types')" /></datacite:resourceType> <datacite:resourceType>
<xsl:value-of
select="vocabulary:clean(., 'base:normalized_types')"
/>
</datacite:resourceType>
</xsl:for-each> </xsl:for-each>
<datacite:titles> <datacite:titles>
<xsl:for-each select="//dc:title"> <xsl:for-each select="//dc:title">
<datacite:title> <datacite:title>
<xsl:value-of select="normalize-space(.)" /> <xsl:value-of select="normalize-space(.)"/>
</datacite:title> </datacite:title>
</xsl:for-each> </xsl:for-each>
</datacite:titles> </datacite:titles>
<datacite:creators> <datacite:creators>
<xsl:for-each select="//dc:creator"> <xsl:for-each select="//dc:creator">
<xsl:variable name="author" select="normalize-space(.)" /> <xsl:variable name="author"
select="normalize-space(.)"/>
<datacite:creator> <datacite:creator>
<datacite:creatorName> <datacite:creatorName>
<xsl:value-of select="$author" /> <xsl:value-of select="$author"/>
</datacite:creatorName> </datacite:creatorName>
<xsl:for-each select="//base_dc:authod_id[normalize-space(./base_dc:creator_name) = $author]/base_dc:creator_id "> <xsl:for-each
select="//base_dc:authod_id[normalize-space(./base_dc:creator_name) = $author]/base_dc:creator_id ">
<xsl:if test="contains(.,'https://orcid.org/')"> <xsl:if test="contains(.,'https://orcid.org/')">
<nameIdentifier schemeURI="https://orcid.org/" nameIdentifierScheme="ORCID"> <nameIdentifier schemeURI="https://orcid.org/"
<xsl:value-of select="substring-after(., 'https://orcid.org/')" /> nameIdentifierScheme="ORCID">
<xsl:value-of
select="substring-after(., 'https://orcid.org/')"
/>
</nameIdentifier> </nameIdentifier>
</xsl:if> </xsl:if>
</xsl:for-each> </xsl:for-each>
@ -124,7 +146,7 @@
<xsl:for-each select="//dc:contributor"> <xsl:for-each select="//dc:contributor">
<datacite:contributor> <datacite:contributor>
<datacite:contributorName> <datacite:contributorName>
<xsl:value-of select="normalize-space(.)" /> <xsl:value-of select="normalize-space(.)"/>
</datacite:contributorName> </datacite:contributorName>
</datacite:contributor> </datacite:contributor>
</xsl:for-each> </xsl:for-each>
@ -133,7 +155,7 @@
<datacite:descriptions> <datacite:descriptions>
<xsl:for-each select="//dc:description"> <xsl:for-each select="//dc:description">
<datacite:description descriptionType="Abstract"> <datacite:description descriptionType="Abstract">
<xsl:value-of select="normalize-space(.)" /> <xsl:value-of select="normalize-space(.)"/>
</datacite:description> </datacite:description>
</xsl:for-each> </xsl:for-each>
</datacite:descriptions> </datacite:descriptions>
@ -141,43 +163,47 @@
<datacite:subjects> <datacite:subjects>
<xsl:for-each select="//dc:subject"> <xsl:for-each select="//dc:subject">
<datacite:subject> <datacite:subject>
<xsl:value-of select="normalize-space(.)" /> <xsl:value-of select="normalize-space(.)"/>
</datacite:subject> </datacite:subject>
</xsl:for-each> </xsl:for-each>
<xsl:for-each select="//base_dc:classcode|//base_dc:autoclasscode"> <xsl:for-each
<datacite:subject subjectScheme="{@type}" classificationCode="{normalize-space(.)}"> select="//base_dc:classcode|//base_dc:autoclasscode">
<datacite:subject subjectScheme="{@type}"
classificationCode="{normalize-space(.)}">
<!-- TODO the value should be obtained by the Code --> <!-- TODO the value should be obtained by the Code -->
<xsl:value-of select="normalize-space(.)" /> <xsl:value-of select="normalize-space(.)"/>
</datacite:subject> </datacite:subject>
</xsl:for-each> </xsl:for-each>
</datacite:subjects> </datacite:subjects>
<xsl:for-each select="//dc:publisher"> <xsl:for-each select="//dc:publisher">
<datacite:publisher> <datacite:publisher>
<xsl:value-of select="normalize-space(.)" /> <xsl:value-of select="normalize-space(.)"/>
</datacite:publisher> </datacite:publisher>
</xsl:for-each> </xsl:for-each>
<xsl:for-each select="//base_dc:year"> <xsl:for-each select="//base_dc:year">
<datacite:publicationYear> <datacite:publicationYear>
<xsl:value-of select="normalize-space(.)" /> <xsl:value-of select="normalize-space(.)"/>
</datacite:publicationYear> </datacite:publicationYear>
</xsl:for-each> </xsl:for-each>
<datacite:formats> <datacite:formats>
<xsl:for-each select="//dc:format"> <xsl:for-each select="//dc:format">
<datacite:format> <datacite:format>
<xsl:value-of select="normalize-space(.)" /> <xsl:value-of select="normalize-space(.)"/>
</datacite:format> </datacite:format>
</xsl:for-each> </xsl:for-each>
</datacite:formats> </datacite:formats>
<datacite:language> <datacite:language>
<xsl:value-of select="vocabulary:clean( //base_dc:lang, 'dnet:languages')" /> <xsl:value-of
select="vocabulary:clean( //base_dc:lang, 'dnet:languages')"
/>
</datacite:language> </datacite:language>
<oaf:accessrights> <!--<datacite:rightsList>
<xsl:if test="//base_dc:oa[.='0']"> <xsl:if test="//base_dc:oa[.='0']">
<datacite:rights rightsURI="http://purl.org/coar/access_right/c_16ec">restricted access</datacite:rights> <datacite:rights rightsURI="http://purl.org/coar/access_right/c_16ec">restricted access</datacite:rights>
</xsl:if> </xsl:if>
@ -185,21 +211,29 @@
<datacite:rights rightsURI="http://purl.org/coar/access_right/c_abf2">open access</datacite:rights> <datacite:rights rightsURI="http://purl.org/coar/access_right/c_abf2">open access</datacite:rights>
</xsl:if> </xsl:if>
<xsl:for-each select="//dc:rights|//base_dc:rightsnorm"> <xsl:for-each select="//dc:rights|//base_dc:rightsnorm">
<datacite:rights><xsl:value-of select="vocabulary:clean(., 'dnet:access_modes')" /></datacite:rights> <datacite:rights>
<xsl:value-of select="vocabulary:clean(., 'dnet:access_modes')"/>
</datacite:rights>
</xsl:for-each> </xsl:for-each>
</oaf:accessrights> </datacite:rightsList>-->
</datacite:resource> </datacite:resource>
<xsl:for-each select="//dc:relation"> <xsl:for-each select="//dc:relation">
<xsl:if test="matches(normalize-space(.), '(info:eu-repo/grantagreement/ec/fp7/)(\d\d\d\d\d\d)(.*)', 'i')"> <xsl:if
test="matches(normalize-space(.), '(info:eu-repo/grantagreement/ec/fp7/)(\d\d\d\d\d\d)(.*)', 'i')">
<oaf:projectid> <oaf:projectid>
<xsl:value-of select="concat($varFP7, replace(normalize-space(.), '(info:eu-repo/grantagreement/ec/fp7/)(\d\d\d\d\d\d)(.*)', '$2', 'i'))" /> <xsl:value-of
select="concat($varFP7, replace(normalize-space(.), '(info:eu-repo/grantagreement/ec/fp7/)(\d\d\d\d\d\d)(.*)', '$2', 'i'))"
/>
</oaf:projectid> </oaf:projectid>
</xsl:if> </xsl:if>
<xsl:if test="matches(normalize-space(.), '(info:eu-repo/grantagreement/ec/h2020/)(\d\d\d\d\d\d)(.*)', 'i')"> <xsl:if
test="matches(normalize-space(.), '(info:eu-repo/grantagreement/ec/h2020/)(\d\d\d\d\d\d)(.*)', 'i')">
<oaf:projectid> <oaf:projectid>
<xsl:value-of select="concat($varH2020, replace(normalize-space(.), '(info:eu-repo/grantagreement/ec/h2020/)(\d\d\d\d\d\d)(.*)', '$2', 'i'))" /> <xsl:value-of
select="concat($varH2020, replace(normalize-space(.), '(info:eu-repo/grantagreement/ec/h2020/)(\d\d\d\d\d\d)(.*)', '$2', 'i'))"
/>
</oaf:projectid> </oaf:projectid>
</xsl:if> </xsl:if>
</xsl:for-each> </xsl:for-each>
@ -209,68 +243,81 @@
<!-- Book part --> <!-- Book part -->
<xsl:when test="//base_dc:typenorm = '111'"> <xsl:when test="//base_dc:typenorm = '111'">
<dr:CobjCategory type="publication">0013</dr:CobjCategory> <dr:CobjCategory type="publication"
>0013</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Book --> <!-- Book -->
<xsl:when test="//base_dc:typenorm = '11'"> <xsl:when test="//base_dc:typenorm = '11'">
<dr:CobjCategory type="publication">0002</dr:CobjCategory> <dr:CobjCategory type="publication"
>0002</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Article contribution --> <!-- Article contribution -->
<xsl:when test="//base_dc:typenorm = '121'"> <xsl:when test="//base_dc:typenorm = '121'">
<dr:CobjCategory type="publication">0001</dr:CobjCategory> <dr:CobjCategory type="publication"
>0001</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Journal/Newspaper --> <!-- Journal/Newspaper -->
<xsl:when test="//base_dc:typenorm = '12'"> <xsl:when test="//base_dc:typenorm = '12'">
<dr:CobjCategory type="publication">0043</dr:CobjCategory> <dr:CobjCategory type="publication"
>0043</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Report --> <!-- Report -->
<xsl:when test="//base_dc:typenorm = '14'"> <xsl:when test="//base_dc:typenorm = '14'">
<dr:CobjCategory type="publication">0017</dr:CobjCategory> <dr:CobjCategory type="publication"
>0017</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Review --> <!-- Review -->
<xsl:when test="//base_dc:typenorm = '15'"> <xsl:when test="//base_dc:typenorm = '15'">
<dr:CobjCategory type="publication">0015</dr:CobjCategory> <dr:CobjCategory type="publication"
>0015</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Lecture --> <!-- Lecture -->
<xsl:when test="//base_dc:typenorm = '17'"> <xsl:when test="//base_dc:typenorm = '17'">
<dr:CobjCategory type="publication">0010</dr:CobjCategory> <dr:CobjCategory type="publication"
>0010</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Bachelor's thesis --> <!-- Bachelor's thesis -->
<xsl:when test="//base_dc:typenorm = '181'"> <xsl:when test="//base_dc:typenorm = '181'">
<dr:CobjCategory type="publication">0008</dr:CobjCategory> <dr:CobjCategory type="publication"
>0008</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Master's thesis --> <!-- Master's thesis -->
<xsl:when test="//base_dc:typenorm = '182'"> <xsl:when test="//base_dc:typenorm = '182'">
<dr:CobjCategory type="publication">0007</dr:CobjCategory> <dr:CobjCategory type="publication"
>0007</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Doctoral and postdoctoral thesis --> <!-- Doctoral and postdoctoral thesis -->
<xsl:when test="//base_dc:typenorm = '183'"> <xsl:when test="//base_dc:typenorm = '183'">
<dr:CobjCategory type="publication">0006</dr:CobjCategory> <dr:CobjCategory type="publication"
>0006</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Thesis --> <!-- Thesis -->
<xsl:when test="//base_dc:typenorm = '18'"> <xsl:when test="//base_dc:typenorm = '18'">
<dr:CobjCategory type="publication">0044</dr:CobjCategory> <dr:CobjCategory type="publication"
>0044</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Patent --> <!-- Patent -->
<xsl:when test="//base_dc:typenorm = '1A'"> <xsl:when test="//base_dc:typenorm = '1A'">
<dr:CobjCategory type="publication">0019</dr:CobjCategory> <dr:CobjCategory type="publication"
>0019</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Text --> <!-- Text -->
<xsl:when test="//base_dc:typenorm = '1'"> <xsl:when test="//base_dc:typenorm = '1'">
<dr:CobjCategory type="publication">0001</dr:CobjCategory> <dr:CobjCategory type="publication"
>0001</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Software --> <!-- Software -->
@ -315,22 +362,26 @@
<!-- Other non-article --> <!-- Other non-article -->
<xsl:when test="//base_dc:typenorm = '122'"> <xsl:when test="//base_dc:typenorm = '122'">
<dr:CobjCategory type="publication">0038</dr:CobjCategory> <dr:CobjCategory type="publication"
>0038</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Course material --> <!-- Course material -->
<xsl:when test="//base_dc:typenorm = '16'"> <xsl:when test="//base_dc:typenorm = '16'">
<dr:CobjCategory type="publication">0038</dr:CobjCategory> <dr:CobjCategory type="publication"
>0038</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Manuscript --> <!-- Manuscript -->
<xsl:when test="//base_dc:typenorm = '19'"> <xsl:when test="//base_dc:typenorm = '19'">
<dr:CobjCategory type="publication">0038</dr:CobjCategory> <dr:CobjCategory type="publication"
>0038</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Conference object --> <!-- Conference object -->
<xsl:when test="//base_dc:typenorm = '13'"> <xsl:when test="//base_dc:typenorm = '13'">
<dr:CobjCategory type="publication">0004</dr:CobjCategory> <dr:CobjCategory type="publication"
>0004</dr:CobjCategory>
</xsl:when> </xsl:when>
<!-- Unknown --> <!-- Unknown -->
@ -348,83 +399,100 @@
<xsl:when test="//base_dc:oa[.='1']">OPEN</xsl:when> <xsl:when test="//base_dc:oa[.='1']">OPEN</xsl:when>
<xsl:when test="//base_dc:oa[.='2']">UNKNOWN</xsl:when> <xsl:when test="//base_dc:oa[.='2']">UNKNOWN</xsl:when>
<xsl:when test="//base_dc:rightsnorm"> <xsl:when test="//base_dc:rightsnorm">
<xsl:value-of select="vocabulary:clean(//base_dc:rightsnorm, 'dnet:access_modes')" /> <xsl:value-of
select="vocabulary:clean(//base_dc:rightsnorm, 'dnet:access_modes')"
/>
</xsl:when> </xsl:when>
<xsl:when test="//dc:rights"> <xsl:when test="//dc:rights">
<xsl:value-of select="vocabulary:clean( //dc:rights, 'dnet:access_modes')" /> <xsl:value-of
select="vocabulary:clean( //dc:rights, 'dnet:access_modes')"
/>
</xsl:when> </xsl:when>
<xsl:otherwise>UNKNOWN</xsl:otherwise> <xsl:otherwise>UNKNOWN</xsl:otherwise>
</xsl:choose> </xsl:choose>
</oaf:accessrights> </oaf:accessrights>
<xsl:if test="//base_dc:rightsnorm">
<oaf:license><xsl:value-of select="vocabulary:clean(//base_dc:rightsnorm, 'dnet:licenses')" /></oaf:license>
</xsl:if>
<xsl:for-each select="//base_dc:doi"> <xsl:for-each select="//base_dc:doi">
<oaf:identifier identifierType="doi"> <oaf:identifier identifierType="doi">
<xsl:value-of select="." /> <xsl:value-of select="."/>
</oaf:identifier> </oaf:identifier>
</xsl:for-each> </xsl:for-each>
<xsl:for-each <xsl:for-each
select="distinct-values(//dc:identifier[starts-with(., 'http') and ( not(contains(., '://dx.doi.org/') or contains(., '://doi.org/') or contains(., '://hdl.handle.net/')))])"> select="distinct-values(//dc:identifier[starts-with(., 'http') and ( not(contains(., '://dx.doi.org/') or contains(., '://doi.org/') or contains(., '://hdl.handle.net/')))])">
<oaf:identifier identifierType="url"> <oaf:identifier identifierType="url">
<xsl:value-of select="." /> <xsl:value-of select="."/>
</oaf:identifier> </oaf:identifier>
</xsl:for-each> </xsl:for-each>
<xsl:for-each select="distinct-values(//dc:identifier[starts-with(., 'http') and contains(., '://hdl.handle.net/')]/substring-after(., 'hdl.handle.net/'))"> <xsl:for-each
select="distinct-values(//dc:identifier[starts-with(., 'http') and contains(., '://hdl.handle.net/')]/substring-after(., 'hdl.handle.net/'))">
<oaf:identifier identifierType="handle"> <oaf:identifier identifierType="handle">
<xsl:value-of select="." /> <xsl:value-of select="."/>
</oaf:identifier> </oaf:identifier>
</xsl:for-each> </xsl:for-each>
<xsl:for-each select="distinct-values(//dc:identifier[starts-with(., 'urn:nbn:nl:') or starts-with(., 'URN:NBN:NL:')])"> <xsl:for-each
<oaf:identifier identifierType='urn'> select="distinct-values(//dc:identifier[starts-with(., 'urn:nbn:nl:') or starts-with(., 'URN:NBN:NL:')])">
<xsl:value-of select="." /> <oaf:identifier identifierType="urn">
<xsl:value-of select="."/>
</oaf:identifier> </oaf:identifier>
</xsl:for-each> </xsl:for-each>
<oaf:identifier identifierType="oai-original"> <oaf:identifier identifierType="oai-original">
<xsl:value-of <xsl:value-of select="//oai:header/oai:identifier"/>
select="//oai:header/oai:identifier" />
</oaf:identifier> </oaf:identifier>
<oaf:hostedBy> <oaf:hostedBy>
<xsl:attribute name="name"> <xsl:attribute name="name">
<xsl:value-of select="//base_dc:collname" /> <xsl:value-of select="//base_dc:collname"/>
</xsl:attribute> </xsl:attribute>
<xsl:attribute name="id"> <xsl:attribute name="id">
<xsl:value-of select="concat('opendoar____::', //base_dc:collection/@opendoar_id)" /> <xsl:value-of
select="concat('opendoar____::', //base_dc:collection/@opendoar_id)"
/>
</xsl:attribute> </xsl:attribute>
</oaf:hostedBy> </oaf:hostedBy>
<oaf:collectedFrom> <oaf:collectedFrom>
<xsl:attribute name="name"> <xsl:attribute name="name">
<xsl:value-of select="$varOfficialName" /> <xsl:value-of select="$varOfficialName"/>
</xsl:attribute> </xsl:attribute>
<xsl:attribute name="id"> <xsl:attribute name="id">
<xsl:value-of select="$varDataSourceId" /> <xsl:value-of select="$varDataSourceId"/>
</xsl:attribute> </xsl:attribute>
</oaf:collectedFrom> </oaf:collectedFrom>
<oaf:dateAccepted> <oaf:dateAccepted>
<xsl:value-of select="dateCleaner:dateISO( //dc:date[1] )" /> <xsl:value-of select="dateCleaner:dateISO( //dc:date[1] )"/>
</oaf:dateAccepted> </oaf:dateAccepted>
<xsl:if test="//base_dc:oa[.='1']"> <xsl:if test="//base_dc:oa[.='1']">
<xsl:for-each select="//dc:relation[starts-with(., 'http')]"> <xsl:for-each select="//dc:relation[starts-with(., 'http')]">
<oaf:fulltext> <oaf:fulltext>
<xsl:value-of select="normalize-space(.)" /> <xsl:value-of select="normalize-space(.)"/>
</oaf:fulltext> </oaf:fulltext>
</xsl:for-each> </xsl:for-each>
</xsl:if> </xsl:if>
<xsl:for-each select="//base_dc:collection/@ror_id"> <xsl:for-each select="//base_dc:collection/@ror_id">
<oaf:relation relType="resultOrganization" subRelType="affiliation" relClass="hasAuthorInstitution" targetType="organization"> <oaf:relation relType="resultOrganization"
subRelType="affiliation" relClass="hasAuthorInstitution"
targetType="organization">
<xsl:choose> <xsl:choose>
<xsl:when test="contains(.,'https://ror.org/')"> <xsl:when test="contains(.,'https://ror.org/')">
<xsl:value-of select="concat('ror_________::', normalize-space(.))" /> <xsl:value-of
select="concat('ror_________::', normalize-space(.))"
/>
</xsl:when> </xsl:when>
<xsl:otherwise> <xsl:otherwise>
<xsl:value-of select="concat('ror_________::https://ror.org/', normalize-space(.))" /> <xsl:value-of
select="concat('ror_________::https://ror.org/', normalize-space(.))"
/>
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
</oaf:relation> </oaf:relation>
@ -435,38 +503,39 @@
<oaf:deletedbyinference>false</oaf:deletedbyinference> <oaf:deletedbyinference>false</oaf:deletedbyinference>
<oaf:trust>0.89</oaf:trust> <oaf:trust>0.89</oaf:trust>
<oaf:inferenceprovenance/> <oaf:inferenceprovenance/>
<oaf:provenanceaction classid="sysimport:crosswalk:aggregator" <oaf:provenanceaction
classid="sysimport:crosswalk:aggregator"
classname="sysimport:crosswalk:aggregator" classname="sysimport:crosswalk:aggregator"
schemeid="dnet:provenanceActions" schemeid="dnet:provenanceActions"
schemename="dnet:provenanceActions"/> schemename="dnet:provenanceActions"/>
</oaf:datainfo> </oaf:datainfo>
</metadata> </metadata>
<xsl:copy-of select="//*[local-name() = 'about']" /> <xsl:copy-of select="//*[local-name() = 'about']"/>
</record> </record>
</xsl:template> </xsl:template>
<xsl:template match="//*[local-name() = 'header']"> <xsl:template match="//*[local-name() = 'header']">
<xsl:if test="//oai:header/@status='deleted'"> <xsl:if test="//oai:header/@status='deleted'">
<xsl:call-template name="terminate" /> <xsl:call-template name="terminate"/>
</xsl:if> </xsl:if>
<xsl:copy> <xsl:copy>
<xsl:apply-templates select="node()|@*" /> <xsl:apply-templates select="node()|@*"/>
<xsl:element name="dr:dateOfTransformation"> <xsl:element name="dr:dateOfTransformation">
<xsl:value-of select="$transDate" /> <xsl:value-of select="$transDate"/>
</xsl:element> </xsl:element>
</xsl:copy> </xsl:copy>
</xsl:template> </xsl:template>
<xsl:template match="node()|@*"> <xsl:template match="node()|@*">
<xsl:copy> <xsl:copy>
<xsl:apply-templates select="node()|@*" /> <xsl:apply-templates select="node()|@*"/>
</xsl:copy> </xsl:copy>
</xsl:template> </xsl:template>
</xsl:stylesheet> </xsl:stylesheet>
</CODE> </CODE>
</SCRIPT> </SCRIPT>
</CONFIGURATION> </CONFIGURATION>
<STATUS /> <STATUS/>
<SECURITY_PARAMETERS /> <SECURITY_PARAMETERS/>
</BODY> </BODY>
</RESOURCE_PROFILE> </RESOURCE_PROFILE>