Statistics
| Revision:

svn-gvsig-desktop / tags / v1_10_0_Build_1257 / extensions / extMetadata / xslt / FGDC_ISO.xsl @ 44178

History | View | Annotate | Download (84.4 KB)

1 24620 allaves
<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" -->
4
	<!-- xmlns:iso19115="http://www.isotc211.org/iso19115" -->
5
	<xsl:output method="xml" indent="yes" encoding="ISO-8859-1"/>
6
	<!-- Esta linea se modificara en funcion de la ubicacion del dtd -->
7
	<!-- AUTOR: Mar?a Pilar Torres Bruna                                                                  -->
8
	<!-- FECHA: 07/03                                                                                         -->
9
	<!-- DESCRIPCION:	Hoja de estilo para trasladar ficheros XML que validan el estandar FGDC- IAAA  -->
10
	<!-- al estandar ISO 19115.        -->
11
	<!-- SECCIONES TRADUCIDAS: identification information, dataqualityInfo, distribution information y constraint information -->
12
	<!-- MODIFICACIONES: Para la realizacion de esta hoja de estilo se ha utilizado la original (FGDC - Iso cortos) y se han   -->
13
	<!-- hecho las modificaciones oportunas.			-->
14
	<!-- Esta hoja varia con respecto a la FGDC_ISO_LARGOS en que no trasforma imagen ni a?ade la seccion -->
15
	<!--  metadata ExtensionInfo.	-->
16
	<!--  [jnog 5/2/2004] Se eliminan los espacios de nombre iso19115: . Tratar nombres de clases
17
	      [jnog 6/2/2004] Generar distributionFormat y transferOptions,language
18
	      [jlacasta feb 2004 - CAda MD_KEywords debia tener su propio descriptive keywords y no compartir el mismo
19
	      					    CAda Md_BrowseGraphic deve tener su popio graphic overview y no compartir el mismo
20
	      					     CAda Md_SEcurityConstraints deve tener su popio metadataConstraints y no compartir el mismo
21
	      					     CAda LI_Source devuelve tener su popio source y no compartir el mismo
22
	      					     CAda LI_PorcessStep devuelve tener su popio porcesStep y no compartir el mismo
23
	       [jlacasta abril 2004 - Solo generaba 1 resouce description para todos elos posibles elementos debia generar n uno para cada uno
24
	                                        la citaci?n dentro de una source de un processtep la generaba mal , no ponia CI_Citation
25
	                                        Faltaba toda la secci?n de representaci?n espacial
26
	                                        habia problemas con tokens erroneos en el sistema de refencia, problemas de mayusculas y minusculas
27
	                                        toda la parte de distribuci?n era un desastre solo pasaba el primer elemento y de lo que pasaba la mitad de los
28
	                                        campos se perdian
29
	                                        Generamos la secci?n de entidades y atributos como texto dentro de la sexxi?n de esuema	                                        -->
30
	<xsl:template match="/">
31
		<xsl:apply-templates select="metadata"/>
32
	</xsl:template>
33
	<xsl:template match="metadata">
34
		<xsl:param name="elementAsciival">
35
			<xsl:copy-of select="./eainfo"/>
36
		</xsl:param>
37
		<!--xsl:element name="MD_Metadata"-->
38
		<MD_Metadata>
39
			<!--	_MD_IDENTIFICATION-->
40
			<xsl:element name="identificationInfo">
41
				<xsl:apply-templates select="idinfo"/>
42
			</xsl:element>
43
			<!-- METADATA CONSTRAINTS-->
44
			<xsl:if test="./metainfo/metac or ./metainfo/metuc or ./metainfo/metoc or ./metainfo/metsi">
45
				<!--xsl:element name="metadataConstraints"-->
46
				<xsl:apply-templates select="metainfo"/>
47
				<!--/xsl:element-->
48
			</xsl:if>
49
			<!-- DATAQUALITYINFO-->
50
			<xsl:if test="./dataqual">
51
				<xsl:element name="dataQualityInfo">
52
					<xsl:apply-templates select="dataqual"/>
53
				</xsl:element>
54
			</xsl:if>
55
			<!--SPATIAL REPRESENTATION-->
56
			<xsl:apply-templates select="spdoinfo"/>
57
			<!-- METADATA MAINTENANCE-->
58
			<xsl:apply-templates select="metainfo/metfrd"/>
59
			<!--REFERENCE SYSTEM INFO-->
60
			<!--	ESTO HABRIA QUE PROBLARLO...-->
61
			<!-- El contenido del elemento refsysinfo>, valido segun -->
62
			<!-- el DTD FGDC-IAAA, se copia, incluyendo descendientes -->
63
			<!-- y atributos, en el documento ISO destino-->
64
			<xsl:if test="./refSysInfo">
65
				<xsl:element name="referenceSystemInfo">
66
					<xsl:for-each select="./refSysInfo">
67
						<xsl:apply-templates select="."/>
68
					</xsl:for-each>
69
				</xsl:element>
70
			</xsl:if>
71
			<!-- CONTENT INFORMATION -->
72
			<xsl:choose>
73
				<xsl:when test="./eainfo">
74
					<xsl:element name="contentInfo">
75
						<xsl:apply-templates select="eainfo"/>
76
					</xsl:element>
77
				</xsl:when>
78
				<xsl:when test="./dataqual/cloud">
79
					<xsl:element name="contentInfo">
80
						<xsl:element name="MD_ContentInformation">
81
							<xsl:attribute name="xsi:type">MD_ImageDescription</xsl:attribute>
82
							<xsl:element name="attributeDescription">
83
								<xsl:element name="typeName"/>
84
								<xsl:element name="attributeTypes">
85
									<xsl:element name="AttributeName"/>
86
									<xsl:element name="TypeName"/>
87
								</xsl:element>
88
							</xsl:element>
89
							<xsl:element name="contentType"/>
90
							<xsl:element name="cloudCoverPercentage">
91
								<xsl:value-of select="./dataqual/cloud"/>
92
							</xsl:element>
93
						</xsl:element>
94
					</xsl:element>
95
				</xsl:when>
96
			</xsl:choose>
97
			<!-- DISTRIBUTION INFO-->
98
			<!-- distinfo (FGDC) es (0..n) y DistributionInfo:MD_Distribution (ISO) es (0..1) -->
99
			<!-- solo una distribuci?n pero n distribuidores por tanto debe ser 0..n, cada distribuci?n pasa a ser un distribuidor-->
100
			<!--xsl:if test="distinfo"-->
101
			<!--xsl:for-each select="./distinfo"-->
102
			<xsl:element name="distributionInfo">
103
				<xsl:element name="MD_Distribution">
104
					<xsl:apply-templates select="distinfo"/>
105
					<!-- no se mapea distTranOps ya que interesa poder acceder -->
106
					<!-- a los medios tecnicos usados por el distribuidor desde -->
107
					<!-- el elemento Distributor:MD_Distributor (en DistributorTransferOptions:MD_DigitalTransferOptions, MD_DistributorTransferOptions)  -->
108
				</xsl:element>
109
			</xsl:element>
110
			<!--ApplicationSchema-->
111
			<xsl:element name="applicationSchemaInfo">
112
				<xsl:element name="MD_ApplicationSchemaInformation">
113
					<xsl:element name="schemaAscii">
114
												<!--xsl:copy-of select="./eainfo"/-->
115
						<!--xsl:value-of select="string($elementAsciival)"/-->
116
						<xsl:text>&lt;?xml version = '1.0' encoding = 'ISO-8859-1'?>
117
						&lt;eainfo>
118
						</xsl:text>
119
						<!--xsl:value-of select="name(xsl:copy-of select=./eainfo/)"/-->
120
						<xsl:for-each select="./eainfo/detailed">
121
							<xsl:text>&lt;detailed>
122
							</xsl:text>
123
								<xsl:text>&lt;enttyp>
124
								</xsl:text>
125
									<xsl:text>&lt;enttypl></xsl:text><xsl:value-of select="./enttyp/enttypl"/><xsl:text>&lt;/enttypl>
126
									</xsl:text>
127
									<xsl:text>&lt;enttypd></xsl:text><xsl:value-of select="./enttyp/enttypd"/><xsl:text>&lt;/enttypd>
128
									</xsl:text>
129
									<xsl:text>&lt;enttypds></xsl:text><xsl:value-of select="./enttyp/enttypds"/><xsl:text>&lt;/enttypds>
130
									</xsl:text>
131
								<xsl:text>&lt;/enttyp>
132
								</xsl:text>
133
								<xsl:for-each select="./attr">
134
									<xsl:text>&lt;attr>
135
									</xsl:text>
136
										<xsl:text>&lt;attrlabl></xsl:text><xsl:value-of select="./attrlabl"/><xsl:text>&lt;/attrlabl>
137
										</xsl:text>
138
										<xsl:text>&lt;attrdef></xsl:text><xsl:value-of select="./attrdef"/><xsl:text>&lt;/attrdef>
139
										</xsl:text>
140
										<xsl:text>&lt;attrdefs></xsl:text><xsl:value-of select="./attrdefs"/><xsl:text>&lt;/attrdefs>
141
										</xsl:text>
142
										<xsl:text>&lt;atttype></xsl:text><xsl:value-of select="./atttype"/><xsl:text>&lt;/atttype>
143
										</xsl:text>
144
										<xsl:text>&lt;attprecision></xsl:text><xsl:value-of select="./attprecision"/><xsl:text>&lt;/attprecision>
145
										</xsl:text>
146
										<xsl:text>&lt;attlength></xsl:text><xsl:value-of select="./attlength"/><xsl:text>&lt;/attlength>
147
										</xsl:text>
148
										<xsl:text>&lt;attnullsallowed></xsl:text><xsl:value-of select="./attnullsallowed"/><xsl:text>&lt;/attnullsallowed>
149
										</xsl:text>
150
										<xsl:text>&lt;attisprimarykey></xsl:text><xsl:value-of select="./attisprimarykey"/><xsl:text>&lt;/attisprimarykey>
151
										</xsl:text>
152
										<xsl:text>&lt;attisunique></xsl:text><xsl:value-of select="./attisunique"/><xsl:text>&lt;/attisunique>
153
										</xsl:text>
154
										<xsl:text>&lt;attisindex></xsl:text><xsl:value-of select="./attisindex"/><xsl:text>&lt;/attisindex>
155
										</xsl:text>
156
										<xsl:text>&lt;attrdomv>
157
										</xsl:text>
158
											<xsl:text>&lt;codesetd>
159
											</xsl:text>
160
												<xsl:text>&lt;codesetn></xsl:text><xsl:value-of select="./attrdomv/codesetd/codesetn"/><xsl:text>&lt;/codesetn>
161
												</xsl:text>
162
												<xsl:text>&lt;codesets></xsl:text><xsl:value-of select="./attrdomv/codesetd/codesets"/><xsl:text>&lt;/codesets>
163
												</xsl:text>
164
											<xsl:text>&lt;/codesetd>
165
											</xsl:text>
166
										<xsl:text>&lt;/attrdomv>
167
										</xsl:text>
168
										<xsl:text>&lt;attrdomv>
169
										</xsl:text>
170
											<xsl:for-each select="./attrdomv/edom">
171
												<xsl:text>&lt;edom>
172
												</xsl:text>
173
													<xsl:text>&lt;edomv></xsl:text><xsl:value-of select="./edomv"/><xsl:text>&lt;/edomv>
174
													</xsl:text>
175
													<xsl:text>&lt;edomvd></xsl:text><xsl:value-of select="./edomvd"/><xsl:text>&lt;/edomvd>
176
													</xsl:text>
177
													<xsl:text>&lt;edomvds></xsl:text><xsl:value-of select="./edomvds"/><xsl:text>&lt;/edomvds>
178
													</xsl:text>
179
												<xsl:text>&lt;/edom>
180
												</xsl:text>
181
											</xsl:for-each>
182
										<xsl:text>&lt;/attrdomv>
183
										</xsl:text>
184
										<xsl:text>&lt;attrdomv>
185
										</xsl:text>
186
											<xsl:text>&lt;rdom>
187
											</xsl:text>
188
												<xsl:text>&lt;rdommin></xsl:text><xsl:value-of select="./attrdomv/rdom/rdommin"/><xsl:text>&lt;/rdommin>
189
												</xsl:text>
190
												<xsl:text>&lt;rdommax></xsl:text><xsl:value-of select="./attrdomv/rdom/rdommax"/><xsl:text>&lt;/rdommax>
191
												</xsl:text>
192
												<xsl:text>&lt;attrunit></xsl:text><xsl:value-of select="./attrdomv/rdom/attrunit"/><xsl:text>&lt;/attrunit>
193
												</xsl:text>
194
												<xsl:text>&lt;attrmres></xsl:text><xsl:value-of select="./attrdomv/rdom/attrmres"/><xsl:text>&lt;/attrmres>
195
												</xsl:text>
196
											<xsl:text>&lt;/rdom>
197
											</xsl:text>
198
										<xsl:text>&lt;/attrdomv>
199
										</xsl:text>
200
										<xsl:text>&lt;attrdomv>
201
										</xsl:text>
202
											<xsl:text>&lt;udom></xsl:text><xsl:value-of select="./attrdomv/udom"/><xsl:text>&lt;/udom>
203
											</xsl:text>
204
										<xsl:text>&lt;/attrdomv>
205
										</xsl:text>
206
										<xsl:for-each select="./begdatea | ./enddatea">
207
											<xsl:if test="name(.) = 'begdatea'">
208
												<xsl:text>&lt;begdatea></xsl:text><xsl:value-of select="."/><xsl:text>&lt;/begdatea>
209
												</xsl:text>
210
											</xsl:if>
211
											<xsl:if test="name(.) = 'enddatea'">
212
												<xsl:text>&lt;enddatea></xsl:text><xsl:value-of select="."/><xsl:text>&lt;/enddatea>
213
												</xsl:text>
214
											</xsl:if>
215
									      </xsl:for-each>
216
										<!--xsl:text>&lt;begdatea></xsl:text><xsl:value-of select="./begdatea"/><xsl:text>&lt;/begdatea>
217
										</xsl:text>
218
										<xsl:text>&lt;enddatea></xsl:text><xsl:value-of select="./enddatea"/><xsl:text>&lt;/enddatea>
219
										</xsl:text-->
220
										<xsl:text>&lt;attrvai>
221
										</xsl:text>
222
											<xsl:text>&lt;attrva></xsl:text><xsl:value-of select="./attrvai/attrva"/><xsl:text>&lt;/attrva>
223
											</xsl:text>
224
											<xsl:text>&lt;attrvae></xsl:text><xsl:value-of select="./attrvai/attrvae"/><xsl:text>&lt;/attrvae>
225
											</xsl:text>
226
										<xsl:text>&lt;/attrvai>
227
										</xsl:text>
228
										<xsl:text>&lt;attrmfrq></xsl:text><xsl:value-of select="./attrmfrq"/><xsl:text>&lt;/attrmfrq>
229
										</xsl:text>
230
									<xsl:text>&lt;/attr>
231
									</xsl:text>
232
								</xsl:for-each>
233
							<xsl:text>&lt;/detailed>
234
							</xsl:text>
235
						</xsl:for-each>
236
						<xsl:text>&lt;/eainfo>
237
						</xsl:text>
238
239
					</xsl:element>
240
				</xsl:element>
241
			</xsl:element>
242
			<!--/xsl:for-each-->
243
			<!--/xsl:if-->
244
			<!--METADATA EXTENSION INFO-->
245
			<!-- el elemento MetadataExtensionInfo:MD_MetadataExtensionInformation contiene informaci?n acerca de las extensiones de los metadatos-->
246
			<!--xsl:element name="metadataExtensionInfo">
247
				<xsl:element name="MD_MetadataExtensionInformation">
248
					<xsl:element name="extendedElementInformation">
249
						<xsl:element name="MD_ExtendedElementInformation">
250
							<xsl:element name="name">browseGraphic Image </xsl:element>
251
							<xsl:element name="shortName">bgImage </xsl:element>
252
							<xsl:element name="domainCode">004</xsl:element>
253
							<xsl:element name="definition"> Image codified in base64</xsl:element>
254
							<xsl:element name="obligation">
255
								<xsl:text>optional</xsl:text>
256
							</xsl:element>
257
							<xsl:element name="dataType">
258
								<xsl:text>characterString</xsl:text>
259
							</xsl:element>
260
							<xsl:element name="parentEntity">MD_BrowseGraphic</xsl:element>
261
							<xsl:element name="rule">New MD_Metadata Class</xsl:element>
262
							<xsl:element name="source"><xsl:element name="CI_ResponsibleParty">
263
								<xsl:element name="individualName">IAAA</xsl:element>
264
								<xsl:element name="organisationName">Grupo IAAA. Depto. Inform?tica e Ingenier?a de Sistemas. Universidad de Zaragoza</xsl:element>
265
								<xsl:element name="contactInfo"><xsl:element name="CI_Contact">
266
									<xsl:element name="phone"><xsl:element name="CI_Telephone">
267
										<xsl:element name="voice">976762134</xsl:element>
268
										<xsl:element name="facsimile">976761914</xsl:element>
269
									</xsl:element></xsl:element>
270
									<xsl:element name="address"><xsl:element name="CI_Address">
271
										<xsl:element name="deliveryPoint">Mar?a de Luna 3</xsl:element>
272
										<xsl:element name="city">Zaragoza</xsl:element>
273
										<xsl:element name="administrativeArea">Unknown</xsl:element>
274
										<xsl:element name="postalCode">50015</xsl:element>
275
										<xsl:element name="country">Spain</xsl:element>
276
										<xsl:element name="electronicMailAddress">iaaa@ebro.cps.unizar.es</xsl:element>
277
									</xsl:element></xsl:element>
278
								</xsl:element></xsl:element>
279
								<xsl:element name="role">
280
									<xsl:text>publisher</xsl:text>
281
								</xsl:element>
282
							</xsl:element></xsl:element>
283
						</xsl:element>
284
					</xsl:element>
285
				</xsl:element>
286
			</xsl:element-->
287
			<!-- mdFileID -> fileIdentifier-->
288
			<xsl:if test="./metainfo/mdFileID">
289
				<xsl:element name="fileIdentifier">
290
					<xsl:value-of select="./metainfo/mdFileID"/>
291
				</xsl:element>
292
			</xsl:if>
293
			<!-- Lenguaje del dato-->
294
			<xsl:if test="./metainfo/metalang !=''">
295
				<xsl:element name="language">
296
					<!--xsl:element name="isoCode"-->
297
					<xsl:value-of select="./metainfo/metalang"/>
298
					<!--/xsl:element-->
299
				</xsl:element>
300
			</xsl:if>
301
			<!-- hierarchyLevel-->
302
			<xsl:if test="./metainfo/mdHrLv">
303
				<xsl:element name="hierarchyLevel">
304
					<xsl:value-of select="./metainfo/mdHrLv"/>
305
				</xsl:element>
306
			</xsl:if>
307
			<!--CONTACT-->
308
			<xsl:element name="contact">
309
				<xsl:apply-templates select="metainfo/metc/cntinfo"/>
310
			</xsl:element>
311
			<!--DATESTAMP-->
312
			<xsl:element name="dateStamp">
313
				<xsl:value-of select="metainfo/metd"/>
314
			</xsl:element>
315
			<!-- 	METADATA STANDARD NAME-->
316
			<xsl:element name="metadataStandardName">
317
				<!--<xsl:value-of select="metainfo/metstdn"/>-->
318
				<!-- autogeneraci?n del nombre del est?ndar -->
319
				<xsl:text>ISO 19115 Geographic Information - Metadata</xsl:text>
320
			</xsl:element>
321
			<!-- METADATA STANDARD VERSION -->
322
			<xsl:element name="metadataStandardVersion">
323
				<!--xsl:value-of select="metainfo/metstdv"/-->
324
				<xsl:text>http://metadata.dgiwg.org/ISO19115/ISO19115_v0_7.htm</xsl:text>
325
			</xsl:element>
326
			<xsl:element name="dataSet"/>
327
			<!--<xsl:apply-templates select="idinfo/accconst | idinfo/secinfo"/>-->
328
			<!--/xsl:element-->
329
		</MD_Metadata>
330
	</xsl:template>
331
	<xsl:template match="metainfo">
332
		<xsl:if test="./metsi">
333
			<xsl:element name="metadataConstraints">
334
				<xsl:element name="MD_SecurityConstraints">
335
					<xsl:if test="./metsi/metsc">
336
						<xsl:element name="classification">
337
							<xsl:value-of select="./metsi/metsc"/>
338
						</xsl:element>
339
					</xsl:if>
340
					<xsl:if test="./metsi/metscs">
341
						<xsl:element name="classificationSystem">
342
							<xsl:value-of select="./metsi/metscs"/>
343
						</xsl:element>
344
					</xsl:if>
345
					<xsl:if test="./metsi/metshd">
346
						<xsl:element name="handlingDescription">
347
							<xsl:value-of select="./metsi/metshd"/>
348
						</xsl:element>
349
					</xsl:if>
350
				</xsl:element>
351
			</xsl:element>
352
		</xsl:if>
353
		<xsl:if test="./metac or ./metoc or ./metuc">
354
			<xsl:element name="metadataConstraints">
355
				<xsl:element name="MD_LegalConstraints">
356
					<xsl:if test="./metac">
357
						<xsl:element name="accessConstraints">
358
							<xsl:value-of select="./metac"/>
359
						</xsl:element>
360
					</xsl:if>
361
					<xsl:if test="./metuc">
362
						<xsl:element name="useConstraints">
363
							<xsl:value-of select="./metuc"/>
364
						</xsl:element>
365
					</xsl:if>
366
					<xsl:if test="./metoc">
367
						<xsl:element name="otherConstraints">
368
							<xsl:value-of select="./metoc"/>
369
						</xsl:element>
370
					</xsl:if>
371
				</xsl:element>
372
			</xsl:element>
373
		</xsl:if>
374
	</xsl:template>
375
	<xsl:template match="distinfo">
376
		<!-- La herramienta que genera los ficheros XML (FGDC) -->
377
		<!-- identifica cada distribution_information con un stdorder, que contiene adem?s -->
378
		<!-- uno o m?s elementos digform; adem?s, los elementos fees, ordering y turnarnd -->
379
		<!-- se han subido al nivel del distributioninformation.-->
380
		<!-- Si queremos que la hoja de estilo sea mas general, debemos hacer que la -->
381
		<!-- salida tenga el formato indicado aunque la entrada no cumpla el formato requerido (habitual)-->
382
		<!-- Como en la mayoria de los casos en  el fichero de entrada todos los elementos -->
383
		<!-- stdorder cumplir?n el formato requerido, por razones de eficiencia en este caso -->
384
		<!-- se generan los elementos -->
385
		<!-- correspondientes sin utilizar la plantilla generaDist -->
386
		<!--xsl:element name="MD_Distribution"-->
387
		<xsl:element name="distributor">
388
			<xsl:element name="MD_Distributor">
389
				<!--DISTRIBUTOR CONTACT-->
390
				<xsl:element name="distributorContact">
391
					<xsl:apply-templates select="./distrib/cntinfo"/>
392
				</xsl:element>
393
				<!--DISTRIBUTION ORDER PROCESS-->
394
				<!-- distorOrdPrc no tiene correspondencia directa con elementos de fgdc-->
395
				<!-- pero sus hijos se corresponden con hijos de stdorder (menos availabl)-->
396
				<xsl:apply-templates select="./stdorder"/>
397
				<!--DISTRIBUTOR TRANSFER OPTIONS-->
398
				<!-- Crea el elemento DistributorTransferOptions:MD_DigitalTransferOptions -->
399
				<!-- He tenido que modificar el dtd de ISO 19115 ya que -->
400
				<!-- en este aparece el elemento como distroTran-->
401
				<!--xsl:element name="distributorTransferOptions">
402
						<xsl:apply-templates select="./stdorder/digform/digtopt"/>
403
					</xsl:element-->
404
				<!--DISTRIBUTOR FORMAT-->
405
				<!-- El elemento DistributorFormat: MD_Format es obligatorio en Distributor:MD_Distributor (ISO) -->
406
				<!-- y no lo es en FGDC (/metadata/distinfo/stdorder/digform/digtinfo puede no existir)-->
407
				<!-- aunque ya hemos comprobado que existe 1 y solo 1 vez -->
408
				<!--xsl:element name="distributorFormat">
409
						<xsl:apply-templates select="./stdorder/digform/digtinfo"/>
410
					</xsl:element-->
411
			</xsl:element>
412
		</xsl:element>
413
		<!--Generar tambien transferOptions -->
414
		<!--xsl:element name="transferOptions"-->
415
		<xsl:apply-templates select="./stdorder/digform/digtopt"/>
416
		<!--/xsl:element-->
417
		<!--Generar tambien ditributionFormat -->
418
		<!--xsl:element name="distributionFormat"-->
419
		<xsl:apply-templates select="./stdorder/digform/digtinfo"/>
420
		<!--/xsl:element-->
421
		<!--/xsl:element-->
422
	</xsl:template>
423
	<xsl:template name="generaDist">
424
		<xsl:param name="nivel">a</xsl:param>
425
		<!-- Esta plantilla genera el formato de salida de MD_Distributor ISO correcto siempre que el-->
426
		<!-- formato de los elementos FGDC correspondientes validen el DTD. -->
427
		<!-- Unicamente si aparecen en el mismo elemento digtopt varios elementos offoptn se generaria -->
428
		<!-- un elemento DistributorTransferOptions:MD_DigitalTransferOptions vacio-->
429
		<xsl:for-each select="./stdorder">
430
			<xsl:choose>
431
				<!-- Cuando el elemento onlinopt se repite mas de 1 vez dentro de digtopt, -->
432
				<!-- siendo el numero de apariciones de digform igual a 1, y el numero de -->
433
				<!-- apariciones de offoptn menor o igual a 1 ... -->
434
				<xsl:when test="count(digform)=1 and ( count(descendant::onlinopt)&gt;=1 or count(descendant::offoptn)&gt;=1 ) ">
435
					<!-- el estandar FGDC no permite que exista un elemento stdorder que nocontenga ning?n onlinopt -->
436
					<!-- ni ning?n offoptn -->
437
					<xsl:choose>
438
						<xsl:when test="$nivel='a'">
439
							<xsl:for-each select="./digform/digtopt/onlinopt">
440
								<!--xsl:apply-templates select="ancestor::digform/digtinfo"/-->
441
								<xsl:element name="distributorFormat">
442
									<xsl:apply-templates select="ancestor::digform/digtinfo"/>
443
								</xsl:element>
444
								<!--  Se aplica la plantilla sobre digtinfo (solo hay 1) tantas veces como aparezca onlinopt.-->
445
								<!--  Dicha plantilla crea el elemento DistributorFormat: MD_Format -->
446
							</xsl:for-each>
447
							<xsl:for-each select="./digform/digtopt/offoptn">
448
								<!--xsl:apply-templates select="ancestor::digform/digtinfo"/-->
449
								<xsl:element name="distributorFormat">
450
									<xsl:apply-templates select="ancestor::digform/digtinfo"/>
451
								</xsl:element>
452
								<!--  Se aplica la plantilla sobre digtinfo (solo hay 1) tantas veces como aparezca offoptn.-->
453
								<!--  Dicha plantilla crea el elemento DistributorFormat: MD_Format -->
454
							</xsl:for-each>
455
						</xsl:when>
456
						<xsl:when test="$nivel='b'">
457
							<xsl:for-each select="./digform/digtopt/onlinopt">
458
								<xsl:apply-templates select="ancestor::stdorder"/>
459
								<!--  Se aplica la plantilla sobre el elemento stdorder actual (solo hay 1) -->
460
								<!--  tantas veces como aparezca onlinopt.-->
461
								<!--  Dicha plantilla crea el elemento distorOrdPrc -->
462
							</xsl:for-each>
463
							<xsl:for-each select="./digform/digtopt/offoptn">
464
								<xsl:apply-templates select="ancestor::stdorder"/>
465
								<!--  Se aplica la plantilla sobre el elemento stdorder actual (solo hay 1) -->
466
								<!--  tantas veces como aparezca offoptn.-->
467
								<!--  Dicha plantilla crea el elemento distorOrdPrc -->
468
							</xsl:for-each>
469
						</xsl:when>
470
						<xsl:when test="$nivel='c'">
471
							<!-- Se aplica la plantilla sobre digtopt (el elemento que se repite mas de 1 vez) -->
472
							<!--xsl:apply-templates select="./digform/digtopt"/-->
473
							<xsl:element name="distributorTransferOptions">
474
								<xsl:apply-templates select="./digform/digtopt"/>
475
							</xsl:element>
476
						</xsl:when>
477
					</xsl:choose>
478
				</xsl:when>
479
				<xsl:when test="count(digform)&gt;1">
480
					<xsl:choose>
481
						<xsl:when test="$nivel='a'">
482
							<xsl:for-each select="./digform">
483
								<!-- si aparece mas de un elemento onlinopt dentro de un digform-->
484
								<xsl:for-each select="descendant::onlinopt">
485
									<!--xsl:apply-templates select="ancestor::digform/digtinfo"/!-->
486
									<xsl:element name="distributorFormat">
487
										<xsl:apply-templates select="ancestor::digform/digtinfo"/>
488
									</xsl:element>
489
								</xsl:for-each>
490
								<!-- si aparece mas de un elemento offoptn dentro de un digform-->
491
								<xsl:for-each select="descendant::offoptn">
492
									<!--xsl:apply-templates select="ancestor::digform/digtinfo"/-->
493
									<xsl:element name="distributorFormat">
494
										<xsl:apply-templates select="ancestor::digform/digtinfo"/>
495
									</xsl:element>
496
								</xsl:for-each>
497
							</xsl:for-each>
498
						</xsl:when>
499
						<xsl:when test="$nivel='b'">
500
							<xsl:for-each select="./digform">
501
								<!-- si aparece mas de un elemento onlinopt dentro de un digform-->
502
								<xsl:for-each select="descendant::onlinopt">
503
									<xsl:apply-templates select="ancestor::stdorder"/>
504
								</xsl:for-each>
505
								<!-- si aparece mas de un elemento offoptn dentro de un digform-->
506
								<xsl:for-each select="descendant::offoptn">
507
									<xsl:apply-templates select="ancestor::stdorder"/>
508
								</xsl:for-each>
509
							</xsl:for-each>
510
						</xsl:when>
511
						<xsl:when test="$nivel='c'">
512
							<!-- Se aplica la plantilla sobre digtopt (solo hay 1)  -->
513
							<!-- tantas veces como se repita digform-->
514
							<!--xsl:apply-templates select="./digform/digtopt"/-->
515
							<xsl:element name="distributorTransferOptions">
516
								<xsl:apply-templates select="./stdorder/digform/digtopt"/>
517
							</xsl:element>
518
						</xsl:when>
519
					</xsl:choose>
520
				</xsl:when>
521
				<xsl:otherwise>
522
					<!-- Este caso no deberia darse porque el estandar FGDC exige que los elementos -->
523
					<!-- stdorder contengan al menos un elemento onlinopt o un elemento offoptn -->
524
					<xsl:element name="distributionOrderProcess"/>
525
					<xsl:element name="distributorTransferOptions"/>
526
					<xsl:element name="distributorFormat"/>
527
				</xsl:otherwise>
528
			</xsl:choose>
529
		</xsl:for-each>
530
	</xsl:template>
531
	<xsl:template match="digtinfo">
532
		<!-- creamos un DistributorFormat: MD_Format(iso) por cada digtinfo(fgdc) -->
533
		<!--xsl:element name="distributorFormat"-->
534
		<xsl:element name="distributionFormat">
535
			<xsl:element name="MD_Format">
536
				<!-- Name y version son obligatorios.  No asi formspec y filedec-->
537
				<xsl:element name="name">
538
					<xsl:value-of select="formname"/>
539
				</xsl:element>
540
				<!--es obligatorio -->
541
				<xsl:element name="version">
542
					<!-- si el elemento formvern esta vacio hay problemas...-->
543
					<xsl:choose>
544
						<xsl:when test="./formvern!=''">
545
							<xsl:value-of select="formvern"/>
546
						</xsl:when>
547
						<xsl:otherwise>UNKNOWN</xsl:otherwise>
548
					</xsl:choose>
549
				</xsl:element>
550
				<xsl:if test="formspec">
551
					<xsl:element name="specification">
552
						<xsl:value-of select="./formspec"/>
553
					</xsl:element>
554
				</xsl:if>
555
				<xsl:if test="filedec">
556
					<xsl:element name="fileDecompressionTechnique">
557
						<xsl:value-of select="./filedec"/>
558
					</xsl:element>
559
				</xsl:if>
560
			</xsl:element>
561
		</xsl:element>
562
	</xsl:template>
563
	<xsl:template match="stdorder">
564
		<xsl:element name="distributionOrderProcess">
565
			<xsl:element name="MD_StandardOrderProcess">
566
				<!-- fees es obligatorio en FGDC -->
567
				<xsl:element name="fees">
568
					<!--xsl:element name="monetaryAmt"-->
569
					<!-- Hay problemas si fees esta vacio, ya que en ISO, el valor tiene que tener una longitud de al menos 1 -->
570
					<!--xsl:choose>
571
							<xsl:when test="./fees!=''"-->
572
					<xsl:value-of select="./fees"/>
573
					<!--/xsl:when>
574
							<xsl:otherwise>0.0</xsl:otherwise>
575
						</xsl:choose>
576
					</xsl:element>
577
					<xsl:element name="monetaryType">
578
						<xsl:element name="isoName">Euro</xsl:element>
579
					</xsl:element-->
580
				</xsl:element>
581
				<!-- ambos son (0..1)-->
582
				<xsl:if test="../availabl/timeinfo[sngdate]">
583
					<!-- solo interesa mapear este elemento si aparece una sola fecha (sngdate)-->
584
					<xsl:element name="plannedAvailableDateTime">
585
						<xsl:apply-templates select="../availabl/timeinfo"/>
586
					</xsl:element>
587
				</xsl:if>
588
				<!-- ambos son (0..1) -->
589
				<xsl:if test="ordering">
590
					<xsl:element name="orderingInstructions">
591
						<xsl:value-of select="./ordering"/>
592
					</xsl:element>
593
				</xsl:if>
594
				<!-- ambos son (0..1) -->
595
				<xsl:if test="turnarnd">
596
					<xsl:element name="turnaround">
597
						<xsl:value-of select="./turnarnd"/>
598
					</xsl:element>
599
				</xsl:if>
600
			</xsl:element>
601
		</xsl:element>
602
	</xsl:template>
603
	<xsl:template match="distinfo/stdorder/digform/digtopt">
604
		<xsl:if test="onlinopt/computer[networka]">
605
			<!-- solo se crea un DistributorTransferOptions:MD_DigitalTransferOptions para onlinopt en caso de que haya al menos un elemento networkr-->
606
			<!--xsl:element name="distributorTransferOptions"-->
607
			<xsl:element name="transferOptions">
608
				<xsl:element name="MD_DigitalTransferOptions">
609
					<xsl:for-each select="onlinopt">
610
						<xsl:if test="ancestor::digform/digtinfo[formcont]">
611
							<xsl:element name="unitsOfDistribution">
612
								<xsl:value-of select="ancestor::digform/digtinfo/formcont"/>
613
							</xsl:element>
614
						</xsl:if>
615
						<!-- los dos son (0..1) -->
616
						<xsl:if test="ancestor::digform/digtinfo[transize]">
617
							<xsl:element name="transferSize">
618
								<xsl:value-of select="ancestor::digform/digtinfo/transize"/>
619
							</xsl:element>
620
						</xsl:if>
621
						<xsl:for-each select="./computer/networka/networkr">
622
							<xsl:element name="onLine">
623
								<xsl:element name="CI_OnlineResource">
624
									<!-- tiene mas elementos segun ISO pero no corresponden con ninguno en FGDC-->
625
									<!-- se crea un OnLine:CI_OnLineResource por cada networkr, dado que  solo puede-->
626
									<!-- haber un Linkage en cada OnLine:CI_OnLineResource,pero puede haber  -->
627
									<!-- muchos OnLine:CI_OnLineResource -->
628
									<xsl:element name="linkage">
629
										<xsl:value-of select="."/>
630
									</xsl:element>
631
								</xsl:element>
632
							</xsl:element>
633
						</xsl:for-each>
634
					</xsl:for-each>
635
					<xsl:for-each select="offoptn">
636
						<xsl:apply-templates select="."/>
637
					</xsl:for-each>
638
				</xsl:element>
639
			</xsl:element>
640
		</xsl:if>
641
	</xsl:template>
642
	<xsl:template match="offoptn">
643
		<xsl:element name="offLine">
644
			<xsl:element name="MD_Medium">
645
				<xsl:element name="name">
646
					<xsl:value-of select="./offmedia"/>
647
				</xsl:element>
648
				<xsl:if test="./reccap">
649
					<xsl:for-each select="./reccap/recden">
650
						<xsl:element name="density">
651
							<xsl:value-of select="."/>
652
						</xsl:element>
653
					</xsl:for-each>
654
					<!--CREO QUE PONERLO AQUI DENTRO NO PASA NADA PERO TEER EN CUENTA QUE ANTES ESTABA FUERA-->
655
					<!-- recfmt es (1..n) y MediumFormat (0..n) -->
656
					<xsl:element name="densityUnits">
657
						<xsl:value-of select="./reccap/recdenu"/>
658
					</xsl:element>
659
					<xsl:for-each select="./recfmt">
660
						<xsl:element name="mediumFormat">
661
							<xsl:value-of select="."/>
662
						</xsl:element>
663
					</xsl:for-each>
664
				</xsl:if>
665
				<!-- ambos son (0..1) -->
666
				<xsl:if test="./compat">
667
					<xsl:element name="mediumNote">
668
						<xsl:value-of select="./compat"/>
669
					</xsl:element>
670
				</xsl:if>
671
			</xsl:element>
672
		</xsl:element>
673
	</xsl:template>
674
	<xsl:template match="idinfo">
675
		<xsl:element name="MD_DataIdentification">
676
			<!-- xsl:element name="_MD_Identification"-->
677
			<!-- xsl:attribute name="xsi:type">MD_DataIdentification</xsl:attribute -->
678
			<!--  Aqui, debemos tener cuidado con el orden correcto-->
679
			<!-- CITATION-->
680
			<xsl:element name="citation">
681
				<xsl:apply-templates select="citation/citeinfo"/>
682
			</xsl:element>
683
			<!-- ABSTRACT-->
684
			<xsl:element name="abstract">
685
				<xsl:value-of select="descript/abstract"/>
686
			</xsl:element>
687
			<!--PURPOSE-->
688
			<xsl:element name="purpose">
689
				<xsl:value-of select="descript/purpose"/>
690
			</xsl:element>
691
			<!--CREDIT-->
692
			<!-- datacred es (0..1) e Credit es (0..n) -->
693
			<xsl:if test="datacred">
694
				<xsl:element name="credit">
695
					<xsl:value-of select="./datacred"/>
696
				</xsl:element>
697
			</xsl:if>
698
			<!-- STATUS-->
699
			<xsl:apply-templates select="./status/progress"/>
700
			<!--POINT OF CONTACT-->
701
			<!-- idinfo/ptcontac es (0..1) e idPoc es (0..n) -->
702
			<!-- idPoc se podria introducir dentro del template-->
703
			<!-- si el template no se utilizara en mas sitios-->
704
			<xsl:if test="ptcontac">
705
				<xsl:element name="pointOfContact">
706
					<xsl:apply-templates select="./ptcontac/cntinfo"/>
707
				</xsl:element>
708
			</xsl:if>
709
			<!--RESOURCE CONSTRAINTS-->
710
			<xsl:if test="./accconst!='' or ./useconst!='' or ./secinfo!=''">
711
				<!--xsl:element name="resourceConstraints"-->
712
				<!--xsl:apply-templates select="./accconst | ./secinfo"/-->
713
				<xsl:if test="./accconst!='' or ./useconst!=''">
714
					<xsl:element name="resourceConstraints">
715
						<xsl:element name="MD_LegalConstraints">
716
							<xsl:if test="./accconst">
717
								<xsl:element name="accessConstraints">
718
									<xsl:value-of select="./accconst"/>
719
								</xsl:element>
720
							</xsl:if>
721
							<xsl:if test="./useconst">
722
								<xsl:element name="useConstraints">
723
									<xsl:value-of select="./useconst"/>
724
								</xsl:element>
725
							</xsl:if>
726
							<xsl:if test="./othconst">
727
								<xsl:element name="otherConstraints">
728
									<xsl:value-of select="./othconst"/>
729
								</xsl:element>
730
							</xsl:if>
731
						</xsl:element>
732
					</xsl:element>
733
				</xsl:if>
734
				<xsl:if test="./secinfo">
735
					<xsl:element name="resourceConstraints">
736
						<xsl:element name="MD_SecurityConstraints">
737
							<xsl:element name="classification">
738
								<xsl:value-of select="./secinfo/secclass"/>
739
							</xsl:element>
740
							<xsl:element name="classificationSystem">
741
								<xsl:value-of select="./secinfo/secsys"/>
742
							</xsl:element>
743
							<xsl:element name="handlingDescription">
744
								<xsl:value-of select="./secinfo/sechandl"/>
745
							</xsl:element>
746
						</xsl:element>
747
					</xsl:element>
748
				</xsl:if>
749
				<!--/xsl:element-->
750
			</xsl:if>
751
			<!--RESOURCE MAINTENANCE-->
752
			<xsl:if test="./status/update!=''">
753
				<xsl:apply-templates select="./status/update"/>
754
			</xsl:if>
755
			<!--DESCRIPTIVE KEYWORDS-->
756
			<!--En Iso, este elemento no es obligatorio, por lo que deberia asegurarme de que los valores de FGDC
757
			son correctos -->
758
			<!--xsl:if test="normalize-space(descriptiveKeywords/MD_Keywords/keyword)!=''">
759
				<xsl:element name="descriptiveKeywords">
760
					<xsl:apply-templates select="keywords/theme|keywords/place"/>
761
				</xsl:element>
762
			</xsl:if-->
763
			<xsl:if test="normalize-space(keywords/theme/themekey)!='' or normalize-space(keywords/place/placekey)!='' or normalize-space(keywords/stratum/stratkey)!='' or normalize-space(keywords/temporal/tempkey)!=''">
764
				<!--xsl:element name="descriptiveKeywords"-->
765
				<xsl:apply-templates select="keywords/theme|keywords/place|keywords/stratum|keywords/temporal"/>
766
				<!--/xsl:element-->
767
			</xsl:if>
768
			<!--	GRAPHIC OVERVIEW -->
769
			<!-- browse y GraphicOverview:MD_BrowseGraphic son (0..n) -->
770
			<xsl:if test="./browse/browsen">
771
				<!--xsl:element name="graphicOverview"-->
772
				<!--metemos la imagen dentro de la descripcion de la informacion"-->
773
				<xsl:for-each select="browse">
774
					<xsl:element name="graphicOverview">
775
						<xsl:element name="MD_BrowseGraphic">
776
							<xsl:element name="fileName">
777
								<xsl:value-of select="browsen"/>
778
							</xsl:element>
779
							<xsl:element name="fileDescription">
780
								<xsl:value-of select="browsed"/>
781
								<xsl:if test="./browseem">
782
									<xsl:text>
783
%%%%%%%%%%%%%%%%%PREVIEW BASE64%%%%%%%%%%%%%%%%%
784
</xsl:text>
785
									<xsl:value-of select="browseem"/>
786
								</xsl:if>
787
							</xsl:element>
788
							<xsl:element name="fileType">
789
								<xsl:value-of select="browset"/>
790
							</xsl:element>
791
							<!-- el elemento bgImage no pertenece al estandar-->
792
							<!--xsl:if test="./browseem">
793
								<xsl:element name="bgImage">
794
									<xsl:value-of select="./browseem"/>
795
								</xsl:element>
796
							</xsl:if-->
797
						</xsl:element>
798
					</xsl:element>
799
				</xsl:for-each>
800
				<!--/xsl:element-->
801
			</xsl:if>
802
			<!--	SPATIAL REPRESENTATION TYPE-->
803
			<!-- En  el estandar fgdc el elemento indspref contiene PCDATA (sin atributos, y sin valores aconsejados)  -->
804
			<!-- sin embargo no podemos trasladar cualquier palabra como SpatRepTypCd porque hay una lista de valores -->
805
			<!-- posibles para el atributo. Por ello hago la suposicion de que el contenido spdoinfo/indspref -->
806
			<!-- sera textTable o video, (asi se establece en la hoja de estilo ISO_FGDC). -->
807
			<!-- SpatialRespresentationType es (0..n) y indspref es (0..1) en spdoinfo q es (0..1)-->
808
			<xsl:if test="./spdoinfo/indspref">
809
				<xsl:element name="	spatialRepresentationType">
810
					<xsl:choose>
811
						<xsl:when test="normalize-space(../spdoinfo/indspref)='video' or
812
							normalize-space(../spdoinfo/indspref)='VIDEO'">
813
							<xsl:text>video</xsl:text>
814
						</xsl:when>
815
						<xsl:when test="normalize-space(../spdoinfo/indspref)='textTable' or
816
							normalize-space(../spdoinfo/indspref)='TEXTTABLE'">
817
							<xsl:text>textTable</xsl:text>
818
						</xsl:when>
819
						<xsl:otherwise>
820
							<!--si el valor no es uno de los aconsejados, se traslada tal cual-->
821
							<xsl:value-of select="normalize-space(../spdoinfo/indspref)"/>
822
						</xsl:otherwise>
823
					</xsl:choose>
824
				</xsl:element>
825
			</xsl:if>
826
			<!-- En  el estandar fgdc el elemento direct contiene PCDATA (sin atributos), pero existen unos valores  -->
827
			<!-- aconsejados (Vector, Point y Raster), que se corresponden con 2 de los posibles atributos de SpatialRespresentationType-->
828
			<!-- (vector y grid )-->
829
			<!-- SpatialRespresentationType es (0..n) y direct es (0..1) en spdoinfo q es (0..1)-->
830
			<xsl:if test="../spdoinfo/direct">
831
				<xsl:element name="spatialRepresentationType">
832
					<xsl:choose>
833
						<xsl:when test="normalize-space(../spdoinfo/direct)='Vector' or
834
							normalize-space(../spdoinfo/direct)='VECTOR'">
835
							<xsl:text>vector</xsl:text>
836
						</xsl:when>
837
						<xsl:when test="normalize-space(../spdoinfo/direct)='Point' or
838
							normalize-space(../spdoinfo/direct)='POINT'">
839
							<xsl:text>vector</xsl:text>
840
						</xsl:when>
841
						<xsl:when test="normalize-space(../spdoinfo/direct)='Raster' or
842
							normalize-space(../spdoinfo/direct)='RASTER'">
843
							<xsl:text>grid</xsl:text>
844
						</xsl:when>
845
						<xsl:otherwise>
846
							<!--si el valor no es uno de los aconsejados, se traslada tal cual-->
847
							<xsl:value-of select="normalize-space(../spdoinfo/direct)"/>
848
						</xsl:otherwise>
849
					</xsl:choose>
850
				</xsl:element>
851
			</xsl:if>
852
			<!-- SPATIAL RESOLUTION-->
853
			<!-- esto concuerda con el fgdc version IAAA(nuestro) -->
854
			<!-- spdom/scale es (0..1) y SpatialResolution:MD_Resolution es (0..n)-->
855
			<xsl:if test="spdom/scale">
856
				<xsl:element name="spatialResolution">
857
					<xsl:element name="equivalentScale">
858
						<xsl:element name="MD_RepresentativeFraction">
859
							<xsl:element name="denominator">
860
								<xsl:value-of select="./spdom/scale"/>
861
							</xsl:element>
862
						</xsl:element>
863
					</xsl:element>
864
				</xsl:element>
865
			</xsl:if>
866
			<!-- LANGUAGE-->
867
			<xsl:choose>
868
				<xsl:when test="/metadata/idinfo[idlang]">
869
					<xsl:for-each select="./idlang">
870
						<xsl:element name="language">
871
							<!-- Por el momento supongo que el elemento sera un isoCode-->
872
							<!--xsl:element name="isoCode"-->
873
							<xsl:value-of select="./idlangkey"/>
874
							<!--/xsl:element-->
875
						</xsl:element>
876
					</xsl:for-each>
877
				</xsl:when>
878
				<xsl:otherwise>
879
					<!-- si no hay ninguna etiqueta idlang en el fich original,-->
880
					<!-- se crea un elemento isoCode en ingles pq es obligatoria-->
881
					<xsl:element name="language">
882
						<!--xsl:element name="isoCode"-->
883
						<xsl:text>eng</xsl:text>
884
						<!--/xsl:element-->
885
					</xsl:element>
886
				</xsl:otherwise>
887
			</xsl:choose>
888
			<!-- TOPIC CATEGORY-->
889
			<!-- En FGDC IAAA topicCategory equivale a tpCat, dentro de keywords-->
890
			<!-- quiza esta palabra haya que separarla -->
891
			<xsl:element name="topicCategory">
892
				<xsl:value-of select="./keywords/tpCat"/>
893
			</xsl:element>
894
			<!-- 	ENVIROMENT DESCRIPTION-->
895
			<!-- native y EnvironmentDescription son (0..1) -->
896
			<xsl:if test="native">
897
				<xsl:element name="environmentDescription">
898
					<xsl:value-of select="./native"/>
899
				</xsl:element>
900
			</xsl:if>
901
			<!--EXTENT -->
902
			<!-- ojo esto concuerda con el fgdc version IAAA(nuestro)-->
903
			<!-- spdom/bounding es (0..1) y dataidinfo/geobox es (0..n)-->
904
			<!-- aqui se mapea timeperd con Extent: EX_Extent-->
905
			<xsl:if test="./timeperd/timeinfo/sngdate/caldate!='' or ./timeperd/timeinfo/rngdates/begdate!='' or ./spdom/bounding/westbc!=''">
906
				<xsl:if test="./timeperd/timeinfo/sngdate/caldate!='' or ./timeperd/timeinfo/rngdates/begdate!=''">
907
					<xsl:element name="extent">
908
						<xsl:element name="EX_Extent">
909
							<!-- description es obligatorio-->
910
							<xsl:element name="description"/>
911
							<xsl:element name="temporalElement">
912
								<xsl:element name="EX_TemporalExtent">
913
									<xsl:element name="extent">
914
										<!--ESTO NO LO HE REVISADO -->
915
										<xsl:if test="./timeperd/timeinfo/sngdate/caldate!=''">
916
											<xsl:element name="instant">
917
												<xsl:value-of select="./timeperd/timeinfo/sngdate/caldate"/>
918
											</xsl:element>
919
										</xsl:if>
920
										<xsl:if test="./timeperd/timeinfo/rngdates">
921
											<xsl:element name="beginEnd">
922
												<xsl:element name="begin">
923
													<xsl:value-of select="./timeperd/timeinfo/rngdates/begdate"/>
924
												</xsl:element>
925
												<xsl:element name="end">
926
													<xsl:value-of select="./timeperd/timeinfo/rngdates/enddate"/>
927
												</xsl:element>
928
											</xsl:element>
929
										</xsl:if>
930
									</xsl:element>
931
								</xsl:element>
932
							</xsl:element>
933
						</xsl:element>
934
					</xsl:element>
935
				</xsl:if>
936
				<!--xsl:if test="spdom/bounding"-->
937
				<xsl:if test="./spdom/bounding/westbc!=''">
938
					<xsl:element name="extent">
939
						<xsl:element name="EX_Extent">
940
							<xsl:element name="geographicElement">
941
								<xsl:element name="EX_GeographicBoundingBox">
942
									<!--xsl:element name="_EX_GeographicExtent"-->
943
									<!--xsl:attribute name="xsi:type">EX_GeographicBoundingBox</xsl:attribute-->
944
									<xsl:element name="westBoundLongitude">
945
										<xsl:value-of select="./spdom/bounding/westbc"/>
946
									</xsl:element>
947
									<xsl:element name="eastBoundLongitude">
948
										<xsl:value-of select="./spdom/bounding/eastbc"/>
949
									</xsl:element>
950
									<xsl:element name="southBoundLatitude">
951
										<xsl:value-of select="./spdom/bounding/southbc"/>
952
									</xsl:element>
953
									<xsl:element name="northBoundLatitude">
954
										<xsl:value-of select="./spdom/bounding/northbc"/>
955
									</xsl:element>
956
								</xsl:element>
957
							</xsl:element>
958
						</xsl:element>
959
					</xsl:element>
960
				</xsl:if>
961
			</xsl:if>
962
			<!--ENVIROMENTAL DESCRIPTION -->
963
			<!-- supplinf y SupplementalInformation son (0..1) -->
964
			<xsl:if test="descript/supplinf">
965
				<xsl:element name="supplementalInformation">
966
					<xsl:value-of select="./descript/supplinf"/>
967
				</xsl:element>
968
			</xsl:if>
969
		</xsl:element>
970
	</xsl:template>
971
	<!--A?adimos doda la paster de raster y objetos vectoriales que no se transladaba antes a ISO-->
972
	<xsl:template match="spdoinfo">
973
		<xsl:if test="ptvctinf/vpfterm">
974
			<xsl:element name="spatialRepresentationInfo">
975
				<xsl:element name="MD_VectorSpatialRepresentation">
976
					<xsl:element name="topologyLevel">
977
						<xsl:value-of select="./ptvctinf/vpfterm/vpflevel"/>
978
					</xsl:element>
979
					<xsl:for-each select="./ptvctinf/vpfterm/vpfinfo">
980
						<xsl:element name="geometricObjects">
981
							<xsl:element name="MD_GeometricObjects">
982
								<xsl:element name="geometricObjectType">
983
									<xsl:value-of select="./vpftype"/>
984
								</xsl:element>
985
								<xsl:element name="geometricObjectCount">
986
									<xsl:value-of select="./ptvctcnt"/>
987
								</xsl:element>
988
							</xsl:element>
989
						</xsl:element>
990
					</xsl:for-each>
991
				</xsl:element>
992
			</xsl:element>
993
		</xsl:if>
994
		<xsl:if test="rastinfo">
995
			<xsl:element name="spatialRepresentationInfo">
996
				<xsl:element name="MD_GridSpatialRepresentation">
997
					<xsl:element name="MD_Dimension">
998
						<xsl:element name="dimensionName">
999
							<xsl:text>row</xsl:text>
1000
						</xsl:element>
1001
						<xsl:element name="dimensionSize">
1002
							<xsl:value-of select="./rastinfo/rowcount"/>
1003
						</xsl:element>
1004
					</xsl:element>
1005
					<xsl:element name="MD_Dimension">
1006
						<xsl:element name="dimensionName">
1007
							<xsl:text>column</xsl:text>
1008
						</xsl:element>
1009
						<xsl:element name="dimensionSize">
1010
							<xsl:value-of select="./rastinfo/colcount"/>
1011
						</xsl:element>
1012
					</xsl:element>
1013
					<xsl:element name="MD_Dimension">
1014
						<xsl:element name="dimensionName">
1015
							<xsl:text>vertical</xsl:text>
1016
						</xsl:element>
1017
						<xsl:element name="dimensionSize">
1018
							<xsl:value-of select="./rastinfo/vrtcount"/>
1019
						</xsl:element>
1020
					</xsl:element>
1021
					<xsl:element name="cellGeometry">
1022
						<xsl:value-of select="./rastinfo/rasttype"/>
1023
					</xsl:element>
1024
				</xsl:element>
1025
			</xsl:element>
1026
		</xsl:if>
1027
	</xsl:template>
1028
	<xsl:template match="place | theme | stratum | temporal">
1029
		<xsl:element name="descriptiveKeywords">
1030
			<xsl:element name="MD_Keywords">
1031
				<xsl:for-each select="./placekey | ./themekey |./stratkey | ./tempkey">
1032
					<xsl:element name="keyword">
1033
						<xsl:value-of select="."/>
1034
					</xsl:element>
1035
				</xsl:for-each>
1036
				<xsl:element name="type">
1037
					<xsl:if test="name(.) = 'place'">
1038
						<xsl:text>place</xsl:text>
1039
					</xsl:if>
1040
					<xsl:if test="name(.) = 'theme'">
1041
						<xsl:text>theme</xsl:text>
1042
					</xsl:if>
1043
					<xsl:if test="name(.) = 'stratum'">
1044
						<xsl:text>stratum</xsl:text>
1045
					</xsl:if>
1046
					<xsl:if test="name(.) = 'temporal'">
1047
						<xsl:text>temporal</xsl:text>
1048
					</xsl:if>
1049
				</xsl:element>
1050
				<xsl:element name="thesaurusName">
1051
					<xsl:element name="CI_Citation">
1052
						<xsl:element name="title">
1053
							<xsl:value-of select="./placekt|./themekt|./stratkt|./tempkt"/>
1054
						</xsl:element>
1055
						<!--Date:CI_Date es obligatorio y no se con que mapearlo-->
1056
						<xsl:element name="date">
1057
							<xsl:element name="CI_Date">
1058
								<xsl:element name="date">0001-01-01</xsl:element>
1059
								<xsl:element name="dateType">
1060
									<xsl:text>publication</xsl:text>
1061
								</xsl:element>
1062
							</xsl:element>
1063
						</xsl:element>
1064
					</xsl:element>
1065
				</xsl:element>
1066
			</xsl:element>
1067
		</xsl:element>
1068
	</xsl:template>
1069
	<!-- Plantilla que se usa solomente para mapear dataidinfo/Citation-->
1070
	<xsl:template match="citation/citeinfo | identAuth/citeinfo">
1071
		<xsl:element name="CI_Citation">
1072
			<!--  TITLE -->
1073
			<xsl:element name="title">
1074
				<xsl:value-of select="title"/>
1075
			</xsl:element>
1076
			<!-- ALTERNATETITLE no tiene equivalente en FGDC -->
1077
			<!-- DATE -->
1078
			<!--Aqui surgen problemas cuando el valor de date no esta, es decir, tenemos algo como </pubdate> -->
1079
			<!-- Por tanto, y aunque la solucion no parezca buena, comprobare que es distinto de vacio y si lo es,  -->
1080
			<!-- le pondre una fecha invalida -->
1081
			<xsl:element name="date">
1082
				<xsl:element name="CI_Date">
1083
					<xsl:element name="date">
1084
						<xsl:choose>
1085
							<xsl:when test="./pubdate!=''">
1086
								<xsl:value-of select="pubdate"/>
1087
							</xsl:when>
1088
							<xsl:otherwise>0001-01-01</xsl:otherwise>
1089
						</xsl:choose>
1090
					</xsl:element>
1091
					<xsl:element name="dateType">
1092
						<xsl:text>publication</xsl:text>
1093
					</xsl:element>
1094
				</xsl:element>
1095
			</xsl:element>
1096
			<!-- EDITION -->
1097
			<xsl:if test="edition">
1098
				<xsl:element name="edition">
1099
					<xsl:value-of select="./edition"/>
1100
				</xsl:element>
1101
			</xsl:if>
1102
			<!-- EDITIONDATE no tiene equivalente en FGDC -->
1103
			<!-- IDENTIFIER -->
1104
			<xsl:if test="citId">
1105
				<xsl:element name="identifier">
1106
					<xsl:element name="MD_Identifier">
1107
						<xsl:element name="code">
1108
							<xsl:value-of select="./citId"/>
1109
						</xsl:element>
1110
					</xsl:element>
1111
				</xsl:element>
1112
			</xsl:if>
1113
			<!-- CITEDRESPONSIBLEPARTY -->
1114
			<xsl:for-each select="origin">
1115
				<xsl:if test="normalize-space(.)!=''">
1116
					<xsl:element name="citedResponsibleParty">
1117
						<xsl:element name="CI_ResponsibleParty">
1118
							<xsl:element name="organisationName">
1119
								<xsl:value-of select="."/>
1120
							</xsl:element>
1121
							<xsl:if test="/metadata/idinfo/citation/citeinfo[onlink]">
1122
								<xsl:element name="contactInfo">
1123
									<xsl:element name="CI_Contact">
1124
										<xsl:element name="onlineResource">
1125
											<xsl:element name="CI_OnlineResource">
1126
												<xsl:element name="linkage">
1127
													<xsl:value-of select="../onlink"/>
1128
												</xsl:element>
1129
											</xsl:element>
1130
										</xsl:element>
1131
									</xsl:element>
1132
								</xsl:element>
1133
							</xsl:if>
1134
							<xsl:element name="role">
1135
								<xsl:text>originator</xsl:text>
1136
							</xsl:element>
1137
						</xsl:element>
1138
					</xsl:element>
1139
				</xsl:if>
1140
			</xsl:for-each>
1141
			<xsl:if test="/metadata/idinfo/citation/citeinfo[pubinfo]">
1142
				<xsl:element name="citedResponsibleParty">
1143
					<xsl:element name="CI_ResponsibleParty">
1144
						<xsl:element name="organisationName">
1145
							<xsl:value-of select="./pubinfo/publish"/>
1146
						</xsl:element>
1147
						<xsl:element name="contactInfo">
1148
							<xsl:element name="CI_Contact">
1149
								<xsl:element name="address">
1150
									<xsl:element name="CI_Address">
1151
										<xsl:element name="city">
1152
											<xsl:value-of select="./pubinfo/pubplace"/>
1153
										</xsl:element>
1154
									</xsl:element>
1155
								</xsl:element>
1156
							</xsl:element>
1157
						</xsl:element>
1158
						<xsl:element name="role">
1159
							<xsl:text>publisher</xsl:text>
1160
						</xsl:element>
1161
					</xsl:element>
1162
				</xsl:element>
1163
			</xsl:if>
1164
			<!-- PRESENTATIONFORM -->
1165
			<xsl:if test="geoform">
1166
				<xsl:element name="presentationForm">
1167
					<xsl:value-of select="./geoform"/>
1168
				</xsl:element>
1169
			</xsl:if>
1170
			<!-- SERIES -->
1171
			<xsl:if test="serinfo">
1172
				<xsl:element name="series">
1173
					<xsl:element name="CI_Series">
1174
						<!-- los dos elementos de Series: CI_Series son opcionales -->
1175
						<!-- pero son obligatorios sus correspondientes en serinfo -->
1176
						<xsl:element name="name">
1177
							<xsl:value-of select="./serinfo/sername"/>
1178
						</xsl:element>
1179
						<xsl:element name="issueIdentification">
1180
							<xsl:value-of select="./serinfo/issue"/>
1181
						</xsl:element>
1182
					</xsl:element>
1183
				</xsl:element>
1184
			</xsl:if>
1185
			<!-- OTHERCITATIONDETAILS-->
1186
			<xsl:if test="othercit">
1187
				<xsl:element name="otherCitationDetails">
1188
					<xsl:value-of select="./othercit"/>
1189
				</xsl:element>
1190
			</xsl:if>
1191
			<!-- ISBN -->
1192
			<xsl:if test="isbn">
1193
				<xsl:element name="ISBN">
1194
					<xsl:value-of select="./isbn"/>
1195
				</xsl:element>
1196
			</xsl:if>
1197
			<!-- ISSN -->
1198
			<xsl:if test="issn">
1199
				<xsl:element name="ISSN">
1200
					<xsl:value-of select="./issn"/>
1201
				</xsl:element>
1202
			</xsl:if>
1203
		</xsl:element>
1204
		<!-- acaba CI_Citation -->
1205
	</xsl:template>
1206
	<!-- Plantilla que se usa solomente para mapear srccite/citeinfo-->
1207
	<!-- Necesidad de duplicar la plantilla, ya que este elemento, es igual que todos los citation pero, poniendo en alternate title un elemento extra?o,
1208
	es decir, que esta en una ruta independiente -->
1209
	<xsl:template match="srccite/citeinfo">
1210
		<xsl:element name="CI_Citation">
1211
			<!--  TITLE -->
1212
			<xsl:element name="title">
1213
				<xsl:value-of select="title"/>
1214
			</xsl:element>
1215
			<xsl:element name="alternateTitle">
1216
				<xsl:value-of select="../../srccitea"/>
1217
			</xsl:element>
1218
			<!-- DATE -->
1219
			<xsl:element name="date">
1220
				<xsl:element name="CI_Date">
1221
					<xsl:element name="date">
1222
						<xsl:choose>
1223
							<xsl:when test="./pubdate!=''">
1224
								<xsl:value-of select="pubdate"/>
1225
							</xsl:when>
1226
							<xsl:otherwise>0001-01-01</xsl:otherwise>
1227
						</xsl:choose>
1228
					</xsl:element>
1229
					<xsl:element name="dateType">
1230
						<xsl:text>publication</xsl:text>
1231
					</xsl:element>
1232
				</xsl:element>
1233
			</xsl:element>
1234
			<!-- EDITION -->
1235
			<xsl:if test="edition">
1236
				<xsl:element name="edition">
1237
					<xsl:value-of select="./edition"/>
1238
				</xsl:element>
1239
			</xsl:if>
1240
			<!-- EDITIONDATE no tiene equivalente en FGDC -->
1241
			<!-- IDENTIFIER -->
1242
			<xsl:if test="citId">
1243
				<xsl:element name="identifier">
1244
					<xsl:element name="MD_Identifier">
1245
						<xsl:element name="code">
1246
							<xsl:value-of select="./citId"/>
1247
						</xsl:element>
1248
					</xsl:element>
1249
				</xsl:element>
1250
			</xsl:if>
1251
			<!-- CITEDRESPONSIBLEPARTY -->
1252
			<xsl:for-each select="origin">
1253
				<xsl:element name="citedResponsibleParty">
1254
					<xsl:element name="CI_ResponsibleParty">
1255
						<xsl:element name="organisationName">
1256
							<xsl:value-of select="."/>
1257
						</xsl:element>
1258
						<xsl:if test="/metadata/idinfo/citation/citeinfo[onlink]">
1259
							<xsl:element name="contactInfo">
1260
								<xsl:element name="CI_Contact">
1261
									<xsl:element name="onlineResource">
1262
										<xsl:element name="CI_OnlineResource">
1263
											<xsl:element name="linkage">
1264
												<xsl:value-of select="../onlink"/>
1265
											</xsl:element>
1266
										</xsl:element>
1267
									</xsl:element>
1268
								</xsl:element>
1269
							</xsl:element>
1270
						</xsl:if>
1271
						<xsl:element name="role">
1272
							<xsl:text>originator</xsl:text>
1273
						</xsl:element>
1274
					</xsl:element>
1275
				</xsl:element>
1276
			</xsl:for-each>
1277
			<xsl:if test="/metadata/idinfo/citation/citeinfo[pubinfo]">
1278
				<xsl:element name="citedResponsibleParty">
1279
					<xsl:element name="CI_ResponsibleParty">
1280
						<xsl:element name="organisationName">
1281
							<xsl:value-of select="./pubinfo/publish"/>
1282
						</xsl:element>
1283
						<xsl:element name="contactInfo">
1284
							<xsl:element name="CI_Contact">
1285
								<xsl:element name="address">
1286
									<xsl:element name="CI_Address">
1287
										<xsl:element name="city">
1288
											<xsl:value-of select="./pubinfo/pubplace"/>
1289
										</xsl:element>
1290
									</xsl:element>
1291
								</xsl:element>
1292
							</xsl:element>
1293
						</xsl:element>
1294
						<xsl:element name="role">
1295
							<xsl:text>publisher</xsl:text>
1296
						</xsl:element>
1297
					</xsl:element>
1298
				</xsl:element>
1299
			</xsl:if>
1300
			<!-- PRESENTATIONFORM -->
1301
			<xsl:if test="geoform">
1302
				<xsl:element name="presentationForm">
1303
					<xsl:value-of select="./geoform"/>
1304
				</xsl:element>
1305
			</xsl:if>
1306
			<!-- SERIES -->
1307
			<xsl:if test="serinfo">
1308
				<xsl:element name="series">
1309
					<xsl:element name="CI_Series">
1310
						<!-- los dos elementos de Series: CI_Series son opcionales -->
1311
						<!-- pero son obligatorios sus correspondientes en serinfo -->
1312
						<xsl:element name="name">
1313
							<xsl:value-of select="./serinfo/sername"/>
1314
						</xsl:element>
1315
						<xsl:element name="issueIdentification">
1316
							<xsl:value-of select="./serinfo/issue"/>
1317
						</xsl:element>
1318
					</xsl:element>
1319
				</xsl:element>
1320
			</xsl:if>
1321
			<!-- OTHERCITATIONDETAILS-->
1322
			<xsl:if test="othercit">
1323
				<xsl:element name="otherCitationDetails">
1324
					<xsl:value-of select="./othercit"/>
1325
				</xsl:element>
1326
			</xsl:if>
1327
			<!-- ISBN -->
1328
			<xsl:if test="isbn">
1329
				<xsl:element name="ISBN">
1330
					<xsl:value-of select="./isbn"/>
1331
				</xsl:element>
1332
			</xsl:if>
1333
			<!-- ISSN -->
1334
			<xsl:if test="issn">
1335
				<xsl:element name="ISSN">
1336
					<xsl:value-of select="./issn"/>
1337
				</xsl:element>
1338
			</xsl:if>
1339
		</xsl:element>
1340
		<!-- acaba citation -->
1341
	</xsl:template>
1342
	<xsl:template match="cntinfo">
1343
		<xsl:element name="CI_ResponsibleParty">
1344
			<!-- Esta plantilla se utiliza para mapear Contact, IdentificationInfo: MD_Identification/idPoc y Distributor:MD_Distributor/DistributorContact -->
1345
			<xsl:choose>
1346
				<xsl:when test="cntorgp">
1347
					<xsl:if test="cntorgp/cntper">
1348
						<xsl:element name="individualName">
1349
							<xsl:value-of select="./cntorgp/cntper"/>
1350
						</xsl:element>
1351
					</xsl:if>
1352
					<xsl:element name="organisationName">
1353
						<xsl:value-of select="./cntorgp/cntorg"/>
1354
					</xsl:element>
1355
				</xsl:when>
1356
				<xsl:when test="cntperp">
1357
					<xsl:element name="individualName">
1358
						<xsl:value-of select="./cntperp/cntper"/>
1359
					</xsl:element>
1360
					<xsl:if test="cntperp/cntorg">
1361
						<xsl:element name="organisationName">
1362
							<xsl:value-of select="./cntperp/cntorg"/>
1363
						</xsl:element>
1364
					</xsl:if>
1365
				</xsl:when>
1366
			</xsl:choose>
1367
			<xsl:if test="cntpos">
1368
				<xsl:element name="positionName">
1369
					<xsl:value-of select="./cntpos"/>
1370
				</xsl:element>
1371
			</xsl:if>
1372
			<xsl:element name="contactInfo">
1373
				<xsl:element name="CI_Contact">
1374
					<xsl:element name="phone">
1375
						<xsl:element name="CI_Telephone">
1376
							<xsl:for-each select="cntvoice">
1377
								<xsl:element name="voice">
1378
									<xsl:value-of select="."/>
1379
								</xsl:element>
1380
							</xsl:for-each>
1381
							<xsl:for-each select="cntfax">
1382
								<xsl:element name="facsimile">
1383
									<xsl:value-of select="."/>
1384
								</xsl:element>
1385
							</xsl:for-each>
1386
						</xsl:element>
1387
					</xsl:element>
1388
					<!-- cntAdress (ISO) es opcional (0..1) y cntaddr (FGDC) es obligatorio (1..n) -->
1389
					<!-- por lo que se traslada siempre pero unicamente con el valor del primer cntaddr-->
1390
					<!-- si es que hay mas de uno-->
1391
					<xsl:element name="address">
1392
						<xsl:element name="CI_Address">
1393
							<!-- address es (0..n) y DeliveryPoint es (0..n) -->
1394
							<xsl:for-each select="cntaddr/address">
1395
								<xsl:element name="deliveryPoint">
1396
									<xsl:value-of select="."/>
1397
								</xsl:element>
1398
							</xsl:for-each>
1399
							<xsl:element name="city">
1400
								<xsl:value-of select="cntaddr/City"/>
1401
							</xsl:element>
1402
							<xsl:element name="administrativeArea">
1403
								<xsl:value-of select="cntaddr/state"/>
1404
							</xsl:element>
1405
							<xsl:element name="postalCode">
1406
								<xsl:value-of select="cntaddr/postal"/>
1407
							</xsl:element>
1408
							<!-- cntaddr/Country y Address:CI_Address/Country son (0..1)-->
1409
							<xsl:if test="cntaddr/Country">
1410
								<xsl:element name="country">
1411
									<xsl:value-of select="./cntaddr/Country"/>
1412
								</xsl:element>
1413
							</xsl:if>
1414
							<!-- ambos son (0..n) -->
1415
							<xsl:for-each select="cntemail">
1416
								<xsl:element name="electronicMailAddress">
1417
									<xsl:value-of select="."/>
1418
								</xsl:element>
1419
							</xsl:for-each>
1420
						</xsl:element>
1421
					</xsl:element>
1422
					<!-- solo tiene sentido trasladar OnLineResource:CI_OnLineResource -->
1423
					<!-- al mapear Citation, lo que se hace en una plantilla-->
1424
					<!-- (citeinfo) en la que no se utiliza esta plantilla-->
1425
					<!--ambos elementos son (0..1) -->
1426
					<xsl:if test="hours">
1427
						<xsl:element name="hoursOfService">
1428
							<xsl:value-of select="./hours"/>
1429
						</xsl:element>
1430
					</xsl:if>
1431
					<!--ambos elementos son (0..1) -->
1432
					<xsl:if test="cntinst">
1433
						<xsl:element name="contactInstructions">
1434
							<xsl:value-of select="./cntinst"/>
1435
						</xsl:element>
1436
					</xsl:if>
1437
				</xsl:element>
1438
			</xsl:element>
1439
			<!-- Tanto Contact/PositionName como cntinfo/cntpos son opcionales (0..1) -->
1440
			<xsl:element name="role">
1441
				<xsl:if test="name(..) = 'metc'">
1442
					<xsl:text>publisher</xsl:text>
1443
				</xsl:if>
1444
				<xsl:if test="name(..) ='ptcontac'">
1445
					<xsl:text>pointOfContact</xsl:text>
1446
				</xsl:if>
1447
				<xsl:if test="name(..) ='distrib'">
1448
					<xsl:text>Distributor</xsl:text>
1449
				</xsl:if>
1450
			</xsl:element>
1451
		</xsl:element>
1452
	</xsl:template>
1453
	<xsl:template match="availabl/timeinfo">
1454
		<xsl:choose>
1455
			<xsl:when test="sngdate">
1456
				<xsl:if test="./sngdate/caldate">
1457
					<xsl:value-of select="normalize-space(./sngdate/caldate)"/>
1458
				</xsl:if>
1459
				<xsl:if test="./sngdate/time!=''">
1460
					<xsl:text> </xsl:text>
1461
					<xsl:value-of select="normalize-space(./sngdate/time)"/>
1462
				</xsl:if>
1463
			</xsl:when>
1464
			<xsl:when test="mdattim">
1465
				<xsl:for-each select="./mdattim/sngdate">
1466
					<xsl:value-of select="normalize-space(./caldate)"/>
1467
					<xsl:text> </xsl:text>
1468
					<xsl:value-of select="normalize-space(./time)"/>
1469
					<xsl:if test="not (position()=last())">
1470
						<xsl:text>, </xsl:text>
1471
					</xsl:if>
1472
				</xsl:for-each>
1473
			</xsl:when>
1474
			<xsl:when test="rngdates">
1475
				<xsl:if test="./rngdates/begdate">
1476
					<xsl:value-of select="normalize-space(./rngdates/begdate)"/>
1477
				</xsl:if>
1478
				<xsl:if test="./rngdates/begtime">
1479
					<xsl:value-of select="normalize-space(./rngdates/begtime)"/>
1480
				</xsl:if>
1481
				<xsl:text> - </xsl:text>
1482
				<xsl:if test="./rngdates/enddate">
1483
					<xsl:value-of select="normalize-space(./rngdates/enddate)"/>
1484
				</xsl:if>
1485
				<xsl:if test="./rngdates/endtime">
1486
					<xsl:value-of select="normalize-space(./rngdates/endtime)"/>
1487
				</xsl:if>
1488
			</xsl:when>
1489
		</xsl:choose>
1490
	</xsl:template>
1491
	<xsl:template match="progress">
1492
		<!-- En  el estandar fgdc el elemento progress contiene PCDATA (sin atributos), pero existen unos valores  -->
1493
		<!-- aconsejados (Completed, In work y Planned), que se corresponden con 3 de los posibles atributos de status-->
1494
		<!-- (completed, onGoing y planned, respectivamente)-->
1495
		<!-- Con el nombre de este elemento ocurren algunas cosas raras: el las tablas del manual aparece como "Status"-->
1496
		<!-- mientras que en el dtd aparece como status-->
1497
		<xsl:element name="status">
1498
			<xsl:choose>
1499
				<xsl:when test="normalize-space(.)='Completed'">
1500
					<xsl:text>completed</xsl:text>
1501
				</xsl:when>
1502
				<xsl:when test="normalize-space(.)='In work'">
1503
					<xsl:text>onGoing</xsl:text>
1504
				</xsl:when>
1505
				<xsl:when test="normalize-space(.)='Planned'">
1506
					<xsl:text>planned</xsl:text>
1507
				</xsl:when>
1508
				<xsl:otherwise>
1509
					<!-- si el valor no es de los aconsejados, se traslada tal cual -->
1510
					<xsl:value-of select="."/>
1511
				</xsl:otherwise>
1512
			</xsl:choose>
1513
		</xsl:element>
1514
	</xsl:template>
1515
	<xsl:template match="update">
1516
		<xsl:element name="resourceMaintenance">
1517
			<xsl:element name="MD_MaintenanceInformation">
1518
				<!-- En  el estandar fgdc el elemento update contiene PCDATA (sin atributos), pero existen unos valores  -->
1519
				<!-- aconsejados (Continually,Daily,Weekly,Monthly,Annually,Unknown,As needed,Irregular,None planned),-->
1520
				<!-- que se corresponden con 9 de los posibles atributos de mainFreq-->
1521
				<xsl:element name="maintenanceAndUpdateFrequency">
1522
					<xsl:choose>
1523
						<xsl:when test="normalize-space(.)='Continually'">
1524
							<xsl:text>continual</xsl:text>
1525
						</xsl:when>
1526
						<xsl:when test="normalize-space(.)='Daily'">
1527
							<xsl:text>daily</xsl:text>
1528
						</xsl:when>
1529
						<xsl:when test="normalize-space(.)='Weekly'">
1530
							<xsl:text>weekly</xsl:text>
1531
						</xsl:when>
1532
						<xsl:when test="normalize-space(.)='Monthly'">
1533
							<xsl:text>monthly</xsl:text>
1534
						</xsl:when>
1535
						<xsl:when test="normalize-space(.)='Annually'">
1536
							<xsl:text>annually</xsl:text>
1537
						</xsl:when>
1538
						<xsl:when test="normalize-space(.)='Unknown'">
1539
							<xsl:text>unknown</xsl:text>
1540
						</xsl:when>
1541
						<xsl:when test="normalize-space(.)='As needed'">
1542
							<xsl:text>asNeeded</xsl:text>
1543
						</xsl:when>
1544
						<xsl:when test="normalize-space(.)='Irregular'">
1545
							<xsl:text>irregular</xsl:text>
1546
						</xsl:when>
1547
						<xsl:when test="normalize-space(.)='None planned'">
1548
							<xsl:text>notPlanned</xsl:text>
1549
						</xsl:when>
1550
						<xsl:otherwise>
1551
							<!-- si el valor no es uno de los anteriores, se traslada tal cual -->
1552
							<xsl:value-of select="."/>
1553
						</xsl:otherwise>
1554
					</xsl:choose>
1555
				</xsl:element>
1556
				<!-- metainfo/metfrd se mapea con MetadataMaintenance:MaintenanceInformation/DateOfNextUpdate -->
1557
			</xsl:element>
1558
		</xsl:element>
1559
	</xsl:template>
1560
	<xsl:template match="metfrd">
1561
		<xsl:element name="metadataMaintenance">
1562
			<xsl:element name="MD_MaintenanceInformation">
1563
				<!-- El elemento MaintenanceAndUpdateFrequency es obligatorio pero se supone-->
1564
				<!-- que en MetadataMaintenance:MaintenanceInformation se mapea DateOfNextUpdate, y en IdentificationInfo: MD_Identification/ResourceMaintenance:MD_MaintenanceInformation-->
1565
				<!-- solo se mapea MaintenanceAndUpdateFrequency  -->
1566
				<xsl:element name="maintenanceAndUpdateFrequency">
1567
					<xsl:text>unknown</xsl:text>
1568
				</xsl:element>
1569
				<xsl:element name="dateOfNextUpdate">
1570
					<xsl:value-of select="."/>
1571
				</xsl:element>
1572
			</xsl:element>
1573
		</xsl:element>
1574
	</xsl:template>
1575
	<!--xsl:template match="idinfo/accconst | idinfo/useconst | idinfo/secinfo"-->
1576
	<!-- se crea un ResourceConstraints:MD_constraints para los dos elementos(accconst y useconst), y no uno para cada uno-->
1577
	<!--xsl:if test="name(.)='accconst' or name(.)='useconst'">
1578
			<xsl:element name="MD_LegalConstraints">
1579
				<xsl:if test="name(.)='accconst'">
1580
					<xsl:element name="accessConstraints">
1581
							<xsl:value-of select="."/>
1582
					</xsl:element>
1583
				</xsl:if>
1584
				<xsl:if test="name(.)='useconst'">
1585
					<xsl:element name="useConstraints">
1586
							<xsl:value-of select="."/>
1587
					</xsl:element>
1588
				</xsl:if-->
1589
	<!--xsl:element name="otherConstraints">
1590
		      			<xsl:value-of select="./othconst"/>
1591
				</xsl:element-->
1592
	<!--/xsl:element>
1593
				</xsl:if>
1594
1595
				<xsl:if test="name(.)='secinfo' ">
1596
					<xsl:element name="MD_SecurityConstraints">
1597
						<xsl:element name="classification">
1598
							<xsl:value-of select="./secclass"/>
1599
						</xsl:element>
1600
						<xsl:element name="classificationSystem">
1601
								<xsl:value-of select="./secsys"/>
1602
						</xsl:element>
1603
						<xsl:element name="handlingDescription">
1604
							<xsl:value-of select="./sechandl"/>
1605
						</xsl:element>
1606
					</xsl:element>
1607
				</xsl:if>
1608
1609
	</xsl:template-->
1610
	<xsl:template match="refSysId  | projection | ellipsoid | datum | refSystem | mdGeoRefSys | mdTempRefSys">
1611
		<xsl:element name="RS_Identifier">
1612
			<xsl:if test="./identAuth/citeinfo">
1613
				<xsl:element name="authority">
1614
					<xsl:apply-templates select="./identAuth/citeinfo"/>
1615
				</xsl:element>
1616
			</xsl:if>
1617
			<xsl:element name="code">
1618
				<xsl:value-of select="./identCode"/>
1619
			</xsl:element>
1620
		</xsl:element>
1621
	</xsl:template>
1622
	<xsl:template match="refSysInfo">
1623
		<xsl:for-each select="./refSystem">
1624
			<xsl:element name="MD_ReferenceSystem">
1625
				<xsl:element name="referenceSystemIdentifier">
1626
					<xsl:apply-templates select="./refSysId"/>
1627
				</xsl:element>
1628
			</xsl:element>
1629
		</xsl:for-each>
1630
		<!-- Elementos desaparecidos... -->
1631
		<xsl:for-each select="./mdGeoRefSys">
1632
			<xsl:element name="MD_ReferenceSystem">
1633
				<xsl:element name="referenceSystemIdentifier">
1634
					<xsl:apply-templates select="./refSysId"/>
1635
				</xsl:element>
1636
			</xsl:element>
1637
		</xsl:for-each>
1638
		<xsl:for-each select="./mdTempRefSys">
1639
			<xsl:element name="MD_ReferenceSystem">
1640
				<xsl:element name="referenceSystemIdentifier">
1641
					<xsl:apply-templates select="./refSysId"/>
1642
				</xsl:element>
1643
			</xsl:element>
1644
		</xsl:for-each>
1645
		<xsl:for-each select="./mdCoRefSys">
1646
			<xsl:element name="MD_CRS">
1647
				<xsl:if test="./refSysId">
1648
					<xsl:element name="referenceSystemIdentifier">
1649
						<xsl:apply-templates select="./refSysId"/>
1650
					</xsl:element>
1651
				</xsl:if>
1652
				<xsl:if test="./projection">
1653
					<xsl:element name="projection">
1654
						<xsl:apply-templates select="./projection"/>
1655
					</xsl:element>
1656
				</xsl:if>
1657
				<xsl:if test="./ellipsoid">
1658
					<xsl:element name="ellipsoid">
1659
						<xsl:apply-templates select="./ellipsoid"/>
1660
					</xsl:element>
1661
				</xsl:if>
1662
				<xsl:if test="./datum">
1663
					<xsl:element name="datum">
1664
						<xsl:apply-templates select="./datum"/>
1665
					</xsl:element>
1666
				</xsl:if>
1667
				<xsl:if test="./projParas">
1668
					<!-- COMPLETAR -->
1669
					<xsl:element name="projectionParameters">
1670
						<xsl:element name="MD_ProjectionParameters">
1671
							<xsl:if test="./projParas/zone">
1672
								<xsl:element name="zone">
1673
									<xsl:value-of select="./projParas/zone"/>
1674
								</xsl:element>
1675
							</xsl:if>
1676
							<xsl:for-each select="./projParas/stanPara">
1677
								<xsl:element name="standardParallel">
1678
									<xsl:value-of select="."/>
1679
								</xsl:element>
1680
							</xsl:for-each>
1681
							<xsl:if test="./projParas/longCntMer">
1682
								<xsl:element name="longitudeOfCentralMeridian">
1683
									<xsl:value-of select="./projParas/longCntMer"/>
1684
								</xsl:element>
1685
							</xsl:if>
1686
							<xsl:if test="./projParas/latProjOri">
1687
								<xsl:element name="latitudeOfProjectionOrigin">
1688
									<xsl:value-of select="./projParas/latProjOri"/>
1689
								</xsl:element>
1690
							</xsl:if>
1691
							<xsl:if test="./projParas/falEastng">
1692
								<xsl:element name="falseEasting">
1693
									<xsl:value-of select="./projParas/falEastng"/>
1694
								</xsl:element>
1695
							</xsl:if>
1696
							<xsl:if test="./projParas/falNorthng">
1697
								<xsl:element name="falseNorthing">
1698
									<xsl:value-of select="./projParas/falNorthng"/>
1699
								</xsl:element>
1700
							</xsl:if>
1701
							<xsl:if test="./projParas/falENUnits">
1702
								<xsl:element name="falseEastingNorthingUnits">
1703
									<!--xsl:element name="name"-->
1704
									<xsl:value-of select="./projParas/falENUnits"/>
1705
									<!--/xsl:element-->
1706
								</xsl:element>
1707
							</xsl:if>
1708
							<xsl:if test="./projParas/sclFacEqu">
1709
								<xsl:element name="scaleFactorAtEquator">
1710
									<xsl:value-of select="./projParas/sclFacEqu"/>
1711
								</xsl:element>
1712
							</xsl:if>
1713
							<xsl:if test="./projParas/hgProsPt">
1714
								<xsl:element name="heightOfProspectivePointAboveSurface">
1715
									<xsl:element name="./projParas/hgProsPt"/>
1716
								</xsl:element>
1717
							</xsl:if>
1718
							<xsl:if test="./projParas/longProjCnt">
1719
								<xsl:element name="longitudeOfProjectionCenter">
1720
									<xsl:value-of select="./projParas/longProjCnt"/>
1721
								</xsl:element>
1722
							</xsl:if>
1723
							<xsl:if test="./projParas/latProjCnt">
1724
								<xsl:element name="latitudeOfProjectionCenter">
1725
									<xsl:value-of select="./projParas/latProjCnt"/>
1726
								</xsl:element>
1727
							</xsl:if>
1728
							<xsl:if test="./projParas/sclFacCnt">
1729
								<xsl:element name="scaleFactorAtCenterLine">
1730
									<xsl:value-of select="./projParas/sclFacCnt"/>
1731
								</xsl:element>
1732
							</xsl:if>
1733
							<xsl:if test="./projParas/stVrLongPl">
1734
								<xsl:element name="straightVerticalLongitudeFromPole">
1735
									<xsl:value-of select="./projParas/stVrLongPl"/>
1736
								</xsl:element>
1737
							</xsl:if>
1738
							<xsl:if test="./projParas/sclFacPrOr">
1739
								<xsl:element name="scaleFactorAtProjectionOrigin">
1740
									<xsl:value-of select="./projParas/sclFacPrOr"/>
1741
								</xsl:element>
1742
							</xsl:if>
1743
							<xsl:if test="./projParas/ObLnAziPars">
1744
								<xsl:element name="obliqueLineAzimuthParameter">
1745
									<xsl:element name="MD_ObliqueLineAzimuth">
1746
										<xsl:element name="azimuthAngle">
1747
											<xsl:value-of select="./projParas/ObLnAziPars/AziAngle"/>
1748
										</xsl:element>
1749
										<xsl:element name="azimuthMeasurePointLongitude">
1750
											<xsl:value-of select="./projParas/ObLnAziPars/AziPtLong"/>
1751
										</xsl:element>
1752
									</xsl:element>
1753
								</xsl:element>
1754
							</xsl:if>
1755
							<xsl:for-each select="./projParas/ObLnPtPars">
1756
								<xsl:element name="obliqueLinePointParameter">
1757
									<xsl:element name="MD_ObliqueLinePoint">
1758
										<xsl:element name="obliqueLineLatitude">
1759
											<xsl:value-of select="./ObLineLat"/>
1760
										</xsl:element>
1761
										<xsl:element name="obliqueLineLongitude">
1762
											<xsl:value-of select="./ObLineLong"/>
1763
										</xsl:element>
1764
									</xsl:element>
1765
								</xsl:element>
1766
							</xsl:for-each>
1767
						</xsl:element>
1768
					</xsl:element>
1769
				</xsl:if>
1770
				<xsl:if test="./ellParas">
1771
					<xsl:element name="ellipsoidParameters">
1772
						<xsl:element name="MD_EllipsoidParameters">
1773
							<xsl:element name="semiMajorAxis">
1774
								<xsl:value-of select="./ellParas/semiMajAx"/>
1775
							</xsl:element>
1776
							<xsl:element name="axisUnits">
1777
								<!--xsl:element name="name"-->
1778
								<xsl:value-of select="./ellParas/axisUnits"/>
1779
								<!--/xsl:element-->
1780
							</xsl:element>
1781
							<xsl:if test="./ellParas/denFlatRat">
1782
								<xsl:element name="denominatorOfFlatteningRatio">
1783
									<xsl:value-of select="./ellParas/denFlatRat"/>
1784
								</xsl:element>
1785
							</xsl:if>
1786
						</xsl:element>
1787
					</xsl:element>
1788
				</xsl:if>
1789
			</xsl:element>
1790
		</xsl:for-each>
1791
	</xsl:template>
1792
	<xsl:template match="eainfo">
1793
		<xsl:for-each select="./detailed">
1794
			<xsl:element name="MD_FeatureCatalogueDescription">
1795
				<xsl:element name="includedWithDataset">false</xsl:element>
1796
				<xsl:element name="featureTypes">
1797
					<xsl:value-of select="./enttyp/enttypl"/>
1798
				</xsl:element>
1799
				<xsl:element name="featureCatalogueCitation">
1800
					<xsl:element name="CI_Citation">
1801
						<xsl:element name="title">unknown</xsl:element>
1802
						<xsl:element name="date">
1803
							<xsl:element name="CI_Date">
1804
								<xsl:element name="date">0001-01-01</xsl:element>
1805
								<xsl:element name="dateType"/>
1806
							</xsl:element>
1807
						</xsl:element>
1808
					</xsl:element>
1809
				</xsl:element>
1810
			</xsl:element>
1811
		</xsl:for-each>
1812
		<xsl:for-each select="./../dataqual/cloud">
1813
			<xsl:element name="MD_ImageDescription">
1814
				<!--xsl:element name="MD_ContentInformation"-->
1815
				<!--xsl:attribute name="xsi:type">MD_ImageDescription</xsl:attribute-->
1816
				<xsl:element name="attributeDescription">
1817
					<xsl:element name="typeName"/>
1818
					<xsl:element name="attributeTypes">
1819
						<xsl:element name="AttributeName"/>
1820
						<xsl:element name="TypeName"/>
1821
					</xsl:element>
1822
				</xsl:element>
1823
				<xsl:element name="contentType"/>
1824
				<xsl:element name="cloudCoverPercentage">
1825
					<xsl:value-of select="../../dataqual/cloud"/>
1826
				</xsl:element>
1827
			</xsl:element>
1828
		</xsl:for-each>
1829
	</xsl:template>
1830
	<xsl:template match="dataqual">
1831
		<xsl:element name="DQ_DataQuality">
1832
			<!-- Incluyo scope/level porque es obligatorio.  lo dejo vacio -->
1833
			<xsl:element name="scope">
1834
				<xsl:element name="level"/>
1835
			</xsl:element>
1836
			<xsl:if test="./lineage">
1837
				<xsl:element name="lineage">
1838
					<xsl:element name="LI_Lineage">
1839
						<xsl:if test="./lineage/srcinfo">
1840
							<!--xsl:element name="source"-->
1841
							<xsl:for-each select="./lineage/srcinfo">
1842
								<xsl:element name="source">
1843
									<xsl:element name="LI_Source">
1844
										<!--Este elemento puede mapearse o bien con typesrc o bien con srccontr. -->
1845
										<xsl:choose>
1846
											<xsl:when test="./typesrc != ''">
1847
												<xsl:element name="description">
1848
													<xsl:value-of select="./typesrc"/>
1849
												</xsl:element>
1850
											</xsl:when>
1851
											<xsl:when test="./srccontr !=''">
1852
												<xsl:element name="description">
1853
													<xsl:value-of select="./srccontr !=''"/>
1854
												</xsl:element>
1855
											</xsl:when>
1856
										</xsl:choose>
1857
										<xsl:if test="./srcscale">
1858
											<xsl:element name="scaleDenominator">
1859
												<xsl:element name="MD_RepresentativeFraction">
1860
													<xsl:element name="denominator">
1861
														<xsl:value-of select="./srcscale"/>
1862
													</xsl:element>
1863
												</xsl:element>
1864
											</xsl:element>
1865
										</xsl:if>
1866
										<xsl:element name="sourceCitation">
1867
											<xsl:apply-templates select="./srccite/citeinfo"/>
1868
										</xsl:element>
1869
										<xsl:element name="sourceExtent">
1870
											<xsl:element name="EX_Extent">
1871
												<xsl:element name="description">
1872
													<xsl:value-of select="./srctime/srccurr"/>
1873
												</xsl:element>
1874
												<xsl:if test="./srctime/timeinfo/sngdate/caldate!='' or ./srctime/timeinfo/rngdates">
1875
													<xsl:element name="temporalElement">
1876
														<xsl:element name="EX_TemporalExtent">
1877
															<xsl:element name="extent">
1878
																<xsl:if test="./srctime/timeinfo/sngdate/caldate!=''">
1879
																	<xsl:element name="instant">
1880
																		<xsl:value-of select="./srctime/timeinfo/sngdate/caldate"/>
1881
																	</xsl:element>
1882
																</xsl:if>
1883
																<xsl:if test="./srctime/timeinfo/rngdates">
1884
																	<xsl:element name="beginEnd">
1885
																		<xsl:element name="begin">
1886
																			<xsl:value-of select="./srctime/timeinfo/rngdates/begdate"/>
1887
																		</xsl:element>
1888
																		<xsl:element name="end">
1889
																			<xsl:value-of select="./srctime/timeinfo/rngdates/enddate"/>
1890
																		</xsl:element>
1891
																	</xsl:element>
1892
																</xsl:if>
1893
															</xsl:element>
1894
														</xsl:element>
1895
													</xsl:element>
1896
												</xsl:if>
1897
											</xsl:element>
1898
										</xsl:element>
1899
									</xsl:element>
1900
								</xsl:element>
1901
							</xsl:for-each>
1902
							<!--/xsl:element-->
1903
						</xsl:if>
1904
						<xsl:if test="./lineage/procstep">
1905
							<!--xsl:element name="processStep"-->
1906
							<xsl:for-each select="./lineage/procstep">
1907
								<xsl:element name="processStep">
1908
									<xsl:element name="LI_ProcessStep">
1909
										<!--xsl:element name="LI_ProcessStep"-->
1910
										<xsl:element name="description">
1911
											<xsl:value-of select="./procdesc"/>
1912
										</xsl:element>
1913
										<xsl:element name="dateTime">
1914
											<xsl:value-of select="./procdate"/>
1915
											<!--lo cojo del procdate y de momento me olvido del proctime -->
1916
										</xsl:element>
1917
										<xsl:element name="processor">
1918
											<xsl:apply-templates select="./proccont/cntinfo"/>
1919
											<!-- a ver con este...-->
1920
										</xsl:element>
1921
										<!-- si uno de los elementos srcused o srcprod existe, deben ser introducidos en un alternateTitle.
1922
								Generar un source implica tambien generar un title y un date, que son elementos obligatorios-->
1923
										<xsl:if test="./srcprod!='' or ./srcused!=''">
1924
											<xsl:element name="source">
1925
												<xsl:element name="LI_Source">
1926
													<xsl:element name="sourceCitation">
1927
														<xsl:element name="CI_Citation">
1928
															<!--alternate Title puede venir de srcused o bien de srcprod.  Sin embargo, debe ser unico -->
1929
															<!--Genero al vez el title -->
1930
															<xsl:choose>
1931
																<xsl:when test="./srcused !=''">
1932
																	<xsl:element name="title">
1933
																		<xsl:value-of select="./srcused"/>
1934
																	</xsl:element>
1935
																	<xsl:element name="alternateTitle">
1936
																		<xsl:value-of select="./srcused"/>
1937
																	</xsl:element>
1938
																</xsl:when>
1939
																<xsl:when test="./srcprod != ''">
1940
																	<xsl:element name="title">
1941
																		<xsl:value-of select="./srcprod"/>
1942
																	</xsl:element>
1943
																	<xsl:element name="alternateTitle">
1944
																		<xsl:value-of select="./srcprod"/>
1945
																	</xsl:element>
1946
																</xsl:when>
1947
															</xsl:choose>
1948
															<!-- generacion del elemento obligatorio date-->
1949
															<xsl:element name="date">
1950
																<xsl:element name="CI_Date">
1951
																	<xsl:element name="date">0001-01-01</xsl:element>
1952
																	<xsl:element name="dateType"/>
1953
																</xsl:element>
1954
															</xsl:element>
1955
														</xsl:element>
1956
													</xsl:element>
1957
												</xsl:element>
1958
											</xsl:element>
1959
										</xsl:if>
1960
									</xsl:element>
1961
								</xsl:element>
1962
							</xsl:for-each>
1963
							<!--/xsl:element-->
1964
						</xsl:if>
1965
					</xsl:element>
1966
				</xsl:element>
1967
			</xsl:if>
1968
			<xsl:element name="report">
1969
				<xsl:element name="DQ_ConceptualConsistency">
1970
					<!--xsl:element name="DQ_LogicalConsistency"-->
1971
					<!--xsl:attribute name="xsi:type">DQ_ConceptualConsistency</xsl:attribute-->
1972
					<xsl:element name="evaluationMethodDescription">
1973
						<xsl:value-of select="./logic"/>
1974
					</xsl:element>
1975
					<xsl:element name="result">
1976
						<xsl:element name="DQ_QuantitativeResult">
1977
							<!--xsl:element name="_DQ_Result">
1978
							<xsl:attribute name="xsi:type">DQ_QuantitativeResult</xsl:attribute-->
1979
							<xsl:element name="valueUnit">
1980
								<xsl:element name="name"/>
1981
							</xsl:element>
1982
							<xsl:element name="value">
1983
								<xsl:element name="recordValue">
1984
									<xsl:element name="attributes">
1985
										<xsl:element name="AttributeName"/>
1986
										<xsl:element name="Any"/>
1987
									</xsl:element>
1988
									<xsl:element name="recordType"/>
1989
								</xsl:element>
1990
							</xsl:element>
1991
						</xsl:element>
1992
					</xsl:element>
1993
				</xsl:element>
1994
			</xsl:element>
1995
			<xsl:element name="report">
1996
				<xsl:element name="DQ_QuantitativeAttributeAccuracy">
1997
					<!--xsl:element name="DQ_ThematicAccuracy">
1998
					<xsl:attribute name="xsi:type">DQ_QuantitativeAttributeAccuracy</xsl:attribute-->
1999
					<xsl:element name="measureDescription">
2000
						<xsl:value-of select="./attracc/qattracc/attracce"/>
2001
					</xsl:element>
2002
					<xsl:element name="evaluationMethodDescription">
2003
						<xsl:value-of select="./attracc/attraccr"/>
2004
					</xsl:element>
2005
					<xsl:element name="result">
2006
						<xsl:element name="DQ_QuantitativeResult">
2007
							<!--xsl:element name="_DQ_Result">
2008
							<xsl:attribute name="xsi:type">DQ_QuantitativeResult</xsl:attribute-->
2009
							<xsl:element name="valueUnit">
2010
								<xsl:element name="name"/>
2011
							</xsl:element>
2012
							<xsl:element name="value">
2013
								<xsl:element name="recordValue">
2014
									<xsl:element name="attributes">
2015
										<xsl:element name="AttributeName">
2016
											<xsl:value-of select="./attracc/qattracc/attraccv"/>
2017
										</xsl:element>
2018
										<xsl:element name="Any"/>
2019
									</xsl:element>
2020
									<xsl:element name="recordType"/>
2021
								</xsl:element>
2022
							</xsl:element>
2023
						</xsl:element>
2024
					</xsl:element>
2025
				</xsl:element>
2026
			</xsl:element>
2027
			<xsl:element name="report">
2028
				<xsl:element name="DQ_CompletenessCommission">
2029
					<!--xsl:element name="DQ_Completeness">
2030
					<xsl:attribute name="xsi:type">DQ_CompletenessCommission</xsl:attribute-->
2031
					<xsl:element name="evaluationMethodDescription">
2032
						<xsl:value-of select="./complete"/>
2033
					</xsl:element>
2034
					<xsl:element name="result">
2035
						<xsl:element name="DQ_QuantitativeResult">
2036
							<!--xsl:element name="_DQ_Result">
2037
							<xsl:attribute name="xsi:type">DQ_QuantitativeResult</xsl:attribute-->
2038
							<xsl:element name="valueUnit">
2039
								<xsl:element name="name"/>
2040
							</xsl:element>
2041
							<xsl:element name="value">
2042
								<xsl:element name="recordValue">
2043
									<xsl:element name="attributes">
2044
										<xsl:element name="AttributeName"/>
2045
										<xsl:element name="Any"/>
2046
									</xsl:element>
2047
									<xsl:element name="recordType"/>
2048
								</xsl:element>
2049
							</xsl:element>
2050
						</xsl:element>
2051
					</xsl:element>
2052
				</xsl:element>
2053
			</xsl:element>
2054
			<!--elementos horizontal y vertical.  En fgdc solo hay un elemento de cada, por lo que lo testeo con un if y no con un forEach -->
2055
			<xsl:if test="./posacc/horizpa">
2056
				<xsl:element name="report">
2057
					<xsl:element name="DQ_AbsoluteExternalPositionalAccuracy">
2058
						<!--xsl:element name="DQ_PositionalAccuracy">
2059
						<xsl:attribute name="xsi:type">DQ_AbsoluteExternalPositionalAccuracy</xsl:attribute-->
2060
						<xsl:element name="measureDescription">
2061
							<xsl:value-of select="./posacc/horizpa/qhorizpa/horizpae"/>
2062
						</xsl:element>
2063
						<xsl:element name="evaluationMethodDescription">
2064
							<xsl:value-of select="./posacc/horizpa/horizpar"/>
2065
						</xsl:element>
2066
						<xsl:element name="result">
2067
							<xsl:element name="DQ_QuantitativeResult">
2068
								<!--xsl:element name="_DQ_Result">
2069
								<xsl:attribute name="xsi:type">DQ_QuantitativeResult</xsl:attribute-->
2070
								<xsl:element name="valueUnit">
2071
									<xsl:element name="name"/>
2072
								</xsl:element>
2073
								<xsl:element name="value">
2074
									<xsl:element name="recordValue">
2075
										<xsl:element name="attributes">
2076
											<xsl:element name="AttributeName"/>
2077
											<xsl:element name="Any"/>
2078
										</xsl:element>
2079
										<xsl:element name="recordType"/>
2080
									</xsl:element>
2081
								</xsl:element>
2082
							</xsl:element>
2083
						</xsl:element>
2084
						<xsl:element name="nameOfMeasure">horizontal</xsl:element>
2085
					</xsl:element>
2086
				</xsl:element>
2087
			</xsl:if>
2088
			<xsl:if test="./posacc/vertacc">
2089
				<xsl:element name="report">
2090
					<xsl:element name="DQ_AbsoluteExternalPositionalAccuracy">
2091
						<!--xsl:element name="DQ_PositionalAccuracy">
2092
						<xsl:attribute name="xsi:type">DQ_AbsoluteExternalPositionalAccuracy</xsl:attribute-->
2093
						<xsl:element name="measureDescription">
2094
							<xsl:value-of select="./posacc/vertacc/qvertpa/vertacce"/>
2095
						</xsl:element>
2096
						<xsl:element name="evaluationMethodDescription">
2097
							<xsl:value-of select="./posacc/vertacc/vertaccr"/>
2098
						</xsl:element>
2099
						<xsl:element name="result">
2100
							<xsl:element name="DQ_QuantitativeResult">
2101
								<!--xsl:element name="_DQ_Result">
2102
								<xsl:attribute name="xsi:type">DQ_QuantitativeResult</xsl:attribute-->
2103
								<xsl:element name="valueUnit">
2104
									<xsl:element name="name"/>
2105
								</xsl:element>
2106
								<xsl:element name="value">
2107
									<xsl:element name="recordValue">
2108
										<xsl:element name="attributes">
2109
											<xsl:element name="AttributeName"/>
2110
											<xsl:element name="Any"/>
2111
										</xsl:element>
2112
										<xsl:element name="recordType"/>
2113
									</xsl:element>
2114
								</xsl:element>
2115
							</xsl:element>
2116
						</xsl:element>
2117
						<xsl:element name="nameOfMeasure">vertical</xsl:element>
2118
					</xsl:element>
2119
				</xsl:element>
2120
			</xsl:if>
2121
		</xsl:element>
2122
	</xsl:template>
2123
</xsl:stylesheet>