Project

General

Profile

1
<?xml version="1.0" encoding="UTF-8"?>
2
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
3
	xmlns:dri="http://www.driver-repository.eu/namespace/dri" xmlns:dr="http://www.driver-repository.eu/namespace/dr"
4
	xmlns:oaf="http://namespace.openaire.eu/oaf" xmlns:dc="http://purl.org/dc/elements/1.1/"
5
	xmlns:action="http://namespace.openaire.eu/action" xmlns:dnet="eu.dnetlib.miscutils.functional.xml.DnetXsltFunctions">
6

    
7
	
8
	<xsl:variable name="oldCollectedFromId" select="normalize-space(.//FIELD[@name='temp_collectedfromid']/ITEM)" />
9
	<xsl:variable name="tmpCollectedFromId">
10
		<xsl:choose>
11
			<xsl:when test="oldCollectedFromId = 'a35c057b-e732-44e2-a740-35e540dd0c58'">opendoar::162</xsl:when>
12
			<xsl:when test="oldCollectedFromId = 'dce34acf-e2fa-45ef-ba50-84a2742eb5bf'">opendoar::322</xsl:when>
13
			<xsl:when test="oldCollectedFromId = '83cf4d66-7c70-4835-887b-cf3e87db2faf'">opendoar::714</xsl:when>
14
			<xsl:when test="oldCollectedFromId = '64ea16ca-716e-49b6-99e9-059cbb52d18c'">opendoar::970</xsl:when>
15
			<xsl:when test="oldCollectedFromId = '6c2360ef-e891-4c3c-8031-53412dfd5965'">opendoar::1371</xsl:when>
16
			<xsl:when test="oldCollectedFromId = 'f06ae7a2-a5fb-4b14-ad1a-2f7011462303'">opendoar::2367</xsl:when>
17
			<xsl:when test="oldCollectedFromId = 'a8a73ca9-f34e-41eb-a20c-a06b703b1f6e'">opendoar::2336</xsl:when>
18
			<xsl:when test="oldCollectedFromId = '2d4b0cd7-84f5-4182-b598-0719423f37a4'">opendoar::1620</xsl:when>
19
			<xsl:otherwise>
20
				<xsl:value-of select="$oldCollectedFromId" />
21
			</xsl:otherwise>	
22
		</xsl:choose>
23
	</xsl:variable>
24
	
25
	<xsl:variable name="collectedFromId" select="normalize-space($tmpCollectedFromId)" />
26
	<xsl:variable name="collectedFromName" select="normalize-space(.//FIELD[@name='temp_collectedfromname']/ITEM)" />
27
	
28
	<xsl:variable name="hostedById" select="normalize-space(.//FIELD[@name='temp_hostedbyid']/ITEM)" />
29
	<xsl:variable name="hostedByName" select="normalize-space(.//FIELD[@name='temp_hostedbyname']/ITEM)" />
30
	<xsl:variable name="createdFrom" select="normalize-space(.//FIELD[@name='temp_createdfrom'])" />
31

    
32

    
33
	<xsl:variable name="nsprefixTmp">
34
		<xsl:choose>
35
			<xsl:when test="starts-with($createdFrom, 'driver')">driver______</xsl:when>
36
			<xsl:when test="starts-with($createdFrom, 'doi')">crossref____</xsl:when>
37
			<xsl:when test="starts-with($createdFrom, 'isiWOS')">webcrawl____</xsl:when>
38
			
39
			<!-- When the production db will be fixed replace hostedById with collectedFromId -->
40
			<xsl:when test="$hostedById = 'opendoar::18'">od________18</xsl:when>
41
			<xsl:when test="$collectedFromId = 'opendoar::162'">od_______162</xsl:when>
42
			<xsl:when test="$collectedFromId = 'opendoar::206'">od_______206</xsl:when>
43
			<xsl:when test="$collectedFromId = 'opendoar::322'">od_______322</xsl:when>
44
			<xsl:when test="$collectedFromId = 'opendoar::714'">od_______714</xsl:when>
45
			<xsl:when test="$collectedFromId = 'opendoar::908'">od_______908</xsl:when>
46
			<xsl:when test="$collectedFromId = 'opendoar::970'">od_______970</xsl:when>
47
			<xsl:when test="$collectedFromId = 'opendoar::1175'">od______1175</xsl:when>
48
			<xsl:when test="$collectedFromId = 'opendoar::1371'">od______1371</xsl:when>
49
			<xsl:when test="$collectedFromId = 'opendoar::2367'">od______2367</xsl:when>
50
			<xsl:when test="$collectedFromId = 'opendoar::2336'">od______2336</xsl:when>
51
			<xsl:when test="$collectedFromId = 'opendoar::1620'">od______1620</xsl:when>
52
			<xsl:when test="$collectedFromId = '1256f046-bf1f-4afc-8b47-d0b147148b18'">unknown_____</xsl:when>
53
			<xsl:otherwise>unknown_____</xsl:otherwise>
54
		</xsl:choose>
55
	</xsl:variable>
56
	
57
	<xsl:variable name="nsprefix" select="normalize-space($nsprefixTmp)" />
58

    
59
	<xsl:template match="//ROW">
60
		<record>
61
			<header>
62
				<dri:objIdentifier><xsl:value-of select="concat($nsprefix, '::', dnet:md5(./FIELD[@name='dri_objidentifier']))" /></dri:objIdentifier>
63
				<oaf:datasourceprefix><xsl:value-of select="$nsprefix" /></oaf:datasourceprefix>
64
				<xsl:for-each select="./FIELD[starts-with(@name, 'action_')]">
65
					<xsl:variable name="fieldName" select="substring-after(@name, 'action_')" />
66
					<xsl:element name="action:{$fieldName}">
67
						<xsl:value-of select="normalize-space(.)" />
68
					</xsl:element>
69
				</xsl:for-each>
70
				<xsl:variable name="dateofcollection">
71
					<xsl:choose>
72
						<xsl:when test="string-length(normalize-space(./FIELD[@name = 'action_date_of_creation'])) &gt; 0">
73
							<xsl:value-of select="./FIELD[@name = 'action_date_of_creation']"/>
74
						</xsl:when>
75
						<xsl:otherwise>
76
							<xsl:value-of select="./FIELD[@name = 'oaf_storagedate']"/>
77
						</xsl:otherwise>
78
					</xsl:choose>
79
				</xsl:variable>
80
				<dr:dateOfCollection><xsl:value-of select="$dateofcollection"></xsl:value-of></dr:dateOfCollection>
81
			</header>
82
			<metadata>
83
				<xsl:for-each select="./FIELD[@name != 'dri_objidentifier' and not(starts-with(@name, 'action_')) and not(starts-with(@name, 'temp_'))]">
84
					<xsl:variable name="fieldNS" select="substring-before(@name, '_')" />
85
					<xsl:variable name="fieldName" select="substring-after(@name, '_')" />
86

    
87
					<xsl:choose>
88
						<xsl:when test="count(./ITEM)=0">
89
							<xsl:if test="not(@isNull) or @isNull != 'true'">
90
								<xsl:element name="{$fieldNS}:{$fieldName}">
91
									<xsl:value-of select="normalize-space(.)" />
92
								</xsl:element>
93
							</xsl:if>
94
						</xsl:when>
95
						<xsl:otherwise>
96
						<xsl:for-each select="./ITEM">
97
								<xsl:sort select="normalize-space(.)"/>
98
								<xsl:variable name="val" select="normalize-space(.)" />
99
								<xsl:element name="{$fieldNS}:{$fieldName}">
100
									<xsl:choose>
101
										<xsl:when test="contains($val,'§§§')">
102
											<xsl:value-of select="normalize-space(substring-after($val,'§§§'))" />
103
										</xsl:when>
104
										<xsl:otherwise>
105
											<xsl:value-of select="$val" />
106
										</xsl:otherwise>
107
									</xsl:choose>
108
								</xsl:element>
109
							</xsl:for-each>
110
						</xsl:otherwise>
111
					</xsl:choose>
112
				</xsl:for-each>
113
				
114
				<xsl:for-each select=".//FIELD[@name='temp_projectid']/ITEM">
115
					<oaf:projectid><xsl:value-of select="concat('corda_______::', normalize-space(.))" /></oaf:projectid>
116
				</xsl:for-each>
117
								
118
				<!-- Probably also arxiv and pubmed identifiers should be added -->
119
				<xsl:if test="starts-with($createdFrom, 'doi')">
120
					<oaf:identifier identifierType="doi"><xsl:value-of select="$createdFrom" /></oaf:identifier>
121
				</xsl:if>
122
				
123
				<xsl:choose>
124
					<xsl:when test="starts-with($createdFrom, 'driver')">
125
						<oaf:collectedFrom name="Digital Repository Infrastructure Vision for European Research" id="openaire____::driver"/>
126
					</xsl:when>
127
					<xsl:when test="starts-with($createdFrom, 'doi')">
128
						<oaf:collectedFrom name="Crossref" id="openaire____::crossref"/>
129
					</xsl:when>
130
					<xsl:when test="starts-with($collectedFromId, 'opendoar::')">
131
						<oaf:collectedFrom name="{$collectedFromName}" id="opendoar____::{substring-after($hostedById, 'opendoar::')}" />
132
					</xsl:when>
133
					<xsl:when test="string-length($collectedFromId) = 36">
134
						<oaf:collectedFrom name="{$collectedFromName}" id="openaire____::{$collectedFromId}" />
135
					</xsl:when>
136
					<xsl:when test="$hostedById = 'openaire::WOS'">
137
						<oaf:collectedFrom name="Web Crawl" id="openaire____::webcrawl" />
138
					</xsl:when>					
139
					<xsl:otherwise>
140
						<oaf:collectedFrom />
141
					</xsl:otherwise>
142
				</xsl:choose>
143

    
144
				<xsl:choose>
145
					<xsl:when test="$hostedById = 'openaire::WOS'">
146
						<oaf:hostedBy name="Web Crawl" id="openaire____::webcrawl" />
147
					</xsl:when>
148
					<xsl:when test="starts-with($hostedById, 'opendoar::')">
149
						<oaf:hostedBy name="{$hostedByName}" id="opendoar____::{substring-after($hostedById, 'opendoar::')}" />
150
					</xsl:when>
151
					<xsl:when test="$hostedById = 'cdf921f9-0b9f-43c9-bd4c-7c4955f273ca'">
152
						<oaf:hostedBy name="arXiv.org e-Print Archive" id="opendoar____::18" />
153
					</xsl:when>					
154
					<xsl:when test="string-length($hostedById) = 36">
155
						<oaf:hostedBy name="{$hostedByName}" id="openaire____::{$hostedById}" />
156
					</xsl:when>
157
					<xsl:otherwise>
158
						<oaf:hostedBy />
159
					</xsl:otherwise>
160
				</xsl:choose>
161
			</metadata>
162
		</record>
163
	</xsl:template>
164

    
165
</xsl:stylesheet>
166

    
(4-4/6)