Project

General

Profile

1
<RESOURCE_PROFILE>
2
    <HEADER>
3
        <RESOURCE_IDENTIFIER value="f20483e7-46c4-4cec-87a8-17a0cbe1a003_VHJhbnNmb3JtYXRpb25SdWxlRFNSZXNvdXJjZXMvVHJhbnNmb3JtYXRpb25SdWxlRFNSZXNvdXJjZVR5cGU="/>
4
        <RESOURCE_TYPE value="TransformationRuleDSResourceType"/>
5
        <RESOURCE_KIND value="TransformationRuleDSResources"/>
6
        <RESOURCE_URI value=""/>
7
        <DATE_OF_CREATION value="2016-03-11T12:07:02+00:00"/>
8
    </HEADER>
9
    <BODY>
10
        <CONFIGURATION>
11
            <IMPORTED/>
12
            <SCRIPT>
13
                <TITLE>xslt_nlm2oaf_pmc</TITLE>
14
                <CODE>&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" 
15
                             xmlns:dri="http://www.driver-repository.eu/namespace/dri" 
16
                             xmlns:dc="http://purl.org/dc/elements/1.1/" 
17
                             xmlns:oaf="http://namespace.openaire.eu/oaf" 
18
                             xmlns:dr="http://www.driver-repository.eu/namespace/dr" 
19
                             xmlns:transformExt="http://namespace.openaire.eu/java/org.apache.commons.codec.digest.DigestUtils" 
20
                             xmlns:TransformationFunction="eu.dnetlib.data.collective.transformation.core.xsl.ext.TransformationFunctionProxy"
21
                             extension-element-prefixes="transformExt TransformationFunction"
22
                             exclude-result-prefixes="transformExt TransformationFunction" &gt;
23
                        &lt;xsl:output indent="yes" omit-xml-declaration="yes"/&gt;
24

    
25
  &lt;xsl:param name="varOfficialName" /&gt;
26
  &lt;xsl:param name="varDsType" /&gt;
27
  &lt;xsl:param name="varDataSourceId" /&gt;
28
  &lt;xsl:param name="varFP7" select="'corda_______::'"/&gt;
29
  &lt;xsl:param name="varH2020" select="'corda__h2020::'"/&gt;
30
  &lt;xsl:param name="epmcUrlPrefix" select="'http://europepmc.org/articles/'" /&gt;
31
  &lt;xsl:param name="repoCode" select="substring-before(//*[local-name() = 'header']/*[local-name()='recordIdentifier'], ':')"/&gt;
32

    
33
  &lt;xsl:param name="index" select="0"/&gt;
34
  &lt;xsl:param name="transDate" select="current-dateTime()"/&gt;
35
  &lt;xsl:variable name="tf" select="TransformationFunction:getInstance()"/&gt;
36
  &lt;xsl:variable name="year" select="format-number( ( //*[local-name()='article-meta']//*[local-name()='pub-date'][@pub-type='epub']/*[local-name()='year'] | //*[local-name()='article-meta']//*[local-name()='pub-date'][@date-type='pub' and @publication-format='electronic']/*[local-name()='year']), '0000')" /&gt;
37
  &lt;xsl:variable name="month" select="format-number( (//*[local-name()='article-meta']//*[local-name()='pub-date'][@pub-type='epub']/*[local-name()='month'] | //*[local-name()='article-meta']//*[local-name()='pub-date'][@date-type='pub' and @publication-format='electronic']/*[local-name()='month']), '00')" /&gt;
38
  &lt;xsl:variable name="day" select="format-number( (//*[local-name()='article-meta']//*[local-name()='pub-date'][@pub-type='epub']/*[local-name()='day'] | //*[local-name()='article-meta']//*[local-name()='pub-date'][@date-type='pub' and @publication-format='electronic']/*[local-name()='day']), '00')" /&gt;
39

    
40
               &lt;xsl:template name="terminate"&gt;
41
                	&lt;xsl:message terminate="yes"&gt;
42
                             	record is not compliant, transformation is interrupted.
43
                	&lt;/xsl:message&gt;
44
               &lt;/xsl:template&gt;
45

    
46
                        &lt;xsl:template match="/"&gt;
47
                              &lt;record&gt;
48
                                  &lt;xsl:apply-templates select="//*[local-name() = 'header']" /&gt;
49
                                  &lt;metadata&gt;
50
                                    &lt;xsl:call-template name="allElements"&gt;
51
                                            &lt;xsl:with-param name="sourceElement" select="//*[local-name() = 'article-meta']//*[local-name()='article-title']"/&gt;
52
                                            &lt;xsl:with-param name="targetElement" select="'dc:title'"/&gt;
53
                                    &lt;/xsl:call-template&gt;
54
                                    &lt;xsl:call-template name="authors"&gt;
55
                                            &lt;xsl:with-param name="sourceElement" select="//*[local-name() = 'contrib'][@contrib-type='author']"/&gt;
56
                                    &lt;/xsl:call-template&gt;
57
&lt;!--                                    &lt;xsl:call-template name="allElements"&gt;
58
                                            &lt;xsl:with-param name="sourceElement" select="//dc:contributor"/&gt;
59
                                            &lt;xsl:with-param name="targetElement" select="'dc:contributor'"/&gt;
60
                                    &lt;/xsl:call-template&gt;
61
--&gt;
62
                                    &lt;xsl:call-template name="allElements"&gt;
63
                                            &lt;xsl:with-param name="sourceElement" select="//*[local-name()='article-meta']/*[local-name()='abstract']"/&gt;
64
                                            &lt;xsl:with-param name="targetElement" select="'dc:description'"/&gt;
65
                                    &lt;/xsl:call-template&gt;
66
                                    &lt;xsl:call-template name="allElements"&gt;
67
                                            &lt;xsl:with-param name="sourceElement" select="//*[local-name()='article-categories']//*[local-name()='subject']"/&gt;
68
                                            &lt;xsl:with-param name="targetElement" select="'dc:subject'"/&gt;
69
                                    &lt;/xsl:call-template&gt;
70
                                    &lt;xsl:call-template name="allElements"&gt;
71
                                            &lt;xsl:with-param name="sourceElement" select="//*[local-name()='kwd-group']//*[local-name()='kwd']"/&gt;
72
                                            &lt;xsl:with-param name="targetElement" select="'dc:subject'"/&gt;
73
                                    &lt;/xsl:call-template&gt;
74
                                    &lt;xsl:call-template name="allElements"&gt;
75
                                            &lt;xsl:with-param name="sourceElement" select="//*[local-name()='publisher']/*[local-name()='publisher-name']"/&gt;
76
                                            &lt;xsl:with-param name="targetElement" select="'dc:publisher'"/&gt;
77
                                    &lt;/xsl:call-template&gt;
78
                                    &lt;xsl:call-template name="allElements"&gt;
79
                                            &lt;xsl:with-param name="sourceElement" select="//*[local-name()='journal-meta']//*[local-name()='journal-title']"/&gt;
80
                                            &lt;xsl:with-param name="targetElement" select="'dc:source'"/&gt;
81
                                    &lt;/xsl:call-template&gt;
82
                                    &lt;xsl:element name="dc:language"&gt;
83
                                                                          &lt;xsl:text&gt;eng&lt;/xsl:text&gt;
84
                                    &lt;/xsl:element&gt;
85
                                    &lt;xsl:element name="dc:identifier"&gt;
86
                                            &lt;xsl:value-of select="concat($epmcUrlPrefix, //*[local-name()='article-id'][@pub-id-type='pmcid'])" /&gt;
87
                                    &lt;/xsl:element&gt;
88
                                    &lt;xsl:element name="oaf:dateAccepted"&gt;
89
                                            &lt;xsl:choose&gt;
90
					    &lt;xsl:when test="//*[local-name()='article-meta']//*[local-name()='pub-date'][@pub-type='epub'] or //*[local-name()='article-meta']//*[local-name()='pub-date'][@date-type='pub' and @publication-format='electronic']" &gt;
91

    
92
                                               &lt;xsl:if test="string(number($month)) eq 'NaN'" &gt;
93
                                               &lt;xsl:value-of select="concat($year, '-', '01', '-', '01')" /&gt;
94
                                               &lt;/xsl:if&gt;
95
                                               &lt;xsl:if test="string(number($month)) != 'NaN'" &gt;
96
                                               &lt;xsl:value-of select="concat($year, '-', $month, '-', '01')" /&gt;
97
                                               &lt;/xsl:if&gt;
98
                                            &lt;/xsl:when&gt;
99
                                            &lt;xsl:otherwise&gt;
100
                                               &lt;xsl:value-of select="concat(//*[local-name()='article-meta']//*[local-name()='pub-date'][@pub-type='ppub']/*[local-name()='year'], '-01-01')" /&gt;
101
                                            &lt;/xsl:otherwise&gt;
102
                                            &lt;/xsl:choose&gt;
103
                                    &lt;/xsl:element&gt;
104
                                    &lt;xsl:call-template name="allElements"&gt;
105
                                            &lt;xsl:with-param name="sourceElement" select="//*[local-name()='permissions']/*[local-name()='copyright-statement']"/&gt;
106
                                            &lt;xsl:with-param name="targetElement" select="'dc:rights'"/&gt;
107
                                    &lt;/xsl:call-template&gt;
108
                                    &lt;xsl:call-template name="allElements"&gt;
109
                                            &lt;xsl:with-param name="sourceElement" select="//*[local-name()='permissions']/*[local-name()='license']"/&gt;
110
                                            &lt;xsl:with-param name="targetElement" select="'dc:rights'"/&gt;
111
                                    &lt;/xsl:call-template&gt;
112
                                    &lt;xsl:call-template name="allElements"&gt;
113
                                            &lt;xsl:with-param name="sourceElement" select="//*[local-name()='fn-group']//*[local-name()='fn']"/&gt;
114
                                            &lt;xsl:with-param name="targetElement" select="'dc:relation'"/&gt;
115
                                    &lt;/xsl:call-template&gt;
116
                                    &lt;xsl:call-template name="identifiers"&gt;
117
                                            &lt;xsl:with-param name="sourceElement" select="//*[local-name()='article-id']"/&gt;
118
                                    &lt;/xsl:call-template&gt;
119
                                  &lt;xsl:element name="oaf:accessrights"&gt;
120
                                             &lt;xsl:text&gt;OPEN&lt;/xsl:text&gt;
121
                                  &lt;/xsl:element&gt;
122
                                  &lt;xsl:element name="dr:CobjCategory"&gt;
123
                                             &lt;xsl:text&gt;0001&lt;/xsl:text&gt;
124
                                  &lt;/xsl:element&gt;
125
                                    &lt;xsl:call-template name="journal"&gt;
126
                                            &lt;xsl:with-param name="journalTitle" select="//*[local-name()='journal-meta']//*[local-name()='journal-title']"/&gt;
127
                                            &lt;xsl:with-param name="issn" select="//*[local-name()='journal-meta']/*[local-name()='issn'][@pub-type='ppub']"/&gt;
128
                                            &lt;xsl:with-param name="eissn" select="//*[local-name()='journal-meta']/*[local-name()='issn'][@pub-type='epub']"/&gt;
129
                                            &lt;xsl:with-param name="vol" select="//*[local-name()='article-meta']/*[local-name()='volume']"/&gt;
130
                                            &lt;xsl:with-param name="issue" select="//*[local-name()='article-meta']/*[local-name()='issue']"/&gt;
131
                                            &lt;xsl:with-param name="sp" select="//*[local-name()='article-meta']/*[local-name()='fpage']"/&gt;
132
                                            &lt;xsl:with-param name="ep" select="//*[local-name()='article-meta']/*[local-name()='lpage']"/&gt;
133
                                    &lt;/xsl:call-template&gt;
134
         &lt;oaf:hostedBy&gt;
135
            &lt;xsl:attribute name="name"&gt;
136
               &lt;xsl:value-of select="$varOfficialName"/&gt;
137
            &lt;/xsl:attribute&gt;
138
            &lt;xsl:attribute name="id"&gt;
139
               &lt;xsl:value-of select="$varDataSourceId"/&gt;
140
            &lt;/xsl:attribute&gt;
141
         &lt;/oaf:hostedBy&gt;
142
         &lt;oaf:collectedFrom&gt;
143
            &lt;xsl:attribute name="name"&gt;
144
               &lt;xsl:value-of select="$varOfficialName"/&gt;
145
            &lt;/xsl:attribute&gt;
146
            &lt;xsl:attribute name="id"&gt;
147
               &lt;xsl:value-of select="$varDataSourceId"/&gt;
148
            &lt;/xsl:attribute&gt;
149
         &lt;/oaf:collectedFrom&gt;
150
                                  &lt;/metadata&gt;
151
                                &lt;xsl:copy-of select="//*[local-name() = 'about']" /&gt;
152
                              &lt;/record&gt;
153

    
154
                        &lt;/xsl:template&gt;
155

    
156
         &lt;xsl:template name="allElements"&gt;
157
             &lt;xsl:param name="sourceElement"/&gt;
158
             &lt;xsl:param name="targetElement"/&gt;
159
             &lt;xsl:for-each select="$sourceElement"&gt;
160
                &lt;xsl:element name="{$targetElement}"&gt;
161
                    &lt;xsl:value-of select="normalize-space(.)"/&gt;
162
                &lt;/xsl:element&gt;
163
             &lt;/xsl:for-each&gt;
164
          &lt;/xsl:template&gt;
165

    
166
          &lt;xsl:template name="journal"&gt;
167
             &lt;xsl:param name="journalTitle"/&gt;
168
             &lt;xsl:param name="issn"/&gt;
169
             &lt;xsl:param name="eissn"/&gt;
170
             &lt;xsl:param name="vol"/&gt;
171
             &lt;xsl:param name="issue"/&gt;
172
             &lt;xsl:param name="sp"/&gt;
173
             &lt;xsl:param name="ep"/&gt;
174
                &lt;xsl:element name="oaf:journal"&gt;
175
                    &lt;xsl:attribute name="issn"&gt;
176
                    &lt;xsl:value-of select="normalize-space($issn)"/&gt;
177
                    &lt;/xsl:attribute&gt;
178
                    &lt;xsl:attribute name="eissn"&gt;
179
                    &lt;xsl:value-of select="normalize-space($eissn)"/&gt;
180
                    &lt;/xsl:attribute&gt;
181
                    &lt;xsl:attribute name="vol"&gt;
182
                    &lt;xsl:value-of select="normalize-space($vol)"/&gt;
183
                    &lt;/xsl:attribute&gt;
184
                    &lt;xsl:attribute name="iss"&gt;
185
                    &lt;xsl:value-of select="normalize-space($issue)"/&gt;
186
                    &lt;/xsl:attribute&gt;
187
                    &lt;xsl:attribute name="sp"&gt;
188
                    &lt;xsl:value-of select="normalize-space($sp)"/&gt;
189
                    &lt;/xsl:attribute&gt;
190
                    &lt;xsl:attribute name="ep"&gt;
191
                    &lt;xsl:value-of select="normalize-space($ep)"/&gt;
192
                    &lt;/xsl:attribute&gt;
193
                    &lt;xsl:value-of select="normalize-space($journalTitle)"/&gt;
194
                &lt;/xsl:element&gt;
195
          &lt;/xsl:template&gt;
196

    
197

    
198
          &lt;xsl:template name="identifiers"&gt;
199
             &lt;xsl:param name="sourceElement"/&gt;
200
                &lt;xsl:element name="oaf:identifier"&gt;
201
                         &lt;xsl:attribute name="identifierType"&gt;
202
                               &lt;xsl:text&gt;doi&lt;/xsl:text&gt;
203
                         &lt;/xsl:attribute&gt;
204
                         &lt;xsl:value-of select="$sourceElement[@pub-id-type='doi']"/&gt;
205
                &lt;/xsl:element&gt;
206
                &lt;xsl:element name="oaf:identifier"&gt;
207
                         &lt;xsl:attribute name="identifierType"&gt;
208
                               &lt;xsl:text&gt;pmc&lt;/xsl:text&gt;
209
                         &lt;/xsl:attribute&gt;
210
                         &lt;xsl:value-of select="$sourceElement[@pub-id-type='pmcid']"/&gt;
211
                &lt;/xsl:element&gt;
212
                &lt;xsl:element name="oaf:identifier"&gt;
213
                         &lt;xsl:attribute name="identifierType"&gt;
214
                               &lt;xsl:text&gt;pmid&lt;/xsl:text&gt;
215
                         &lt;/xsl:attribute&gt;
216
                         &lt;xsl:value-of select="$sourceElement[@pub-id-type='pmid']"/&gt;
217
                &lt;/xsl:element&gt;
218
          &lt;/xsl:template&gt;
219

    
220
          &lt;xsl:template name="authors"&gt;
221
             &lt;xsl:param name="sourceElement"/&gt;
222
             &lt;xsl:for-each select="$sourceElement"&gt;
223
                &lt;xsl:element name="dc:creator"&gt;
224
                    &lt;xsl:if test="./*[local-name()='contrib-id'][@contrib-id-type='orcid']"&gt;
225
                         &lt;xsl:attribute name="nameIdentifierScheme"&gt;
226
                             &lt;xsl:text&gt;ORCID&lt;/xsl:text&gt;
227
                         &lt;/xsl:attribute&gt;
228
                         &lt;xsl:attribute name="schemeURI"&gt;
229
                             &lt;xsl:text&gt;http://orcid.org/&lt;/xsl:text&gt;
230
                         &lt;/xsl:attribute&gt; 
231
                         &lt;xsl:attribute name="nameIdentifier"&gt;
232
                             &lt;xsl:value-of select="substring-after(./*[local-name()='contrib-id'][@contrib-id-type='orcid'], 'http://orcid.org/')"/&gt;
233
                         &lt;/xsl:attribute&gt; 
234
                    &lt;/xsl:if&gt;
235
                    &lt;xsl:value-of select="concat(normalize-space(./*[local-name()='name']/*[local-name()='surname']), ', ', normalize-space(./*[local-name()='name']/*[local-name()='given-names']))"/&gt;
236
                &lt;/xsl:element&gt;
237
             &lt;/xsl:for-each&gt;              
238
          &lt;/xsl:template&gt;
239

    
240

    
241

    
242
                       &lt;xsl:template match="//*[local-name() = 'header']"&gt;
243
&lt;xsl:copy&gt;
244
     &lt;xsl:apply-templates  select="node()|@*"/&gt;
245
                             &lt;xsl:element name="dr:dateOfTransformation"&gt;
246
                                 &lt;xsl:value-of select="$transDate"/&gt;
247
                             &lt;/xsl:element&gt;
248
  &lt;/xsl:copy&gt;
249
                        &lt;/xsl:template&gt;
250

    
251

    
252
                       &lt;xsl:template match="node()|@*"&gt;
253
                            &lt;xsl:copy&gt;
254
                                 &lt;xsl:apply-templates select="node()|@*"/&gt;
255
                            &lt;/xsl:copy&gt;
256
                       &lt;/xsl:template&gt;
257
                    &lt;/xsl:stylesheet&gt;</CODE>
258
            </SCRIPT>
259
        </CONFIGURATION>
260
        <STATUS/>
261
        <SECURITY_PARAMETERS>SECURITY_PARAMETERS</SECURITY_PARAMETERS>
262
    </BODY>
263
</RESOURCE_PROFILE>
(56-56/56)