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