Project

General

Profile

1 4943 costa
<?xml version="1.0" encoding="UTF-8"?>
2
3
<xsl:stylesheet version="2.0"
4
    xmlns:dc="http://purl.org/dc/elements/1.1/"
5
    xmlns:eml="eml://ecoinformatics.org/eml-2.0.1"
6
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
7
    xmlns:fo="http://www.w3.org/1999/XSL/Format"
8
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
9
    xmlns:fn="http://www.w3.org/2005/xpath-functions"
10
>
11
12
  <xsl:output method="xml"
13
              omit-xml-declaration="yes"
14
              encoding="utf-8"/>
15
  <xsl:strip-space elements="*"/>
16
17
18
  <!-- create a variable that contains all the elements that have an 'id'
19
       attribute. Do this so that the the search for such elements only has
20
       to be carried out once.
21
    -->
22
  <xsl:variable name="ids" select="//*[@id!='']"/>
23
  <xsl:variable name="metacat-server">http://metacat.lternet.edu/knb/metacat</xsl:variable>
24
25
  <xsl:template match="/">
26
    <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
27
               xmlns:dc="http://purl.org/dc/elements/1.1/"
28
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
29
               xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
30
    <xsl:text>&#xA;</xsl:text>
31
32
    <xsl:variable name="packageId">
33
	  <xsl:value-of select="eml:eml/@packageId" />
34
	</xsl:variable>
35
36
    <xsl:for-each select="eml:eml/dataset/title">
37
      <xsl:element name="dc:title">
38
        <xsl:call-template name="title"></xsl:call-template>
39
      </xsl:element>
40
    </xsl:for-each>
41
42
    <xsl:for-each select="eml:eml/dataset/creator">
43
      <xsl:element name="dc:creator">
44
        <xsl:call-template name="creator"></xsl:call-template>
45
      </xsl:element>
46
    </xsl:for-each>
47
48
    <xsl:for-each select="eml:eml/dataset/keywordSet/keyword">
49
      <xsl:element name="dc:subject">
50
        <xsl:call-template name="subject"></xsl:call-template>
51
      </xsl:element>
52
    </xsl:for-each>
53
54
    <xsl:if test="eml:eml/dataset/abstract">
55
      <xsl:element name="dc:description">
56
        <xsl:value-of select="eml:eml/dataset/abstract" />
57
      </xsl:element>
58
    </xsl:if>
59
60
    <xsl:if test="eml:eml/dataset/publisher">
61
      <xsl:element name="dc:publisher">
62
        <xsl:value-of select="eml:eml/dataset/publisher" />
63
      </xsl:element>
64
    </xsl:if>
65
66
    <xsl:for-each select="eml:eml/dataset//associatedParty">
67
      <xsl:element name="dc:contributor">
68
        <xsl:call-template name="contributor"></xsl:call-template>
69
      </xsl:element>
70
    </xsl:for-each>
71
72
    <xsl:if test="eml:eml/dataset/pubDate">
73
      <xsl:element name="dc:date">
74
        <xsl:value-of select="eml:eml/dataset/pubDate" />
75
      </xsl:element>
76
    </xsl:if>
77
78
    <xsl:call-template name="type"></xsl:call-template>
79
80
    <xsl:for-each select="eml:eml/dataset//physical/dataFormat">
81
      <xsl:element name="dc:format">
82
        <xsl:call-template name="format"></xsl:call-template>
83
      </xsl:element>
84
    </xsl:for-each>
85
86
    <xsl:element name="dc:identifier"><xsl:value-of select="$metacat-server" />/<xsl:value-of select="$packageId" />/xml</xsl:element>
87
88
    <xsl:element name="dc:identifier">
89
      <xsl:value-of select="$packageId"/>
90
    </xsl:element>
91
92
    <xsl:for-each select="eml:eml/dataset//geographicCoverage/geographicDescription">
93
      <xsl:element name="dc:coverage">
94
        <xsl:value-of select="."/>
95
      </xsl:element>
96
    </xsl:for-each>
97
98
    <xsl:for-each select="eml:eml/dataset//geographicCoverage/boundingCoordinates">
99
      <xsl:element name="dc:coverage">
100
        <xsl:call-template name="coverageBoundingCoordinates"></xsl:call-template>
101
      </xsl:element>
102
    </xsl:for-each>
103
104
    <xsl:for-each select="eml:eml/dataset//temporalCoverage">
105
      <xsl:element name="dc:coverage">
106
        <xsl:call-template name="coverageTemporal"></xsl:call-template>
107
      </xsl:element>
108
    </xsl:for-each>
109
110
    <xsl:if test="eml:eml/dataset/intellectualRights">
111
      <xsl:element name="dc:rights">
112
        <xsl:value-of select="eml:eml/dataset/intellectualRights"/>
113
      </xsl:element>
114
    </xsl:if>
115
116
    <xsl:text>&#xA;</xsl:text>
117
    </oai_dc:dc>
118
  </xsl:template>
119
120
121
  <xsl:template name="title">
122
    <xsl:value-of select="." />
123
  </xsl:template>
124
125
126
  <xsl:template name="creator">
127
    <xsl:choose>
128
      <xsl:when test="individualName/surName">
129
        <xsl:choose>
130
          <xsl:when test="individualName/givenName">
131 5546 costa
            <xsl:value-of select="individualName/givenName" />
132
            <xsl:text>&#x20;</xsl:text>
133 4943 costa
          </xsl:when>
134
        </xsl:choose>
135
        <xsl:value-of select="individualName/surName" />
136
      </xsl:when>
137
      <xsl:when test="organizationName">
138
        <xsl:value-of select="organizationName" />
139
      </xsl:when>
140
    </xsl:choose>
141
  </xsl:template>
142
143
144
  <xsl:template name="subject">
145
    <xsl:value-of select="." />
146
  </xsl:template>
147
148
149
  <xsl:template name="contributor">
150
    <xsl:choose>
151
      <xsl:when test="individualName/surName">
152
        <xsl:choose>
153
          <xsl:when test="individualName/givenName">
154 5546 costa
            <xsl:value-of select="individualName/givenName" />
155
            <xsl:text>&#x20;</xsl:text>
156 4943 costa
          </xsl:when>
157
        </xsl:choose>
158
        <xsl:value-of select="individualName/surName" />
159
      </xsl:when>
160
      <xsl:when test="organizationName">
161
        <xsl:value-of select="organizationName" />
162
      </xsl:when>
163
    </xsl:choose>
164
  </xsl:template>
165
166
  <xsl:template name="type">
167
    <xsl:element name="dc:type">
168
      <xsl:choose>
169
        <xsl:when test="eml:eml/dataset">dataset</xsl:when>
170
        <xsl:when test="eml:eml/citation">citation</xsl:when>
171
        <xsl:when test="eml:eml/software">software</xsl:when>
172
        <xsl:when test="eml:eml/protocol">protocol</xsl:when>
173
      </xsl:choose>
174
    </xsl:element>
175
  </xsl:template>
176
177
  <xsl:template name="format">
178
    <xsl:choose>
179
      <xsl:when test="textFormat">text/plain</xsl:when>
180
      <xsl:when test="externallyDefinedFormat"><xsl:value-of select="formatName" /></xsl:when>
181
      <xsl:when test="binaryRasterFormat">binary raster</xsl:when>
182
    </xsl:choose>
183
  </xsl:template>
184
185
  <xsl:template name="coverageBoundingCoordinates">
186
    <xsl:text>&#xA;</xsl:text>
187
    <xsl:value-of select="westBoundingCoordinate" /> W
188
    <xsl:value-of select="eastBoundingCoordinate" /> E
189
    <xsl:value-of select="northBoundingCoordinate" /> N
190
    <xsl:value-of select="southBoundingCoordinate" /> S
191
  </xsl:template>
192
193
  <xsl:template name="coverageTemporal">
194
    <xsl:choose>
195
      <xsl:when test="singleDateTime">
196
        <xsl:value-of select="singleDateTime/calendarDate" />
197
      </xsl:when>
198
      <xsl:when test="rangeOfDates">
199
        <xsl:value-of select="rangeOfDates/beginDate/calendarDate" />
200
        <xsl:text> to </xsl:text>
201
        <xsl:value-of select="rangeOfDates/endDate/calendarDate" />
202
      </xsl:when>
203
    </xsl:choose>
204
  </xsl:template>
205
206
</xsl:stylesheet>