svn-gvsig-desktop / tags / v1_9_Build_1248 / extensions / extMetadata / xslt / ISO_FGDC.xsl @ 33763
History | View | Annotate | Download (58.1 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" 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> |