svn-gvsig-desktop / tags / v1_9_Build_1240 / extensions / extMetadata / xslt / DC_ISO.xsl @ 32257
History | View | Annotate | Download (50.7 KB)
1 |
<?xml version="1.0" encoding="ISO-8859-1"?> |
---|---|
2 |
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
3 |
xmlns:dc="http://purl.org/dc/elements/1.1/" |
4 |
xmlns:dcterms="http://purl.org/dc/terms/" |
5 |
xmlns:xsi="http://www.w3.org/2001/XMSchema-instance" exclude-result-prefixes="dc dcterms xsi"> |
6 |
<!-- xmlns:iso19115="http://www.isotc211.org/iso19115" --> |
7 |
|
8 |
<xsl:param name="_date">0000-00-00</xsl:param> |
9 |
|
10 |
<xsl:output indent="yes" encoding="ISO-8859-1"/> |
11 |
|
12 |
<!-- Stylesheet that translates a correct DC qualified data into a correct --> |
13 |
<!-- ISO data --> |
14 |
|
15 |
<!-- Author: IAAA --> |
16 |
<!-- History: [jnog 5/2/2004] Elimino uso de "iso19115:" |
17 |
[jnog 6/2/2004] Se tratan nombres de clases (CI_Date, CI_ResponsibleParty,...), language --> |
18 |
|
19 |
<xsl:template match="/"> |
20 |
<xsl:apply-templates select="qualifieddc"/> |
21 |
</xsl:template> |
22 |
|
23 |
<xsl:template match="qualifieddc"> |
24 |
|
25 |
<xsl:variable name="xsltsl-str-lower" select="'a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z'"/> |
26 |
<xsl:variable name="xsltsl-str-upper" select="'A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z'"/> |
27 |
|
28 |
<!-- A file in ISO represents a resource. --> |
29 |
|
30 |
<!--xsl:if test="rdf:Description"--> |
31 |
<MD_Metadata> |
32 |
<!--xsl:element name="MD_Metadata"--> |
33 |
<xsl:element name="identificationInfo"> |
34 |
<xsl:element name="MD_DataIdentification"> |
35 |
<xsl:element name="citation"><xsl:element name="CI_Citation"> |
36 |
|
37 |
<!-- Element Title conversion: --> |
38 |
<!-- There is no title in DC: default value "default Title" --> |
39 |
<!-- There is only one title in DC: perfect. It goes to citation.title --> |
40 |
<!-- There is more than one titles in DC: the fist goes to citation.title--> |
41 |
<!-- the others to citation.alternateTitle, repeteable element --> |
42 |
|
43 |
<xsl:element name="title"> |
44 |
<xsl:choose> |
45 |
<xsl:when test="./dc:title"> |
46 |
<xsl:value-of select="./dc:title"/> |
47 |
</xsl:when> |
48 |
<xsl:otherwise> |
49 |
<!-- No hay title en DC. ?Que pongo? --> |
50 |
<xsl:text>Default Title</xsl:text> |
51 |
</xsl:otherwise> |
52 |
</xsl:choose> |
53 |
</xsl:element> |
54 |
|
55 |
|
56 |
<!--xsl:text>CON EL PUNTO Y LA BARRA</xsl:text> |
57 |
<xsl:value-of select="./dc:title"/> |
58 |
|
59 |
<xsl:text>SIN EL PUNTO: </xsl:text> |
60 |
<xsl:value-of select="dc:title"/> |
61 |
|
62 |
<xsl:text>TODO </xsl:text> |
63 |
<xsl:value-of select="."/--> |
64 |
|
65 |
|
66 |
<!-- Element Date conversion: --> |
67 |
<!-- There is no date in DC: If we can obtain the date of the application--> |
68 |
<!-- that uses this stylesheet, this date is used. If not, the default --> |
69 |
<!-- value 0000-00-00 is used. --> |
70 |
<!-- There are one or more date in DC: the element citation.date is --> |
71 |
<!-- repeteable, so, a new date of publication is generated for every --> |
72 |
<!-- dc:date. --> |
73 |
|
74 |
<xsl:choose> |
75 |
<xsl:when test="./dc:date"> |
76 |
<xsl:for-each select="./dc:date"> |
77 |
<xsl:element name="date"><xsl:element name="CI_Date"> |
78 |
<xsl:element name="date"> |
79 |
<xsl:value-of select="."/> |
80 |
</xsl:element> |
81 |
<xsl:element name="dateType"> |
82 |
<xsl:text>publication</xsl:text> |
83 |
</xsl:element> |
84 |
</xsl:element></xsl:element> |
85 |
</xsl:for-each> |
86 |
</xsl:when> |
87 |
<xsl:otherwise> |
88 |
<xsl:element name="date"><xsl:element name="CI_Date"> |
89 |
<xsl:element name="date"> |
90 |
<!-- If there is no date, the parameter passed from the |
91 |
application is taken. If there is no parameter, the default |
92 |
value 0000-00-00 is considered--> |
93 |
<xsl:value-of select="$_date"/> |
94 |
</xsl:element> |
95 |
<xsl:element name="dateType"> |
96 |
<xsl:text>publication</xsl:text> |
97 |
</xsl:element> |
98 |
</xsl:element></xsl:element> |
99 |
</xsl:otherwise> |
100 |
</xsl:choose> |
101 |
|
102 |
<!-- Element identifier conversion (1) --> |
103 |
<!-- If there are dc:identifiers that not correspond neither file, http --> |
104 |
<!-- ftp, ISSN nor ISBN, a element citation.identifier is generated --> |
105 |
|
106 |
<xsl:for-each select="./dc:identifier"> |
107 |
<xsl:choose> |
108 |
<xsl:when test="contains(normalize-space(.), 'file') |
109 |
or contains(normalize-space(.), 'http') |
110 |
or contains(normalize-space(.), 'ftp') |
111 |
or contains(normalize-space(.), 'www') |
112 |
or contains(normalize-space(.), 'ISSN') |
113 |
or contains(normalize-space(.), 'ISBN')"> |
114 |
</xsl:when> |
115 |
<xsl:otherwise> |
116 |
<xsl:element name="identifier"><xsl:element name="MD_Identifier"> |
117 |
<xsl:element name="code"> |
118 |
<xsl:value-of select="normalize-space(.)"/> |
119 |
</xsl:element> |
120 |
</xsl:element></xsl:element> |
121 |
</xsl:otherwise> |
122 |
</xsl:choose> |
123 |
</xsl:for-each> |
124 |
|
125 |
|
126 |
<!-- Element creator conversion: --> |
127 |
<!-- If there is no creator in DC: nothing happen. In both standards is --> |
128 |
<!-- optional. --> |
129 |
<!-- If it appers once or more: a new citedResponsibleParty with role --> |
130 |
<!-- originator is created for each apparition. --> |
131 |
<!-- the text of the enter is written in organisationName. --> |
132 |
|
133 |
<xsl:for-each select="./dc:creator"> |
134 |
<xsl:element name="citedResponsibleParty"><xsl:element name="CI_ResponsibleParty"> |
135 |
<xsl:element name="organisationName"> |
136 |
<xsl:value-of select="."/> |
137 |
</xsl:element> |
138 |
<xsl:element name="role"> |
139 |
<xsl:text>originator</xsl:text> |
140 |
</xsl:element> |
141 |
</xsl:element></xsl:element> |
142 |
</xsl:for-each> |
143 |
|
144 |
|
145 |
<!-- Element publisher conversion: --> |
146 |
<!-- If there is no publisher in DC: nothing happen. In both standards --> |
147 |
<!-- is optional. --> |
148 |
<!-- If it appers once or more: a new citedResponsibleParty with role --> |
149 |
<!-- publisher is created for each apparition. --> |
150 |
<!-- the text of the enter is written in organisationName. --> |
151 |
|
152 |
|
153 |
<xsl:for-each select="./dc:publisher"> |
154 |
<xsl:element name="citedResponsibleParty"><xsl:element name="CI_ResponsibleParty"> |
155 |
<xsl:element name="organisationName"> |
156 |
<xsl:value-of select="."/> |
157 |
</xsl:element> |
158 |
<xsl:element name="role"> |
159 |
<xsl:text>publisher</xsl:text> |
160 |
</xsl:element> |
161 |
</xsl:element></xsl:element> |
162 |
</xsl:for-each> |
163 |
|
164 |
|
165 |
<!-- type element conversion(1): --> |
166 |
<!-- If the value is equal to one code of --> |
167 |
<!-- CI_PresentationFormCode_CodeList, a presentationForm value is --> |
168 |
<!-- generated. --> |
169 |
|
170 |
<xsl:for-each select="./dc:type"> |
171 |
<xsl:variable name="typeVar"> |
172 |
<!-- it's traslated to lower case --> |
173 |
<xsl:value-of select="translate(normalize-space(.),$xsltsl-str-upper, $xsltsl-str-lower)"/> |
174 |
</xsl:variable> |
175 |
<xsl:choose> |
176 |
<xsl:when test="$typeVar='documentdigital' or |
177 |
$typeVar='documenthardcopy' or |
178 |
$typeVar='imagedigital' or |
179 |
$typeVar='imagehardcopy' or |
180 |
$typeVar='mapdigital' or |
181 |
$typeVar='maphardcopy' or |
182 |
$typeVar='modeldigital' or |
183 |
$typeVar='modelhardcopy' or |
184 |
$typeVar='profiledigital' or |
185 |
$typeVar='profilehardcopy' or |
186 |
$typeVar='tabledigital' or |
187 |
$typeVar='tablehardcopy' or |
188 |
$typeVar='videodigital' or |
189 |
$typeVar='videohardcopy'"> |
190 |
<xsl:element name="presentationForm"> |
191 |
<xsl:value-of select="normalize-space(.)"/> |
192 |
</xsl:element> |
193 |
</xsl:when> |
194 |
<xsl:otherwise> |
195 |
</xsl:otherwise> |
196 |
</xsl:choose> |
197 |
</xsl:for-each> |
198 |
|
199 |
|
200 |
<!-- relation element conversion(1): --> |
201 |
<!-- If there is no dc:relation in DC, nothing happens because it's --> |
202 |
<!-- optional. --> |
203 |
<!-- If it appears in DC, only the first ocurrence is mapped in --> |
204 |
<!-- series.name. The rest occurrences are lost. --> |
205 |
|
206 |
<xsl:if test="./dc:relation"> |
207 |
<xsl:element name="series"><xsl:element name="CI_Series"> |
208 |
<xsl:element name="name"> |
209 |
<xsl:value-of select="./dc:relation"/> |
210 |
</xsl:element> |
211 |
</xsl:element></xsl:element> |
212 |
</xsl:if> |
213 |
|
214 |
<!-- If there are more than one title, all except the first go to --> |
215 |
<!-- alternateTitle. --> |
216 |
|
217 |
<xsl:for-each select="./dc:title"> |
218 |
<xsl:choose> |
219 |
<xsl:when test="position()=1"> |
220 |
<!-- The first dc:title go to citation.title --> |
221 |
</xsl:when> |
222 |
<xsl:otherwise> |
223 |
<xsl:element name="alternateTitle"> |
224 |
<xsl:value-of select="."/> |
225 |
</xsl:element> |
226 |
</xsl:otherwise> |
227 |
</xsl:choose> |
228 |
</xsl:for-each> |
229 |
|
230 |
|
231 |
|
232 |
<!-- Element identifier conversion (2) --> |
233 |
<!-- If there are dc:identifiers that contains the word ISSN or ISBN a --> |
234 |
<!-- element citation.issn or citation.isbn is generated --> |
235 |
|
236 |
<xsl:for-each select="./dc:identifier"> |
237 |
<xsl:if test="contains(normalize-space(.), 'ISBN')"> |
238 |
<xsl:element name="ISBN"> |
239 |
<xsl:value-of select="."/> |
240 |
</xsl:element> |
241 |
</xsl:if> |
242 |
</xsl:for-each> |
243 |
|
244 |
<xsl:for-each select="./dc:identifier"> |
245 |
<xsl:if test="contains(normalize-space(.), 'ISSN')"> |
246 |
<xsl:element name="ISSN"> |
247 |
<xsl:value-of select="."/> |
248 |
</xsl:element> |
249 |
</xsl:if> |
250 |
</xsl:for-each> |
251 |
|
252 |
</xsl:element> </xsl:element><!-- De citation --> |
253 |
|
254 |
|
255 |
<!-- description element conversion: --> |
256 |
<!-- An only abstract will be generated, so, if there are more than one --> |
257 |
<!-- occurrences of dc:description, they will be concatenated with carry --> |
258 |
<!-- returns. --> |
259 |
|
260 |
<xsl:choose> |
261 |
<xsl:when test="./dc:description"> |
262 |
<xsl:element name="abstract"> |
263 |
<xsl:variable name="abstractElement"/> |
264 |
<xsl:for-each select="./dc:description"> |
265 |
<xsl:value-of select="concat($abstractElement, normalize-space(.))"/> |
266 |
<xsl:if test="position()!=last()"> |
267 |
<xsl:value-of select="concat($abstractElement, '
')"/> |
268 |
</xsl:if> |
269 |
</xsl:for-each> |
270 |
<xsl:value-of select="$abstractElement"/> |
271 |
</xsl:element> |
272 |
</xsl:when> |
273 |
<xsl:otherwise> |
274 |
<xsl:element name="abstract"> |
275 |
<!-- This element is compulsory, so, if there is no dc:description |
276 |
in DC, a default value is generated. --> |
277 |
<xsl:text>Default abstract</xsl:text> |
278 |
</xsl:element> |
279 |
</xsl:otherwise> |
280 |
</xsl:choose> |
281 |
|
282 |
|
283 |
<!-- contributor element conversion: --> |
284 |
<!-- If there is no dc:contributor in DC, it doesn't matter because in --> |
285 |
<!-- both languages is optional. --> |
286 |
<!-- If it appears more than once, a new laber credit will be generated --> |
287 |
<!-- for each dc:contributor. --> |
288 |
<xsl:for-each select="./dc:contributor"> |
289 |
<xsl:element name="credit"> |
290 |
<xsl:value-of select="."/> |
291 |
</xsl:element> |
292 |
</xsl:for-each> |
293 |
|
294 |
|
295 |
|
296 |
<!-- Element creator conversion(2): --> |
297 |
<!-- If there is no creator in DC: nothing happen. In both standards is --> |
298 |
<!-- optional. --> |
299 |
<!-- If it appers once or more: a new pointOfContact is created --> |
300 |
<!-- for each apparition. --> |
301 |
<!-- the text of the enter is written in organisationName. --> |
302 |
|
303 |
<xsl:for-each select="./dc:creator"> |
304 |
<xsl:element name="pointOfContact"><xsl:element name="CI_ResponsibleParty"> |
305 |
<xsl:element name="organisationName"> |
306 |
<xsl:value-of select="."/> |
307 |
</xsl:element> |
308 |
<xsl:element name="role"> |
309 |
<xsl:text>originator</xsl:text> |
310 |
</xsl:element> |
311 |
</xsl:element></xsl:element> |
312 |
</xsl:for-each> |
313 |
|
314 |
|
315 |
<!-- Element publisher conversion: --> |
316 |
<!-- If there is no publisher in DC: nothing happen. In both standards --> |
317 |
<!-- is optional. --> |
318 |
<!-- If it appers once or more: a new pointOfContact with role publisher--> |
319 |
<!-- is created for each apparition. --> |
320 |
<!-- the text of the enter is written in organisationName. --> |
321 |
|
322 |
<xsl:for-each select="./dc:publisher"> |
323 |
<xsl:element name="pointOfContact"><xsl:element name="CI_ResponsibleParty"> |
324 |
<xsl:element name="organisationName"> |
325 |
<xsl:value-of select="."/> |
326 |
</xsl:element> |
327 |
<xsl:element name="role"> |
328 |
<xsl:text>publisher</xsl:text> |
329 |
</xsl:element> |
330 |
</xsl:element></xsl:element> |
331 |
</xsl:for-each> |
332 |
|
333 |
|
334 |
|
335 |
<!-- rights element conversion: --> |
336 |
<!-- If there is no rights in DC, nothing happens because in ISO is --> |
337 |
<!-- optional. --> |
338 |
<!-- If there are rights, they will be mapped with useConstraints if the --> |
339 |
<!-- value is included in the restricted list. If not, useConstraints --> |
340 |
<!-- will be documented with otherConstraints, and the value will be --> |
341 |
<!-- mapped with otherRestrictions. --> |
342 |
|
343 |
<xsl:if test="./dc:rights"> |
344 |
|
345 |
<xsl:element name="resourceConstraints"> |
346 |
<xsl:element name="MD_LegalConstraints"> |
347 |
|
348 |
<xsl:variable name="rightsISO"/> |
349 |
<xsl:for-each select="./dc:rights"> |
350 |
<xsl:variable name="rightsVar"> |
351 |
<!-- it's traslated to lower case --> |
352 |
<xsl:value-of select="translate(normalize-space(.),$xsltsl-str-upper, $xsltsl-str-lower)"/> |
353 |
</xsl:variable> |
354 |
|
355 |
<xsl:choose> |
356 |
<xsl:when test="$rightsVar='copyright'"> |
357 |
<xsl:element name="useConstraints"> |
358 |
<xsl:value-of select="normalize-space(.)"/> |
359 |
</xsl:element> |
360 |
</xsl:when> |
361 |
<xsl:when test="$rightsVar='patent'"> |
362 |
<xsl:element name="useConstraints"> |
363 |
<xsl:value-of select="normalize-space(.)"/> |
364 |
</xsl:element> |
365 |
</xsl:when> |
366 |
<xsl:when test="$rightsVar='patentpending'"> |
367 |
<xsl:element name="useConstraints"> |
368 |
<xsl:value-of select="normalize-space(.)"/> |
369 |
</xsl:element> |
370 |
</xsl:when> |
371 |
<xsl:when test="$rightsVar='trademark'"> |
372 |
<xsl:element name="useConstraints"> |
373 |
<xsl:value-of select="normalize-space(.)"/> |
374 |
</xsl:element> |
375 |
</xsl:when> |
376 |
<xsl:when test="$rightsVar='license'"> |
377 |
<xsl:element name="useConstraints"> |
378 |
<xsl:value-of select="normalize-space(.)"/> |
379 |
</xsl:element> |
380 |
</xsl:when> |
381 |
<xsl:when test="$rightsVar='intellectualpropertyrights'"> |
382 |
<xsl:element name="useConstraints"> |
383 |
<xsl:value-of select="normalize-space(.)"/> |
384 |
</xsl:element> |
385 |
</xsl:when> |
386 |
<xsl:when test="$rightsVar='restricted'"> |
387 |
<xsl:element name="useConstraints"> |
388 |
<xsl:value-of select="normalize-space(.)"/> |
389 |
</xsl:element> |
390 |
</xsl:when> |
391 |
<xsl:when test="$rightsVar='otherrestrictions'"> |
392 |
<xsl:element name="useConstraints"> |
393 |
<xsl:value-of select="normalize-space(.)"/> |
394 |
</xsl:element> |
395 |
</xsl:when> |
396 |
<xsl:otherwise> |
397 |
<xsl:element name="useConstraints"> |
398 |
<xsl:text>otherRestrictions</xsl:text> |
399 |
</xsl:element> |
400 |
</xsl:otherwise> |
401 |
</xsl:choose> |
402 |
</xsl:for-each> |
403 |
|
404 |
<xsl:for-each select="./dc:rights"> |
405 |
<xsl:variable name="rightsVar"> |
406 |
<!-- it's traslated to lower case --> |
407 |
<xsl:value-of select="translate(normalize-space(.),$xsltsl-str-upper, $xsltsl-str-lower)"/> |
408 |
</xsl:variable> |
409 |
<xsl:choose> |
410 |
<xsl:when test="$rightsVar='copyright'"> |
411 |
</xsl:when> |
412 |
<xsl:when test="$rightsVar='patent'"> |
413 |
</xsl:when> |
414 |
<xsl:when test="$rightsVar='patentpending'"> |
415 |
</xsl:when> |
416 |
<xsl:when test="$rightsVar='trademark'"> |
417 |
</xsl:when> |
418 |
<xsl:when test="$rightsVar='license'"> |
419 |
</xsl:when> |
420 |
<xsl:when test="$rightsVar='intellectualpropertyrights'"> |
421 |
</xsl:when> |
422 |
<xsl:when test="$rightsVar='restricted'"> |
423 |
</xsl:when> |
424 |
<xsl:when test="$rightsVar='otherrestrictions'"> |
425 |
</xsl:when> |
426 |
<xsl:otherwise> |
427 |
<xsl:element name="otherConstraints"> |
428 |
<xsl:value-of select="normalize-space(.)"/> |
429 |
</xsl:element> |
430 |
</xsl:otherwise> |
431 |
</xsl:choose> |
432 |
</xsl:for-each> |
433 |
</xsl:element> |
434 |
</xsl:element> |
435 |
</xsl:if> |
436 |
|
437 |
|
438 |
|
439 |
<!-- format element conversion (1): --> |
440 |
<!-- If in DC doesn't appear, nothing happens because is optional. --> |
441 |
<!-- If it appears N times, a new distributorFormat will be generated --> |
442 |
<!-- for each dc:format. --> |
443 |
|
444 |
<xsl:for-each select="./dc:format"> |
445 |
<xsl:element name="resourceFormat"> |
446 |
<xsl:element name="MD_Format"> |
447 |
<xsl:choose> |
448 |
<xsl:when test="contains(normalize-space(.), '//')"> |
449 |
<xsl:element name="name"> |
450 |
<xsl:value-of select="substring-before(normalize-space(.), '//')"/> |
451 |
</xsl:element> |
452 |
<xsl:element name="version"> |
453 |
<xsl:value-of select="substring-after(normalize-space(.), '//')"/> |
454 |
</xsl:element> |
455 |
</xsl:when> |
456 |
<xsl:otherwise> |
457 |
<xsl:element name="name"> |
458 |
<xsl:value-of select="normalize-space(.)"/> |
459 |
</xsl:element> |
460 |
<xsl:element name="version"> |
461 |
<xsl:text>Unknown</xsl:text> |
462 |
</xsl:element> |
463 |
</xsl:otherwise> |
464 |
</xsl:choose> |
465 |
</xsl:element> |
466 |
</xsl:element> |
467 |
</xsl:for-each> |
468 |
|
469 |
|
470 |
<!-- Element subject conversion: --> |
471 |
<!-- If there is no dc:subject in DC nothing happens because in both --> |
472 |
<!-- standars are optative. --> |
473 |
<!-- If there are some occurrences, only the values that have not been --> |
474 |
<!-- mapped as topicCategory will be mapped here, as a keyword. --> |
475 |
<!-- In this case, also the element type is completed with the "theme" --> |
476 |
<!-- value. --> |
477 |
|
478 |
<xsl:element name="descriptiveKeywords"> |
479 |
<xsl:for-each select="./dc:subject"> |
480 |
<xsl:variable name="enter"> |
481 |
<!-- it's translated to lower case --> |
482 |
<xsl:value-of select="translate(normalize-space(.),$xsltsl-str-upper, $xsltsl-str-lower)"/> |
483 |
</xsl:variable> |
484 |
<xsl:choose> |
485 |
<xsl:when test="$enter='farming' or $enter=' farming' or $enter='farming ' or $enter=' farming '"> |
486 |
</xsl:when> |
487 |
<xsl:when test="$enter='biota' or $enter=' biota' or $enter='biota ' or $enter=' biota '"> |
488 |
</xsl:when> |
489 |
<xsl:when test="$enter='boundaries' or $enter=' boundaries' or $enter='boundaries ' or $enter=' boundaries '"> |
490 |
</xsl:when> |
491 |
<xsl:when test="$enter='climatologymeteorologyatmosphere' or $enter=' climatologymeteorologyatmosphere' or $enter='climatologymeteorologyatmosphere ' or $enter=' climatologymeteorologyatmosphere '"> |
492 |
</xsl:when> |
493 |
<xsl:when test="$enter='economy' or $enter=' economy' or $enter='economy ' or $enter=' economy '"> |
494 |
</xsl:when> |
495 |
<xsl:when test="$enter='elevation' or $enter=' elevation' or $enter='elevation ' or $enter=' elevation '"> |
496 |
</xsl:when> |
497 |
<xsl:when test="$enter='environment' or $enter=' environment' or $enter='environment ' or $enter=' environment '"> |
498 |
</xsl:when> |
499 |
<xsl:when test="$enter='geoscientificinformation' or $enter=' geoscientificinformation' or $enter='geoscientificinformation ' or $enter=' geoscientificinformation '"> |
500 |
</xsl:when> |
501 |
<xsl:when test="$enter='health' or $enter=' health' or $enter='health ' or $enter=' health '"> |
502 |
</xsl:when> |
503 |
<xsl:when test="$enter='imagerybasemapsearthc' or $enter=' imagerybasemapsearthc' or $enter='imagerybasemapsearthc ' or $enter=' imagerybasemapsearthc '"> |
504 |
</xsl:when> |
505 |
<xsl:when test="$enter='intelligencemilitary' or $enter=' intelligencemilitary' or $enter='intelligencemilitary ' or $enter=' intelligencemilitary '"> |
506 |
</xsl:when> |
507 |
<xsl:when test="$enter='inlandwaters' or $enter=' inlandwaters' or $enter='inlandwaters ' or $enter=' inlandwaters '"> |
508 |
</xsl:when> |
509 |
<xsl:when test="$enter='location' or $enter=' location' or $enter='location ' or $enter=' location '"> |
510 |
</xsl:when> |
511 |
<xsl:when test="$enter='oceans' or $enter=' oceans' or $enter='oceans ' or $enter=' oceans '"> |
512 |
</xsl:when> |
513 |
<xsl:when test="$enter='planningcadastre' or $enter=' planningcadastre' or $enter='planningcadastre ' or $enter=' planningcadastre '"> |
514 |
</xsl:when> |
515 |
<xsl:when test="$enter='society' or $enter=' society' or $enter='society ' or $enter=' society '"> |
516 |
</xsl:when> |
517 |
<xsl:when test="$enter='structure' or $enter=' structure' or $enter='structure ' or $enter=' structure '"> |
518 |
</xsl:when> |
519 |
<xsl:when test="$enter='transportation' or $enter=' transportation' or $enter='transportation ' or $enter=' transportation '"> |
520 |
</xsl:when> |
521 |
<xsl:when test="$enter='utilitiescommunication' or $enter=' utilitiescommunication' or $enter='utilitiescommunication ' or $enter=' utilitiescommunication '"> |
522 |
</xsl:when> |
523 |
<xsl:otherwise> |
524 |
<xsl:element name="MD_Keywords"> |
525 |
<xsl:element name="keyword"> |
526 |
<xsl:value-of select="."/> |
527 |
</xsl:element> |
528 |
<xsl:element name="type"> |
529 |
<xsl:text>theme</xsl:text> |
530 |
</xsl:element> |
531 |
</xsl:element> |
532 |
</xsl:otherwise> |
533 |
</xsl:choose> |
534 |
</xsl:for-each> |
535 |
|
536 |
<!-- coverage:placename element conversion: --> |
537 |
<!-- For separating the different names, a template is used. This --> |
538 |
<!-- template separated the string by the commas. --> |
539 |
|
540 |
<xsl:for-each select="./dcterms:spatial"> |
541 |
<xsl:choose> |
542 |
<xsl:when test="contains(., 'northlimit')"> |
543 |
</xsl:when> |
544 |
<xsl:otherwise> |
545 |
<xsl:element name="MD_Keywords"> |
546 |
<xsl:element name="keyword"> |
547 |
<xsl:value-of select="."/> |
548 |
</xsl:element> |
549 |
<xsl:element name="type"> |
550 |
<xsl:text>place</xsl:text> |
551 |
</xsl:element> |
552 |
</xsl:element> |
553 |
</xsl:otherwise> |
554 |
</xsl:choose> |
555 |
</xsl:for-each> |
556 |
|
557 |
|
558 |
|
559 |
<!-- coverage:periodName element conversion: --> |
560 |
<!-- Like the previous one. --> |
561 |
<xsl:for-each select="./dcterms:temporal"> |
562 |
<xsl:choose> |
563 |
<xsl:when test="contains(., 'begin')"> |
564 |
</xsl:when> |
565 |
<xsl:otherwise> |
566 |
<xsl:element name="MD_Keywords"> |
567 |
<xsl:element name="keyword"> |
568 |
<xsl:value-of select="."/> |
569 |
</xsl:element> |
570 |
<xsl:element name="type"> |
571 |
<xsl:text>temporal</xsl:text> |
572 |
</xsl:element> |
573 |
</xsl:element> |
574 |
</xsl:otherwise> |
575 |
</xsl:choose> |
576 |
</xsl:for-each> |
577 |
|
578 |
</xsl:element> |
579 |
|
580 |
<!-- relation element conversion(2): --> |
581 |
<!-- If there is no dc:relation in DC, nothing happens because it's --> |
582 |
<!-- optional. --> |
583 |
<!-- If it appears in DC, an aggregationInfo will be generated for each --> |
584 |
<!-- dc:relation element. --> |
585 |
<xsl:if test="./dc:relation"> |
586 |
<xsl:element name="aggregationInfo"> |
587 |
<xsl:for-each select="./dc:relation"> |
588 |
<xsl:element name="MD_AggregateInformation"> |
589 |
<xsl:element name="aggregateDataSetIdentifier"> |
590 |
<xsl:element name="code"> |
591 |
<xsl:value-of select="normalize-space(.)"/> |
592 |
</xsl:element> |
593 |
</xsl:element> |
594 |
<xsl:element name="associationType"> |
595 |
<xsl:text>crossReference</xsl:text> |
596 |
</xsl:element> |
597 |
</xsl:element> |
598 |
</xsl:for-each> |
599 |
</xsl:element> |
600 |
</xsl:if> |
601 |
|
602 |
|
603 |
<!-- type element conversion(2): --> |
604 |
<!-- If there is no type in DC, nothing happens because it's not --> |
605 |
<!-- compulsory in IsoCore. --> |
606 |
<!-- If it appears more than one, a new spatialRepresentationType will --> |
607 |
<!-- be generated for each dc:type. --> |
608 |
|
609 |
<xsl:for-each select="./dc:type"> |
610 |
<xsl:variable name="typeVar2"> |
611 |
<!-- it's translated to lower case --> |
612 |
<xsl:value-of select="translate(normalize-space(.),$xsltsl-str-upper, $xsltsl-str-lower)"/> |
613 |
</xsl:variable> |
614 |
<xsl:if test="$typeVar2='vector' or |
615 |
$typeVar2='grid' or |
616 |
$typeVar2='texttable' or |
617 |
$typeVar2='tin' or |
618 |
$typeVar2='stereomodel' or |
619 |
$typeVar2='video'"> |
620 |
<xsl:element name="spatialRepresentationType"> |
621 |
<xsl:value-of select="normalize-space(.)"/> |
622 |
</xsl:element> |
623 |
</xsl:if> |
624 |
</xsl:for-each> |
625 |
|
626 |
|
627 |
<!-- language element conversion. --> |
628 |
<xsl:choose> |
629 |
<xsl:when test="./dc:language"> |
630 |
<xsl:for-each select="./dc:language"> |
631 |
<xsl:element name="language"> |
632 |
<!-- Here begin a big dissertation about the correct position |
633 |
of the value: isoCode, isoName or otherLang. --> |
634 |
<xsl:variable name="lang"> |
635 |
<xsl:value-of select="."/> |
636 |
</xsl:variable> |
637 |
<xsl:choose> |
638 |
<xsl:when test="string-length($lang) = 3"> |
639 |
<!-- If the text has three letters, it's supposed to be an |
640 |
isoCode. --> |
641 |
<!--xsl:element name="isoCode"--> |
642 |
<xsl:value-of select="$lang"/> |
643 |
<!--/xsl:element--> |
644 |
</xsl:when> |
645 |
<xsl:otherwise> |
646 |
<!-- If not, it's putted in otherLang. --> |
647 |
<!--xsl:element name="otherLang"--> |
648 |
<xsl:value-of select="$lang"/> |
649 |
<!--/xsl:element--> |
650 |
</xsl:otherwise> |
651 |
</xsl:choose> |
652 |
</xsl:element> |
653 |
</xsl:for-each> |
654 |
</xsl:when> |
655 |
<xsl:otherwise> |
656 |
<xsl:element name="language"> |
657 |
<!--xsl:element name="isoCode"--> |
658 |
<xsl:text>eng</xsl:text> |
659 |
</xsl:element> |
660 |
<!--/xsl:element--> |
661 |
</xsl:otherwise> |
662 |
</xsl:choose> |
663 |
|
664 |
|
665 |
<!-- element subject conversion(2): --> |
666 |
<!-- This element is compulsory only if hierarchyLevel=Dataset. --> |
667 |
<!-- Hence, if no dc:subject appears in DC, it's assumed that --> |
668 |
<!-- hierarchyLevel!=dataset. --> |
669 |
<!-- As ISO-CORE: --> |
670 |
|
671 |
<xsl:choose> |
672 |
<xsl:when test="./dc:subject"> |
673 |
<xsl:for-each select="./dc:subject"> |
674 |
<xsl:variable name="enter"> |
675 |
<!-- it's traslated to lower case --> |
676 |
<xsl:value-of select="translate(normalize-space(.),$xsltsl-str-upper, $xsltsl-str-lower)"/> |
677 |
</xsl:variable> |
678 |
|
679 |
<xsl:choose> |
680 |
<xsl:when test="$enter='farming' or $enter=' farming' or $enter='farming ' or $enter=' farming '"> |
681 |
<xsl:element name="topicCategory"> |
682 |
<xsl:text>farming</xsl:text> |
683 |
</xsl:element> |
684 |
</xsl:when> |
685 |
<xsl:when test="$enter='biota' or $enter=' biota' or $enter='biota ' or $enter=' biota '"> |
686 |
<xsl:element name="topicCategory"> |
687 |
<xsl:text>biota</xsl:text> |
688 |
</xsl:element> |
689 |
</xsl:when> |
690 |
<xsl:when test="$enter='boundaries' or $enter=' boundaries' or $enter='boundaries ' or $enter=' boundaries '"> |
691 |
<xsl:element name="topicCategory"> |
692 |
<xsl:text>boundaries</xsl:text> |
693 |
</xsl:element> |
694 |
</xsl:when> |
695 |
<xsl:when test="$enter='climatologymeteorologyatmosphere' or $enter=' climatologymeteorologyatmosphere' or $enter='climatologymeteorologyatmosphere ' or $enter=' climatologymeteorologyatmosphere '"> |
696 |
<xsl:element name="topicCategory"> |
697 |
<xsl:text>climatologyMeteorologyAtmosphere</xsl:text> |
698 |
</xsl:element> |
699 |
</xsl:when> |
700 |
<xsl:when test="$enter='economy' or $enter=' economy' or $enter='economy ' or $enter=' economy '"> |
701 |
<xsl:element name="topicCategory"> |
702 |
<xsl:text>economy</xsl:text> |
703 |
</xsl:element> |
704 |
</xsl:when> |
705 |
<xsl:when test="$enter='elevation' or $enter=' elevation' or $enter='elevation ' or $enter=' elevation '"> |
706 |
<xsl:element name="topicCategory"> |
707 |
<xsl:text>elevation</xsl:text> |
708 |
</xsl:element> |
709 |
</xsl:when> |
710 |
<xsl:when test="$enter='environment' or $enter=' environment' or $enter='environment ' or $enter=' environment '"> |
711 |
<xsl:element name="topicCategory"> |
712 |
<xsl:text>environment</xsl:text> |
713 |
</xsl:element> |
714 |
</xsl:when> |
715 |
<xsl:when test="$enter='geoscientificinformation' or $enter=' geoscientificinformation' or $enter='geoscientificinformation ' or $enter=' geoscientificinformation '"> |
716 |
<xsl:element name="topicCategory"> |
717 |
<xsl:text>geoscientificInformation</xsl:text> |
718 |
</xsl:element> |
719 |
</xsl:when> |
720 |
<xsl:when test="$enter='health' or $enter=' health' or $enter='health ' or $enter=' health '"> |
721 |
<xsl:element name="topicCategory"> |
722 |
<xsl:text>health</xsl:text> |
723 |
</xsl:element> |
724 |
</xsl:when> |
725 |
<xsl:when test="$enter='imagerybasemapsearthcover' or $enter=' imagerybasemapsearthcover' or $enter='imagerybasemapsearthcover ' or $enter=' imagerybasemapsearthcover '"> |
726 |
<xsl:element name="topicCategory"> |
727 |
<xsl:text>imageryBaseMapsEarthCover</xsl:text> |
728 |
</xsl:element> |
729 |
</xsl:when> |
730 |
<xsl:when test="$enter='intelligencemilitary' or $enter=' intelligencemilitary' or $enter='intelligencemilitary ' or $enter=' intelligencemilitary '"> |
731 |
<xsl:element name="topicCategory"> |
732 |
<xsl:text>intelligenceMilitary</xsl:text> |
733 |
</xsl:element> |
734 |
</xsl:when> |
735 |
<xsl:when test="$enter='inlandwaters' or $enter=' inlandwaters' or $enter='inlandwaters ' or $enter=' inlandwaters '"> |
736 |
<xsl:element name="topicCategory"> |
737 |
<xsl:text>inlandWaters</xsl:text> |
738 |
</xsl:element> |
739 |
</xsl:when> |
740 |
<xsl:when test="$enter='location' or $enter=' location' or $enter='location ' or $enter=' location '"> |
741 |
<xsl:element name="topicCategory"> |
742 |
<xsl:text>location</xsl:text> |
743 |
</xsl:element> |
744 |
</xsl:when> |
745 |
<xsl:when test="$enter='oceans' or $enter=' oceans' or $enter='oceans ' or $enter=' oceans '"> |
746 |
<xsl:element name="topicCategory"> |
747 |
<xsl:text>oceans</xsl:text> |
748 |
</xsl:element> |
749 |
</xsl:when> |
750 |
<xsl:when test="$enter='planningcadastre' or $enter=' planningcadastre' or $enter='planningcadastre ' or $enter=' planningcadastre '"> |
751 |
<xsl:element name="topicCategory"> |
752 |
<xsl:text>planningCadastre</xsl:text> |
753 |
</xsl:element> |
754 |
</xsl:when> |
755 |
<xsl:when test="$enter='society' or $enter=' society' or $enter='society ' or $enter=' society '"> |
756 |
<xsl:element name="topicCategory"> |
757 |
<xsl:text>society</xsl:text> |
758 |
</xsl:element> |
759 |
</xsl:when> |
760 |
<xsl:when test="$enter='structure' or $enter=' structure' or $enter='structure ' or $enter=' structure '"> |
761 |
<xsl:element name="topicCategory"> |
762 |
<xsl:text>structure</xsl:text> |
763 |
</xsl:element> |
764 |
</xsl:when> |
765 |
<xsl:when test="$enter='transportation' or $enter=' transportation' or $enter='transportation ' or $enter=' transportation '"> |
766 |
<xsl:element name="topicCategory"> |
767 |
<xsl:text>transportation</xsl:text> |
768 |
</xsl:element> |
769 |
</xsl:when> |
770 |
<xsl:when test="$enter='utilitiescommunication' or $enter=' utilitiescommunication' or $enter='utilitiescommunication ' or $enter=' utilitiescommunication '"> |
771 |
<xsl:element name="topicCategory"> |
772 |
<xsl:text>utilitiesCommunication</xsl:text> |
773 |
</xsl:element> |
774 |
</xsl:when> |
775 |
<xsl:otherwise> |
776 |
<!-- this field is compulsory only if the resource has a |
777 |
hierarchyLevel equals to Dataset. Hense, if the element |
778 |
doesn't appear in the list, it's not translated to DC --> |
779 |
</xsl:otherwise> |
780 |
</xsl:choose> |
781 |
</xsl:for-each> |
782 |
</xsl:when> |
783 |
<xsl:otherwise> |
784 |
<!-- nothing is written. In ISO it's understood by default that |
785 |
it's a dataset. --> |
786 |
</xsl:otherwise> |
787 |
</xsl:choose> |
788 |
|
789 |
|
790 |
|
791 |
<!-- coverage:periodTime element conversion. --> |
792 |
|
793 |
<xsl:if test="./dcterms:temporal or ./dcterms:spatial"> |
794 |
|
795 |
<xsl:if test="count(./dcterms:temporal[contains(., 'begin')])>0"> |
796 |
<xsl:element name="extent"><xsl:element name="EX_Extent"> |
797 |
<xsl:element name="temporalElement"> |
798 |
<xsl:for-each select="./dcterms:temporal"> |
799 |
<xsl:if test="contains(., 'begin')"> |
800 |
<xsl:element name="EX_TemporalExtent"> |
801 |
<xsl:element name="extent"> |
802 |
<xsl:element name="beginEnd"> |
803 |
<xsl:element name="begin"> |
804 |
<xsl:value-of select="substring-before(substring-after(., 'begin='), ';')"/> |
805 |
</xsl:element> |
806 |
<xsl:element name="end"> |
807 |
<xsl:value-of select="substring-before(substring-after(., 'end='), ';')"/> |
808 |
</xsl:element> |
809 |
</xsl:element> |
810 |
</xsl:element> |
811 |
</xsl:element> |
812 |
</xsl:if> |
813 |
</xsl:for-each> |
814 |
</xsl:element></xsl:element></xsl:element> |
815 |
</xsl:if> |
816 |
|
817 |
<xsl:if test="count(./dcterms:spatial[contains(., 'northlimit')])>0"> |
818 |
<xsl:element name="extent"><xsl:element name="EX_Extent"> |
819 |
<xsl:element name="geographicElement"> |
820 |
<xsl:for-each select="./dcterms:spatial"> |
821 |
<xsl:if test="contains(., 'northlimit')"> |
822 |
<xsl:element name="EX_GeographicBoundingBox"> |
823 |
<xsl:element name="westBoundLongitude"> |
824 |
<xsl:value-of select="substring-before(substring-after(., 'westlimit='), ';')"/> |
825 |
</xsl:element> |
826 |
<xsl:element name="eastBoundLongitude"> |
827 |
<xsl:value-of select="substring-before(substring-after(., 'eastlimit='), ';')"/> |
828 |
</xsl:element> |
829 |
<xsl:element name="southBoundLatitude"> |
830 |
<xsl:value-of select="substring-before(substring-after(., 'southlimit='), ';')"/> |
831 |
</xsl:element> |
832 |
<xsl:element name="northBoundLatitude"> |
833 |
<xsl:value-of select="substring-before(substring-after(., 'northlimit='), ';')"/> |
834 |
</xsl:element> |
835 |
|
836 |
</xsl:element> |
837 |
</xsl:if> |
838 |
</xsl:for-each> |
839 |
|
840 |
</xsl:element></xsl:element></xsl:element> |
841 |
</xsl:if> |
842 |
|
843 |
</xsl:if> |
844 |
|
845 |
|
846 |
|
847 |
</xsl:element> <!-- _MD_Identification --> |
848 |
</xsl:element> <!-- identificationInfo--> |
849 |
<!-- source element conversion: --> |
850 |
<!-- If there is no source in DC, nothing happens because it's optional --> |
851 |
<!-- If it appears, a new dataQualityInfo.lineage.source is generated by --> |
852 |
<!-- each occurrence. dataQualityInfo has, also, a compulsory attribute --> |
853 |
<!-- that is, scope. This attribute will be automatically generated with--> |
854 |
<!-- the value 'dataset'. --> |
855 |
|
856 |
|
857 |
<xsl:if test="./dc:source"> |
858 |
<xsl:element name="dataQualityInfo"> |
859 |
<xsl:element name="DQ_DataQuality"> |
860 |
<xsl:element name="scope"> |
861 |
<xsl:element name="level"> |
862 |
<xsl:text>dataset</xsl:text> |
863 |
</xsl:element> |
864 |
</xsl:element> |
865 |
<xsl:element name="lineage"> |
866 |
<xsl:element name="LI_Lineage"> |
867 |
<xsl:for-each select="./dc:source"> |
868 |
<xsl:element name="source"> |
869 |
<xsl:element name="LI_Source"> |
870 |
<xsl:element name="description"> |
871 |
<xsl:value-of select="."/> |
872 |
</xsl:element> |
873 |
</xsl:element> |
874 |
</xsl:element> |
875 |
</xsl:for-each> |
876 |
</xsl:element> |
877 |
</xsl:element> |
878 |
</xsl:element> |
879 |
</xsl:element> |
880 |
</xsl:if> |
881 |
|
882 |
|
883 |
<!-- format element conversion (2): --> |
884 |
<!-- If in DC doesn't appear, nothing happens because is optional. --> |
885 |
<!-- If it appears N times, a new distributionInfo will be generated --> |
886 |
<!-- for each dc:format. --> |
887 |
|
888 |
<!-- Element identifier conversion (3) --> |
889 |
<!-- If there are dc:identifiers that correspond with a file a element --> |
890 |
<!-- a MD_DigitalTransferOptions is also generated --> |
891 |
|
892 |
|
893 |
<xsl:if test="./dc:format"> |
894 |
<!-- DistributionInfo must appear only once --> |
895 |
<xsl:element name="distributionInfo"> |
896 |
<xsl:element name="MD_Distribution"> |
897 |
<xsl:for-each select="./dc:format"> |
898 |
<xsl:variable name="pos"> |
899 |
<xsl:value-of select="position()"/> |
900 |
</xsl:variable> |
901 |
|
902 |
<xsl:element name="distributionFormat"> |
903 |
<xsl:element name="MD_Format"> |
904 |
<xsl:choose> |
905 |
<xsl:when test="contains(normalize-space(.), '//')"> |
906 |
<xsl:element name="name"> |
907 |
<xsl:value-of select="substring-before(normalize-space(.), '//')"/> |
908 |
</xsl:element> |
909 |
<xsl:element name="version"> |
910 |
<xsl:value-of select="substring-after(normalize-space(.), '//')"/> |
911 |
</xsl:element> |
912 |
</xsl:when> |
913 |
<xsl:otherwise> |
914 |
<xsl:element name="name"> |
915 |
<xsl:value-of select="normalize-space(.)"/> |
916 |
</xsl:element> |
917 |
<xsl:element name="version"> |
918 |
<xsl:text>Unknown</xsl:text> |
919 |
</xsl:element> |
920 |
</xsl:otherwise> |
921 |
</xsl:choose> |
922 |
</xsl:element> |
923 |
</xsl:element> |
924 |
|
925 |
</xsl:for-each> |
926 |
<xsl:for-each select="./dc:identifier"> |
927 |
<xsl:variable name="identifierVar"> |
928 |
<!-- it's translated to lower case --> |
929 |
<xsl:value-of select="translate(normalize-space(.),$xsltsl-str-upper, $xsltsl-str-lower)"/> |
930 |
</xsl:variable> |
931 |
<xsl:if test="contains($identifierVar, 'file') |
932 |
or contains($identifierVar, 'http') |
933 |
or contains($identifierVar, 'ftp') |
934 |
or contains($identifierVar, 'www')"> |
935 |
<xsl:element name="transferOptions"> |
936 |
<xsl:element name="MD_DigitalTransferOptions"> |
937 |
<xsl:element name="onLine"><xsl:element name="CI_OnlineResource"> |
938 |
<xsl:element name="linkage"> |
939 |
<xsl:value-of select="."/> |
940 |
</xsl:element> |
941 |
</xsl:element></xsl:element> |
942 |
</xsl:element> |
943 |
</xsl:element> |
944 |
</xsl:if> |
945 |
</xsl:for-each> |
946 |
|
947 |
</xsl:element> |
948 |
</xsl:element> |
949 |
</xsl:if> |
950 |
|
951 |
|
952 |
<!-- file identifier --> |
953 |
<xsl:if test="./@fileID"> |
954 |
<xsl:element name="fileIdentifier"> |
955 |
<xsl:value-of select="./@fileID"/> |
956 |
</xsl:element> |
957 |
</xsl:if> |
958 |
|
959 |
|
960 |
<!-- language --> |
961 |
<xsl:if test="./@xml:lang"> |
962 |
<xsl:element name="language"> |
963 |
<!--xsl:element name="isoCode"--> |
964 |
<xsl:value-of select="./@xml:lang"/> |
965 |
<!--/xsl:element--> |
966 |
</xsl:element> |
967 |
</xsl:if> |
968 |
|
969 |
|
970 |
|
971 |
<!-- type element conversion(3) (iso-comprehensive): --> |
972 |
<!-- If there is no type in DC, nothing happens, it's optional. --> |
973 |
<!-- If it appears more than one, a new hierarchyLevel will --> |
974 |
<!-- be generated for each dc:type. --> |
975 |
<!-- Also the values of DCMI Type Vocabulary are mapped into --> |
976 |
<!-- hierarchyLevel. --> |
977 |
|
978 |
<xsl:for-each select="./dc:type"> |
979 |
<xsl:variable name="typeVar3"> |
980 |
<!-- it's translated to lower case --> |
981 |
<xsl:value-of select="translate(normalize-space(.),$xsltsl-str-upper, $xsltsl-str-lower)"/> |
982 |
</xsl:variable> |
983 |
<xsl:choose> |
984 |
<xsl:when test="$typeVar3='attribute' or |
985 |
$typeVar3='attributetype' or |
986 |
$typeVar3='collectionhardware' or |
987 |
$typeVar3='collectionsession' or |
988 |
$typeVar3='dataset' or |
989 |
$typeVar3='series' or |
990 |
$typeVar3='nongeographicdataset' or |
991 |
$typeVar3='dimensiongroup' or |
992 |
$typeVar3='feature' or |
993 |
$typeVar3='featuretype' or |
994 |
$typeVar3='propertytype' or |
995 |
$typeVar3='fieldsession' or |
996 |
$typeVar3='software' or |
997 |
$typeVar3='service' or |
998 |
$typeVar3='model' or |
999 |
$typeVar3='tile'"> |
1000 |
<xsl:element name="hierarchyLevel"> |
1001 |
<xsl:value-of select="normalize-space(.)"/> |
1002 |
</xsl:element> |
1003 |
</xsl:when> |
1004 |
<xsl:when test="$typeVar3='collection'"> |
1005 |
<xsl:element name="hierarchyLevel"> |
1006 |
<xsl:text>series</xsl:text> |
1007 |
</xsl:element> |
1008 |
</xsl:when> |
1009 |
<xsl:when test="$typeVar3='dataset'"> |
1010 |
<xsl:element name="hierarchyLevel"> |
1011 |
<xsl:text>dataset</xsl:text> |
1012 |
</xsl:element> |
1013 |
</xsl:when> |
1014 |
<!--xsl:when test="$typeVar3='event'"> |
1015 |
<xsl:element name="hierarchyLevel"> |
1016 |
<xsl:text>collectionSession</xsl:text> |
1017 |
</xsl:element> |
1018 |
</xsl:when--> |
1019 |
<xsl:when test="$typeVar3='image'"> |
1020 |
<xsl:element name="hierarchyLevel"> |
1021 |
<xsl:text>dataset</xsl:text> |
1022 |
</xsl:element> |
1023 |
</xsl:when> |
1024 |
<xsl:when test="$typeVar3='service'"> |
1025 |
<xsl:element name="hierarchyLevel"> |
1026 |
<xsl:text>service</xsl:text> |
1027 |
</xsl:element> |
1028 |
</xsl:when> |
1029 |
<xsl:when test="$typeVar3='software'"> |
1030 |
<xsl:element name="hierarchyLevel"> |
1031 |
<xsl:text>sotfware</xsl:text> |
1032 |
</xsl:element> |
1033 |
</xsl:when> |
1034 |
<xsl:otherwise> |
1035 |
<!-- If the value doesn't correspond with one of the values of |
1036 |
the list, it doesn't matter. hierarchyLevel is not compulsory --> |
1037 |
</xsl:otherwise> |
1038 |
</xsl:choose> |
1039 |
</xsl:for-each> |
1040 |
|
1041 |
|
1042 |
<!-- Element publisher conversion: --> |
1043 |
<!-- If there is no publisher in DC: the element contact in ISO is --> |
1044 |
<!-- compulsory. A default value is needed. --> |
1045 |
<!-- If it appers once or more: a new contact with role --> |
1046 |
<!-- publisher is created for each apparition. --> |
1047 |
<!-- the text of the enter is written in organisationName. --> |
1048 |
|
1049 |
<xsl:choose> |
1050 |
<xsl:when test="./dc:publisher"> |
1051 |
<xsl:for-each select="./dc:publisher"> |
1052 |
<xsl:element name="contact"><xsl:element name="CI_ResponsibleParty"> |
1053 |
<xsl:element name="organisationName"> |
1054 |
<xsl:value-of select="./dc:publisher"/> |
1055 |
</xsl:element> |
1056 |
<xsl:element name="role"> |
1057 |
<xsl:text>publisher</xsl:text> |
1058 |
</xsl:element> |
1059 |
</xsl:element></xsl:element> |
1060 |
</xsl:for-each> |
1061 |
</xsl:when> |
1062 |
<xsl:otherwise> |
1063 |
<xsl:element name="contact"><xsl:element name="CI_ResponsibleParty"> |
1064 |
<xsl:element name="organisationName"> |
1065 |
<xsl:text>Default organisation</xsl:text> |
1066 |
</xsl:element> |
1067 |
<xsl:element name="role"> |
1068 |
<xsl:text>publisher</xsl:text> |
1069 |
</xsl:element> |
1070 |
</xsl:element></xsl:element> |
1071 |
</xsl:otherwise> |
1072 |
</xsl:choose> |
1073 |
|
1074 |
<!-- Here, a final compulsory date is generated. The publication date --> |
1075 |
<!-- is used for that. --> |
1076 |
|
1077 |
<xsl:element name="dateStamp"> |
1078 |
<xsl:choose> |
1079 |
<xsl:when test="./dc:date"> |
1080 |
<xsl:value-of select="./dc:date"/> |
1081 |
</xsl:when> |
1082 |
<xsl:otherwise> |
1083 |
<!-- If there is no date in the DC date, the same that with the |
1084 |
publication date is done. --> |
1085 |
<xsl:value-of select="$_date"/> |
1086 |
</xsl:otherwise> |
1087 |
</xsl:choose> |
1088 |
</xsl:element> |
1089 |
<!-- dataSetURI element. The first URI is used. --> |
1090 |
<xsl:if test="count(./dc:identifier[contains(.,'file') or contains(., 'www') or contains(., 'http') or contains (., 'ftp')]) > 0"> |
1091 |
<xsl:element name="dataSet"> |
1092 |
<xsl:value-of select="./dc:identifier[contains(.,'file') or contains(., 'www') or contains(., 'http') or contains (., 'ftp')][1]"/> |
1093 |
</xsl:element> |
1094 |
</xsl:if> |
1095 |
|
1096 |
<!--/xsl:element--> <!-- MD_Metadata --> |
1097 |
|
1098 |
</MD_Metadata> |
1099 |
|
1100 |
<!--/xsl:if--> <!-- of: <xsl:if test="rdf:Description"--> |
1101 |
</xsl:template> |
1102 |
|
1103 |
</xsl:stylesheet> |