Project

General

Profile

« Previous | Next » 

Revision 56361

Converted text to CDATA

View differences:

opendoar2dbrest.xml
11 11
            <IMPORTED/>
12 12
            <SCRIPT>
13 13
                <TITLE>OPENDOAR 2 DB REST</TITLE>
14
                <CODE>
15
					
16
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
17
                xmlns:dnet="eu.dnetlib.data.transform.xml.AbstractDNetXsltFunctions" version="1.0"&gt;
14
                <CODE><![CDATA[
18 15

  
19
	&lt;xsl:param name="varDataSourceId"/&gt;
20
	&lt;xsl:variable name="namespacePrefix" select="string('opendoar____')"/&gt;
16
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
17
                xmlns:dnet="eu.dnetlib.data.transform.xml.AbstractDNetXsltFunctions" version="1.0">
21 18

  
22
	&lt;xsl:template match="/"&gt;
23
		&lt;record&gt;
19
	<xsl:param name="varDataSourceId"/>
20
	<xsl:variable name="namespacePrefix" select="string('opendoar____')"/>
24 21

  
25
			&lt;xsl:copy-of select=".//*[local-name()='header']"/&gt;
26
			&lt;metadata&gt;
27
				&lt;xsl:variable name="rid" select="normalize-space(//items/system_metadata/id)"/&gt;
28
				&lt;xsl:variable name="datasourceId" select="concat($namespacePrefix, '::', $rid)"/&gt;
29
				&lt;xsl:variable name="apiId" select="concat('api_________::', $datasourceId, '::0')"/&gt;
30
				&lt;xsl:variable name="oUrl" select="normalize-space(//organisation/url)"/&gt;
31
				&lt;xsl:variable name="oName" select="normalize-space(//organisation/name/name)"/&gt;
32
				&lt;xsl:variable name="organizationId" select="translate(concat($namespacePrefix, '::', $oName), ' ', '_')"/&gt;
33
				&lt;xsl:variable name="repositoryType"&gt;
34
					&lt;xsl:choose&gt;
35
						&lt;xsl:when test="lower-case(normalize-space(//repository_metadata/type)) = 'institutional'"&gt;
36
							&lt;xsl:value-of select="string('pubsrepository::institutional')"/&gt;
37
						&lt;/xsl:when&gt;
38
						&lt;xsl:when test="lower-case(normalize-space(//repository_metadata/type)) = 'governmental'"&gt;
39
							&lt;xsl:value-of select="string('pubsrepository::institutional')"/&gt;
40
						&lt;/xsl:when&gt;
41
						&lt;xsl:when test="lower-case(normalize-space(//repository_metadata/type)) = 'disciplinary'"&gt;
42
							&lt;xsl:value-of select="string('pubsrepository::thematic')"/&gt;
43
						&lt;/xsl:when&gt;
44
						&lt;xsl:when test="lower-case(normalize-space(//repository_metadata/type)) = 'aggregating'"&gt;
45
							&lt;xsl:choose&gt;
46
								&lt;xsl:when test="lower-case(normalize-space(//repository_metadata/content_types)) = 'journal_articles'"&gt;
47
									&lt;xsl:value-of select="string('aggregator::pubsrepository::journals')"/&gt;
48
								&lt;/xsl:when&gt;
49
								&lt;xsl:otherwise&gt;
50
									&lt;xsl:value-of select="string('aggregator::pubsrepository::unknown')"/&gt;
51
								&lt;/xsl:otherwise&gt;
52
							&lt;/xsl:choose&gt;
53
						&lt;/xsl:when&gt;
54
						&lt;xsl:otherwise&gt;
55
							&lt;xsl:value-of select="string('pubsrepository::unknown')"/&gt;
56
						&lt;/xsl:otherwise&gt;
57
					&lt;/xsl:choose&gt;
58
				&lt;/xsl:variable&gt;
22
	<xsl:template match="/">
23
		<record>
59 24

  
60
				&lt;xsl:variable name="contenttypes"&gt;
61
					&lt;xsl:for-each select=".//content_types"&gt;
62
						&lt;xsl:if test="position() &amp;gt; 1"&gt; - &lt;/xsl:if&gt;
63
						&lt;xsl:value-of select="."/&gt;
64
					&lt;/xsl:for-each&gt;
65
				&lt;/xsl:variable&gt;
66
				&lt;xsl:variable name="languages"&gt;
67
					&lt;xsl:for-each select=".//content_languages"&gt;
68
						&lt;xsl:if test="position() &amp;gt; 1"&gt;, &lt;/xsl:if&gt;
69
						&lt;xsl:value-of select="."/&gt;
70
					&lt;/xsl:for-each&gt;
71
				&lt;/xsl:variable&gt;
25
			<xsl:copy-of select=".//*[local-name()='header']"/>
26
			<metadata>
27
				<xsl:variable name="rid" select="normalize-space(//items/system_metadata/id)"/>
28
				<xsl:variable name="datasourceId" select="concat($namespacePrefix, '::', $rid)"/>
29
				<xsl:variable name="apiId" select="concat('api_________::', $datasourceId, '::0')"/>
30
				<xsl:variable name="oUrl" select="normalize-space(//organisation/url)"/>
31
				<xsl:variable name="oName" select="normalize-space(//organisation/name/name)"/>
32
				<xsl:variable name="organizationId" select="translate(concat($namespacePrefix, '::', $oName), ' ', '_')"/>
33
				<xsl:variable name="repositoryType">
34
					<xsl:choose>
35
						<xsl:when test="lower-case(normalize-space(//repository_metadata/type)) = 'institutional'">
36
							<xsl:value-of select="string('pubsrepository::institutional')"/>
37
						</xsl:when>
38
						<xsl:when test="lower-case(normalize-space(//repository_metadata/type)) = 'governmental'">
39
							<xsl:value-of select="string('pubsrepository::institutional')"/>
40
						</xsl:when>
41
						<xsl:when test="lower-case(normalize-space(//repository_metadata/type)) = 'disciplinary'">
42
							<xsl:value-of select="string('pubsrepository::thematic')"/>
43
						</xsl:when>
44
						<xsl:when test="lower-case(normalize-space(//repository_metadata/type)) = 'aggregating'">
45
							<xsl:choose>
46
								<xsl:when test="lower-case(normalize-space(//repository_metadata/content_types)) = 'journal_articles'">
47
									<xsl:value-of select="string('aggregator::pubsrepository::journals')"/>
48
								</xsl:when>
49
								<xsl:otherwise>
50
									<xsl:value-of select="string('aggregator::pubsrepository::unknown')"/>
51
								</xsl:otherwise>
52
							</xsl:choose>
53
						</xsl:when>
54
						<xsl:otherwise>
55
							<xsl:value-of select="string('pubsrepository::unknown')"/>
56
						</xsl:otherwise>
57
					</xsl:choose>
58
				</xsl:variable>
72 59

  
73
				&lt;xsl:variable name="subjects"&gt;
74
					&lt;xsl:for-each select=".//content_subjects/label"&gt;
75
						&lt;xsl:if test="position() &amp;gt; 1"&gt; @@ &lt;/xsl:if&gt;
76
						&lt;xsl:value-of select="."/&gt;
77
					&lt;/xsl:for-each&gt;
78
				&lt;/xsl:variable&gt;
60
				<xsl:variable name="contenttypes">
61
					<xsl:for-each select=".//content_types">
62
						<xsl:if test="position() &gt; 1"> - </xsl:if>
63
						<xsl:value-of select="."/>
64
					</xsl:for-each>
65
				</xsl:variable>
66
				<xsl:variable name="languages">
67
					<xsl:for-each select=".//content_languages">
68
						<xsl:if test="position() &gt; 1">, </xsl:if>
69
						<xsl:value-of select="."/>
70
					</xsl:for-each>
71
				</xsl:variable>
79 72

  
80
				&lt;ROWS&gt;
81
					&lt;ROW table="dsm_datasources"&gt;
82
						&lt;FIELD name="_dnet_resource_identifier_"&gt;
83
							&lt;xsl:value-of select="$datasourceId"/&gt;
84
						&lt;/FIELD&gt;
85
						&lt;FIELD name="id"&gt;
86
							&lt;xsl:value-of select="$datasourceId"/&gt;
87
						&lt;/FIELD&gt;
88
						&lt;FIELD name="officialname"&gt;
89
							&lt;xsl:value-of select="normalize-space(//repository_metadata/name/name)"/&gt;
90
						&lt;/FIELD&gt;
91
						&lt;FIELD name="englishname"&gt;
92
							&lt;xsl:value-of select="normalize-space(//repository_metadata/acronym)"/&gt;
93
						&lt;/FIELD&gt;
94
						&lt;FIELD name="websiteurl"&gt;
95
							&lt;xsl:value-of select="normalize-space(//repository_metadata/url)"/&gt;
96
						&lt;/FIELD&gt;
97
						&lt;FIELD name="contactemail"&gt;
98
							&lt;xsl:value-of select="normalize-space(//pEmail)"/&gt;
99
						&lt;/FIELD&gt;
100
                                                &lt;xsl:if test="not(normalize-space(//organisation/location/latitude) = 'null')"&gt;
101
						        &lt;FIELD name="latitude" type="float"&gt;
102
							      &lt;xsl:value-of select="normalize-space(//organisation/location/latitude)"/&gt;
103
						        &lt;/FIELD&gt;
104
                                                &lt;/xsl:if&gt;
105
                                                &lt;xsl:if test="normalize-space(//organisation/location/latitude) = 'null'"&gt;
106
							&lt;FIELD name="latitude" type="float"/&gt;
107
                                                &lt;/xsl:if&gt;
108
                                                &lt;xsl:if test="not(normalize-space(//organisation/location/longitude) = 'null')"&gt;
109
						          &lt;FIELD name="longitude" type="float"&gt;
110
							        &lt;xsl:value-of select="normalize-space(//organisation/location/longitude)"/&gt;
111
						          &lt;/FIELD&gt;
112
                                               &lt;/xsl:if&gt;
113
                                               &lt;xsl:if test="normalize-space(//organisation/location/longitude) = 'null'"&gt;
114
							&lt;FIELD name="longitude" type="float"/&gt;
115
                                                &lt;/xsl:if&gt;
116
						&lt;FIELD name="namespaceprefix"&gt;
117
							&lt;xsl:value-of select="dnet:generateNsPrefix('od', $rid)"/&gt;
118
						&lt;/FIELD&gt;
119
						&lt;FIELD name="languages"&gt;
120
							&lt;xsl:value-of select="normalize-space($languages)"/&gt;
121
						&lt;/FIELD&gt;
122
						&lt;FIELD name="od_contenttypes"&gt;
123
							&lt;xsl:value-of select="normalize-space($contenttypes)"/&gt;
124
						&lt;/FIELD&gt;
125
						&lt;FIELD name="collectedfrom"&gt;
126
							&lt;xsl:value-of select="$varDataSourceId"/&gt;
127
						&lt;/FIELD&gt;
128
						&lt;FIELD name="typology"&gt;
129
							&lt;xsl:value-of select="$repositoryType"/&gt;
130
						&lt;/FIELD&gt;
131
						&lt;FIELD name="provenanceaction"&gt;sysimport:crosswalk:entityregistry&lt;/FIELD&gt;
132
						&lt;FIELD name="platform"&gt;
133
							&lt;xsl:value-of select="normalize-space(//repository_metadata/software/name)"/&gt;
134
						&lt;/FIELD&gt;
135
						&lt;FIELD name="description"&gt;
136
							&lt;xsl:value-of select="normalize-space(//repository_metadata/description)"/&gt;
137
						&lt;/FIELD&gt;
73
				<xsl:variable name="subjects">
74
					<xsl:for-each select=".//content_subjects/label">
75
						<xsl:if test="position() &gt; 1"> @@ </xsl:if>
76
						<xsl:value-of select="."/>
77
					</xsl:for-each>
78
				</xsl:variable>
138 79

  
139
						&lt;FIELD name="subjects"&gt;
140
							&lt;xsl:value-of select="normalize-space($subjects)"/&gt;
141
						&lt;/FIELD&gt;
142
					&lt;/ROW&gt;
80
				<ROWS>
81
					<ROW table="dsm_datasources">
82
						<FIELD name="_dnet_resource_identifier_">
83
							<xsl:value-of select="$datasourceId"/>
84
						</FIELD>
85
						<FIELD name="id">
86
							<xsl:value-of select="$datasourceId"/>
87
						</FIELD>
88
						<FIELD name="officialname">
89
							<xsl:value-of select="normalize-space(//repository_metadata/name/name)"/>
90
						</FIELD>
91
						<FIELD name="englishname">
92
							<xsl:value-of select="normalize-space(//repository_metadata/acronym)"/>
93
						</FIELD>
94
						<FIELD name="websiteurl">
95
							<xsl:value-of select="normalize-space(//repository_metadata/url)"/>
96
						</FIELD>
97
						<FIELD name="contactemail">
98
							<xsl:value-of select="normalize-space(//pEmail)"/>
99
						</FIELD>
100
                                                <xsl:if test="not(normalize-space(//organisation/location/latitude) = 'null')">
101
						        <FIELD name="latitude" type="float">
102
							      <xsl:value-of select="normalize-space(//organisation/location/latitude)"/>
103
						        </FIELD>
104
                                                </xsl:if>
105
                                                <xsl:if test="normalize-space(//organisation/location/latitude) = 'null'">
106
							<FIELD name="latitude" type="float"/>
107
                                                </xsl:if>
108
                                                <xsl:if test="not(normalize-space(//organisation/location/longitude) = 'null')">
109
						          <FIELD name="longitude" type="float">
110
							        <xsl:value-of select="normalize-space(//organisation/location/longitude)"/>
111
						          </FIELD>
112
                                               </xsl:if>
113
                                               <xsl:if test="normalize-space(//organisation/location/longitude) = 'null'">
114
							<FIELD name="longitude" type="float"/>
115
                                                </xsl:if>
116
						<FIELD name="namespaceprefix">
117
							<xsl:value-of select="dnet:generateNsPrefix('od', $rid)"/>
118
						</FIELD>
119
						<FIELD name="languages">
120
							<xsl:value-of select="normalize-space($languages)"/>
121
						</FIELD>
122
						<FIELD name="od_contenttypes">
123
							<xsl:value-of select="normalize-space($contenttypes)"/>
124
						</FIELD>
125
						<FIELD name="collectedfrom">
126
							<xsl:value-of select="$varDataSourceId"/>
127
						</FIELD>
128
						<FIELD name="typology">
129
							<xsl:value-of select="$repositoryType"/>
130
						</FIELD>
131
						<FIELD name="provenanceaction">sysimport:crosswalk:entityregistry</FIELD>
132
						<FIELD name="platform">
133
							<xsl:value-of select="normalize-space(//repository_metadata/software/name)"/>
134
						</FIELD>
135
						<FIELD name="description">
136
							<xsl:value-of select="normalize-space(//repository_metadata/description)"/>
137
						</FIELD>
143 138

  
144
					&lt;ROW table="dsm_api"&gt;
145
						&lt;FIELD name="_dnet_resource_identifier_"&gt;
146
							&lt;xsl:value-of select="$apiId"/&gt;
147
						&lt;/FIELD&gt;
148
						&lt;FIELD name="id"&gt;
149
							&lt;xsl:value-of select="$apiId"/&gt;
150
						&lt;/FIELD&gt;
151
						&lt;FIELD name="protocol"&gt;oai&lt;/FIELD&gt;
152
						&lt;FIELD name="datasource"&gt;
153
							&lt;xsl:value-of select="$datasourceId"/&gt;
154
						&lt;/FIELD&gt;
155
						&lt;FIELD name="contentdescription"&gt;metadata&lt;/FIELD&gt;
156
						&lt;FIELD name="typology"&gt;
157
							&lt;xsl:value-of select="$repositoryType"/&gt;
158
						&lt;/FIELD&gt;
159
						&lt;FIELD name="baseurl"&gt;
160
							&lt;xsl:value-of select="normalize-space(//repository_metadata/oai_url)"/&gt;
161
						&lt;/FIELD&gt;
162
						&lt;FIELD name="metadata_identifier_path"&gt;//*[local-name()='header']/*[local-name()='identifier']&lt;/FIELD&gt;
163
					&lt;/ROW&gt;
139
						<FIELD name="subjects">
140
							<xsl:value-of select="normalize-space($subjects)"/>
141
						</FIELD>
142
					</ROW>
164 143

  
165
					&lt;ROW table="dsm_apiparams"&gt;
166
						&lt;FIELD name="_dnet_resource_identifier_"&gt;
167
							&lt;xsl:value-of select="concat($apiId, '@@format')"/&gt;
168
						&lt;/FIELD&gt;
169
						&lt;FIELD name="api"&gt;
170
							&lt;xsl:value-of select="$apiId"/&gt;
171
						&lt;/FIELD&gt;
172
						&lt;FIELD name="param"&gt;format&lt;/FIELD&gt;
173
						&lt;FIELD name="value"&gt;oai_dc&lt;/FIELD&gt;
174
					&lt;/ROW&gt;
144
					<ROW table="dsm_api">
145
						<FIELD name="_dnet_resource_identifier_">
146
							<xsl:value-of select="$apiId"/>
147
						</FIELD>
148
						<FIELD name="id">
149
							<xsl:value-of select="$apiId"/>
150
						</FIELD>
151
						<FIELD name="protocol">oai</FIELD>
152
						<FIELD name="datasource">
153
							<xsl:value-of select="$datasourceId"/>
154
						</FIELD>
155
						<FIELD name="contentdescription">metadata</FIELD>
156
						<FIELD name="typology">
157
							<xsl:value-of select="$repositoryType"/>
158
						</FIELD>
159
						<FIELD name="baseurl">
160
							<xsl:value-of select="normalize-space(//repository_metadata/oai_url)"/>
161
						</FIELD>
162
						<FIELD name="metadata_identifier_path">//*[local-name()='header']/*[local-name()='identifier']</FIELD>
163
					</ROW>
175 164

  
176
					&lt;ROW table="dsm_organizations"&gt;
177
						&lt;FIELD name="_dnet_resource_identifier_"&gt;
178
							&lt;xsl:value-of select="$organizationId"/&gt;
179
						&lt;/FIELD&gt;
180
						&lt;FIELD name="id"&gt;
181
							&lt;xsl:value-of select="$organizationId"/&gt;
182
						&lt;/FIELD&gt;
183
						&lt;FIELD name="legalname"&gt;
184
							&lt;xsl:value-of select="$oName"/&gt;
185
						&lt;/FIELD&gt;
186
						&lt;FIELD name="legalshortname"&gt;
187
							&lt;xsl:value-of select="normalize-space(//organisation/name/acronym)"/&gt;
188
						&lt;/FIELD&gt;
189
						&lt;FIELD name="websiteurl"&gt;
190
							&lt;xsl:choose&gt;
191
								&lt;xsl:when test="starts-with(normalize-space($oUrl), 'http')"&gt;
192
									&lt;xsl:value-of select="normalize-space($oUrl)"/&gt;
193
								&lt;/xsl:when&gt;
194
								&lt;xsl:when test="string-length(normalize-space($oUrl)) &amp;gt; 0"&gt;
195
									&lt;xsl:value-of select="concat('http://', normalize-space($oUrl))"/&gt;
196
								&lt;/xsl:when&gt;
197
							&lt;/xsl:choose&gt;
198
						&lt;/FIELD&gt;
165
					<ROW table="dsm_apiparams">
166
						<FIELD name="_dnet_resource_identifier_">
167
							<xsl:value-of select="concat($apiId, '@@format')"/>
168
						</FIELD>
169
						<FIELD name="api">
170
							<xsl:value-of select="$apiId"/>
171
						</FIELD>
172
						<FIELD name="param">format</FIELD>
173
						<FIELD name="value">oai_dc</FIELD>
174
					</ROW>
199 175

  
200
						&lt;FIELD name="country"&gt;
201
							&lt;xsl:choose&gt;
202
								&lt;xsl:when test="normalize-space(//organisation/country) = 'UK'"&gt;GB&lt;/xsl:when&gt;
203
								&lt;xsl:otherwise&gt;
204
	                                &lt;xsl:value-of select="normalize-space(//organisation/country)"/>
205
								&lt;/xsl:otherwise&gt;
206
							&lt;/xsl:choose&gt;
207
						&lt;/FIELD&gt;
176
					<ROW table="dsm_organizations">
177
						<FIELD name="_dnet_resource_identifier_">
178
							<xsl:value-of select="$organizationId"/>
179
						</FIELD>
180
						<FIELD name="id">
181
							<xsl:value-of select="$organizationId"/>
182
						</FIELD>
183
						<FIELD name="legalname">
184
							<xsl:value-of select="$oName"/>
185
						</FIELD>
186
						<FIELD name="legalshortname">
187
							<xsl:value-of select="normalize-space(//organisation/name/acronym)"/>
188
						</FIELD>
189
						<FIELD name="websiteurl">
190
							<xsl:choose>
191
								<xsl:when test="starts-with(normalize-space($oUrl), 'http')">
192
									<xsl:value-of select="normalize-space($oUrl)"/>
193
								</xsl:when>
194
								<xsl:when test="string-length(normalize-space($oUrl)) &gt; 0">
195
									<xsl:value-of select="concat('http://', normalize-space($oUrl))"/>
196
								</xsl:when>
197
							</xsl:choose>
198
						</FIELD>
208 199

  
209
						&lt;FIELD name="collectedfrom"&gt;
210
							&lt;xsl:value-of select="$varDataSourceId"/&gt;
211
						&lt;/FIELD&gt;
212
						&lt;FIELD name="provenanceaction"&gt;sysimport:crosswalk:entityregistry&lt;/FIELD&gt;
213
					&lt;/ROW&gt;
200
						<FIELD name="country">
201
							<xsl:choose>
202
								<xsl:when test="normalize-space(//organisation/country) = 'UK'">GB</xsl:when>
203
								<xsl:otherwise>
204
	                                <xsl:value-of select="normalize-space(//organisation/country)"/>
205
								</xsl:otherwise>
206
							</xsl:choose>
207
						</FIELD>
214 208

  
215
					&lt;ROW table="dsm_datasource_organization"&gt;
216
						&lt;FIELD name="_dnet_resource_identifier_"&gt;
217
							&lt;xsl:value-of select="concat($datasourceId, '@@', $organizationId)"/&gt;
218
						&lt;/FIELD&gt;
219
						&lt;FIELD name="datasource"&gt;
220
							&lt;xsl:value-of select="$datasourceId"/&gt;
221
						&lt;/FIELD&gt;
222
						&lt;FIELD name="organization"&gt;
223
							&lt;xsl:value-of select="$organizationId"/&gt;
224
						&lt;/FIELD&gt;
225
					&lt;/ROW&gt;
209
						<FIELD name="collectedfrom">
210
							<xsl:value-of select="$varDataSourceId"/>
211
						</FIELD>
212
						<FIELD name="provenanceaction">sysimport:crosswalk:entityregistry</FIELD>
213
					</ROW>
226 214

  
227
				&lt;/ROWS&gt;
228
			&lt;/metadata&gt;
229
		&lt;/record&gt;
230
	&lt;/xsl:template&gt;
215
					<ROW table="dsm_datasource_organization">
216
						<FIELD name="_dnet_resource_identifier_">
217
							<xsl:value-of select="concat($datasourceId, '@@', $organizationId)"/>
218
						</FIELD>
219
						<FIELD name="datasource">
220
							<xsl:value-of select="$datasourceId"/>
221
						</FIELD>
222
						<FIELD name="organization">
223
							<xsl:value-of select="$organizationId"/>
224
						</FIELD>
225
					</ROW>
231 226

  
232
&lt;/xsl:stylesheet&gt;
227
				</ROWS>
228
			</metadata>
229
		</record>
230
	</xsl:template>
233 231

  
234
					
235
				</CODE>
232
</xsl:stylesheet>
233

  
234

  
235
				]]></CODE>
236 236
            </SCRIPT>
237 237
        </CONFIGURATION>
238 238
        <STATUS/>

Also available in: Unified diff