Statistics
| Revision:

svn-gvsig-desktop / tags / v1_9_Build_1248 / extensions / extMetadata / xslt / ISO_FGDC.xsl @ 33763

History | View | Annotate | Download (58.1 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" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:iso19115="http://www.isotc211.org/iso19115" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
3
	<xsl:output method="xml" indent="yes" encoding="ISO-8859-1"/>
4
	<!-- xsl:output doctype-system="file:///D:/gente/almenara/pasarelas/xml/fgdc-std-001-1998.dtd"/ -->
5
	<!-- Esta linea se modificara en funcion de la ubicacion del dtd-->
6
	<!-- AUTOR: Mar?a Pilar Torres                                                           -->
7
	<!-- FECHA:  07/03                                                                             -->
8
	<!-- DESCRIPCION:	 Hoja de estilo para trasladar ficheros XML que validan el estandar ISO 19115              -->
9
	<!-- al estandar FGDC.       		-->
10
	<!-- SECCIONES TRADUCIDAS: identification information, dataqualityInfo, distribution information y constraint information -->
11
	<!-- MODIFICACIONES: Para la realizacion de esta hoja de estilo se ha utilizado la original (FGDC - Iso cortos) y se han   -->
12
	<!-- hecho las modificaciones oportunas.			-->
13
	<!-- Esta hoja varia con respecto a la ISO_FGDC_LARGOS en que no transforma imagen.	-->
14
	<!-- [jnog 5/2/2004] Se elimina el uso del namespace "iso19115:"
15
	     [jnog 6/2/2004] Se trata el nombre de clases (CI_Date, CI_ResponsibleParty,...),language 
16
	     [jlacasta mayo 04 Fecha de inicio y fin de los metadatos no se mostraba adecuadamente
17
	                                  Actualizamos la forma de pasar las imagenes del browse graphic al nuevo formato
18
	                                  La secci?n de referencia espacial se pierde entera
19
	                                  Se ha harreglado la secci?n de sistemas de referencia que se perdian 7 campos-->
20
	<xsl:template match="/">
21
		<xsl:apply-templates select="MD_Metadata"/>
22
	</xsl:template>
23
	<xsl:template match="MD_Metadata">
24
		<xsl:element name="metadata">
25
			<!-- IDENTIFICATION INFO -->
26
			<xsl:apply-templates select="./identificationInfo/MD_DataIdentification"/>
27
			<!--DATA QUALITY INFO -->
28
			<xsl:if test="./dataQualityInfo">
29
				<xsl:element name="dataqual">
30
					<xsl:apply-templates select="./dataQualityInfo"/>
31
				</xsl:element>
32
			</xsl:if>
33
			<!-- ENTITY AND ATTRIBUTE INFORMATION -->
34
			<xsl:if test="contentInfo">
35
				<xsl:element name="eainfo">
36
					<xsl:apply-templates select="./contentInfo"/>
37
				</xsl:element>
38
			</xsl:if>
39
			<!--DISTRIBUTION INFO -->
40
			<xsl:apply-templates select="./distributionInfo/MD_Distribution/distributor/MD_Distributor"/>
41
			<!-- METADATA MAINTENANCE  -->
42
			<xsl:element name="metainfo">
43
				<xsl:element name="metd">
44
					<xsl:value-of select="./dateStamp"/>
45
				</xsl:element>
46
				<!-- no se con que mapear metrd-->
47
				<!-- ambos son (0..1)-->
48
				<xsl:if test="metadataMaintenance/MD_MaintenanceInformation/dateOfNextUpdate">
49
					<xsl:element name="metrd"/>
50
					<xsl:element name="metfrd">
51
						<xsl:value-of select="./metadataMaintenance/MD_MaintenanceInformation/dateOfNextUpdate"/>
52
					</xsl:element>
53
				</xsl:if>
54
				<xsl:element name="metc">
55
					<xsl:apply-templates select="./contact/CI_ResponsibleParty"/>
56
				</xsl:element>
57
				<xsl:element name="metstdn">
58
					<!-- autogeneraci?n del nombre del est?ndar -->
59
					<xsl:text>FGDC Content Standards for Digital Geospatial Metadata</xsl:text>
60
					<!--<xsl:value-of select="./MetadataStandardName"/>-->
61
				</xsl:element>
62
				<xsl:element name="metstdv">
63
					<!--xsl:value-of select="./metadataStandardVersion"/-->
64
					<xsl:text>FGDC-STD-001-1998</xsl:text>
65
				</xsl:element>
66
				<xsl:if test="./metadataConstraints/MD_LegalConstraints/accessConstraints">
67
					<xsl:element name="metac">
68
						<xsl:value-of select="./metadataConstraints/MD_LegalConstraints/accessConstraints"/>
69
					</xsl:element>
70
				</xsl:if>
71
				<xsl:if test="./metadataConstraints/MD_LegalConstraints/useConstraints">
72
					<xsl:element name="metuc">
73
						<xsl:value-of select="./metadataConstraints/MD_LegalConstraints/useConstraints"/>
74
					</xsl:element>
75
				</xsl:if>
76
				<xsl:if test="./metadataConstraints/MD_LegalConstraints/otherConstraints">
77
					<xsl:element name="metoc">
78
						<xsl:value-of select="./metadataConstraints/MD_LegalConstraints/otherConstraints"/>
79
					</xsl:element>
80
				</xsl:if>
81
				<xsl:if test="./metadataConstraints/MD_SecurityConstraints">
82
					<xsl:element name="metsi">
83
						<xsl:if test="./metadataConstraints/MD_SecurityConstraints/classificationSystem">
84
							<xsl:element name="metscs">
85
								<xsl:value-of select="./metadataConstraints/MD_SecurityConstraints/classificationSystem"/>
86
							</xsl:element>
87
						</xsl:if>
88
						<xsl:if test="./metadataConstraints/MD_SecurityConstraints/classification">
89
							<xsl:element name="metsc">
90
								<xsl:value-of select="./metadataConstraints/MD_SecurityConstraints/classification"/>
91
							</xsl:element>
92
						</xsl:if>
93
						<xsl:if test="./metadataConstraints/MD_SecurityConstraints/handlingDescription">
94
							<xsl:element name="metshd">
95
								<xsl:value-of select="./metadataConstraints/MD_SecurityConstraints/handlingDescription"/>
96
							</xsl:element>
97
						</xsl:if>
98
					</xsl:element>
99
				</xsl:if>
100
				<xsl:element name="metalang">
101
  				   <xsl:if test="./language">
102
				      <xsl:value-of select="./language"/>
103
				   </xsl:if>
104
				</xsl:element>
105
				
106
				<xsl:if test="./fileIdentifier">
107
					<xsl:element name="mdFileID">
108
						<xsl:value-of select="./fileIdentifier"/>
109
					</xsl:element>
110
				</xsl:if>
111
				
112
				<xsl:if test="./hierarchyLevel">
113
					<xsl:element name="mdHrLv">
114
						<xsl:value-of select="./hierarchyLevel"/>
115
					</xsl:element>
116
				</xsl:if>
117
			</xsl:element>
118
			<!-- REFERENCESYSTEMINFO, VALIDO SEGUN EL FGDCIAAA-->
119
			<xsl:for-each select="referenceSystemInfo">
120
				<xsl:apply-templates select="."/>
121
			</xsl:for-each>
122
		</xsl:element>
123
	</xsl:template>
124
	<!-- el problema es que IdentificationInfo: MD_Identification(ISO) es (1..n) mientras que idinfo(FGDC) es (0..1)       -->
125
	<!-- tal y como esta ahora, solo se trasladara el primer IdentificationInfo: MD_Identification si es que hay ms de uno -->
126
	<xsl:template match="identificationInfo/MD_DataIdentification">
127
		<xsl:element name="idinfo">
128
			<xsl:element name="citation">
129
				<xsl:apply-templates select="citation/CI_Citation"/>
130
			</xsl:element>
131
			<!-- ambos son obligatorios-->
132
			<xsl:element name="descript">
133
				<xsl:element name="abstract">
134
					<xsl:value-of select="./abstract"/>
135
				</xsl:element>
136
				<!-- purpose es obligatorio e Purpose es (0..1) -->
137
				<xsl:element name="purpose">
138
					<!-- si Purpose no aparece,el elemento purpose-->
139
					<!-- aparecera vacio-->
140
					<xsl:value-of select="./purpose"/>
141
				</xsl:element>
142
				<!-- ambos son (0..1) -->
143
				<xsl:if test="./supplementalInformation">
144
					<xsl:element name="supplinf">
145
						<xsl:value-of select="./supplementalInformation"/>
146
					</xsl:element>
147
				</xsl:if>
148
			</xsl:element>
149
			<!-- Esto esta bastante cambiado con respecto a lo que tenia Tere.  Habra que volver a revisarlo. -->
150
			<xsl:element name="timeperd">
151
				<xsl:choose>
152
					<xsl:when test="./extent">
153
						<xsl:apply-templates select="extent"/>
154
					</xsl:when>
155
					<xsl:otherwise>
156
						<xsl:element name="timeinfo">
157
							<xsl:element name="sngdate">
158
								<xsl:element name="caldate"/>
159
							</xsl:element>
160
						</xsl:element>
161
					</xsl:otherwise>
162
				</xsl:choose>
163
				<xsl:element name="current"/>
164
			</xsl:element>
165
			<!--Elemento status-->
166
			<xsl:element name="status">
167
				<xsl:element name="progress">
168
					<!-- Por el momento, no hago ninguna comparacion, porque el valor en ISO en esta version para status es libre-->
169
					<xsl:value-of select="normalize-space(./status)"/>
170
				</xsl:element>
171
				<xsl:element name="update">
172
					<!-- Paso el valor tal cual.  Podr?a hacerse una comparacion para ver si es alguno de los aconsejados en fgdc pero
173
					como antes, si no lo era se pasaba el valor tal cual, no tiene sentido. -->
174
					<xsl:value-of select="normalize-space(./resourceMaintenance/MD_MaintenanceInformation/maintenanceAndUpdateFrequency)"/>
175
				</xsl:element>
176
			</xsl:element>
177
			<xsl:element name="spdom">
178
				<!-- bounding (FGDC) es (1..1) y GeographicBox:EX_GeographicBoundingBox es (0..n)-->
179
				<!-- solo aparecera el primero si hay varios GeographicBox:EX_GeographicBoundingBox -->
180
				<xsl:element name="bounding">
181
					<xsl:element name="westbc">
182
						<xsl:value-of select="./extent/*/geographicElement/*/westBoundLongitude"/>
183
					</xsl:element>
184
					<xsl:element name="eastbc">
185
						<xsl:value-of select="./extent/*/geographicElement/*/eastBoundLongitude"/>
186
					</xsl:element>
187
					<xsl:element name="northbc">
188
						<xsl:value-of select="./extent/*/geographicElement/*/northBoundLatitude"/>
189
					</xsl:element>
190
					<xsl:element name="southbc">
191
						<xsl:value-of select="./extent/*/geographicElement/*/southBoundLatitude"/>
192
					</xsl:element>
193
				</xsl:element>
194
				<!-- el elemento dsgpoly(FGDC) no se corresponde con ningun elemento de ISO-->
195
				<!-- spdom/scale (FGDC nuestro) es (0..1) y IdentificationInfo: MD_Identification/SpatialResolution:MD_Resolution es (0..n)-->
196
				<!-- solo se trasladara el primer SpatialResolution:MD_Resolution en caso de que haya mas de uno -->
197
				<xsl:if test="./spatialResolution/equivalentScale/MD_RepresentativeFraction">
198
					<xsl:element name="scale">
199
						<xsl:value-of select="./spatialResolution/equivalentScale/*/denominator"/>
200
					</xsl:element>
201
				</xsl:if>
202
				<!-- el elemento sparef no tiene equivalente en ISO -->
203
			</xsl:element>
204
			<xsl:element name="keywords">
205
				<xsl:element name="tpCat">
206
					<xsl:value-of select="./topicCategory"/>
207
				</xsl:element>
208
				<xsl:choose>
209
					<xsl:when test="./descriptiveKeywords/MD_Keywords/type = 'place' or ./descriptiveKeywords/MD_Keywords/keyword/type = 'theme' or ./descriptiveKeywords/MD_Keywords/keyword/type = 'stratum' or ./descriptiveKeywords/MD_Keywords/keyword/type = 'temporal' ">
210
						<xsl:apply-templates select="./descriptiveKeywords/MD_Keywords"/>
211
					</xsl:when>
212
					<xsl:otherwise>
213
						<!-- Algo tendremos que hacer..., porque keywords en FGDCIAAA es obligatoria... -->
214
						<xsl:element name="theme">
215
							<xsl:element name="themekt"/>
216
							<xsl:element name="themekey"/>
217
						</xsl:element>
218
					</xsl:otherwise>
219
				</xsl:choose>
220
			</xsl:element>
221
			<!-- accconst (FGDC) es (1..1) y ResourceConstraints:MD_constraintss/LegMD_Constraints/acconst(ISO) es (0..n) -->
222
			<!-- si hay mas de una solo se traslada la primera-->
223
			<xsl:choose>
224
				<xsl:when test="./resourceConstraints/MD_LegalConstraints">
225
					<xsl:element name="accconst">
226
						<xsl:value-of select="./resourceConstraints/MD_LegalConstraints/accessConstraints"/>
227
					</xsl:element>
228
					<xsl:element name="useconst">
229
						<xsl:value-of select="./resourceConstraints/MD_LegalConstraints/useConstraints"/>
230
					</xsl:element>
231
					<xsl:if test="./resourceConstraints/MD_LegalConstraints/otherConstraints">
232
						<xsl:element name="othconst">
233
							<xsl:value-of select="./resourceConstraints/MD_LegalConstraints/otherConstraints"/>
234
						</xsl:element>
235
					</xsl:if>
236
				</xsl:when>
237
				<xsl:otherwise>
238
					<xsl:element name="accconst"/>
239
					<xsl:element name="useconst"/>
240
					<xsl:element name="othconst"/>
241
				</xsl:otherwise>
242
			</xsl:choose>
243
			<!-- ptcontac(FGDC) es (0..1) y idPoc(ISO) es (0..n) -->
244
			<!-- solo se traslada la primera ocurrencia    -->
245
			<xsl:if test="./pointOfContact/CI_ResponsibleParty">
246
				<xsl:element name="ptcontac">
247
					<xsl:apply-templates select="./pointOfContact/CI_ResponsibleParty"/>
248
				</xsl:element>
249
			</xsl:if>
250
			<!-- browse(FGDC) es (0..n) y GraphicOverview:MD_BrowseGraphic(ISO) es (0..n)-->
251
			<xsl:for-each select="./graphicOverview/MD_BrowseGraphic">
252
				<xsl:element name="browse">
253
					<!-- browse (FGDC) y  FileName(ISO) son (1..1)-->
254
					<xsl:element name="browsen">
255
						<xsl:value-of select="./fileName"/>
256
					</xsl:element>
257
					<!-- browsed (FGDC) es (1..1)y  FileDescription(ISO) es (0..1)-->
258
					<xsl:if test="contains(fileDescription,'%%%%%%%%%%%%%%%%%PREVIEW BASE64%%%%%%%%%%%%%%%%%
259
')">
260
						<xsl:element name="browsed">
261
							<xsl:value-of select="substring-before(fileDescription,'%%%%%%%%%%%%%%%%%PREVIEW BASE64%%%%%%%%%%%%%%%%%
262
')"/>
263
						</xsl:element>
264
						<xsl:element name="browseem">
265
							<xsl:value-of select="substring-after(fileDescription,'%%%%%%%%%%%%%%%%%PREVIEW BASE64%%%%%%%%%%%%%%%%%
266
')"/>
267
						</xsl:element>
268
					</xsl:if>
269
					<xsl:if test="not(contains(fileDescription,'%%%%%%%%%%%%%%%%%PREVIEW BASE64%%%%%%%%%%%%%%%%%
270
'))">
271
						<xsl:element name="browsed">
272
							<xsl:value-of select="fileDescription"/>
273
						</xsl:element>
274
					</xsl:if>
275
										<!-- browsed (FGDC) es (1..1)y  FileDescription(ISO) es (0..1)-->
276
					<xsl:element name="browset">
277
						<xsl:value-of select="fileType"/>
278
					</xsl:element>
279
					<!-- este elemento solo es valido segun el estandar FGDC-iAAA-->
280
					<!-- a si?  pues yo lo quito porque en el dtd FGDCIAAA que yo tengo no aparece y ademas el elemento bgImage no 
281
					tiene correspondiente en ISO  
282
					10-9-03. lo pongo pq en un ejemplo de Javi y David se ve que es necesario aunque NO pertenezca al estandar
283
					1-10-03 lo vuelvo a quitar, haciendo de esta una version 2 de la hoja que si lo lleva.-->
284
					<!--xsl:if test="./bgImage">
285
						<xsl:element name="browseem">
286
							<xsl:value-of select="./bgImage"/>
287
						</xsl:element>
288
					</xsl:if-->
289
				</xsl:element>
290
			</xsl:for-each>
291
			<!-- datacred(FGDC) es (0..1) y Credit(ISO) es (0..n)                             -->
292
			<!-- solo se trasladara la primera ocurrencia de Credit si es que hay mas de una  -->
293
			<xsl:if test="./credit">
294
				<xsl:element name="datacred">
295
					<xsl:value-of select="./credit"/>
296
				</xsl:element>
297
			</xsl:if>
298
			<!-- secinfo(FGDC) es (0..1) y ResourceConstraints:MD_constraints/SecMD_Constraints(ISO) es (0..n)-->
299
			<!-- solo se trasladara la primera ocurrencia de ResourceConstraints:MD_constraints/SecMD_Constraints si hay mas de una-->
300
			<xsl:if test="./resourceConstraints/MD_SecurityConstraints">
301
				<xsl:element name="secinfo">
302
					<!-- secsys(FGDC) es (1..1) y ClassificationSys(ISO) es (0..1)-->
303
					<xsl:element name="secsys">
304
						<xsl:value-of select="./resourceConstraints/MD_SecurityConstraints/classificationSystem"/>
305
					</xsl:element>
306
					<!-- secClassification(FGDC) es (1..1) y Classification(ISO) es (1..1)-->
307
					<xsl:element name="secclass">
308
						<xsl:value-of select="./resourceConstraints/MD_SecurityConstraints/classification"/>
309
					</xsl:element>
310
					<!-- sechandl(FGDC) es (1..1) y HandlingDescription(ISO) es (0..1)-->
311
					<xsl:element name="sechandl">
312
						<xsl:value-of select="./resourceConstraints/MD_SecurityConstraints/handlingDescription"/>
313
					</xsl:element>
314
				</xsl:element>
315
			</xsl:if>
316
			<!--- Existe tambien un metadataConstraints que habria que ver si se puede pasar a algun lado o no...  -->
317
			<!-- native(FGDC) es (0..1) y envirDec(ISO) es (0..1)-->
318
			<xsl:if test="./environmentDescription">
319
				<xsl:element name="native">
320
					<xsl:value-of select="./environmentDescription"/>
321
				</xsl:element>
322
			</xsl:if>
323
			<!-- Cross_Reference no tiene equivalente en ISO-->
324
			<!-- elemento IDLANG, propio del fgdcIAAA -->
325
			<xsl:if test="./language">
326
				<xsl:for-each select="./language">
327
					<xsl:element name="idlang">
328
						<xsl:element name="idlangkt">
329
							<xsl:text>ISO639</xsl:text>
330
						</xsl:element>
331
						<xsl:element name="idlangkey">
332
						  <xsl:value-of select="."/>
333
						</xsl:element>
334
					</xsl:element>
335
				</xsl:for-each>
336
			</xsl:if>
337
		</xsl:element>
338
		<!-- FIN DE idinfo -->
339
		<!-- Suponemos que habra como maximo dos SpatialRespresentationType y un solo IdentificationInfo: MD_Identification   -->
340
		<!-- puede trasladar a spdoinfo/direct o indpref)  -->
341
		<!--  NO ENTIENDO MUY BIEN PORQUE ESTA RESTRICCION ????????????????''-->
342
		<!-- El valor de SpatialRepresentationType puede llevarse o bien a spdoinfo/direct of spdoinfo/indpref.  Ambos puede -->
343
		<!-- decirse que son opcionales NO REPETIBLES.  Por tanto habra que vigilar que no se dupliquen.   -->
344
		<xsl:element name="spdoinfo">
345
			<xsl:element name="direct">
346
				<xsl:variable name="typesrt">
347
					<xsl:value-of select="./spatialRepresentationType"/>
348
				</xsl:variable>
349
				<xsl:choose>
350
					<xsl:when test="$typesrt='Malla'">
351
						<xsl:text>RASTER</xsl:text>
352
					</xsl:when>
353
					<xsl:otherwise>
354
						<xsl:value-of select="./spatialRepresentationType"/>
355
					</xsl:otherwise>
356
				</xsl:choose>
357
			</xsl:element>
358
			<!--xsl:choose>
359
				<xsl:when test="normalize-space(./spatialRepresentationType)='Vector'">
360
				</xsl:when>
361
			</xsl:choose-->
362
			<xsl:for-each select="../../spatialRepresentationInfo/MD_VectorSpatialRepresentation">
363
				<xsl:element name="ptvctinf">
364
					<xsl:element name="vpfterm">
365
						<xsl:element name="vpflevel">
366
					 		<xsl:value-of select="./topologyLevel"/>
367
						</xsl:element>
368
						<xsl:for-each select="./geometricObjects">
369
							<xsl:element name="vpfinfo">
370
								<xsl:element name="vpftype">
371
						 			<xsl:value-of select="./MD_GeometricObjects/geometricObjectType"/>
372
								</xsl:element>
373
								<xsl:element name="ptvctcnt">
374
						 			<xsl:value-of select="./MD_GeometricObjects/geometricObjectCount"/>
375
								</xsl:element>
376
							</xsl:element>
377
						</xsl:for-each>
378
					</xsl:element>
379
				</xsl:element>
380
			</xsl:for-each>
381
			<xsl:for-each select="../../spatialRepresentationInfo/MD_GridSpatialRepresentation">
382
				<xsl:element name="rastinfo">
383
					<xsl:element name="rasttype">
384
						<xsl:value-of select="./cellGeometry"/>
385
					</xsl:element>
386
					<xsl:for-each select="./axisDimensionProperties/MD_Dimension">
387
						<xsl:variable name="dim">
388
							<xsl:value-of select="./dimensionName"/>
389
						</xsl:variable>
390
						<xsl:if test="$dim='row'">
391
							<xsl:element name="rowcount">
392
								<xsl:value-of select="./dimensionSize"/>
393
							</xsl:element>
394
						</xsl:if>
395
						<xsl:if test="$dim='column'">
396
							<xsl:element name="colcount">
397
								<xsl:value-of select="./dimensionSize"/>
398
							</xsl:element>
399
						</xsl:if>
400
						<xsl:if test="$dim='vertical'">
401
							<xsl:element name="vrtcount">
402
								<xsl:value-of select="./dimensionSize"/>
403
							</xsl:element>
404
						</xsl:if>
405
					</xsl:for-each>
406
				</xsl:element>
407
			</xsl:for-each>
408
		</xsl:element>
409

    
410
		<!--xsl:variable name="numSRT">
411
			<xsl:value-of select="count(./spatialRepresentationType)"/>
412
		</xsl:variable>
413
		<xsl:choose>
414
			<xsl:when test="$numSRT=0">
415
							</xsl:when>
416
			<xsl:when test="$numSRT=1">
417
				<xsl:element name="spdoinfo">
418
					<xsl:choose>
419
						<xsl:when test="normalize-space(./spatialRepresentationType)='vector' or
420
								normalize-space(./spatialRepresentationType)='grid' or
421
								normalize-space(./spatialRepresentationType)='tin' or
422
								normalize-space(./spatialRepresentationType)='VECTOR' or
423
								normalize-space(./spatialRepresentationType)='GRID' or
424
								normalize-space(./spatialRepresentationType)='TIN'">
425
							<xsl:element name="direct">
426
								<xsl:value-of select="./spatialRepresentationType"/>
427
							</xsl:element>
428
						</xsl:when>
429
						<xsl:otherwise>
430
														<xsl:element name="indspref">
431
								<xsl:value-of select="./spatialRepresentationType"/>
432
							</xsl:element>
433
						</xsl:otherwise>
434
					</xsl:choose>
435
				</xsl:element>
436
			</xsl:when>
437
			<xsl:when test="$numSRT=2">
438
				<xsl:element name="spdoinfo">
439
					<xsl:variable name="SRT1">
440
						<xsl:value-of select="spatialRepresentationType[1]"/>
441
					</xsl:variable>
442
					<xsl:variable name="SRT2">
443
						<xsl:value-of select="spatialRepresentationType[2]"/>
444
					</xsl:variable>
445
					<xsl:choose>
446
						<xsl:when test="$SRT1='vector' or $SRT1='grid' or $SRT1='tin' or $SRT1='VECTOR' or $SRT1='GRID' or $SRT1='TIN'">
447
							<xsl:element name="indspref">
448
								<xsl:value-of select="$SRT2"/>
449
							</xsl:element>
450
							<xsl:element name="direct">
451
								<xsl:value-of select="$SRT1"/>
452
							</xsl:element>
453
						</xsl:when>
454
						<xsl:when test="$SRT2='vector' or $SRT2='grid' or $SRT2='tin' or $SRT2='VECTOR' or $SRT2='GRID' or $SRT2='TIN'">
455
							<xsl:element name="indspref">
456
								<xsl:value-of select="$SRT1"/>
457
							</xsl:element>
458
							<xsl:element name="direct">
459
								<xsl:value-of select="$SRT2"/>
460
							</xsl:element>
461
						</xsl:when>
462
						<xsl:otherwise>
463
														<xsl:element name="indspref">
464
								<xsl:value-of select="$SRT2"/>
465
							</xsl:element>
466
							<xsl:element name="direct">
467
								<xsl:value-of select="$SRT1"/>
468
							</xsl:element>
469
						</xsl:otherwise>
470
					</xsl:choose>
471
				</xsl:element>
472
			</xsl:when>
473
			<xsl:otherwise>
474
				
475
				<xsl:element name="spdoinfo">
476
					<xsl:element name="indspref">
477
						<xsl:value-of select="spatialRepresentationType[1]"/>
478
					</xsl:element>
479
					<xsl:element name="direct">
480
						<xsl:value-of select="spatialRepresentationType[2]"/>
481
					</xsl:element>
482
				</xsl:element>
483
			</xsl:otherwise>
484
		</xsl:choose-->
485
	</xsl:template>
486
	<!-- PLANTILLA CITATION-->
487
	<xsl:template match="citation/CI_Citation | authority/CI_Citation | sourceCitation/CI_Citation">
488
		<xsl:element name="citeinfo">
489
			<xsl:choose>
490
				<xsl:when test="count(descendant::citedResponsibleParty/CI_ResponsibleParty[normalize-space(role)='originator'])>0">
491
					<!-- si hay al menos una aparicion de citedResponsibleParty con role originator..-->
492
					<xsl:for-each select="./citedResponsibleParty/CI_ResponsibleParty">
493
						<xsl:if test="normalize-space(./role)='originator'">
494
							<!-- por cada citedResponsibleParty con role originator se crea el elemento origin. -->
495
							<!-- el nombre del productor se toma de OrganisationName por convenci?n,          -->
496
							<!-- de la misma forma que en la hoja FGDC->ISO el contenido del elemento  -->
497
							<!-- origin se mapeaba en OrganisationName                                        -->
498
							<xsl:element name="origin">
499
								<xsl:value-of select="./organisationName"/>
500
							</xsl:element>
501
						</xsl:if>
502
					</xsl:for-each>
503
				</xsl:when>
504
				<xsl:otherwise>
505
					<!-- el elemento origin es obligatorio.  Se crea vacio.-->
506
					<xsl:element name="origin"/>
507
				</xsl:otherwise>
508
			</xsl:choose>
509
			<xsl:element name="pubdate">
510
				<xsl:value-of select="./date/*/date"/>
511
			</xsl:element>
512
			<!-- pubtime no tiene mapeo posible -->
513
			<xsl:element name="title">
514
				<xsl:value-of select="./title"/>
515
			</xsl:element>
516
			<xsl:if test="edition">
517
				<xsl:element name="edition">
518
					<xsl:value-of select="./edition"/>
519
				</xsl:element>
520
			</xsl:if>
521
			<xsl:if test="presentationForm">
522
				<xsl:element name="geoform">
523
					<xsl:value-of select="./presentationForm"/>
524
				</xsl:element>
525
			</xsl:if>
526
			<xsl:if test="series/CI_Series">
527
				<xsl:element name="serinfo">
528
					<xsl:element name="sername">
529
						<!-- Name es opcional, sername obligatorio-->
530
						<!-- si Name no aparece, sername aparecera vacio-->
531
						<xsl:value-of select="./series/*/name"/>
532
					</xsl:element>
533
					<xsl:element name="issue">
534
						<!-- IssueIdentification es opcional, issue obligatorio-->
535
						<!-- si IssueIdentification no aparece, issue aparecera vacio-->
536
						<xsl:value-of select="./series/*/issueIdentification"/>
537
					</xsl:element>
538
				</xsl:element>
539
			</xsl:if>
540
			<xsl:if test="count(descendant::citedResponsibleParty/CI_ResponsibleParty[normalize-space(role)='publisher'])>0">
541
				<!-- pubinfo solo puede aparecer una vez, de modo que se mapea con la primera  -->
542
				<!-- aparicion de CitedResponsibleParty:CI_ResponsibleParty con Role publisher, si hay mas de una           -->
543
				<xsl:for-each select="descendant::citedResponsibleParty/CI_ResponsibleParty[normalize-space(role)='publisher']">
544
					<xsl:if test="position()=1">
545
						<xsl:element name="pubinfo">
546
							<xsl:element name="pubplace">
547
								<xsl:value-of select="./contactInfo/*/address/*/city"/>
548
							</xsl:element>
549
							<xsl:element name="publish">
550
								<xsl:value-of select="./organisationName"/>
551
							</xsl:element>
552
						</xsl:element>
553
					</xsl:if>
554
				</xsl:for-each>
555
			</xsl:if>
556
			<xsl:if test="otherCitationDetails">
557
				<xsl:element name="othercit">
558
					<xsl:value-of select="./otherCitationDetails"/>
559
				</xsl:element>
560
			</xsl:if>
561
			<xsl:for-each select="./citedResponsibleParty/CI_ResponsibleParty">
562
				<xsl:if test="./contactInfo/*/onlineResource/CI_OnlineResource and normalize-space(./role)='originator' ">
563
					<!-- por cada citedResponsibleParty con Role originator que contenga cntOnLineRes-->
564
					<!-- se crea un elemento onlink-->
565
					<xsl:element name="onlink">
566
						<xsl:value-of select="./contactInfo/*/onlineResource/*/linkage"/>
567
					</xsl:element>
568
				</xsl:if>
569
			</xsl:for-each>
570
			<!-- Larger_work_Citation no tiene traduccion -->
571
			<!-- A?ado elementos propios del fgdc IAAA-->
572
			<xsl:if test="identifier/*/code">
573
				<xsl:element name="citId">
574
					<xsl:value-of select="./identifier/*/code"/>
575
				</xsl:element>
576
			</xsl:if>
577
			<xsl:if test="ISBN">
578
				<xsl:element name="isbn">
579
					<xsl:value-of select="./ISBN"/>
580
				</xsl:element>
581
			</xsl:if>
582
			<xsl:if test="ISSN">
583
				<xsl:element name="issn">
584
					<xsl:value-of select="./ISSN"/>
585
				</xsl:element>
586
			</xsl:if>
587
		</xsl:element>
588
	</xsl:template>
589
	<!--  Fin plantilla CITATION-->
590
	<!-- Plantilla KEYWORDS-->
591
	<xsl:template match="descriptiveKeywords/MD_Keywords">
592
		<xsl:choose>
593
			<xsl:when test="normalize-space(./type)='theme'">
594
				<!-- Se realiza la suposici?n de q siempre va a haber al menos -->
595
				<!-- un elemento TypeCd con el atributo "theme", ya que el   -->
596
				<!-- elemento theme es obligatorio en FGDC                     -->
597
				<!-- En FGDC IAAA, tpCat es obligatorio aqui, que se mapea con el elemento topicCategory de ISO. -->
598
				<!-- Por tanto, en este lugar voy a meter todos los topicCategory separados por una coma-->
599
				<xsl:element name="theme">
600
					<xsl:element name="themekt">
601
						<xsl:value-of select="thesaurusName/*/title"/>
602
					</xsl:element>
603
					<xsl:for-each select="./keyword">
604
						<xsl:element name="themekey">
605
							<xsl:value-of select="."/>
606
						</xsl:element>
607
					</xsl:for-each>
608
				</xsl:element>
609
			</xsl:when>
610
			<xsl:when test="normalize-space(./type)='place'">
611
				<xsl:element name="place">
612
					<xsl:element name="placekt">
613
						<xsl:value-of select="thesaurusName/*/title"/>
614
					</xsl:element>
615
					<xsl:for-each select="./keyword">
616
						<xsl:element name="placekey">
617
							<xsl:value-of select="."/>
618
						</xsl:element>
619
					</xsl:for-each>
620
				</xsl:element>
621
			</xsl:when>
622
			<xsl:when test="normalize-space(./type)='stratum'">
623
				<xsl:element name="stratum">
624
					<xsl:element name="stratkt">
625
						<xsl:value-of select="thesaurusName/*/title"/>
626
					</xsl:element>
627
					<xsl:for-each select="./keyword">
628
						<xsl:element name="stratkey">
629
							<xsl:value-of select="."/>
630
						</xsl:element>
631
					</xsl:for-each>
632
				</xsl:element>
633
			</xsl:when>
634
			<xsl:when test="normalize-space(./type)='temporal'">
635
				<xsl:element name="temporal">
636
					<xsl:element name="tempkt">
637
						<xsl:value-of select="thesaurusName/*/title"/>
638
					</xsl:element>
639
					<xsl:for-each select="./keyword">
640
						<xsl:element name="tempkey">
641
							<xsl:value-of select="."/>
642
						</xsl:element>
643
					</xsl:for-each>
644
				</xsl:element>
645
			</xsl:when>
646
			<xsl:otherwise>
647
				<!--no mapeamos el resto de posibles atributos -->
648
			</xsl:otherwise>
649
		</xsl:choose>
650
	</xsl:template>
651
	<!--Fin de la Plantilla KEYWORDS-->
652
	<xsl:template match="pointOfContact/CI_ResponsibleParty | distributorContact/CI_ResponsibleParty | contact/CI_ResponsibleParty | processor/CI_ResponsibleParty">
653
		<xsl:element name="cntinfo">
654
			<xsl:choose>
655
				<!-- convencion:siempre que hay un OrganisationName, se genera cntorgp         -->
656
				<!-- 	        solo si hay un solo IndividualName se genera cntperp         -->
657
				<!-- si existe OrganisationName...-->
658
				<xsl:when test="organisationName">
659
					<xsl:element name="cntorgp">
660
						<xsl:element name="cntorg">
661
							<xsl:value-of select="./organisationName"/>
662
						</xsl:element>
663
						<!-- si existe ademas IndividualName...-->
664
						<xsl:if test="individualName">
665
							<xsl:element name="cntper">
666
								<xsl:value-of select="./individualName"/>
667
							</xsl:element>
668
						</xsl:if>
669
					</xsl:element>
670
				</xsl:when>
671
				<xsl:otherwise>
672
					<!-- si solo existe IndividualName...-->
673
					<xsl:choose>
674
						<xsl:when test="individualName">
675
							<xsl:element name="cntperp">
676
								<xsl:element name="cntper">
677
									<xsl:value-of select="./individualName"/>
678
								</xsl:element>
679
							</xsl:element>
680
						</xsl:when>
681
						<xsl:otherwise>
682
							<!-- si no existen ninguno de los dos..-->
683
							<xsl:element name="cntorgp">
684
								<xsl:element name="cntorg"/>
685
							</xsl:element>
686
						</xsl:otherwise>
687
					</xsl:choose>
688
				</xsl:otherwise>
689
			</xsl:choose>
690
			<xsl:if test="positionName">
691
				<xsl:element name="cntpos">
692
					<xsl:value-of select="./positionName"/>
693
				</xsl:element>
694
			</xsl:if>
695
			<!--  cntaddr(FGDC) es (1..n) y ContactInfo:CI_Contact/Address:CI_Address es (0..1) -->
696
			<xsl:choose>
697
				<xsl:when test="./contactInfo/*/address/CI_Address">
698
					<xsl:apply-templates select="./contactInfo/*/address/CI_Address"/>
699
				</xsl:when>
700
				<xsl:otherwise>
701
					<!-- se crea el elemento vacio porque es obligatorio-->
702
					<xsl:element name="cntaddr">
703
						<xsl:element name="addrtype"/>
704
						<xsl:element name="city"/>
705
						<xsl:element name="state"/>
706
						<xsl:element name="postal"/>
707
					</xsl:element>
708
				</xsl:otherwise>
709
			</xsl:choose>
710
			<!-- cntvoice(FGDC) es (1..n) y ContactInfo:CI_Contact/Phone:CI_Telephone/Voice es (0..n)-->
711
			<xsl:choose>
712
				<xsl:when test="./contactInfo/*/phone/*/voice">
713
					<xsl:for-each select="./contactInfo/*/phone/*/voice">
714
						<xsl:element name="cntvoice">
715
							<xsl:value-of select="."/>
716
						</xsl:element>
717
					</xsl:for-each>
718
				</xsl:when>
719
				<xsl:otherwise>
720
					<xsl:element name="cntvoice"/>
721
				</xsl:otherwise>
722
			</xsl:choose>
723
			<!-- cntfax(FGDC) es (0..n) y ContactInfo:CI_Contact/Phone:CI_Telephone/Facsimile es (0..n)-->
724
			<xsl:for-each select="./contactInfo/*/phone/*/facsimile">
725
				<xsl:element name="cntfax">
726
					<xsl:value-of select="."/>
727
				</xsl:element>
728
			</xsl:for-each>
729
			<!-- cntemail(FGDC) es (0..n) y ContactInfo:CI_Contact/Address:CI_Address/ElectronicMailAddress es (0..n)-->
730
			<xsl:for-each select="./contactInfo/*/address/*/electronicMailAddress">
731
				<xsl:element name="cntemail">
732
					<xsl:value-of select="."/>
733
				</xsl:element>
734
			</xsl:for-each>
735
			<!-- hours(FGDC) es (0..1) y ContactInfo:CI_Contact/HoursOfService es (0..1)-->
736
			<xsl:if test="./contactInfo/*/hoursOfService">
737
				<xsl:element name="hours">
738
					<xsl:value-of select="./contactInfo/*/hoursOfService"/>
739
				</xsl:element>
740
			</xsl:if>
741
			<!-- cntinst(FGDC) es (0..1) y ContactInfo:CI_Contact/ContactInstructions es (0..1)-->
742
			<xsl:if test="./contactInfo/*/contactInstructions">
743
				<xsl:element name="cntinst">
744
					<xsl:value-of select="./contactInfo/*/contactInstructions"/>
745
				</xsl:element>
746
			</xsl:if>
747
			<!-- Role no tiene equivalente en FGDC-->
748
		</xsl:element>
749
	</xsl:template>
750
	<xsl:template match="address/CI_Address">
751
		<xsl:element name="cntaddr">
752
			<!-- este elemento no tiene equivalente en ISO-->
753
			<xsl:element name="addrtype"/>
754
			<!-- ambos son (0..n)-->
755
			<xsl:for-each select="./deliveryPoint">
756
				<xsl:element name="address">
757
					<xsl:value-of select="."/>
758
				</xsl:element>
759
			</xsl:for-each>
760
			<!--City(FGDC) es (1..1) y City(ISO) es (0..1) -->
761
			<xsl:element name="city">
762
				<xsl:value-of select="./city"/>
763
			</xsl:element>
764
			<!--state(FGDC) es (1.1) y AdministrativeArea(ISO) es (0..1) -->
765
			<xsl:element name="state">
766
				<xsl:value-of select="./administrativeArea"/>
767
			</xsl:element>
768
			<!--postal(FGDC) es (1.1) y PostalCode(ISO) es (0..1) -->
769
			<xsl:element name="postal">
770
				<xsl:value-of select="./postalCode"/>
771
			</xsl:element>
772
			<!-- Country(FGDC) es (0..1) y Country(iSO) es (0..1)-->
773
			<xsl:if test="./country">
774
				<xsl:element name="country">
775
					<xsl:value-of select="./country"/>
776
				</xsl:element>
777
			</xsl:if>
778
		</xsl:element>
779
	</xsl:template>
780
	<xsl:template match="MD_Distributor">
781
		<!-- Estoy suponiendo que hay la relacion entre los elementos MD_Format, MD_DigitalTransferOptions-->
782
		<!-- , MD_StandarOrderProcess es 1-1-1 en cada MD_Distributor, y que por tanto se corresponden sus contenidos-->
783
		<!-- segun su posicion como hijos de MD_Didtributor -->
784
		<xsl:element name="distinfo">
785
			<xsl:element name="distrib">
786
				<xsl:apply-templates select="./distributorContact/CI_ResponsibleParty"/>
787
			</xsl:element>
788
			<!-- resdesc no tiene equivalente en ISO-->
789
			<!-- distliab es obligatorio pero no tiene equivalente en ISO-->
790
			<xsl:element name="distliab"/>
791
			<!-- antes de empezar a mapear el elemento stdorder hay que comprobar -->
792
			<!-- que la relacion entre los elementos MD_Format, MD_DigitalTransferOption y MD_StandardOrderProcess-->
793
			<!-- sea 1-1-1 en cada elemento Distributor:MD_Distributor-->
794
			<xsl:variable name="numDistorFormat">
795
				<xsl:value-of select="count(./distributorFormat/MD_Format)"/>
796
			</xsl:variable>
797
			<xsl:variable name="numDistorTran">
798
				<xsl:value-of select="count(./distributorTransferOptions/MD_DigitalTransferOptions)"/>
799
			</xsl:variable>
800
			<xsl:choose>
801
				<!-- si todos los elementos Distributor:MD_Distributor cumplen las condiciones...-->
802
				<xsl:when test="$numDistorFormat = $numDistorTran">
803
					<xsl:element name="stdorder">
804
						<xsl:for-each select="./distributorFormat/MD_Format">
805
							<!-- obtengo la posicion del actual distorOrdPrc -->
806
							<xsl:variable name="pos">
807
								<xsl:value-of select="position()"/>
808
							</xsl:variable>
809
							<xsl:element name="digform">
810
								<xsl:element name="digtinfo">
811
									<!-- ambos son (1..1) -->
812
									<xsl:element name="formname">
813
										<xsl:value-of select="./name"/>
814
									</xsl:element>
815
									<!-- formvern(FGDC) es (0..1) y formatVer(ISO) es (1..1)-->
816
									<xsl:element name="formvern">
817
										<xsl:value-of select="./version"/>
818
									</xsl:element>
819
									<!-- formspec(FGDC) es (0..1) y Specification(ISO) es (0..1)-->
820
									<xsl:if test="specification">
821
										<xsl:element name="formspec">
822
											<xsl:value-of select="specification"/>
823
										</xsl:element>
824
									</xsl:if>
825
									<!-- se toma UnitsOfDistribution del elemento distroTran -->
826
									<!-- con la misma posicion que la de DistributorFormat: MD_Format-->
827
									<xsl:for-each select="../../distributorTransferOptions/MD_DigitalTransferOptions">
828
										<xsl:if test="position()=$pos and ./unitsOfDistribution">
829
											<xsl:element name="formcont">
830
												<xsl:value-of select="./unitsOfDistribution"/>
831
											</xsl:element>
832
										</xsl:if>
833
									</xsl:for-each>
834
									<!-- filedec(FGDC) es (0..1) y FileDecompresionTechnique(ISO) es (0..1)-->
835
									<xsl:if test="fileDecompresionTechnique">
836
										<xsl:element name="filedec">
837
											<xsl:value-of select="fileDecompresionTechnique"/>
838
										</xsl:element>
839
									</xsl:if>
840
									<!-- se toma TransferSize del elemento distroTran -->
841
									<!-- con la misma posicion que la de DistributorFormat: MD_Format-->
842
									<xsl:for-each select="../../distributorTransferOptions/MD_DigitalTransferOptions">
843
										<xsl:if test="position()=$pos and ./TransferSize">
844
											<xsl:element name="transize">
845
												<xsl:value-of select="./TransferSize"/>
846
											</xsl:element>
847
										</xsl:if>
848
									</xsl:for-each>
849
								</xsl:element>
850
								<!-- segun la suposicion comentada arriba, habra 1 DistributorTransferOptions:MD_DigitalTransferOptions por cada-->
851
								<!-- distorOrdPrc y se corresponderan segun su posicion como hijos de Distributor:MD_Distributor-->
852
								<xsl:for-each select="../../distributorTransferOptions/MD_DigitalTransferOptions">
853
									<xsl:if test="position()=$pos">
854
										<xsl:element name="digtopt">
855
											<xsl:if test="./online/CI_OnlineResource">
856
												<xsl:element name="onlinopt">
857
													<xsl:for-each select="./online/CI_OnlineResource">
858
														<xsl:element name="computer">
859
															<xsl:element name="networka">
860
																<xsl:element name="networkr">
861
																	<xsl:value-of select="./linkage"/>
862
																</xsl:element>
863
															</xsl:element>
864
														</xsl:element>
865
													</xsl:for-each>
866
												</xsl:element>
867
											</xsl:if>
868
											<xsl:if test="./offLine">
869
												<xsl:element name="offoptn">
870
													<xsl:element name="offmedia">
871
														<xsl:value-of select="./offLine/*/name"/>
872
													</xsl:element>
873
													<xsl:if test="./offLine/*/density">
874
														<xsl:element name="reccap">
875
															<xsl:for-each select="./offLine/*/density">
876
																<xsl:element name="recden">
877
																	<xsl:value-of select="."/>
878
																</xsl:element>
879
															</xsl:for-each>
880
															<xsl:element name="recdenu">
881
																<xsl:value-of select="./offLine/*/densityUnits"/>
882
															</xsl:element>
883
														</xsl:element>
884
													</xsl:if>
885
													<xsl:choose>
886
														<xsl:when test="./offLine/*/mediumFormat">
887
															<xsl:for-each select="./offLine/*/mediumFormat">
888
																<xsl:element name="recfmt">
889
																	<xsl:value-of select="."/>
890
																</xsl:element>
891
															</xsl:for-each>
892
														</xsl:when>
893
														<xsl:otherwise>
894
															<xsl:element name="recfmt"/>
895
														</xsl:otherwise>
896
													</xsl:choose>
897
													<xsl:if test="./offLine/*/mediumNote">
898
														<xsl:element name="compat">
899
															<xsl:value-of select="./offLine/*/mediumNote"/>
900
														</xsl:element>
901
													</xsl:if>
902
												</xsl:element>
903
											</xsl:if>
904
										</xsl:element>
905
									</xsl:if>
906
								</xsl:for-each>
907
							</xsl:element>
908
						</xsl:for-each>
909
						<xsl:for-each select="./distributionOrderProcess/MD_StandardOrderProcess">
910
							<xsl:if test="position()=1">
911
								<!-- fees(FGDC) es (1..1) y Fees(ISO) es (0..1)-->
912
								<xsl:element name="fees">
913
									<xsl:value-of select="./fees/monetaryAmt"/>
914
								</xsl:element>
915
								<!-- ordering(FGDC) es (0..1) y OrderingInstructions(ISO) es (0..1)-->
916
								<xsl:if test="./orderingInstructions">
917
									<xsl:element name="ordering">
918
										<xsl:value-of select="./orderingInstructions"/>
919
									</xsl:element>
920
								</xsl:if>
921
								<!-- turnarnd(FGDC) es (0..1) y Turnaround(ISO) es (0..1)-->
922
								<xsl:if test="./turnaround">
923
									<xsl:element name="turnarnd">
924
										<xsl:value-of select="./turnaround"/>
925
									</xsl:element>
926
								</xsl:if>
927
							</xsl:if>
928
						</xsl:for-each>
929
					</xsl:element>
930
				</xsl:when>
931
				<xsl:otherwise>
932
					<!--  El formato requerido para el elemento MD_Distributor en el archivo xml origen exige que -->
933
					<!--  dicho elemento tenga el mismo numero de hijos de tipo  MD_Format, de tipo MD_DigitalTransferOption -->
934
					<!--  y de tipo MD_StandarPrderProcess.Esta condici?n no se cumple en el fichero xml ISO origen, por lo -->
935
					<!--  tanto en el fichero destino no se ha creado ningun elemento stdorder. -->
936
				</xsl:otherwise>
937
			</xsl:choose>
938
			<!-- PlannedAvailableDateTime es (0..n) y availabl es (0..1) -->
939
			<!-- por tanto solo trasladamos la primera ocurrencia -->
940
			<xsl:if test="./distributionOrderProcess/MD_StandardOrderProcess/plannedAvailableDateTime">
941
				<xsl:element name="availabl">
942
					<xsl:element name="timeinfo">
943
						<xsl:element name="sngdate">
944
							<xsl:element name="caldate">
945
								<xsl:value-of select="./distributionOrderProcess/MD_StandardOrderProcess/plannedAvailableDateTime"/>
946
							</xsl:element>
947
						</xsl:element>
948
					</xsl:element>
949
				</xsl:element>
950
			</xsl:if>
951
		</xsl:element>
952
	</xsl:template>
953
	<xsl:template match="referenceSystemIdentifier/RS_Identifier | projection/RS_Identifier | ellipsoid/RS_Identifier | datum/RS_Identifier">
954
		<xsl:if test="./authority/CI_Citation">
955
			<xsl:element name="identAuth">
956
				<xsl:apply-templates select="./authority/CI_Citation"/>
957
			</xsl:element>
958
		</xsl:if>
959
		<xsl:element name="identCode">
960
			<xsl:value-of select="code"/>
961
		</xsl:element>
962
	</xsl:template>
963
	<xsl:template match="referenceSystemInfo">
964
		<xsl:element name="refSysInfo">
965
			<xsl:for-each select="MD_ReferenceSystem/referenceSystemIdentifier/RS_Identifier">
966
				<!--xsl:element name="refSysInfo"-->
967
				<xsl:element name="refSystem">
968
					<xsl:element name="refSysId">
969
						<xsl:apply-templates select="."/>
970
					</xsl:element>
971
				</xsl:element>
972
				<!--/xsl:element-->
973
			</xsl:for-each>
974
			<xsl:for-each select="MD_CRS">
975
				<!--xsl:element name="refSysInfo"-->
976
				<xsl:element name="mdCoRefSys">
977
					<xsl:if test="referenceSystemIdentifier/RS_Identifier">
978
						<xsl:element name="refSysId">
979
							<xsl:apply-templates select="referenceSystemIdentifier/RS_Identifier"/>
980
						</xsl:element>
981
					</xsl:if>
982
					<xsl:if test="projection">
983
						<xsl:element name="projection">
984
							<xsl:apply-templates select="projection/RS_Identifier"/>
985
						</xsl:element>
986
					</xsl:if>
987
					<xsl:if test="ellipsoid">
988
						<xsl:element name="ellipsoid">
989
							<xsl:apply-templates select="ellipsoid/RS_Identifier"/>
990
						</xsl:element>
991
					</xsl:if>
992
					<xsl:if test="datum">
993
						<xsl:element name="datum">
994
							<xsl:apply-templates select="datum/RS_Identifier"/>
995
						</xsl:element>
996
					</xsl:if>
997
					<xsl:if test="projectionParameters/MD_ProjectionParameters">
998
						<xsl:element name="projParas">
999
							<xsl:if test="projectionParameters/MD_ProjectionParameters/zone">
1000
								<xsl:element name="zone">
1001
									<xsl:value-of select="projectionParameters/MD_ProjectionParameters/zone"/>
1002
								</xsl:element>
1003
							</xsl:if>
1004
							<xsl:if test="projectionParameters/MD_ProjectionParameters/standardParallel">
1005
								<!--  Este elemento va de 0 a 2-->
1006
								<xsl:for-each select="projectionParameters/MD_ProjectionParameters/standardParallel">
1007
									<xsl:element name="stanPara">
1008
										<xsl:value-of select="."/>
1009
									</xsl:element>
1010
								</xsl:for-each>
1011
							</xsl:if>
1012
							<xsl:if test="projectionParameters/MD_ProjectionParameters/longitudeOfCentralMeridian">
1013
								<xsl:element name="longCntMer">
1014
									<xsl:value-of select="projectionParameters/MD_ProjectionParameters/longitudeOfCentralMeridian"/>
1015
								</xsl:element>
1016
							</xsl:if>
1017
							<xsl:if test="projectionParameters/MD_ProjectionParameters/latitudeOfProjectionOrigin">
1018
								<xsl:element name="latProjOri">
1019
									<xsl:value-of select="projectionParameters/MD_ProjectionParameters/latitudeOfProjectionOrigin"/>
1020
								</xsl:element>
1021
							</xsl:if>
1022
							<xsl:if test="projectionParameters/MD_ProjectionParameters/falseEasting">
1023
								<xsl:element name="falEastng">
1024
									<xsl:value-of select="projectionParameters/MD_ProjectionParameters/falseEasting"/>
1025
								</xsl:element>
1026
							</xsl:if>
1027
							<xsl:if test="projectionParameters/MD_ProjectionParameters/falseNorthing">
1028
								<xsl:element name="falNorthng">
1029
									<xsl:value-of select="projectionParameters/MD_ProjectionParameters/falseNorthing"/>
1030
								</xsl:element>
1031
							</xsl:if>
1032
							<xsl:if test="projectionParameters/MD_ProjectionParameters/falseEastingNorthingUnits">
1033
								<xsl:element name="falENUnits">
1034
									<xsl:value-of select="projectionParameters/MD_ProjectionParameters/falseEastingNorthingUnits"/>
1035
								</xsl:element>
1036
							</xsl:if>
1037
							<xsl:if test="projectionParameters/MD_ProjectionParameters/scaleFactorAtEquator">
1038
								<xsl:element name="sclFacEqu">
1039
									<xsl:value-of select="projectionParameters/MD_ProjectionParameters/scaleFactorAtEquator"/>
1040
								</xsl:element>
1041
							</xsl:if>
1042
							<xsl:if test="projectionParameters/MD_ProjectionParameters/heightOfProspectivePointsAboveSurface">
1043
								<xsl:element name="hgtProsPt">
1044
									<xsl:value-of select="projectionParameters/MD_ProjectionParameters/heightOfProspectivePointsAboveSurface"/>
1045
								</xsl:element>
1046
							</xsl:if>
1047
							<xsl:if test="projectionParameters/MD_ProjectionParameters/longitudeOfProjectionCenter">
1048
								<xsl:element name="longProjCnt">
1049
									<xsl:value-of select="projectionParameters/MD_ProjectionParameters/longitudeOfProjectionCenter"/>
1050
								</xsl:element>
1051
							</xsl:if>
1052
							<xsl:if test="projectionParameters/MD_ProjectionParameters/latitudeOfProjectionCenter">
1053
								<xsl:element name="latProjCnt">
1054
									<xsl:value-of select="projectionParameters/MD_ProjectionParameters/latitudeOfProjectionCenter"/>
1055
								</xsl:element>
1056
							</xsl:if>
1057
							<xsl:if test="projectionParameters/MD_ProjectionParameters/scaleFactorAtCenterLine">
1058
								<xsl:element name="sclFacCnt">
1059
									<xsl:value-of select="projectionParameters/MD_ProjectionParameters/scaleFactorAtCenterLine"/>
1060
								</xsl:element>
1061
							</xsl:if>
1062
							<xsl:if test="projectionParameters/MD_ProjectionParameters/straightVerticalLongitudeFromPole">
1063
								<xsl:element name="stVrLongPl">
1064
									<xsl:value-of select="projectionParameters/MD_ProjectionParameters/straightVerticalLongitudeFromPole"/>
1065
								</xsl:element>
1066
							</xsl:if>
1067
							<xsl:if test="projectionParameters/MD_ProjectionParameters/scaleFactorAtProjectionOrigin">
1068
								<xsl:element name="sclFacPrOr">
1069
									<xsl:value-of select="projectionParameters/MD_ProjectionParameters/scaleFactorAtProjectionOrigin"/>
1070
								</xsl:element>
1071
							</xsl:if>
1072
							<xsl:if test="projectionParameters/MD_ProjectionParameters/obliqueLineAzimuthParameter/MD_ObliqueLineAzimuth">
1073
								<xsl:element name="ObLnAziPars">
1074
									<xsl:element name="AziAngle">
1075
										<xsl:value-of select="projectionParameters/MD_ProjectionParameters/obliqueLineAzimuthParameter/MD_ObliqueLineAzimuth/azimuthAngle"/>
1076
									</xsl:element>
1077
									<xsl:element name="AziPtLong">
1078
										<xsl:value-of select="projectionParameters/MD_ProjectionParameters/obliqueLineAzimuthParameter/MD_ObliqueLineAzimuth/azimuthMeasurePointLongitude"/>
1079
									</xsl:element>
1080
								</xsl:element>
1081
							</xsl:if>
1082
							<xsl:if test="projectionParameters/MD_ProjectionParameters/obliqueLinePointParameter/MD_ObliqueLinePoint">
1083
								<xsl:for-each select="projectionParameters/MD_ProjectionParameters/obliqueLinePointParameter/MD_ObliqueLinePoint">
1084
									<xsl:element name="ObLnPtPars">
1085
										<xsl:element name="ObLineLat">
1086
											<xsl:value-of select="obliqueLineLatitude"/>
1087
										</xsl:element>
1088
										<xsl:element name="ObLineLong">
1089
											<xsl:value-of select="obliqueLineLongitude"/>
1090
										</xsl:element>
1091
									</xsl:element>
1092
								</xsl:for-each>
1093
							</xsl:if>
1094
						</xsl:element>
1095
					</xsl:if>
1096
					<xsl:if test="ellipsoidParameters/MD_EllipsoidParameters">
1097
						<xsl:element name="ellParas">
1098
							<xsl:if test="ellipsoidParameters/MD_EllipsoidParameters/semiMajorAxis">
1099
								<xsl:element name="semiMajAx">
1100
									<xsl:value-of select="ellipsoidParameters/MD_EllipsoidParameters/semiMajorAxis"/>
1101
								</xsl:element>
1102
							</xsl:if>
1103
							<xsl:if test="ellipsoidParameters/MD_EllipsoidParameters/axisUnits">
1104
								<xsl:element name="axisUnits">
1105
									<xsl:value-of select="ellipsoidParameters/MD_EllipsoidParameters/axisUnits"/>
1106
								</xsl:element>
1107
							</xsl:if>
1108
							<xsl:if test="ellipsoidParameters/MD_EllipsoidParameters/denominatorOfFlatteringRatio">
1109
								<xsl:element name="denFlaRat">
1110
									<xsl:value-of select="ellipsoidParameters/MD_EllipsoidParameters/denominatorOfFlatteringRatio"/>
1111
								</xsl:element>
1112
							</xsl:if>
1113
						</xsl:element>
1114
					</xsl:if>
1115
				</xsl:element>
1116
				<!--/xsl:element-->
1117
			</xsl:for-each>
1118
		</xsl:element>
1119
	</xsl:template>
1120
	<!-- REVISARRRR??????????????? -->
1121
	<xsl:template match="extent/EX_Extent | sourceExtent/EX_Extent">
1122
		<!--xsl:element name="timeinfo"-->
1123
			<xsl:choose>
1124
				<!--xsl:when test="./temporalElement/EX_TemporalExtent/extent/instant">
1125
					<xsl:element name="sngdate">
1126
						<xsl:element name="caldate">
1127
							<xsl:value-of select="./temporalElement/EX_TemporalExtent/extent/instant"/>
1128
						</xsl:element>
1129
					</xsl:element>
1130
				</xsl:when>
1131
				<xsl:when test="./temporalElement/EX_TemporalExtent/extent/beginRange">
1132
					<xsl:element name="sngdate">
1133
						<xsl:element name="caldate">
1134
							<xsl:value-of select="./temporalElement/EX_TemporalExtent/extent/beginRange/begin"/>
1135
						</xsl:element>
1136
						<xsl:element name="time">
1137
							<xsl:value-of select="./temporalElement/EX_TemporalExtent/extent/beginRange/duration"/>
1138
						</xsl:element>
1139
					</xsl:element>
1140
				</xsl:when-->
1141
				<xsl:when test="./temporalElement/EX_TemporalExtent/beginEnd">
1142
					<xsl:element name="timeinfo">
1143
					<xsl:element name="rngdates">
1144
						<xsl:element name="begdate">
1145
							<xsl:value-of select="./temporalElement/EX_TemporalExtent/beginEnd/begin"/>
1146
						</xsl:element>
1147
						<xsl:element name="enddate">
1148
							<xsl:value-of select="./temporalElement/EX_TemporalExtent/beginEnd/end"/>
1149
						</xsl:element>
1150
					</xsl:element>
1151
					</xsl:element>
1152
				</xsl:when>
1153
				<xsl:otherwise>
1154
					<!--xsl:element name="sngdate">
1155
						<xsl:element name="caldate"/>
1156
					</xsl:element-->
1157
				</xsl:otherwise>
1158
			</xsl:choose>
1159
		<!--/xsl:element-->
1160
	</xsl:template>
1161
	<xsl:template match="dataQualityInfo">
1162
		<!-- Scope, lineage , report -->
1163
		<!-- SCOPE no tiene emparejamientos -->
1164
		<!--xsl:if test="normalize-space(./DQ_DataQuality/report/DQ_ThematicAccuracy/@xsi:type)='DQ_QuantitativeAttributeAccuracy'"-->
1165
			<xsl:element name="attracc">
1166
				<xsl:element name="attraccr">
1167
					<!-- esto si el tipo de thematicAccuracy es el adecuado -->
1168
					<xsl:value-of select="./DQ_DataQuality/report/DQ_QuantitativeAttributeAccuracy/evaluationMethodDescription"/>
1169
				</xsl:element>
1170
				<xsl:element name="qattracc">
1171
					<xsl:element name="attraccv">
1172
						<!--Este se corresponde con una clase completa, value, que tiene varios elementos obligatorios. -->
1173
						<!--Por el momento lo emparejo con attribute name... y ya veremos... -->
1174
						<!--xsl:value-of select="./DQ_DataQuality/report/DQ_ThematicAccuracy/result/_DQ_Result/value/recordValue/attributes/AttributeName"/-->
1175
						<xsl:value-of select="./DQ_DataQuality/report/DQ_QuantitativeAttributeAccuracy/result/DQ_QuantitativeResult/value/recordValue/attributes/AttributeName"/>
1176
					</xsl:element>
1177
					<xsl:element name="attracce">
1178
						<xsl:value-of select="./DQ_DataQuality/report/DQ_QuantitativeAttributeAccuracy/measureDescription"/>
1179
					</xsl:element>
1180
				</xsl:element>
1181
			</xsl:element>
1182
		<!--/xsl:if-->
1183
		<xsl:element name="logic">
1184
			<!--elemento obligatorio en FGDC, asi que no compruebo si esta o no en ISO -->
1185
			<!--xsl:value-of select="./DQ_DataQuality/report/DQ_LogicalConsistency/evaluationMethodDescription"/-->
1186
			<xsl:value-of select="./DQ_DataQuality/report/DQ_ConceptualConsistency/evaluationMethodDescription"/>
1187
		</xsl:element>
1188
		<xsl:element name="complete">
1189
			<!--xsl:value-of select="./DQ_DataQuality/report/DQ_Completeness/evaluationMethodDescription"/-->
1190
			<xsl:value-of select="./DQ_DataQuality/report/DQ_CompletenessCommision/evaluationMethodDescription"/>
1191
		</xsl:element>
1192
		<!--xsl:if test="normalize-space(./DQ_DataQuality/report/DQ_PositionalAccuracy/@xsi:type) = 'DQ_AbsoluteExternalPositionalAccuracy'"-->
1193
			<xsl:element name="posacc">
1194
				<!--Comprobacion de que nameOfMesaure es horizontal -->
1195
				<xsl:if test="./DQ_DataQuality/report/DQ_AbsoluteExternalPositionalAccuracy/nameOfMeasure='horizontal'">
1196
					<xsl:element name="horizpa">
1197
						<xsl:element name="horizpar">
1198
							<xsl:value-of select="./DQ_DataQuality/report/DQ_AbsoluteExternalPositionalAccuracy[nameOfMeasure='horizontal']/evaluationMethodDescription"/>
1199
						</xsl:element>
1200
						<xsl:element name="qhorizpa">
1201
							<xsl:element name="horizpav">
1202
								<!--Por el momento, lo dejo vacio porque el DQ_PostionalAccuracy con el que esta emparejado es una clase y no 
1203
						se con que elemento en concreto relacionarlo. -->
1204
							</xsl:element>
1205
							<xsl:element name="horizpae">
1206
								<xsl:value-of select="./DQ_DataQuality/report/DQ_AbsoluteExternalPositionalAccuracy[nameOfMeasure='horizontal']/measureDescription"/>
1207
							</xsl:element>
1208
						</xsl:element>
1209
					</xsl:element>
1210
				</xsl:if>
1211
				<!--Comprobacion de que nameOfMesaure es vertical -->
1212
				<xsl:if test="./DQ_DataQuality/report/DQ_AbsoluteExternalPositionalAccuracy/nameOfMeasure = 'vertical'">
1213
					<xsl:element name="vertacc">
1214
						<xsl:element name="vertaccr">
1215
							<xsl:value-of select="./DQ_DataQuality/report/DQ_AbsoluteExternalPositionalAccuracy[nameOfMeasure='vertical']/evaluationMethodDescription"/>
1216
						</xsl:element>
1217
						<xsl:element name="qvertpa">
1218
							<xsl:element name="vertaccv">
1219
								<!--Por el momento, lo dejo vacio porque el DQ_PostionalAccuracy con el que esta emparejado es una clase y no 
1220
						se con que elemento en concreto relacionarlo. -->
1221
							</xsl:element>
1222
							<xsl:element name="vertacce">
1223
								<xsl:value-of select="./DQ_DataQuality/report/DQ_AbsoluteExternalPositionalAccuracy[nameOfMeasure='vertical']/measureDescription"/>
1224
							</xsl:element>
1225
						</xsl:element>
1226
					</xsl:element>
1227
				</xsl:if>
1228
			</xsl:element>
1229
		<!--/xsl:if-->
1230
		<!-- LINEAGE -->
1231
		<xsl:if test="./DQ_DataQuality/lineage">
1232
			<xsl:element name="lineage">
1233
				<xsl:for-each select="./DQ_DataQuality/lineage/LI_Lineage/source/LI_Source">
1234
					<!-- statement es el primer elemento, pero no tiene emparejamiento -->
1235
					<xsl:element name="srcinfo">
1236
						<xsl:element name="srccite">
1237
							<xsl:apply-templates select="./sourceCitation/CI_Citation"/>
1238
						</xsl:element>
1239
						<xsl:if test="./scaleDenominator/*/denominator">
1240
							<xsl:element name="srcscale">
1241
								<xsl:value-of select="./scaleDenominator/*/denominator"/>
1242
							</xsl:element>
1243
						</xsl:if>
1244
						<xsl:element name="typesrc">
1245
							<!--El FGDC propone el siguiente emparejamiento -->
1246
							<xsl:value-of select="./description"/>
1247
						</xsl:element>
1248
						<xsl:element name="srctime">
1249
							<xsl:choose>
1250
								<xsl:when test="./sourceExtent/EX_Extent">
1251
									<xsl:apply-templates select="./sourceExtent/EX_Extent"/>
1252
								</xsl:when>
1253
								<xsl:otherwise>
1254
									<xsl:element name="timeinfo">
1255
										<xsl:element name="sngdate">
1256
											<xsl:element name="caldate"/>
1257
										</xsl:element>
1258
									</xsl:element>
1259
								</xsl:otherwise>
1260
							</xsl:choose>
1261
							<xsl:element name="srccurr">
1262
								<xsl:value-of select="./sourceExtent/description"/>
1263
							</xsl:element>
1264
						</xsl:element>
1265
						<xsl:element name="srccitea">
1266
							<!-- Emparejamiento propuesto por el FGDC -->
1267
							<xsl:value-of select="./sourceCitation/*/alternateTitle"/>
1268
						</xsl:element>
1269
						<xsl:element name="srccontr">
1270
							<xsl:value-of select="./description"/>
1271
						</xsl:element>
1272
					</xsl:element>
1273
				</xsl:for-each>
1274
				<!-- dentro de lineage, srcinfo es opcional (0..n) pero procstep es obligatorio (1..n).  Tendre que asegurar que esta... -->
1275
				<xsl:choose>
1276
					<xsl:when test="./DQ_DataQuality/lineage/LI_Lineage/processStep/LI_ProcessStep">
1277
						<!--Esta en el dato iso, algo prodremos sacar. -->
1278
						<xsl:for-each select="./DQ_DataQuality/lineage/LI_Lineage/processStep/LI_ProcessStep">
1279
							<xsl:element name="procstep">
1280
								<xsl:element name="procdesc">
1281
									<xsl:value-of select="./description"/>
1282
								</xsl:element>
1283
								<xsl:for-each select="./source/LI_Source/sourceCitation/*/alternateTitle">
1284
									<xsl:element name="srcused">
1285
										<!-- En realidad no sabemos muy bien si es usada o producida...-->
1286
										<xsl:value-of select="."/>
1287
									</xsl:element>
1288
								</xsl:for-each>
1289
								<xsl:element name="procdate">
1290
									<xsl:value-of select="./dateTime"/>
1291
								</xsl:element>
1292
								<xsl:if test="./dateTime">
1293
									<xsl:element name="proctime">
1294
										<xsl:value-of select="./dateTime"/>
1295
									</xsl:element>
1296
								</xsl:if>
1297
								<xsl:for-each select="./source/LI_Source/sourceCitation/*/alternateTitle">
1298
									<xsl:element name="srcprod">
1299
										<!-- En realidad no sabemos muy bien si es usada o producida...-->
1300
										<xsl:value-of select="."/>
1301
									</xsl:element>
1302
								</xsl:for-each>
1303
								<xsl:element name="proccont">
1304
									<xsl:apply-templates select="processor/CI_ResponsibleParty"/>
1305
								</xsl:element>
1306
							</xsl:element>
1307
						</xsl:for-each>
1308
					</xsl:when>
1309
					<xsl:otherwise>
1310
						<!-- generacion de elementos obligatorios vacios -->
1311
						<xsl:element name="procstep">
1312
							<xsl:element name="procdesc"/>
1313
							<xsl:element name="procdate"/>
1314
						</xsl:element>
1315
					</xsl:otherwise>
1316
				</xsl:choose>
1317
			</xsl:element>
1318
		</xsl:if>
1319
		<!--Emparejamiento propuesto por el FGDC. -->
1320
		<xsl:element name="cloud">
1321
			<!--xsl:value-of select="./../contentInfo/MD_ContentInformation/cloudCoverPercentage"/-->
1322
			<xsl:value-of select="./../contentInfo/MD_ImageDescription/cloudCoverPercentage"/>
1323
		</xsl:element>
1324
	</xsl:template>
1325
	<xsl:template match="contentInfo">
1326
		<xsl:for-each select="MD_FeatureCatalogueDescription">
1327
			<xsl:element name="detailed">
1328
				<xsl:element name="enttyp">
1329
					<xsl:element name="enttypl">
1330
						<xsl:value-of select="./featureTypes"/>
1331
					</xsl:element>
1332
					<xsl:element name="enttypd">
1333
						<!-- Por el momento lo dejo vacio-->
1334
					</xsl:element>
1335
					<xsl:element name="enttypds">
1336
						<!-- Por el momento lo dejo vacio-->
1337
					</xsl:element>
1338
				</xsl:element>
1339
				<!-- el elemento attr no es obligatorio.  Como no tiene emparejamiento con ISO no lo a?ado -->
1340
			</xsl:element>
1341
			<!--el elemento overview no lo voy a rellenar ya que es optativo y no tiene emparejamieno en ISO -->
1342
		</xsl:for-each>
1343
	</xsl:template>
1344
</xsl:stylesheet>