svn-gvsig-desktop / tags / v1_10_0_Build_1257 / extensions / extMetadata / xslt / ISO_FGDC.xsl @ 44178
History | View | Annotate | Download (58.1 KB)
1 |
<?xml version="1.0" encoding="ISO-8859-1"?> |
---|---|
2 |
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:iso19115="http://www.isotc211.org/iso19115" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> |
3 |
<xsl:output method="xml" indent="yes" encoding="ISO-8859-1"/> |
4 |
<!-- xsl:output doctype-system="file:///D:/gente/almenara/pasarelas/xml/fgdc-std-001-1998.dtd"/ --> |
5 |
<!-- Esta linea se modificara en funcion de la ubicacion del dtd--> |
6 |
<!-- AUTOR: Mar?a Pilar Torres --> |
7 |
<!-- FECHA: 07/03 --> |
8 |
<!-- DESCRIPCION: Hoja de estilo para trasladar ficheros XML que validan el estandar ISO 19115 --> |
9 |
<!-- al estandar FGDC. --> |
10 |
<!-- SECCIONES TRADUCIDAS: identification information, dataqualityInfo, distribution information y constraint information --> |
11 |
<!-- MODIFICACIONES: Para la realizacion de esta hoja de estilo se ha utilizado la original (FGDC - Iso cortos) y se han --> |
12 |
<!-- hecho las modificaciones oportunas. --> |
13 |
<!-- Esta hoja varia con respecto a la ISO_FGDC_LARGOS en que no transforma imagen. --> |
14 |
<!-- [jnog 5/2/2004] Se elimina el uso del namespace "iso19115:" |
15 |
[jnog 6/2/2004] Se trata el nombre de clases (CI_Date, CI_ResponsibleParty,...),language |
16 |
[jlacasta mayo 04 Fecha de inicio y fin de los metadatos no se mostraba adecuadamente |
17 |
Actualizamos la forma de pasar las imagenes del browse graphic al nuevo formato |
18 |
La secci?n de referencia espacial se pierde entera |
19 |
Se ha harreglado la secci?n de sistemas de referencia que se perdian 7 campos--> |
20 |
<xsl:template match="/"> |
21 |
<xsl:apply-templates select="MD_Metadata"/> |
22 |
</xsl:template> |
23 |
<xsl:template match="MD_Metadata"> |
24 |
<xsl:element name="metadata"> |
25 |
<!-- IDENTIFICATION INFO --> |
26 |
<xsl:apply-templates select="./identificationInfo/MD_DataIdentification"/> |
27 |
<!--DATA QUALITY INFO --> |
28 |
<xsl:if test="./dataQualityInfo"> |
29 |
<xsl:element name="dataqual"> |
30 |
<xsl:apply-templates select="./dataQualityInfo"/> |
31 |
</xsl:element> |
32 |
</xsl:if> |
33 |
<!-- ENTITY AND ATTRIBUTE INFORMATION --> |
34 |
<xsl:if test="contentInfo"> |
35 |
<xsl:element name="eainfo"> |
36 |
<xsl:apply-templates select="./contentInfo"/> |
37 |
</xsl:element> |
38 |
</xsl:if> |
39 |
<!--DISTRIBUTION INFO --> |
40 |
<xsl:apply-templates select="./distributionInfo/MD_Distribution/distributor/MD_Distributor"/> |
41 |
<!-- METADATA MAINTENANCE --> |
42 |
<xsl:element name="metainfo"> |
43 |
<xsl:element name="metd"> |
44 |
<xsl:value-of select="./dateStamp"/> |
45 |
</xsl:element> |
46 |
<!-- no se con que mapear metrd--> |
47 |
<!-- ambos son (0..1)--> |
48 |
<xsl:if test="metadataMaintenance/MD_MaintenanceInformation/dateOfNextUpdate"> |
49 |
<xsl:element name="metrd"/> |
50 |
<xsl:element name="metfrd"> |
51 |
<xsl:value-of select="./metadataMaintenance/MD_MaintenanceInformation/dateOfNextUpdate"/> |
52 |
</xsl:element> |
53 |
</xsl:if> |
54 |
<xsl:element name="metc"> |
55 |
<xsl:apply-templates select="./contact/CI_ResponsibleParty"/> |
56 |
</xsl:element> |
57 |
<xsl:element name="metstdn"> |
58 |
<!-- autogeneraci?n del nombre del est?ndar --> |
59 |
<xsl:text>FGDC Content Standards for Digital Geospatial Metadata</xsl:text> |
60 |
<!--<xsl:value-of select="./MetadataStandardName"/>--> |
61 |
</xsl:element> |
62 |
<xsl:element name="metstdv"> |
63 |
<!--xsl:value-of select="./metadataStandardVersion"/--> |
64 |
<xsl:text>FGDC-STD-001-1998</xsl:text> |
65 |
</xsl:element> |
66 |
<xsl:if test="./metadataConstraints/MD_LegalConstraints/accessConstraints"> |
67 |
<xsl:element name="metac"> |
68 |
<xsl:value-of select="./metadataConstraints/MD_LegalConstraints/accessConstraints"/> |
69 |
</xsl:element> |
70 |
</xsl:if> |
71 |
<xsl:if test="./metadataConstraints/MD_LegalConstraints/useConstraints"> |
72 |
<xsl:element name="metuc"> |
73 |
<xsl:value-of select="./metadataConstraints/MD_LegalConstraints/useConstraints"/> |
74 |
</xsl:element> |
75 |
</xsl:if> |
76 |
<xsl:if test="./metadataConstraints/MD_LegalConstraints/otherConstraints"> |
77 |
<xsl:element name="metoc"> |
78 |
<xsl:value-of select="./metadataConstraints/MD_LegalConstraints/otherConstraints"/> |
79 |
</xsl:element> |
80 |
</xsl:if> |
81 |
<xsl:if test="./metadataConstraints/MD_SecurityConstraints"> |
82 |
<xsl:element name="metsi"> |
83 |
<xsl:if test="./metadataConstraints/MD_SecurityConstraints/classificationSystem"> |
84 |
<xsl:element name="metscs"> |
85 |
<xsl:value-of select="./metadataConstraints/MD_SecurityConstraints/classificationSystem"/> |
86 |
</xsl:element> |
87 |
</xsl:if> |
88 |
<xsl:if test="./metadataConstraints/MD_SecurityConstraints/classification"> |
89 |
<xsl:element name="metsc"> |
90 |
<xsl:value-of select="./metadataConstraints/MD_SecurityConstraints/classification"/> |
91 |
</xsl:element> |
92 |
</xsl:if> |
93 |
<xsl:if test="./metadataConstraints/MD_SecurityConstraints/handlingDescription"> |
94 |
<xsl:element name="metshd"> |
95 |
<xsl:value-of select="./metadataConstraints/MD_SecurityConstraints/handlingDescription"/> |
96 |
</xsl:element> |
97 |
</xsl:if> |
98 |
</xsl:element> |
99 |
</xsl:if> |
100 |
<xsl:element name="metalang"> |
101 |
<xsl:if test="./language"> |
102 |
<xsl:value-of select="./language"/> |
103 |
</xsl:if> |
104 |
</xsl:element> |
105 |
|
106 |
<xsl:if test="./fileIdentifier"> |
107 |
<xsl:element name="mdFileID"> |
108 |
<xsl:value-of select="./fileIdentifier"/> |
109 |
</xsl:element> |
110 |
</xsl:if> |
111 |
|
112 |
<xsl:if test="./hierarchyLevel"> |
113 |
<xsl:element name="mdHrLv"> |
114 |
<xsl:value-of select="./hierarchyLevel"/> |
115 |
</xsl:element> |
116 |
</xsl:if> |
117 |
</xsl:element> |
118 |
<!-- REFERENCESYSTEMINFO, VALIDO SEGUN EL FGDCIAAA--> |
119 |
<xsl:for-each select="referenceSystemInfo"> |
120 |
<xsl:apply-templates select="."/> |
121 |
</xsl:for-each> |
122 |
</xsl:element> |
123 |
</xsl:template> |
124 |
<!-- el problema es que IdentificationInfo: MD_Identification(ISO) es (1..n) mientras que idinfo(FGDC) es (0..1) --> |
125 |
<!-- tal y como esta ahora, solo se trasladara el primer IdentificationInfo: MD_Identification si es que hay ms de uno --> |
126 |
<xsl:template match="identificationInfo/MD_DataIdentification"> |
127 |
<xsl:element name="idinfo"> |
128 |
<xsl:element name="citation"> |
129 |
<xsl:apply-templates select="citation/CI_Citation"/> |
130 |
</xsl:element> |
131 |
<!-- ambos son obligatorios--> |
132 |
<xsl:element name="descript"> |
133 |
<xsl:element name="abstract"> |
134 |
<xsl:value-of select="./abstract"/> |
135 |
</xsl:element> |
136 |
<!-- purpose es obligatorio e Purpose es (0..1) --> |
137 |
<xsl:element name="purpose"> |
138 |
<!-- si Purpose no aparece,el elemento purpose--> |
139 |
<!-- aparecera vacio--> |
140 |
<xsl:value-of select="./purpose"/> |
141 |
</xsl:element> |
142 |
<!-- ambos son (0..1) --> |
143 |
<xsl:if test="./supplementalInformation"> |
144 |
<xsl:element name="supplinf"> |
145 |
<xsl:value-of select="./supplementalInformation"/> |
146 |
</xsl:element> |
147 |
</xsl:if> |
148 |
</xsl:element> |
149 |
<!-- Esto esta bastante cambiado con respecto a lo que tenia Tere. Habra que volver a revisarlo. --> |
150 |
<xsl:element name="timeperd"> |
151 |
<xsl:choose> |
152 |
<xsl:when test="./extent"> |
153 |
<xsl:apply-templates select="extent"/> |
154 |
</xsl:when> |
155 |
<xsl:otherwise> |
156 |
<xsl:element name="timeinfo"> |
157 |
<xsl:element name="sngdate"> |
158 |
<xsl:element name="caldate"/> |
159 |
</xsl:element> |
160 |
</xsl:element> |
161 |
</xsl:otherwise> |
162 |
</xsl:choose> |
163 |
<xsl:element name="current"/> |
164 |
</xsl:element> |
165 |
<!--Elemento status--> |
166 |
<xsl:element name="status"> |
167 |
<xsl:element name="progress"> |
168 |
<!-- Por el momento, no hago ninguna comparacion, porque el valor en ISO en esta version para status es libre--> |
169 |
<xsl:value-of select="normalize-space(./status)"/> |
170 |
</xsl:element> |
171 |
<xsl:element name="update"> |
172 |
<!-- Paso el valor tal cual. Podr?a hacerse una comparacion para ver si es alguno de los aconsejados en fgdc pero |
173 |
como antes, si no lo era se pasaba el valor tal cual, no tiene sentido. --> |
174 |
<xsl:value-of select="normalize-space(./resourceMaintenance/MD_MaintenanceInformation/maintenanceAndUpdateFrequency)"/> |
175 |
</xsl:element> |
176 |
</xsl:element> |
177 |
<xsl:element name="spdom"> |
178 |
<!-- bounding (FGDC) es (1..1) y GeographicBox:EX_GeographicBoundingBox es (0..n)--> |
179 |
<!-- solo aparecera el primero si hay varios GeographicBox:EX_GeographicBoundingBox --> |
180 |
<xsl:element name="bounding"> |
181 |
<xsl:element name="westbc"> |
182 |
<xsl:value-of select="./extent/*/geographicElement/*/westBoundLongitude"/> |
183 |
</xsl:element> |
184 |
<xsl:element name="eastbc"> |
185 |
<xsl:value-of select="./extent/*/geographicElement/*/eastBoundLongitude"/> |
186 |
</xsl:element> |
187 |
<xsl:element name="northbc"> |
188 |
<xsl:value-of select="./extent/*/geographicElement/*/northBoundLatitude"/> |
189 |
</xsl:element> |
190 |
<xsl:element name="southbc"> |
191 |
<xsl:value-of select="./extent/*/geographicElement/*/southBoundLatitude"/> |
192 |
</xsl:element> |
193 |
</xsl:element> |
194 |
<!-- el elemento dsgpoly(FGDC) no se corresponde con ningun elemento de ISO--> |
195 |
<!-- spdom/scale (FGDC nuestro) es (0..1) y IdentificationInfo: MD_Identification/SpatialResolution:MD_Resolution es (0..n)--> |
196 |
<!-- solo se trasladara el primer SpatialResolution:MD_Resolution en caso de que haya mas de uno --> |
197 |
<xsl:if test="./spatialResolution/equivalentScale/MD_RepresentativeFraction"> |
198 |
<xsl:element name="scale"> |
199 |
<xsl:value-of select="./spatialResolution/equivalentScale/*/denominator"/> |
200 |
</xsl:element> |
201 |
</xsl:if> |
202 |
<!-- el elemento sparef no tiene equivalente en ISO --> |
203 |
</xsl:element> |
204 |
<xsl:element name="keywords"> |
205 |
<xsl:element name="tpCat"> |
206 |
<xsl:value-of select="./topicCategory"/> |
207 |
</xsl:element> |
208 |
<xsl:choose> |
209 |
<xsl:when test="./descriptiveKeywords/MD_Keywords/type = 'place' or ./descriptiveKeywords/MD_Keywords/keyword/type = 'theme' or ./descriptiveKeywords/MD_Keywords/keyword/type = 'stratum' or ./descriptiveKeywords/MD_Keywords/keyword/type = 'temporal' "> |
210 |
<xsl:apply-templates select="./descriptiveKeywords/MD_Keywords"/> |
211 |
</xsl:when> |
212 |
<xsl:otherwise> |
213 |
<!-- Algo tendremos que hacer..., porque keywords en FGDCIAAA es obligatoria... --> |
214 |
<xsl:element name="theme"> |
215 |
<xsl:element name="themekt"/> |
216 |
<xsl:element name="themekey"/> |
217 |
</xsl:element> |
218 |
</xsl:otherwise> |
219 |
</xsl:choose> |
220 |
</xsl:element> |
221 |
<!-- accconst (FGDC) es (1..1) y ResourceConstraints:MD_constraintss/LegMD_Constraints/acconst(ISO) es (0..n) --> |
222 |
<!-- si hay mas de una solo se traslada la primera--> |
223 |
<xsl:choose> |
224 |
<xsl:when test="./resourceConstraints/MD_LegalConstraints"> |
225 |
<xsl:element name="accconst"> |
226 |
<xsl:value-of select="./resourceConstraints/MD_LegalConstraints/accessConstraints"/> |
227 |
</xsl:element> |
228 |
<xsl:element name="useconst"> |
229 |
<xsl:value-of select="./resourceConstraints/MD_LegalConstraints/useConstraints"/> |
230 |
</xsl:element> |
231 |
<xsl:if test="./resourceConstraints/MD_LegalConstraints/otherConstraints"> |
232 |
<xsl:element name="othconst"> |
233 |
<xsl:value-of select="./resourceConstraints/MD_LegalConstraints/otherConstraints"/> |
234 |
</xsl:element> |
235 |
</xsl:if> |
236 |
</xsl:when> |
237 |
<xsl:otherwise> |
238 |
<xsl:element name="accconst"/> |
239 |
<xsl:element name="useconst"/> |
240 |
<xsl:element name="othconst"/> |
241 |
</xsl:otherwise> |
242 |
</xsl:choose> |
243 |
<!-- ptcontac(FGDC) es (0..1) y idPoc(ISO) es (0..n) --> |
244 |
<!-- solo se traslada la primera ocurrencia --> |
245 |
<xsl:if test="./pointOfContact/CI_ResponsibleParty"> |
246 |
<xsl:element name="ptcontac"> |
247 |
<xsl:apply-templates select="./pointOfContact/CI_ResponsibleParty"/> |
248 |
</xsl:element> |
249 |
</xsl:if> |
250 |
<!-- browse(FGDC) es (0..n) y GraphicOverview:MD_BrowseGraphic(ISO) es (0..n)--> |
251 |
<xsl:for-each select="./graphicOverview/MD_BrowseGraphic"> |
252 |
<xsl:element name="browse"> |
253 |
<!-- browse (FGDC) y FileName(ISO) son (1..1)--> |
254 |
<xsl:element name="browsen"> |
255 |
<xsl:value-of select="./fileName"/> |
256 |
</xsl:element> |
257 |
<!-- browsed (FGDC) es (1..1)y FileDescription(ISO) es (0..1)--> |
258 |
<xsl:if test="contains(fileDescription,'%%%%%%%%%%%%%%%%%PREVIEW BASE64%%%%%%%%%%%%%%%%% |
259 |
')"> |
260 |
<xsl:element name="browsed"> |
261 |
<xsl:value-of select="substring-before(fileDescription,'%%%%%%%%%%%%%%%%%PREVIEW BASE64%%%%%%%%%%%%%%%%% |
262 |
')"/> |
263 |
</xsl:element> |
264 |
<xsl:element name="browseem"> |
265 |
<xsl:value-of select="substring-after(fileDescription,'%%%%%%%%%%%%%%%%%PREVIEW BASE64%%%%%%%%%%%%%%%%% |
266 |
')"/> |
267 |
</xsl:element> |
268 |
</xsl:if> |
269 |
<xsl:if test="not(contains(fileDescription,'%%%%%%%%%%%%%%%%%PREVIEW BASE64%%%%%%%%%%%%%%%%% |
270 |
'))"> |
271 |
<xsl:element name="browsed"> |
272 |
<xsl:value-of select="fileDescription"/> |
273 |
</xsl:element> |
274 |
</xsl:if> |
275 |
<!-- browsed (FGDC) es (1..1)y FileDescription(ISO) es (0..1)--> |
276 |
<xsl:element name="browset"> |
277 |
<xsl:value-of select="fileType"/> |
278 |
</xsl:element> |
279 |
<!-- este elemento solo es valido segun el estandar FGDC-iAAA--> |
280 |
<!-- a si? pues yo lo quito porque en el dtd FGDCIAAA que yo tengo no aparece y ademas el elemento bgImage no |
281 |
tiene correspondiente en ISO |
282 |
10-9-03. lo pongo pq en un ejemplo de Javi y David se ve que es necesario aunque NO pertenezca al estandar |
283 |
1-10-03 lo vuelvo a quitar, haciendo de esta una version 2 de la hoja que si lo lleva.--> |
284 |
<!--xsl:if test="./bgImage"> |
285 |
<xsl:element name="browseem"> |
286 |
<xsl:value-of select="./bgImage"/> |
287 |
</xsl:element> |
288 |
</xsl:if--> |
289 |
</xsl:element> |
290 |
</xsl:for-each> |
291 |
<!-- datacred(FGDC) es (0..1) y Credit(ISO) es (0..n) --> |
292 |
<!-- solo se trasladara la primera ocurrencia de Credit si es que hay mas de una --> |
293 |
<xsl:if test="./credit"> |
294 |
<xsl:element name="datacred"> |
295 |
<xsl:value-of select="./credit"/> |
296 |
</xsl:element> |
297 |
</xsl:if> |
298 |
<!-- secinfo(FGDC) es (0..1) y ResourceConstraints:MD_constraints/SecMD_Constraints(ISO) es (0..n)--> |
299 |
<!-- solo se trasladara la primera ocurrencia de ResourceConstraints:MD_constraints/SecMD_Constraints si hay mas de una--> |
300 |
<xsl:if test="./resourceConstraints/MD_SecurityConstraints"> |
301 |
<xsl:element name="secinfo"> |
302 |
<!-- secsys(FGDC) es (1..1) y ClassificationSys(ISO) es (0..1)--> |
303 |
<xsl:element name="secsys"> |
304 |
<xsl:value-of select="./resourceConstraints/MD_SecurityConstraints/classificationSystem"/> |
305 |
</xsl:element> |
306 |
<!-- secClassification(FGDC) es (1..1) y Classification(ISO) es (1..1)--> |
307 |
<xsl:element name="secclass"> |
308 |
<xsl:value-of select="./resourceConstraints/MD_SecurityConstraints/classification"/> |
309 |
</xsl:element> |
310 |
<!-- sechandl(FGDC) es (1..1) y HandlingDescription(ISO) es (0..1)--> |
311 |
<xsl:element name="sechandl"> |
312 |
<xsl:value-of select="./resourceConstraints/MD_SecurityConstraints/handlingDescription"/> |
313 |
</xsl:element> |
314 |
</xsl:element> |
315 |
</xsl:if> |
316 |
<!--- Existe tambien un metadataConstraints que habria que ver si se puede pasar a algun lado o no... --> |
317 |
<!-- native(FGDC) es (0..1) y envirDec(ISO) es (0..1)--> |
318 |
<xsl:if test="./environmentDescription"> |
319 |
<xsl:element name="native"> |
320 |
<xsl:value-of select="./environmentDescription"/> |
321 |
</xsl:element> |
322 |
</xsl:if> |
323 |
<!-- Cross_Reference no tiene equivalente en ISO--> |
324 |
<!-- elemento IDLANG, propio del fgdcIAAA --> |
325 |
<xsl:if test="./language"> |
326 |
<xsl:for-each select="./language"> |
327 |
<xsl:element name="idlang"> |
328 |
<xsl:element name="idlangkt"> |
329 |
<xsl:text>ISO639</xsl:text> |
330 |
</xsl:element> |
331 |
<xsl:element name="idlangkey"> |
332 |
<xsl:value-of select="."/> |
333 |
</xsl:element> |
334 |
</xsl:element> |
335 |
</xsl:for-each> |
336 |
</xsl:if> |
337 |
</xsl:element> |
338 |
<!-- FIN DE idinfo --> |
339 |
<!-- Suponemos que habra como maximo dos SpatialRespresentationType y un solo IdentificationInfo: MD_Identification --> |
340 |
<!-- puede trasladar a spdoinfo/direct o indpref) --> |
341 |
<!-- NO ENTIENDO MUY BIEN PORQUE ESTA RESTRICCION ????????????????''--> |
342 |
<!-- El valor de SpatialRepresentationType puede llevarse o bien a spdoinfo/direct of spdoinfo/indpref. Ambos puede --> |
343 |
<!-- decirse que son opcionales NO REPETIBLES. Por tanto habra que vigilar que no se dupliquen. --> |
344 |
<xsl:element name="spdoinfo"> |
345 |
<xsl:element name="direct"> |
346 |
<xsl:variable name="typesrt"> |
347 |
<xsl:value-of select="./spatialRepresentationType"/> |
348 |
</xsl:variable> |
349 |
<xsl:choose> |
350 |
<xsl:when test="$typesrt='Malla'"> |
351 |
<xsl:text>RASTER</xsl:text> |
352 |
</xsl:when> |
353 |
<xsl:otherwise> |
354 |
<xsl:value-of select="./spatialRepresentationType"/> |
355 |
</xsl:otherwise> |
356 |
</xsl:choose> |
357 |
</xsl:element> |
358 |
<!--xsl:choose> |
359 |
<xsl:when test="normalize-space(./spatialRepresentationType)='Vector'"> |
360 |
</xsl:when> |
361 |
</xsl:choose--> |
362 |
<xsl:for-each select="../../spatialRepresentationInfo/MD_VectorSpatialRepresentation"> |
363 |
<xsl:element name="ptvctinf"> |
364 |
<xsl:element name="vpfterm"> |
365 |
<xsl:element name="vpflevel"> |
366 |
<xsl:value-of select="./topologyLevel"/> |
367 |
</xsl:element> |
368 |
<xsl:for-each select="./geometricObjects"> |
369 |
<xsl:element name="vpfinfo"> |
370 |
<xsl:element name="vpftype"> |
371 |
<xsl:value-of select="./MD_GeometricObjects/geometricObjectType"/> |
372 |
</xsl:element> |
373 |
<xsl:element name="ptvctcnt"> |
374 |
<xsl:value-of select="./MD_GeometricObjects/geometricObjectCount"/> |
375 |
</xsl:element> |
376 |
</xsl:element> |
377 |
</xsl:for-each> |
378 |
</xsl:element> |
379 |
</xsl:element> |
380 |
</xsl:for-each> |
381 |
<xsl:for-each select="../../spatialRepresentationInfo/MD_GridSpatialRepresentation"> |
382 |
<xsl:element name="rastinfo"> |
383 |
<xsl:element name="rasttype"> |
384 |
<xsl:value-of select="./cellGeometry"/> |
385 |
</xsl:element> |
386 |
<xsl:for-each select="./axisDimensionProperties/MD_Dimension"> |
387 |
<xsl:variable name="dim"> |
388 |
<xsl:value-of select="./dimensionName"/> |
389 |
</xsl:variable> |
390 |
<xsl:if test="$dim='row'"> |
391 |
<xsl:element name="rowcount"> |
392 |
<xsl:value-of select="./dimensionSize"/> |
393 |
</xsl:element> |
394 |
</xsl:if> |
395 |
<xsl:if test="$dim='column'"> |
396 |
<xsl:element name="colcount"> |
397 |
<xsl:value-of select="./dimensionSize"/> |
398 |
</xsl:element> |
399 |
</xsl:if> |
400 |
<xsl:if test="$dim='vertical'"> |
401 |
<xsl:element name="vrtcount"> |
402 |
<xsl:value-of select="./dimensionSize"/> |
403 |
</xsl:element> |
404 |
</xsl:if> |
405 |
</xsl:for-each> |
406 |
</xsl:element> |
407 |
</xsl:for-each> |
408 |
</xsl:element> |
409 |
|
410 |
<!--xsl:variable name="numSRT"> |
411 |
<xsl:value-of select="count(./spatialRepresentationType)"/> |
412 |
</xsl:variable> |
413 |
<xsl:choose> |
414 |
<xsl:when test="$numSRT=0"> |
415 |
</xsl:when> |
416 |
<xsl:when test="$numSRT=1"> |
417 |
<xsl:element name="spdoinfo"> |
418 |
<xsl:choose> |
419 |
<xsl:when test="normalize-space(./spatialRepresentationType)='vector' or |
420 |
normalize-space(./spatialRepresentationType)='grid' or |
421 |
normalize-space(./spatialRepresentationType)='tin' or |
422 |
normalize-space(./spatialRepresentationType)='VECTOR' or |
423 |
normalize-space(./spatialRepresentationType)='GRID' or |
424 |
normalize-space(./spatialRepresentationType)='TIN'"> |
425 |
<xsl:element name="direct"> |
426 |
<xsl:value-of select="./spatialRepresentationType"/> |
427 |
</xsl:element> |
428 |
</xsl:when> |
429 |
<xsl:otherwise> |
430 |
<xsl:element name="indspref"> |
431 |
<xsl:value-of select="./spatialRepresentationType"/> |
432 |
</xsl:element> |
433 |
</xsl:otherwise> |
434 |
</xsl:choose> |
435 |
</xsl:element> |
436 |
</xsl:when> |
437 |
<xsl:when test="$numSRT=2"> |
438 |
<xsl:element name="spdoinfo"> |
439 |
<xsl:variable name="SRT1"> |
440 |
<xsl:value-of select="spatialRepresentationType[1]"/> |
441 |
</xsl:variable> |
442 |
<xsl:variable name="SRT2"> |
443 |
<xsl:value-of select="spatialRepresentationType[2]"/> |
444 |
</xsl:variable> |
445 |
<xsl:choose> |
446 |
<xsl:when test="$SRT1='vector' or $SRT1='grid' or $SRT1='tin' or $SRT1='VECTOR' or $SRT1='GRID' or $SRT1='TIN'"> |
447 |
<xsl:element name="indspref"> |
448 |
<xsl:value-of select="$SRT2"/> |
449 |
</xsl:element> |
450 |
<xsl:element name="direct"> |
451 |
<xsl:value-of select="$SRT1"/> |
452 |
</xsl:element> |
453 |
</xsl:when> |
454 |
<xsl:when test="$SRT2='vector' or $SRT2='grid' or $SRT2='tin' or $SRT2='VECTOR' or $SRT2='GRID' or $SRT2='TIN'"> |
455 |
<xsl:element name="indspref"> |
456 |
<xsl:value-of select="$SRT1"/> |
457 |
</xsl:element> |
458 |
<xsl:element name="direct"> |
459 |
<xsl:value-of select="$SRT2"/> |
460 |
</xsl:element> |
461 |
</xsl:when> |
462 |
<xsl:otherwise> |
463 |
<xsl:element name="indspref"> |
464 |
<xsl:value-of select="$SRT2"/> |
465 |
</xsl:element> |
466 |
<xsl:element name="direct"> |
467 |
<xsl:value-of select="$SRT1"/> |
468 |
</xsl:element> |
469 |
</xsl:otherwise> |
470 |
</xsl:choose> |
471 |
</xsl:element> |
472 |
</xsl:when> |
473 |
<xsl:otherwise> |
474 |
|
475 |
<xsl:element name="spdoinfo"> |
476 |
<xsl:element name="indspref"> |
477 |
<xsl:value-of select="spatialRepresentationType[1]"/> |
478 |
</xsl:element> |
479 |
<xsl:element name="direct"> |
480 |
<xsl:value-of select="spatialRepresentationType[2]"/> |
481 |
</xsl:element> |
482 |
</xsl:element> |
483 |
</xsl:otherwise> |
484 |
</xsl:choose--> |
485 |
</xsl:template> |
486 |
<!-- PLANTILLA CITATION--> |
487 |
<xsl:template match="citation/CI_Citation | authority/CI_Citation | sourceCitation/CI_Citation"> |
488 |
<xsl:element name="citeinfo"> |
489 |
<xsl:choose> |
490 |
<xsl:when test="count(descendant::citedResponsibleParty/CI_ResponsibleParty[normalize-space(role)='originator'])>0"> |
491 |
<!-- si hay al menos una aparicion de citedResponsibleParty con role originator..--> |
492 |
<xsl:for-each select="./citedResponsibleParty/CI_ResponsibleParty"> |
493 |
<xsl:if test="normalize-space(./role)='originator'"> |
494 |
<!-- por cada citedResponsibleParty con role originator se crea el elemento origin. --> |
495 |
<!-- el nombre del productor se toma de OrganisationName por convenci?n, --> |
496 |
<!-- de la misma forma que en la hoja FGDC->ISO el contenido del elemento --> |
497 |
<!-- origin se mapeaba en OrganisationName --> |
498 |
<xsl:element name="origin"> |
499 |
<xsl:value-of select="./organisationName"/> |
500 |
</xsl:element> |
501 |
</xsl:if> |
502 |
</xsl:for-each> |
503 |
</xsl:when> |
504 |
<xsl:otherwise> |
505 |
<!-- el elemento origin es obligatorio. Se crea vacio.--> |
506 |
<xsl:element name="origin"/> |
507 |
</xsl:otherwise> |
508 |
</xsl:choose> |
509 |
<xsl:element name="pubdate"> |
510 |
<xsl:value-of select="./date/*/date"/> |
511 |
</xsl:element> |
512 |
<!-- pubtime no tiene mapeo posible --> |
513 |
<xsl:element name="title"> |
514 |
<xsl:value-of select="./title"/> |
515 |
</xsl:element> |
516 |
<xsl:if test="edition"> |
517 |
<xsl:element name="edition"> |
518 |
<xsl:value-of select="./edition"/> |
519 |
</xsl:element> |
520 |
</xsl:if> |
521 |
<xsl:if test="presentationForm"> |
522 |
<xsl:element name="geoform"> |
523 |
<xsl:value-of select="./presentationForm"/> |
524 |
</xsl:element> |
525 |
</xsl:if> |
526 |
<xsl:if test="series/CI_Series"> |
527 |
<xsl:element name="serinfo"> |
528 |
<xsl:element name="sername"> |
529 |
<!-- Name es opcional, sername obligatorio--> |
530 |
<!-- si Name no aparece, sername aparecera vacio--> |
531 |
<xsl:value-of select="./series/*/name"/> |
532 |
</xsl:element> |
533 |
<xsl:element name="issue"> |
534 |
<!-- IssueIdentification es opcional, issue obligatorio--> |
535 |
<!-- si IssueIdentification no aparece, issue aparecera vacio--> |
536 |
<xsl:value-of select="./series/*/issueIdentification"/> |
537 |
</xsl:element> |
538 |
</xsl:element> |
539 |
</xsl:if> |
540 |
<xsl:if test="count(descendant::citedResponsibleParty/CI_ResponsibleParty[normalize-space(role)='publisher'])>0"> |
541 |
<!-- pubinfo solo puede aparecer una vez, de modo que se mapea con la primera --> |
542 |
<!-- aparicion de CitedResponsibleParty:CI_ResponsibleParty con Role publisher, si hay mas de una --> |
543 |
<xsl:for-each select="descendant::citedResponsibleParty/CI_ResponsibleParty[normalize-space(role)='publisher']"> |
544 |
<xsl:if test="position()=1"> |
545 |
<xsl:element name="pubinfo"> |
546 |
<xsl:element name="pubplace"> |
547 |
<xsl:value-of select="./contactInfo/*/address/*/city"/> |
548 |
</xsl:element> |
549 |
<xsl:element name="publish"> |
550 |
<xsl:value-of select="./organisationName"/> |
551 |
</xsl:element> |
552 |
</xsl:element> |
553 |
</xsl:if> |
554 |
</xsl:for-each> |
555 |
</xsl:if> |
556 |
<xsl:if test="otherCitationDetails"> |
557 |
<xsl:element name="othercit"> |
558 |
<xsl:value-of select="./otherCitationDetails"/> |
559 |
</xsl:element> |
560 |
</xsl:if> |
561 |
<xsl:for-each select="./citedResponsibleParty/CI_ResponsibleParty"> |
562 |
<xsl:if test="./contactInfo/*/onlineResource/CI_OnlineResource and normalize-space(./role)='originator' "> |
563 |
<!-- por cada citedResponsibleParty con Role originator que contenga cntOnLineRes--> |
564 |
<!-- se crea un elemento onlink--> |
565 |
<xsl:element name="onlink"> |
566 |
<xsl:value-of select="./contactInfo/*/onlineResource/*/linkage"/> |
567 |
</xsl:element> |
568 |
</xsl:if> |
569 |
</xsl:for-each> |
570 |
<!-- Larger_work_Citation no tiene traduccion --> |
571 |
<!-- A?ado elementos propios del fgdc IAAA--> |
572 |
<xsl:if test="identifier/*/code"> |
573 |
<xsl:element name="citId"> |
574 |
<xsl:value-of select="./identifier/*/code"/> |
575 |
</xsl:element> |
576 |
</xsl:if> |
577 |
<xsl:if test="ISBN"> |
578 |
<xsl:element name="isbn"> |
579 |
<xsl:value-of select="./ISBN"/> |
580 |
</xsl:element> |
581 |
</xsl:if> |
582 |
<xsl:if test="ISSN"> |
583 |
<xsl:element name="issn"> |
584 |
<xsl:value-of select="./ISSN"/> |
585 |
</xsl:element> |
586 |
</xsl:if> |
587 |
</xsl:element> |
588 |
</xsl:template> |
589 |
<!-- Fin plantilla CITATION--> |
590 |
<!-- Plantilla KEYWORDS--> |
591 |
<xsl:template match="descriptiveKeywords/MD_Keywords"> |
592 |
<xsl:choose> |
593 |
<xsl:when test="normalize-space(./type)='theme'"> |
594 |
<!-- Se realiza la suposici?n de q siempre va a haber al menos --> |
595 |
<!-- un elemento TypeCd con el atributo "theme", ya que el --> |
596 |
<!-- elemento theme es obligatorio en FGDC --> |
597 |
<!-- En FGDC IAAA, tpCat es obligatorio aqui, que se mapea con el elemento topicCategory de ISO. --> |
598 |
<!-- Por tanto, en este lugar voy a meter todos los topicCategory separados por una coma--> |
599 |
<xsl:element name="theme"> |
600 |
<xsl:element name="themekt"> |
601 |
<xsl:value-of select="thesaurusName/*/title"/> |
602 |
</xsl:element> |
603 |
<xsl:for-each select="./keyword"> |
604 |
<xsl:element name="themekey"> |
605 |
<xsl:value-of select="."/> |
606 |
</xsl:element> |
607 |
</xsl:for-each> |
608 |
</xsl:element> |
609 |
</xsl:when> |
610 |
<xsl:when test="normalize-space(./type)='place'"> |
611 |
<xsl:element name="place"> |
612 |
<xsl:element name="placekt"> |
613 |
<xsl:value-of select="thesaurusName/*/title"/> |
614 |
</xsl:element> |
615 |
<xsl:for-each select="./keyword"> |
616 |
<xsl:element name="placekey"> |
617 |
<xsl:value-of select="."/> |
618 |
</xsl:element> |
619 |
</xsl:for-each> |
620 |
</xsl:element> |
621 |
</xsl:when> |
622 |
<xsl:when test="normalize-space(./type)='stratum'"> |
623 |
<xsl:element name="stratum"> |
624 |
<xsl:element name="stratkt"> |
625 |
<xsl:value-of select="thesaurusName/*/title"/> |
626 |
</xsl:element> |
627 |
<xsl:for-each select="./keyword"> |
628 |
<xsl:element name="stratkey"> |
629 |
<xsl:value-of select="."/> |
630 |
</xsl:element> |
631 |
</xsl:for-each> |
632 |
</xsl:element> |
633 |
</xsl:when> |
634 |
<xsl:when test="normalize-space(./type)='temporal'"> |
635 |
<xsl:element name="temporal"> |
636 |
<xsl:element name="tempkt"> |
637 |
<xsl:value-of select="thesaurusName/*/title"/> |
638 |
</xsl:element> |
639 |
<xsl:for-each select="./keyword"> |
640 |
<xsl:element name="tempkey"> |
641 |
<xsl:value-of select="."/> |
642 |
</xsl:element> |
643 |
</xsl:for-each> |
644 |
</xsl:element> |
645 |
</xsl:when> |
646 |
<xsl:otherwise> |
647 |
<!--no mapeamos el resto de posibles atributos --> |
648 |
</xsl:otherwise> |
649 |
</xsl:choose> |
650 |
</xsl:template> |
651 |
<!--Fin de la Plantilla KEYWORDS--> |
652 |
<xsl:template match="pointOfContact/CI_ResponsibleParty | distributorContact/CI_ResponsibleParty | contact/CI_ResponsibleParty | processor/CI_ResponsibleParty"> |
653 |
<xsl:element name="cntinfo"> |
654 |
<xsl:choose> |
655 |
<!-- convencion:siempre que hay un OrganisationName, se genera cntorgp --> |
656 |
<!-- solo si hay un solo IndividualName se genera cntperp --> |
657 |
<!-- si existe OrganisationName...--> |
658 |
<xsl:when test="organisationName"> |
659 |
<xsl:element name="cntorgp"> |
660 |
<xsl:element name="cntorg"> |
661 |
<xsl:value-of select="./organisationName"/> |
662 |
</xsl:element> |
663 |
<!-- si existe ademas IndividualName...--> |
664 |
<xsl:if test="individualName"> |
665 |
<xsl:element name="cntper"> |
666 |
<xsl:value-of select="./individualName"/> |
667 |
</xsl:element> |
668 |
</xsl:if> |
669 |
</xsl:element> |
670 |
</xsl:when> |
671 |
<xsl:otherwise> |
672 |
<!-- si solo existe IndividualName...--> |
673 |
<xsl:choose> |
674 |
<xsl:when test="individualName"> |
675 |
<xsl:element name="cntperp"> |
676 |
<xsl:element name="cntper"> |
677 |
<xsl:value-of select="./individualName"/> |
678 |
</xsl:element> |
679 |
</xsl:element> |
680 |
</xsl:when> |
681 |
<xsl:otherwise> |
682 |
<!-- si no existen ninguno de los dos..--> |
683 |
<xsl:element name="cntorgp"> |
684 |
<xsl:element name="cntorg"/> |
685 |
</xsl:element> |
686 |
</xsl:otherwise> |
687 |
</xsl:choose> |
688 |
</xsl:otherwise> |
689 |
</xsl:choose> |
690 |
<xsl:if test="positionName"> |
691 |
<xsl:element name="cntpos"> |
692 |
<xsl:value-of select="./positionName"/> |
693 |
</xsl:element> |
694 |
</xsl:if> |
695 |
<!-- cntaddr(FGDC) es (1..n) y ContactInfo:CI_Contact/Address:CI_Address es (0..1) --> |
696 |
<xsl:choose> |
697 |
<xsl:when test="./contactInfo/*/address/CI_Address"> |
698 |
<xsl:apply-templates select="./contactInfo/*/address/CI_Address"/> |
699 |
</xsl:when> |
700 |
<xsl:otherwise> |
701 |
<!-- se crea el elemento vacio porque es obligatorio--> |
702 |
<xsl:element name="cntaddr"> |
703 |
<xsl:element name="addrtype"/> |
704 |
<xsl:element name="city"/> |
705 |
<xsl:element name="state"/> |
706 |
<xsl:element name="postal"/> |
707 |
</xsl:element> |
708 |
</xsl:otherwise> |
709 |
</xsl:choose> |
710 |
<!-- cntvoice(FGDC) es (1..n) y ContactInfo:CI_Contact/Phone:CI_Telephone/Voice es (0..n)--> |
711 |
<xsl:choose> |
712 |
<xsl:when test="./contactInfo/*/phone/*/voice"> |
713 |
<xsl:for-each select="./contactInfo/*/phone/*/voice"> |
714 |
<xsl:element name="cntvoice"> |
715 |
<xsl:value-of select="."/> |
716 |
</xsl:element> |
717 |
</xsl:for-each> |
718 |
</xsl:when> |
719 |
<xsl:otherwise> |
720 |
<xsl:element name="cntvoice"/> |
721 |
</xsl:otherwise> |
722 |
</xsl:choose> |
723 |
<!-- cntfax(FGDC) es (0..n) y ContactInfo:CI_Contact/Phone:CI_Telephone/Facsimile es (0..n)--> |
724 |
<xsl:for-each select="./contactInfo/*/phone/*/facsimile"> |
725 |
<xsl:element name="cntfax"> |
726 |
<xsl:value-of select="."/> |
727 |
</xsl:element> |
728 |
</xsl:for-each> |
729 |
<!-- cntemail(FGDC) es (0..n) y ContactInfo:CI_Contact/Address:CI_Address/ElectronicMailAddress es (0..n)--> |
730 |
<xsl:for-each select="./contactInfo/*/address/*/electronicMailAddress"> |
731 |
<xsl:element name="cntemail"> |
732 |
<xsl:value-of select="."/> |
733 |
</xsl:element> |
734 |
</xsl:for-each> |
735 |
<!-- hours(FGDC) es (0..1) y ContactInfo:CI_Contact/HoursOfService es (0..1)--> |
736 |
<xsl:if test="./contactInfo/*/hoursOfService"> |
737 |
<xsl:element name="hours"> |
738 |
<xsl:value-of select="./contactInfo/*/hoursOfService"/> |
739 |
</xsl:element> |
740 |
</xsl:if> |
741 |
<!-- cntinst(FGDC) es (0..1) y ContactInfo:CI_Contact/ContactInstructions es (0..1)--> |
742 |
<xsl:if test="./contactInfo/*/contactInstructions"> |
743 |
<xsl:element name="cntinst"> |
744 |
<xsl:value-of select="./contactInfo/*/contactInstructions"/> |
745 |
</xsl:element> |
746 |
</xsl:if> |
747 |
<!-- Role no tiene equivalente en FGDC--> |
748 |
</xsl:element> |
749 |
</xsl:template> |
750 |
<xsl:template match="address/CI_Address"> |
751 |
<xsl:element name="cntaddr"> |
752 |
<!-- este elemento no tiene equivalente en ISO--> |
753 |
<xsl:element name="addrtype"/> |
754 |
<!-- ambos son (0..n)--> |
755 |
<xsl:for-each select="./deliveryPoint"> |
756 |
<xsl:element name="address"> |
757 |
<xsl:value-of select="."/> |
758 |
</xsl:element> |
759 |
</xsl:for-each> |
760 |
<!--City(FGDC) es (1..1) y City(ISO) es (0..1) --> |
761 |
<xsl:element name="city"> |
762 |
<xsl:value-of select="./city"/> |
763 |
</xsl:element> |
764 |
<!--state(FGDC) es (1.1) y AdministrativeArea(ISO) es (0..1) --> |
765 |
<xsl:element name="state"> |
766 |
<xsl:value-of select="./administrativeArea"/> |
767 |
</xsl:element> |
768 |
<!--postal(FGDC) es (1.1) y PostalCode(ISO) es (0..1) --> |
769 |
<xsl:element name="postal"> |
770 |
<xsl:value-of select="./postalCode"/> |
771 |
</xsl:element> |
772 |
<!-- Country(FGDC) es (0..1) y Country(iSO) es (0..1)--> |
773 |
<xsl:if test="./country"> |
774 |
<xsl:element name="country"> |
775 |
<xsl:value-of select="./country"/> |
776 |
</xsl:element> |
777 |
</xsl:if> |
778 |
</xsl:element> |
779 |
</xsl:template> |
780 |
<xsl:template match="MD_Distributor"> |
781 |
<!-- Estoy suponiendo que hay la relacion entre los elementos MD_Format, MD_DigitalTransferOptions--> |
782 |
<!-- , MD_StandarOrderProcess es 1-1-1 en cada MD_Distributor, y que por tanto se corresponden sus contenidos--> |
783 |
<!-- segun su posicion como hijos de MD_Didtributor --> |
784 |
<xsl:element name="distinfo"> |
785 |
<xsl:element name="distrib"> |
786 |
<xsl:apply-templates select="./distributorContact/CI_ResponsibleParty"/> |
787 |
</xsl:element> |
788 |
<!-- resdesc no tiene equivalente en ISO--> |
789 |
<!-- distliab es obligatorio pero no tiene equivalente en ISO--> |
790 |
<xsl:element name="distliab"/> |
791 |
<!-- antes de empezar a mapear el elemento stdorder hay que comprobar --> |
792 |
<!-- que la relacion entre los elementos MD_Format, MD_DigitalTransferOption y MD_StandardOrderProcess--> |
793 |
<!-- sea 1-1-1 en cada elemento Distributor:MD_Distributor--> |
794 |
<xsl:variable name="numDistorFormat"> |
795 |
<xsl:value-of select="count(./distributorFormat/MD_Format)"/> |
796 |
</xsl:variable> |
797 |
<xsl:variable name="numDistorTran"> |
798 |
<xsl:value-of select="count(./distributorTransferOptions/MD_DigitalTransferOptions)"/> |
799 |
</xsl:variable> |
800 |
<xsl:choose> |
801 |
<!-- si todos los elementos Distributor:MD_Distributor cumplen las condiciones...--> |
802 |
<xsl:when test="$numDistorFormat = $numDistorTran"> |
803 |
<xsl:element name="stdorder"> |
804 |
<xsl:for-each select="./distributorFormat/MD_Format"> |
805 |
<!-- obtengo la posicion del actual distorOrdPrc --> |
806 |
<xsl:variable name="pos"> |
807 |
<xsl:value-of select="position()"/> |
808 |
</xsl:variable> |
809 |
<xsl:element name="digform"> |
810 |
<xsl:element name="digtinfo"> |
811 |
<!-- ambos son (1..1) --> |
812 |
<xsl:element name="formname"> |
813 |
<xsl:value-of select="./name"/> |
814 |
</xsl:element> |
815 |
<!-- formvern(FGDC) es (0..1) y formatVer(ISO) es (1..1)--> |
816 |
<xsl:element name="formvern"> |
817 |
<xsl:value-of select="./version"/> |
818 |
</xsl:element> |
819 |
<!-- formspec(FGDC) es (0..1) y Specification(ISO) es (0..1)--> |
820 |
<xsl:if test="specification"> |
821 |
<xsl:element name="formspec"> |
822 |
<xsl:value-of select="specification"/> |
823 |
</xsl:element> |
824 |
</xsl:if> |
825 |
<!-- se toma UnitsOfDistribution del elemento distroTran --> |
826 |
<!-- con la misma posicion que la de DistributorFormat: MD_Format--> |
827 |
<xsl:for-each select="../../distributorTransferOptions/MD_DigitalTransferOptions"> |
828 |
<xsl:if test="position()=$pos and ./unitsOfDistribution"> |
829 |
<xsl:element name="formcont"> |
830 |
<xsl:value-of select="./unitsOfDistribution"/> |
831 |
</xsl:element> |
832 |
</xsl:if> |
833 |
</xsl:for-each> |
834 |
<!-- filedec(FGDC) es (0..1) y FileDecompresionTechnique(ISO) es (0..1)--> |
835 |
<xsl:if test="fileDecompresionTechnique"> |
836 |
<xsl:element name="filedec"> |
837 |
<xsl:value-of select="fileDecompresionTechnique"/> |
838 |
</xsl:element> |
839 |
</xsl:if> |
840 |
<!-- se toma TransferSize del elemento distroTran --> |
841 |
<!-- con la misma posicion que la de DistributorFormat: MD_Format--> |
842 |
<xsl:for-each select="../../distributorTransferOptions/MD_DigitalTransferOptions"> |
843 |
<xsl:if test="position()=$pos and ./TransferSize"> |
844 |
<xsl:element name="transize"> |
845 |
<xsl:value-of select="./TransferSize"/> |
846 |
</xsl:element> |
847 |
</xsl:if> |
848 |
</xsl:for-each> |
849 |
</xsl:element> |
850 |
<!-- segun la suposicion comentada arriba, habra 1 DistributorTransferOptions:MD_DigitalTransferOptions por cada--> |
851 |
<!-- distorOrdPrc y se corresponderan segun su posicion como hijos de Distributor:MD_Distributor--> |
852 |
<xsl:for-each select="../../distributorTransferOptions/MD_DigitalTransferOptions"> |
853 |
<xsl:if test="position()=$pos"> |
854 |
<xsl:element name="digtopt"> |
855 |
<xsl:if test="./online/CI_OnlineResource"> |
856 |
<xsl:element name="onlinopt"> |
857 |
<xsl:for-each select="./online/CI_OnlineResource"> |
858 |
<xsl:element name="computer"> |
859 |
<xsl:element name="networka"> |
860 |
<xsl:element name="networkr"> |
861 |
<xsl:value-of select="./linkage"/> |
862 |
</xsl:element> |
863 |
</xsl:element> |
864 |
</xsl:element> |
865 |
</xsl:for-each> |
866 |
</xsl:element> |
867 |
</xsl:if> |
868 |
<xsl:if test="./offLine"> |
869 |
<xsl:element name="offoptn"> |
870 |
<xsl:element name="offmedia"> |
871 |
<xsl:value-of select="./offLine/*/name"/> |
872 |
</xsl:element> |
873 |
<xsl:if test="./offLine/*/density"> |
874 |
<xsl:element name="reccap"> |
875 |
<xsl:for-each select="./offLine/*/density"> |
876 |
<xsl:element name="recden"> |
877 |
<xsl:value-of select="."/> |
878 |
</xsl:element> |
879 |
</xsl:for-each> |
880 |
<xsl:element name="recdenu"> |
881 |
<xsl:value-of select="./offLine/*/densityUnits"/> |
882 |
</xsl:element> |
883 |
</xsl:element> |
884 |
</xsl:if> |
885 |
<xsl:choose> |
886 |
<xsl:when test="./offLine/*/mediumFormat"> |
887 |
<xsl:for-each select="./offLine/*/mediumFormat"> |
888 |
<xsl:element name="recfmt"> |
889 |
<xsl:value-of select="."/> |
890 |
</xsl:element> |
891 |
</xsl:for-each> |
892 |
</xsl:when> |
893 |
<xsl:otherwise> |
894 |
<xsl:element name="recfmt"/> |
895 |
</xsl:otherwise> |
896 |
</xsl:choose> |
897 |
<xsl:if test="./offLine/*/mediumNote"> |
898 |
<xsl:element name="compat"> |
899 |
<xsl:value-of select="./offLine/*/mediumNote"/> |
900 |
</xsl:element> |
901 |
</xsl:if> |
902 |
</xsl:element> |
903 |
</xsl:if> |
904 |
</xsl:element> |
905 |
</xsl:if> |
906 |
</xsl:for-each> |
907 |
</xsl:element> |
908 |
</xsl:for-each> |
909 |
<xsl:for-each select="./distributionOrderProcess/MD_StandardOrderProcess"> |
910 |
<xsl:if test="position()=1"> |
911 |
<!-- fees(FGDC) es (1..1) y Fees(ISO) es (0..1)--> |
912 |
<xsl:element name="fees"> |
913 |
<xsl:value-of select="./fees/monetaryAmt"/> |
914 |
</xsl:element> |
915 |
<!-- ordering(FGDC) es (0..1) y OrderingInstructions(ISO) es (0..1)--> |
916 |
<xsl:if test="./orderingInstructions"> |
917 |
<xsl:element name="ordering"> |
918 |
<xsl:value-of select="./orderingInstructions"/> |
919 |
</xsl:element> |
920 |
</xsl:if> |
921 |
<!-- turnarnd(FGDC) es (0..1) y Turnaround(ISO) es (0..1)--> |
922 |
<xsl:if test="./turnaround"> |
923 |
<xsl:element name="turnarnd"> |
924 |
<xsl:value-of select="./turnaround"/> |
925 |
</xsl:element> |
926 |
</xsl:if> |
927 |
</xsl:if> |
928 |
</xsl:for-each> |
929 |
</xsl:element> |
930 |
</xsl:when> |
931 |
<xsl:otherwise> |
932 |
<!-- El formato requerido para el elemento MD_Distributor en el archivo xml origen exige que --> |
933 |
<!-- dicho elemento tenga el mismo numero de hijos de tipo MD_Format, de tipo MD_DigitalTransferOption --> |
934 |
<!-- y de tipo MD_StandarPrderProcess.Esta condici?n no se cumple en el fichero xml ISO origen, por lo --> |
935 |
<!-- tanto en el fichero destino no se ha creado ningun elemento stdorder. --> |
936 |
</xsl:otherwise> |
937 |
</xsl:choose> |
938 |
<!-- PlannedAvailableDateTime es (0..n) y availabl es (0..1) --> |
939 |
<!-- por tanto solo trasladamos la primera ocurrencia --> |
940 |
<xsl:if test="./distributionOrderProcess/MD_StandardOrderProcess/plannedAvailableDateTime"> |
941 |
<xsl:element name="availabl"> |
942 |
<xsl:element name="timeinfo"> |
943 |
<xsl:element name="sngdate"> |
944 |
<xsl:element name="caldate"> |
945 |
<xsl:value-of select="./distributionOrderProcess/MD_StandardOrderProcess/plannedAvailableDateTime"/> |
946 |
</xsl:element> |
947 |
</xsl:element> |
948 |
</xsl:element> |
949 |
</xsl:element> |
950 |
</xsl:if> |
951 |
</xsl:element> |
952 |
</xsl:template> |
953 |
<xsl:template match="referenceSystemIdentifier/RS_Identifier | projection/RS_Identifier | ellipsoid/RS_Identifier | datum/RS_Identifier"> |
954 |
<xsl:if test="./authority/CI_Citation"> |
955 |
<xsl:element name="identAuth"> |
956 |
<xsl:apply-templates select="./authority/CI_Citation"/> |
957 |
</xsl:element> |
958 |
</xsl:if> |
959 |
<xsl:element name="identCode"> |
960 |
<xsl:value-of select="code"/> |
961 |
</xsl:element> |
962 |
</xsl:template> |
963 |
<xsl:template match="referenceSystemInfo"> |
964 |
<xsl:element name="refSysInfo"> |
965 |
<xsl:for-each select="MD_ReferenceSystem/referenceSystemIdentifier/RS_Identifier"> |
966 |
<!--xsl:element name="refSysInfo"--> |
967 |
<xsl:element name="refSystem"> |
968 |
<xsl:element name="refSysId"> |
969 |
<xsl:apply-templates select="."/> |
970 |
</xsl:element> |
971 |
</xsl:element> |
972 |
<!--/xsl:element--> |
973 |
</xsl:for-each> |
974 |
<xsl:for-each select="MD_CRS"> |
975 |
<!--xsl:element name="refSysInfo"--> |
976 |
<xsl:element name="mdCoRefSys"> |
977 |
<xsl:if test="referenceSystemIdentifier/RS_Identifier"> |
978 |
<xsl:element name="refSysId"> |
979 |
<xsl:apply-templates select="referenceSystemIdentifier/RS_Identifier"/> |
980 |
</xsl:element> |
981 |
</xsl:if> |
982 |
<xsl:if test="projection"> |
983 |
<xsl:element name="projection"> |
984 |
<xsl:apply-templates select="projection/RS_Identifier"/> |
985 |
</xsl:element> |
986 |
</xsl:if> |
987 |
<xsl:if test="ellipsoid"> |
988 |
<xsl:element name="ellipsoid"> |
989 |
<xsl:apply-templates select="ellipsoid/RS_Identifier"/> |
990 |
</xsl:element> |
991 |
</xsl:if> |
992 |
<xsl:if test="datum"> |
993 |
<xsl:element name="datum"> |
994 |
<xsl:apply-templates select="datum/RS_Identifier"/> |
995 |
</xsl:element> |
996 |
</xsl:if> |
997 |
<xsl:if test="projectionParameters/MD_ProjectionParameters"> |
998 |
<xsl:element name="projParas"> |
999 |
<xsl:if test="projectionParameters/MD_ProjectionParameters/zone"> |
1000 |
<xsl:element name="zone"> |
1001 |
<xsl:value-of select="projectionParameters/MD_ProjectionParameters/zone"/> |
1002 |
</xsl:element> |
1003 |
</xsl:if> |
1004 |
<xsl:if test="projectionParameters/MD_ProjectionParameters/standardParallel"> |
1005 |
<!-- Este elemento va de 0 a 2--> |
1006 |
<xsl:for-each select="projectionParameters/MD_ProjectionParameters/standardParallel"> |
1007 |
<xsl:element name="stanPara"> |
1008 |
<xsl:value-of select="."/> |
1009 |
</xsl:element> |
1010 |
</xsl:for-each> |
1011 |
</xsl:if> |
1012 |
<xsl:if test="projectionParameters/MD_ProjectionParameters/longitudeOfCentralMeridian"> |
1013 |
<xsl:element name="longCntMer"> |
1014 |
<xsl:value-of select="projectionParameters/MD_ProjectionParameters/longitudeOfCentralMeridian"/> |
1015 |
</xsl:element> |
1016 |
</xsl:if> |
1017 |
<xsl:if test="projectionParameters/MD_ProjectionParameters/latitudeOfProjectionOrigin"> |
1018 |
<xsl:element name="latProjOri"> |
1019 |
<xsl:value-of select="projectionParameters/MD_ProjectionParameters/latitudeOfProjectionOrigin"/> |
1020 |
</xsl:element> |
1021 |
</xsl:if> |
1022 |
<xsl:if test="projectionParameters/MD_ProjectionParameters/falseEasting"> |
1023 |
<xsl:element name="falEastng"> |
1024 |
<xsl:value-of select="projectionParameters/MD_ProjectionParameters/falseEasting"/> |
1025 |
</xsl:element> |
1026 |
</xsl:if> |
1027 |
<xsl:if test="projectionParameters/MD_ProjectionParameters/falseNorthing"> |
1028 |
<xsl:element name="falNorthng"> |
1029 |
<xsl:value-of select="projectionParameters/MD_ProjectionParameters/falseNorthing"/> |
1030 |
</xsl:element> |
1031 |
</xsl:if> |
1032 |
<xsl:if test="projectionParameters/MD_ProjectionParameters/falseEastingNorthingUnits"> |
1033 |
<xsl:element name="falENUnits"> |
1034 |
<xsl:value-of select="projectionParameters/MD_ProjectionParameters/falseEastingNorthingUnits"/> |
1035 |
</xsl:element> |
1036 |
</xsl:if> |
1037 |
<xsl:if test="projectionParameters/MD_ProjectionParameters/scaleFactorAtEquator"> |
1038 |
<xsl:element name="sclFacEqu"> |
1039 |
<xsl:value-of select="projectionParameters/MD_ProjectionParameters/scaleFactorAtEquator"/> |
1040 |
</xsl:element> |
1041 |
</xsl:if> |
1042 |
<xsl:if test="projectionParameters/MD_ProjectionParameters/heightOfProspectivePointsAboveSurface"> |
1043 |
<xsl:element name="hgtProsPt"> |
1044 |
<xsl:value-of select="projectionParameters/MD_ProjectionParameters/heightOfProspectivePointsAboveSurface"/> |
1045 |
</xsl:element> |
1046 |
</xsl:if> |
1047 |
<xsl:if test="projectionParameters/MD_ProjectionParameters/longitudeOfProjectionCenter"> |
1048 |
<xsl:element name="longProjCnt"> |
1049 |
<xsl:value-of select="projectionParameters/MD_ProjectionParameters/longitudeOfProjectionCenter"/> |
1050 |
</xsl:element> |
1051 |
</xsl:if> |
1052 |
<xsl:if test="projectionParameters/MD_ProjectionParameters/latitudeOfProjectionCenter"> |
1053 |
<xsl:element name="latProjCnt"> |
1054 |
<xsl:value-of select="projectionParameters/MD_ProjectionParameters/latitudeOfProjectionCenter"/> |
1055 |
</xsl:element> |
1056 |
</xsl:if> |
1057 |
<xsl:if test="projectionParameters/MD_ProjectionParameters/scaleFactorAtCenterLine"> |
1058 |
<xsl:element name="sclFacCnt"> |
1059 |
<xsl:value-of select="projectionParameters/MD_ProjectionParameters/scaleFactorAtCenterLine"/> |
1060 |
</xsl:element> |
1061 |
</xsl:if> |
1062 |
<xsl:if test="projectionParameters/MD_ProjectionParameters/straightVerticalLongitudeFromPole"> |
1063 |
<xsl:element name="stVrLongPl"> |
1064 |
<xsl:value-of select="projectionParameters/MD_ProjectionParameters/straightVerticalLongitudeFromPole"/> |
1065 |
</xsl:element> |
1066 |
</xsl:if> |
1067 |
<xsl:if test="projectionParameters/MD_ProjectionParameters/scaleFactorAtProjectionOrigin"> |
1068 |
<xsl:element name="sclFacPrOr"> |
1069 |
<xsl:value-of select="projectionParameters/MD_ProjectionParameters/scaleFactorAtProjectionOrigin"/> |
1070 |
</xsl:element> |
1071 |
</xsl:if> |
1072 |
<xsl:if test="projectionParameters/MD_ProjectionParameters/obliqueLineAzimuthParameter/MD_ObliqueLineAzimuth"> |
1073 |
<xsl:element name="ObLnAziPars"> |
1074 |
<xsl:element name="AziAngle"> |
1075 |
<xsl:value-of select="projectionParameters/MD_ProjectionParameters/obliqueLineAzimuthParameter/MD_ObliqueLineAzimuth/azimuthAngle"/> |
1076 |
</xsl:element> |
1077 |
<xsl:element name="AziPtLong"> |
1078 |
<xsl:value-of select="projectionParameters/MD_ProjectionParameters/obliqueLineAzimuthParameter/MD_ObliqueLineAzimuth/azimuthMeasurePointLongitude"/> |
1079 |
</xsl:element> |
1080 |
</xsl:element> |
1081 |
</xsl:if> |
1082 |
<xsl:if test="projectionParameters/MD_ProjectionParameters/obliqueLinePointParameter/MD_ObliqueLinePoint"> |
1083 |
<xsl:for-each select="projectionParameters/MD_ProjectionParameters/obliqueLinePointParameter/MD_ObliqueLinePoint"> |
1084 |
<xsl:element name="ObLnPtPars"> |
1085 |
<xsl:element name="ObLineLat"> |
1086 |
<xsl:value-of select="obliqueLineLatitude"/> |
1087 |
</xsl:element> |
1088 |
<xsl:element name="ObLineLong"> |
1089 |
<xsl:value-of select="obliqueLineLongitude"/> |
1090 |
</xsl:element> |
1091 |
</xsl:element> |
1092 |
</xsl:for-each> |
1093 |
</xsl:if> |
1094 |
</xsl:element> |
1095 |
</xsl:if> |
1096 |
<xsl:if test="ellipsoidParameters/MD_EllipsoidParameters"> |
1097 |
<xsl:element name="ellParas"> |
1098 |
<xsl:if test="ellipsoidParameters/MD_EllipsoidParameters/semiMajorAxis"> |
1099 |
<xsl:element name="semiMajAx"> |
1100 |
<xsl:value-of select="ellipsoidParameters/MD_EllipsoidParameters/semiMajorAxis"/> |
1101 |
</xsl:element> |
1102 |
</xsl:if> |
1103 |
<xsl:if test="ellipsoidParameters/MD_EllipsoidParameters/axisUnits"> |
1104 |
<xsl:element name="axisUnits"> |
1105 |
<xsl:value-of select="ellipsoidParameters/MD_EllipsoidParameters/axisUnits"/> |
1106 |
</xsl:element> |
1107 |
</xsl:if> |
1108 |
<xsl:if test="ellipsoidParameters/MD_EllipsoidParameters/denominatorOfFlatteringRatio"> |
1109 |
<xsl:element name="denFlaRat"> |
1110 |
<xsl:value-of select="ellipsoidParameters/MD_EllipsoidParameters/denominatorOfFlatteringRatio"/> |
1111 |
</xsl:element> |
1112 |
</xsl:if> |
1113 |
</xsl:element> |
1114 |
</xsl:if> |
1115 |
</xsl:element> |
1116 |
<!--/xsl:element--> |
1117 |
</xsl:for-each> |
1118 |
</xsl:element> |
1119 |
</xsl:template> |
1120 |
<!-- REVISARRRR??????????????? --> |
1121 |
<xsl:template match="extent/EX_Extent | sourceExtent/EX_Extent"> |
1122 |
<!--xsl:element name="timeinfo"--> |
1123 |
<xsl:choose> |
1124 |
<!--xsl:when test="./temporalElement/EX_TemporalExtent/extent/instant"> |
1125 |
<xsl:element name="sngdate"> |
1126 |
<xsl:element name="caldate"> |
1127 |
<xsl:value-of select="./temporalElement/EX_TemporalExtent/extent/instant"/> |
1128 |
</xsl:element> |
1129 |
</xsl:element> |
1130 |
</xsl:when> |
1131 |
<xsl:when test="./temporalElement/EX_TemporalExtent/extent/beginRange"> |
1132 |
<xsl:element name="sngdate"> |
1133 |
<xsl:element name="caldate"> |
1134 |
<xsl:value-of select="./temporalElement/EX_TemporalExtent/extent/beginRange/begin"/> |
1135 |
</xsl:element> |
1136 |
<xsl:element name="time"> |
1137 |
<xsl:value-of select="./temporalElement/EX_TemporalExtent/extent/beginRange/duration"/> |
1138 |
</xsl:element> |
1139 |
</xsl:element> |
1140 |
</xsl:when--> |
1141 |
<xsl:when test="./temporalElement/EX_TemporalExtent/beginEnd"> |
1142 |
<xsl:element name="timeinfo"> |
1143 |
<xsl:element name="rngdates"> |
1144 |
<xsl:element name="begdate"> |
1145 |
<xsl:value-of select="./temporalElement/EX_TemporalExtent/beginEnd/begin"/> |
1146 |
</xsl:element> |
1147 |
<xsl:element name="enddate"> |
1148 |
<xsl:value-of select="./temporalElement/EX_TemporalExtent/beginEnd/end"/> |
1149 |
</xsl:element> |
1150 |
</xsl:element> |
1151 |
</xsl:element> |
1152 |
</xsl:when> |
1153 |
<xsl:otherwise> |
1154 |
<!--xsl:element name="sngdate"> |
1155 |
<xsl:element name="caldate"/> |
1156 |
</xsl:element--> |
1157 |
</xsl:otherwise> |
1158 |
</xsl:choose> |
1159 |
<!--/xsl:element--> |
1160 |
</xsl:template> |
1161 |
<xsl:template match="dataQualityInfo"> |
1162 |
<!-- Scope, lineage , report --> |
1163 |
<!-- SCOPE no tiene emparejamientos --> |
1164 |
<!--xsl:if test="normalize-space(./DQ_DataQuality/report/DQ_ThematicAccuracy/@xsi:type)='DQ_QuantitativeAttributeAccuracy'"--> |
1165 |
<xsl:element name="attracc"> |
1166 |
<xsl:element name="attraccr"> |
1167 |
<!-- esto si el tipo de thematicAccuracy es el adecuado --> |
1168 |
<xsl:value-of select="./DQ_DataQuality/report/DQ_QuantitativeAttributeAccuracy/evaluationMethodDescription"/> |
1169 |
</xsl:element> |
1170 |
<xsl:element name="qattracc"> |
1171 |
<xsl:element name="attraccv"> |
1172 |
<!--Este se corresponde con una clase completa, value, que tiene varios elementos obligatorios. --> |
1173 |
<!--Por el momento lo emparejo con attribute name... y ya veremos... --> |
1174 |
<!--xsl:value-of select="./DQ_DataQuality/report/DQ_ThematicAccuracy/result/_DQ_Result/value/recordValue/attributes/AttributeName"/--> |
1175 |
<xsl:value-of select="./DQ_DataQuality/report/DQ_QuantitativeAttributeAccuracy/result/DQ_QuantitativeResult/value/recordValue/attributes/AttributeName"/> |
1176 |
</xsl:element> |
1177 |
<xsl:element name="attracce"> |
1178 |
<xsl:value-of select="./DQ_DataQuality/report/DQ_QuantitativeAttributeAccuracy/measureDescription"/> |
1179 |
</xsl:element> |
1180 |
</xsl:element> |
1181 |
</xsl:element> |
1182 |
<!--/xsl:if--> |
1183 |
<xsl:element name="logic"> |
1184 |
<!--elemento obligatorio en FGDC, asi que no compruebo si esta o no en ISO --> |
1185 |
<!--xsl:value-of select="./DQ_DataQuality/report/DQ_LogicalConsistency/evaluationMethodDescription"/--> |
1186 |
<xsl:value-of select="./DQ_DataQuality/report/DQ_ConceptualConsistency/evaluationMethodDescription"/> |
1187 |
</xsl:element> |
1188 |
<xsl:element name="complete"> |
1189 |
<!--xsl:value-of select="./DQ_DataQuality/report/DQ_Completeness/evaluationMethodDescription"/--> |
1190 |
<xsl:value-of select="./DQ_DataQuality/report/DQ_CompletenessCommision/evaluationMethodDescription"/> |
1191 |
</xsl:element> |
1192 |
<!--xsl:if test="normalize-space(./DQ_DataQuality/report/DQ_PositionalAccuracy/@xsi:type) = 'DQ_AbsoluteExternalPositionalAccuracy'"--> |
1193 |
<xsl:element name="posacc"> |
1194 |
<!--Comprobacion de que nameOfMesaure es horizontal --> |
1195 |
<xsl:if test="./DQ_DataQuality/report/DQ_AbsoluteExternalPositionalAccuracy/nameOfMeasure='horizontal'"> |
1196 |
<xsl:element name="horizpa"> |
1197 |
<xsl:element name="horizpar"> |
1198 |
<xsl:value-of select="./DQ_DataQuality/report/DQ_AbsoluteExternalPositionalAccuracy[nameOfMeasure='horizontal']/evaluationMethodDescription"/> |
1199 |
</xsl:element> |
1200 |
<xsl:element name="qhorizpa"> |
1201 |
<xsl:element name="horizpav"> |
1202 |
<!--Por el momento, lo dejo vacio porque el DQ_PostionalAccuracy con el que esta emparejado es una clase y no |
1203 |
se con que elemento en concreto relacionarlo. --> |
1204 |
</xsl:element> |
1205 |
<xsl:element name="horizpae"> |
1206 |
<xsl:value-of select="./DQ_DataQuality/report/DQ_AbsoluteExternalPositionalAccuracy[nameOfMeasure='horizontal']/measureDescription"/> |
1207 |
</xsl:element> |
1208 |
</xsl:element> |
1209 |
</xsl:element> |
1210 |
</xsl:if> |
1211 |
<!--Comprobacion de que nameOfMesaure es vertical --> |
1212 |
<xsl:if test="./DQ_DataQuality/report/DQ_AbsoluteExternalPositionalAccuracy/nameOfMeasure = 'vertical'"> |
1213 |
<xsl:element name="vertacc"> |
1214 |
<xsl:element name="vertaccr"> |
1215 |
<xsl:value-of select="./DQ_DataQuality/report/DQ_AbsoluteExternalPositionalAccuracy[nameOfMeasure='vertical']/evaluationMethodDescription"/> |
1216 |
</xsl:element> |
1217 |
<xsl:element name="qvertpa"> |
1218 |
<xsl:element name="vertaccv"> |
1219 |
<!--Por el momento, lo dejo vacio porque el DQ_PostionalAccuracy con el que esta emparejado es una clase y no |
1220 |
se con que elemento en concreto relacionarlo. --> |
1221 |
</xsl:element> |
1222 |
<xsl:element name="vertacce"> |
1223 |
<xsl:value-of select="./DQ_DataQuality/report/DQ_AbsoluteExternalPositionalAccuracy[nameOfMeasure='vertical']/measureDescription"/> |
1224 |
</xsl:element> |
1225 |
</xsl:element> |
1226 |
</xsl:element> |
1227 |
</xsl:if> |
1228 |
</xsl:element> |
1229 |
<!--/xsl:if--> |
1230 |
<!-- LINEAGE --> |
1231 |
<xsl:if test="./DQ_DataQuality/lineage"> |
1232 |
<xsl:element name="lineage"> |
1233 |
<xsl:for-each select="./DQ_DataQuality/lineage/LI_Lineage/source/LI_Source"> |
1234 |
<!-- statement es el primer elemento, pero no tiene emparejamiento --> |
1235 |
<xsl:element name="srcinfo"> |
1236 |
<xsl:element name="srccite"> |
1237 |
<xsl:apply-templates select="./sourceCitation/CI_Citation"/> |
1238 |
</xsl:element> |
1239 |
<xsl:if test="./scaleDenominator/*/denominator"> |
1240 |
<xsl:element name="srcscale"> |
1241 |
<xsl:value-of select="./scaleDenominator/*/denominator"/> |
1242 |
</xsl:element> |
1243 |
</xsl:if> |
1244 |
<xsl:element name="typesrc"> |
1245 |
<!--El FGDC propone el siguiente emparejamiento --> |
1246 |
<xsl:value-of select="./description"/> |
1247 |
</xsl:element> |
1248 |
<xsl:element name="srctime"> |
1249 |
<xsl:choose> |
1250 |
<xsl:when test="./sourceExtent/EX_Extent"> |
1251 |
<xsl:apply-templates select="./sourceExtent/EX_Extent"/> |
1252 |
</xsl:when> |
1253 |
<xsl:otherwise> |
1254 |
<xsl:element name="timeinfo"> |
1255 |
<xsl:element name="sngdate"> |
1256 |
<xsl:element name="caldate"/> |
1257 |
</xsl:element> |
1258 |
</xsl:element> |
1259 |
</xsl:otherwise> |
1260 |
</xsl:choose> |
1261 |
<xsl:element name="srccurr"> |
1262 |
<xsl:value-of select="./sourceExtent/description"/> |
1263 |
</xsl:element> |
1264 |
</xsl:element> |
1265 |
<xsl:element name="srccitea"> |
1266 |
<!-- Emparejamiento propuesto por el FGDC --> |
1267 |
<xsl:value-of select="./sourceCitation/*/alternateTitle"/> |
1268 |
</xsl:element> |
1269 |
<xsl:element name="srccontr"> |
1270 |
<xsl:value-of select="./description"/> |
1271 |
</xsl:element> |
1272 |
</xsl:element> |
1273 |
</xsl:for-each> |
1274 |
<!-- dentro de lineage, srcinfo es opcional (0..n) pero procstep es obligatorio (1..n). Tendre que asegurar que esta... --> |
1275 |
<xsl:choose> |
1276 |
<xsl:when test="./DQ_DataQuality/lineage/LI_Lineage/processStep/LI_ProcessStep"> |
1277 |
<!--Esta en el dato iso, algo prodremos sacar. --> |
1278 |
<xsl:for-each select="./DQ_DataQuality/lineage/LI_Lineage/processStep/LI_ProcessStep"> |
1279 |
<xsl:element name="procstep"> |
1280 |
<xsl:element name="procdesc"> |
1281 |
<xsl:value-of select="./description"/> |
1282 |
</xsl:element> |
1283 |
<xsl:for-each select="./source/LI_Source/sourceCitation/*/alternateTitle"> |
1284 |
<xsl:element name="srcused"> |
1285 |
<!-- En realidad no sabemos muy bien si es usada o producida...--> |
1286 |
<xsl:value-of select="."/> |
1287 |
</xsl:element> |
1288 |
</xsl:for-each> |
1289 |
<xsl:element name="procdate"> |
1290 |
<xsl:value-of select="./dateTime"/> |
1291 |
</xsl:element> |
1292 |
<xsl:if test="./dateTime"> |
1293 |
<xsl:element name="proctime"> |
1294 |
<xsl:value-of select="./dateTime"/> |
1295 |
</xsl:element> |
1296 |
</xsl:if> |
1297 |
<xsl:for-each select="./source/LI_Source/sourceCitation/*/alternateTitle"> |
1298 |
<xsl:element name="srcprod"> |
1299 |
<!-- En realidad no sabemos muy bien si es usada o producida...--> |
1300 |
<xsl:value-of select="."/> |
1301 |
</xsl:element> |
1302 |
</xsl:for-each> |
1303 |
<xsl:element name="proccont"> |
1304 |
<xsl:apply-templates select="processor/CI_ResponsibleParty"/> |
1305 |
</xsl:element> |
1306 |
</xsl:element> |
1307 |
</xsl:for-each> |
1308 |
</xsl:when> |
1309 |
<xsl:otherwise> |
1310 |
<!-- generacion de elementos obligatorios vacios --> |
1311 |
<xsl:element name="procstep"> |
1312 |
<xsl:element name="procdesc"/> |
1313 |
<xsl:element name="procdate"/> |
1314 |
</xsl:element> |
1315 |
</xsl:otherwise> |
1316 |
</xsl:choose> |
1317 |
</xsl:element> |
1318 |
</xsl:if> |
1319 |
<!--Emparejamiento propuesto por el FGDC. --> |
1320 |
<xsl:element name="cloud"> |
1321 |
<!--xsl:value-of select="./../contentInfo/MD_ContentInformation/cloudCoverPercentage"/--> |
1322 |
<xsl:value-of select="./../contentInfo/MD_ImageDescription/cloudCoverPercentage"/> |
1323 |
</xsl:element> |
1324 |
</xsl:template> |
1325 |
<xsl:template match="contentInfo"> |
1326 |
<xsl:for-each select="MD_FeatureCatalogueDescription"> |
1327 |
<xsl:element name="detailed"> |
1328 |
<xsl:element name="enttyp"> |
1329 |
<xsl:element name="enttypl"> |
1330 |
<xsl:value-of select="./featureTypes"/> |
1331 |
</xsl:element> |
1332 |
<xsl:element name="enttypd"> |
1333 |
<!-- Por el momento lo dejo vacio--> |
1334 |
</xsl:element> |
1335 |
<xsl:element name="enttypds"> |
1336 |
<!-- Por el momento lo dejo vacio--> |
1337 |
</xsl:element> |
1338 |
</xsl:element> |
1339 |
<!-- el elemento attr no es obligatorio. Como no tiene emparejamiento con ISO no lo a?ado --> |
1340 |
</xsl:element> |
1341 |
<!--el elemento overview no lo voy a rellenar ya que es optativo y no tiene emparejamieno en ISO --> |
1342 |
</xsl:for-each> |
1343 |
</xsl:template> |
1344 |
</xsl:stylesheet> |