geo_combine 0.0.5 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,21 +3,14 @@
3
3
  fgdc2geoBL.xsl - Transformation from FGDC into GeoBlacklight Solr
4
4
 
5
5
  -->
6
- <xsl:stylesheet
7
- xmlns="http://www.loc.gov/mods/v3"
8
- xmlns:gco="http://www.isotc211.org/2005/gco"
9
- xmlns:gmi="http://www.isotc211.org/2005/gmi"
10
- xmlns:gmd="http://www.isotc211.org/2005/gmd"
11
- xmlns:gml="http://www.opengis.net/gml"
12
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
13
- version="2.0" exclude-result-prefixes="gml gmd gco gmi xsl">
14
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
6
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
7
+ version="1.0">
8
+ <xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes"/>
15
9
  <xsl:strip-space elements="*"/>
16
10
 
17
11
  <xsl:param name="zipName" select="'data.zip'"/>
18
-
19
-
20
- <xsl:variable name="institution">
12
+
13
+ <xsl:variable name="institution">
21
14
  <xsl:for-each select="metadata">
22
15
  <xsl:choose>
23
16
  <xsl:when test="contains(distinfo/distrib/cntinfo/cntorgp/cntorg, 'Harvard')">
@@ -109,52 +102,59 @@
109
102
 
110
103
 
111
104
  <xsl:template match="metadata">
112
- <add>
113
- <doc>
114
- <field name="uuid">
115
- <xsl:value-of select="$uuid"/>
116
- </field>
117
- <field name="dc_identifier_s">
118
- <xsl:value-of select="idinfo/citation/citeinfo/onlink"/>
119
- </field>
120
-
121
- <field name="dc_title_s">
122
- <xsl:value-of select="idinfo/citation/citeinfo/title"/>
123
- </field>
124
- <field name="dc_description_s">
125
- <xsl:value-of select="idinfo/descript/abstract"/>
126
- </field>
127
-
105
+ <xsl:text>{</xsl:text>
106
+
107
+ <xsl:text>"uuid": "</xsl:text>
108
+ <xsl:value-of select="$uuid"/>
109
+ <xsl:text>",</xsl:text>
110
+
111
+ <xsl:text>"dc_identifier_s": "</xsl:text>
112
+ <xsl:value-of select="idinfo/citation/citeinfo/onlink"/>
113
+ <xsl:text>",</xsl:text>
114
+
115
+ <xsl:text>"dc_title_s": "</xsl:text>
116
+ <xsl:value-of select="idinfo/citation/citeinfo/title"/>
117
+ <xsl:text>",</xsl:text>
118
+
119
+ <xsl:text>"dc_description_s": "</xsl:text>
120
+ <xsl:value-of select="idinfo/descript/abstract"/>
121
+ <xsl:text>",</xsl:text>
128
122
 
129
- <field name="dc_rights_s">
130
- <xsl:choose>
131
- <xsl:when test="contains(idinfo/accconst, 'Restricted')">
132
- <xsl:text>Restricted</xsl:text>
133
- </xsl:when>
134
- <xsl:when test="contains(idinfo/accconst, 'Unrestricted')">
135
- <xsl:text>Public</xsl:text>
136
- </xsl:when>
137
- <xsl:when test="contains(idinfo/accconst, $institution)">
138
- <xsl:text>Restricted</xsl:text>
139
- </xsl:when>
140
- <xsl:when test="contains(idinfo/accconst, 'None')">
141
- <xsl:text>Public</xsl:text>
142
- </xsl:when>
143
- <xsl:when test="contains(idinfo/useconst, 'Restricted')">
144
- <xsl:text>Restricted</xsl:text>
145
- </xsl:when>
146
- <xsl:when test="contains(idinfo/useconst, $institution)">
147
- <xsl:text>Restricted</xsl:text>
148
- </xsl:when>
149
- <xsl:when test="contains(idinfo/useconst, 'None')">
150
- <xsl:text>Public</xsl:text>
151
- </xsl:when>
152
- </xsl:choose>
153
- </field>
123
+ <xsl:text>"dc_rights_s": "</xsl:text>
124
+ <xsl:choose>
125
+ <xsl:when test="contains(idinfo/accconst, 'Restricted')">
126
+ <xsl:text>Restricted</xsl:text>
127
+ </xsl:when>
128
+ <xsl:when test="contains(idinfo/accconst, 'Unrestricted')">
129
+ <xsl:text>Public</xsl:text>
130
+ </xsl:when>
131
+ <xsl:when test="contains(idinfo/accconst, 'No restriction')">
132
+ <xsl:text>Public</xsl:text>
133
+ </xsl:when>
134
+ <xsl:when test="contains(idinfo/accconst, $institution)">
135
+ <xsl:text>Restricted</xsl:text>
136
+ </xsl:when>
137
+ <xsl:when test="contains(idinfo/accconst, 'None')">
138
+ <xsl:text>Public</xsl:text>
139
+ </xsl:when>
140
+ <xsl:when test="contains(idinfo/useconst, 'Restricted')">
141
+ <xsl:text>Restricted</xsl:text>
142
+ </xsl:when>
143
+ <xsl:when test="contains(idinfo/useconst, $institution)">
144
+ <xsl:text>Restricted</xsl:text>
145
+ </xsl:when>
146
+ <xsl:when test="contains(idinfo/useconst, 'None')">
147
+ <xsl:text>Public</xsl:text>
148
+ </xsl:when>
149
+ <xsl:otherwise>
150
+ <xsl:text>Restricted</xsl:text>
151
+ </xsl:otherwise>
152
+ </xsl:choose>
153
+ <xsl:text>",</xsl:text>
154
154
 
155
- <field name="dct_provenance_s">
156
- <xsl:value-of select="$institution"/>
157
- </field>
155
+ <xsl:text>"dct_provenance_s": "</xsl:text>
156
+ <xsl:value-of select="$institution"/>
157
+ <xsl:text>",</xsl:text>
158
158
 
159
159
  <!-- <field name="dct_references_s">
160
160
  <xsl:text>{</xsl:text>
@@ -191,253 +191,187 @@
191
191
  <xsl:text>}</xsl:text>
192
192
  </field> -->
193
193
 
194
- <field name="layer_id_s">
195
- <xsl:text>urn:</xsl:text>
196
- <xsl:value-of select="$uuid"/>
197
- </field>
194
+ <xsl:text>"layer_id_s": "</xsl:text>
195
+ <xsl:text>urn:</xsl:text>
196
+ <xsl:value-of select="$uuid"/>
197
+ <xsl:text>",</xsl:text>
198
198
 
199
- <field name="layer_slug_s">
200
- <xsl:value-of select="lower-case($institution)"/>
201
- <xsl:text>-</xsl:text>
202
- <xsl:value-of select="$uuid"/>
203
- </field>
199
+ <xsl:text>"layer_slug_s": "</xsl:text>
200
+ <xsl:value-of select="$institution"/>
201
+ <xsl:text>-</xsl:text>
202
+ <xsl:value-of select="$uuid"/>
203
+ <xsl:text>",</xsl:text>
204
204
 
205
+ <xsl:choose>
206
+ <xsl:when test="contains(metadata/spdoinfo/ptvctinf/sdtsterm/sdtstype, 'G-polygon')">
207
+ <xsl:text>"layer_geom_type_s": "</xsl:text>
208
+ <xsl:text>Polygon</xsl:text>
209
+ <xsl:text>",</xsl:text>
210
+ </xsl:when>
211
+ <xsl:when test="contains(metadata/spdoinfo/ptvctinf/sdtsterm/sdtstype, 'Entity point')">
212
+ <xsl:text>"layer_geom_type_s": "</xsl:text>
213
+ <xsl:text>Point</xsl:text>
214
+ <xsl:text>",</xsl:text>
215
+ </xsl:when>
205
216
 
206
- <xsl:choose>
207
- <xsl:when test="contains(spdoinfo/ptvctinf/sdtsterm/sdtstype, 'G-polygon')">
208
- <field name="layer_geom_type_s">
209
- <xsl:text>Polygon</xsl:text>
210
- </field>
211
- </xsl:when>
212
- <xsl:when test="contains(spdoinfo/ptvctinf/sdtsterm/sdtstype, 'Entity point')">
213
- <field name="layer_geom_type_s">
214
- <xsl:text>Point</xsl:text>
215
- </field>
216
- </xsl:when>
217
-
218
- <xsl:when test="contains(spdoinfo/ptvctinf/sdtsterm/sdtstype, 'String')">
219
- <field name="layer_geom_type_s">
220
- <xsl:text>Line</xsl:text>
221
- </field>
222
- </xsl:when>
223
- <xsl:when test="contains(spdoinfo/direct, 'Raster')">
224
- <field name="layer_geom_type_s">
225
- <xsl:text>Raster</xsl:text>
226
- </field>
227
- </xsl:when>
228
- </xsl:choose>
229
-
217
+ <xsl:when test="contains(metadata/spdoinfo/ptvctinf/sdtsterm/sdtstype, 'String')">
218
+ <xsl:text>"layer_geom_type_s": "</xsl:text>
219
+ <xsl:text>Line</xsl:text>
220
+ <xsl:text>",</xsl:text>
221
+ </xsl:when>
222
+ <xsl:when test="contains(metadata/spdoinfo/direct, 'Raster')">
223
+ <xsl:text>"layer_geom_type_s": "</xsl:text>
224
+ <xsl:text>Raster</xsl:text>
225
+ <xsl:text>",</xsl:text>
226
+ </xsl:when>
227
+ </xsl:choose>
228
+
230
229
 
231
230
 
232
- <xsl:choose>
233
- <xsl:when test="string-length(metainfo/metd)=4">
234
- <field name="layer_modified_dt">
235
- <xsl:value-of select="metainfo/metd"/>
236
- </field>
237
- </xsl:when>
238
-
239
- <xsl:when test="string-length(metainfo/metd)=6">
240
- <field name="layer_modified_dt">
241
- <xsl:value-of select="substring(metainfo/metd,1,4)"/>
242
- <xsl:text>-</xsl:text>
243
- <xsl:value-of select="substring(metainfo/metd,5,2)"/>
244
- </field>
245
- </xsl:when>
246
-
247
- <xsl:when test="string-length(metainfo/metd)=8">
248
- <field name="layer_modified_dt">
249
- <xsl:value-of select="substring(metainfo/metd,1,4)"/>
250
- <xsl:text>-</xsl:text>
251
- <xsl:value-of select="substring(metainfo/metd,5,2)"/>
252
- <xsl:text>-</xsl:text>
253
- <xsl:value-of select="substring(metainfo/metd,7,2)"/>
254
- </field>
255
- </xsl:when>
256
- </xsl:choose>
231
+ <xsl:choose>
232
+ <xsl:when test="string-length(metainfo/metd)=4">
233
+ <xsl:text>"layer_modified_dt": "</xsl:text>
234
+ <xsl:value-of select="metainfo/metd"/>
235
+ <xsl:text>",</xsl:text>
236
+ </xsl:when>
237
+
238
+ <xsl:when test="string-length(metainfo/metd)=6">
239
+ <xsl:text>"layer_modified_dt": "</xsl:text>
240
+ <xsl:value-of select="substring(metainfo/metd,1,4)"/>
241
+ <xsl:text>-</xsl:text>
242
+ <xsl:value-of select="substring(metainfo/metd,5,2)"/>
243
+ <xsl:text>",</xsl:text>
244
+ </xsl:when>
245
+
246
+ <xsl:when test="string-length(metainfo/metd)=8">
247
+ <xsl:text>"layer_modified_dt": "</xsl:text>
248
+ <xsl:value-of select="substring(metainfo/metd,1,4)"/>
249
+ <xsl:text>-</xsl:text>
250
+ <xsl:value-of select="substring(metainfo/metd,5,2)"/>
251
+ <xsl:text>-</xsl:text>
252
+ <xsl:value-of select="substring(metainfo/metd,7,2)"/>
253
+ <xsl:text>",</xsl:text>
254
+ </xsl:when>
255
+ </xsl:choose>
257
256
 
258
257
 
259
- <xsl:for-each select="idinfo/citation/citeinfo/origin">
260
- <field name="dc_creator_sm">
261
- <xsl:value-of select="."/>
262
- </field>
263
- </xsl:for-each>
264
-
265
- <xsl:for-each select="idinfo/citation/citeinfo/pubinfo/publish">
266
- <field name="dc_publisher_sm">
267
- <xsl:value-of select="."/>
268
- </field>
269
- </xsl:for-each>
258
+ <xsl:if test="idinfo/citation/citeinfo/origin">
259
+ <xsl:text>"dc_creator_sm": [</xsl:text>
260
+ <xsl:for-each select="idinfo/citation/citeinfo/origin">
261
+ <xsl:text>"</xsl:text>
262
+ <xsl:value-of select="."/>
263
+ <xsl:text>"</xsl:text>
264
+ <xsl:if test="position() != last()">
265
+ <xsl:text>,</xsl:text>
266
+ </xsl:if>
267
+ </xsl:for-each>
268
+ <xsl:text>],</xsl:text>
269
+ </xsl:if>
270
+
271
+
272
+
273
+ <xsl:if test="idinfo/citation/citeinfo/pubinfo/publish">
274
+ <xsl:text>"dc_publisher_sm": [</xsl:text>
275
+ <xsl:for-each select="idinfo/citation/citeinfo/pubinfo/publish">
276
+ <xsl:text>"</xsl:text>
277
+ <xsl:value-of select="."/>
278
+ <xsl:text>"</xsl:text>
279
+ <xsl:if test="position() != last()">
280
+ <xsl:text>,</xsl:text>
281
+ </xsl:if>
282
+ </xsl:for-each>
283
+ <xsl:text>],</xsl:text>
284
+ </xsl:if>
270
285
 
271
286
 
272
-
273
- <field name="dc_format_s">
274
- <xsl:value-of select="$format"/>
275
- </field>
287
+ <xsl:text>"dc_format_s": "</xsl:text>
288
+ <xsl:value-of select="$format"/>
289
+ <xsl:text>",</xsl:text>
276
290
 
277
- <!-- TODO: map other languages -->
278
- <xsl:if test="contains(idinfo/descript/langdata, 'en')">
279
- <field name="dc_language_s">
280
- <xsl:text>English</xsl:text>
281
- </field>
282
- </xsl:if>
283
-
284
- <!-- DCMI Type vocabulary: defaults to dataset -->
285
- <field name="dc_type_s">
286
- <xsl:text>Dataset</xsl:text>
287
- </field>
288
-
289
-
290
- <!-- translate ISO topic categories -->
291
- <xsl:for-each select="idinfo/keywords/theme">
292
- <xsl:choose>
293
- <xsl:when test="contains(themekt, '19115')">
294
- <xsl:for-each select="themekey">
295
-
296
- <field name="dc_subject_sm">
297
- <xsl:choose>
298
- <xsl:when test="contains(.,'farming')">
299
-
300
- <xsl:text>Farming</xsl:text>
301
- </xsl:when>
302
- <xsl:when test="contains(.,'biota')">
303
-
304
- <xsl:text>Biology and Ecology</xsl:text>
305
- </xsl:when>
306
- <xsl:when test="contains(.,'climatologyMeteorologyAtmosphere')">\
307
-
308
- <xsl:text>Climatology, Meteorology and Atmosphere</xsl:text>
309
- </xsl:when>
310
- <xsl:when test="contains(.,'boundaries')">
311
-
312
- <xsl:text>Boundaries</xsl:text>
313
- </xsl:when>
314
- <xsl:when test="contains(.,'elevation')">
315
-
316
- <xsl:text>Elevation</xsl:text>
317
- </xsl:when>
318
- <xsl:when test="contains(.,'environment')">
319
-
320
- <xsl:text>Environment</xsl:text>
321
- </xsl:when>
322
- <xsl:when test="contains(.,'geoscientificInformation')">
323
-
324
- <xsl:text>Geoscientific Information</xsl:text>
325
- </xsl:when>
326
- <xsl:when test="contains(.,'health')">
327
-
328
- <xsl:text>Health</xsl:text>
329
- </xsl:when>
330
- <xsl:when test="contains(.,'imageryBaseMapsEarthCover')">
331
-
332
- <xsl:text>Imagery and Base Maps</xsl:text>
333
- </xsl:when>
334
- <xsl:when test="contains(.,'intelligenceMilitary')">
335
-
336
- <xsl:text>Military</xsl:text>
337
- </xsl:when>
338
- <xsl:when test="contains(.,'inlandWaters')">
339
-
340
- <xsl:text>Inland Waters</xsl:text>
341
- </xsl:when>
342
- <xsl:when test="contains(.,'location')">
343
-
344
- <xsl:text>Location</xsl:text>
345
- </xsl:when>
346
- <xsl:when test="contains(.,'oceans')">
347
-
348
- <xsl:text>Oceans</xsl:text>
349
- </xsl:when>
350
- <xsl:when test="contains(.,'planningCadastre')">
351
-
352
- <xsl:text>Planning and Cadastral</xsl:text>
353
- </xsl:when>
354
- <xsl:when test="contains(.,'structure')">
355
-
356
- <xsl:text>Structure</xsl:text>
357
- </xsl:when>
358
- <xsl:when test="contains(.,'transportation')">
359
-
360
- <xsl:text>Transportation</xsl:text>
361
- </xsl:when>
362
- <xsl:when test="contains(.,'utilitiesCommunication')">
363
-
364
- <xsl:text>Utilities and Communication</xsl:text>
365
- </xsl:when>
366
- <xsl:when test="contains(.,'society')">
367
-
368
- <xsl:text>Society</xsl:text>
369
- </xsl:when>
370
- <xsl:when test="contains(.,'economy')">
371
-
372
- <xsl:text>Economy</xsl:text>
373
- </xsl:when>
374
- </xsl:choose>
375
- </field>
376
- </xsl:for-each>
377
- </xsl:when>
378
-
379
- <xsl:when test="not(themekt = 'FGDC')">
380
- <xsl:for-each select="themekey">
381
- <field name="dc_subject_sm">
382
- <xsl:value-of select="."/>
383
- </field>
384
- </xsl:for-each>
385
- </xsl:when>
386
- </xsl:choose>
387
- </xsl:for-each>
388
-
389
- <xsl:for-each select="idinfo/keywords/place/placekey">
390
- <field name="dc_spatial_sm">
391
- <xsl:value-of select="."/>
392
- </field>
393
- </xsl:for-each>
394
-
291
+ <xsl:if test="contains(idinfo/descript/langdata, 'en')">
292
+ <xsl:text>"dc_language_s": "</xsl:text>
293
+ <xsl:text>English</xsl:text>
294
+ <xsl:text>",</xsl:text>
295
+ </xsl:if>
296
+
297
+ <!-- DCMI Type vocabulary: defaults to dataset -->
298
+ <xsl:text>"dc_type_s": "</xsl:text>
299
+ <xsl:text>Dataset</xsl:text>
300
+ <xsl:text>",</xsl:text>
395
301
 
396
302
 
303
+ <xsl:if test="idinfo/keywords/theme/themekey">
304
+ <xsl:text>"dc_subject_sm": [</xsl:text>
305
+ <xsl:for-each select="idinfo/keywords/theme/themekey">
306
+ <xsl:if test="not(themekt = 'FGDC')">
307
+ <xsl:text>"</xsl:text>
308
+ <xsl:value-of select="."/>
309
+ <xsl:text>"</xsl:text>
310
+ <xsl:if test="position() != last()">
311
+ <xsl:text>,</xsl:text>
312
+ </xsl:if>
313
+ </xsl:if>
314
+ </xsl:for-each>
315
+ <xsl:text>],</xsl:text>
316
+ </xsl:if>
317
+
318
+ <xsl:if test="idinfo/keywords/place/placekey">
319
+ <xsl:text>"dc_spatial_sm": [</xsl:text>
320
+ <xsl:for-each select="idinfo/keywords/place/placekey">
321
+ <xsl:text>"</xsl:text>
322
+ <xsl:value-of select="."/>
323
+ <xsl:text>"</xsl:text>
324
+ <xsl:if test="position() != last()">
325
+ <xsl:text>,</xsl:text>
326
+ </xsl:if>
327
+ </xsl:for-each>
328
+ <xsl:text>],</xsl:text>
329
+ </xsl:if>
330
+ <xsl:choose>
331
+ <xsl:when test="string-length(idinfo/citation/citeinfo/pubdate)=4">
332
+ <xsl:text>"dct_issued_s": "</xsl:text>
333
+ <xsl:value-of select="idinfo/citation/citeinfo/pubdate"/>
334
+ <xsl:text>",</xsl:text>
335
+ </xsl:when>
397
336
 
398
- <xsl:choose>
399
- <xsl:when test="string-length(idinfo/citation/citeinfo/pubdate)=4">
400
- <field name="dct_issued_s">
401
- <xsl:value-of select="idinfo/citation/citeinfo/pubdate"/>
402
- </field>
403
- </xsl:when>
404
-
405
- <xsl:when test="string-length(idinfo/citation/citeinfo/pubdate)=6">
406
- <field name="dct_issued_s">
407
- <xsl:value-of select="substring(idinfo/citation/citeinfo/pubdate,1,4)"/>
408
- <xsl:text>-</xsl:text>
409
- <xsl:value-of select="substring(idinfo/citation/citeinfo/pubdate,5,2)"/>
410
- </field>
411
- </xsl:when>
412
-
413
- <xsl:when test="string-length(idinfo/citation/citeinfo/pubdate)=8">
414
- <field name="dct_issued_s">
415
- <xsl:value-of select="substring(idinfo/citation/citeinfo/pubdate,1,4)"/>
416
- <xsl:text>-</xsl:text>
417
- <xsl:value-of select="substring(idinfo/citation/citeinfo/pubdate,5,2)"/>
418
- <xsl:text>-</xsl:text>
419
- <xsl:value-of select="substring(idinfo/citation/citeinfo/pubdate,7,2)"/>
420
- </field>
421
- </xsl:when>
422
- </xsl:choose>
423
-
424
-
425
-
426
- <!-- singular content date: YYYY -->
427
-
428
- <xsl:choose>
429
- <xsl:when test="idinfo/timeperd/timeinfo/sngdate/caldate">
430
- <field name="dct_temporal_sm">
431
- <xsl:value-of select="substring(idinfo/timeperd/timeinfo/sngdate/caldate,1,4)"/>
432
- </field>
433
- </xsl:when>
434
- <xsl:when test="idinfo/timeperd/timeinfo/mdattim/sngdate/caldate">
435
- <field name="dct_temporal_sm">
436
- <xsl:value-of select="substring(idinfo/timeperd/timeinfo/mdattim/sngdate/caldate,1,4)"/>
437
- </field>
438
- </xsl:when>
439
-
440
- <!-- YYYY-MM, YYYY-MM-DD
337
+ <xsl:when test="string-length(idinfo/citation/citeinfo/pubdate)=6">
338
+ <xsl:text>"dct_issued_s": "</xsl:text>
339
+ <xsl:value-of select="substring(idinfo/citation/citeinfo/pubdate,1,4)"/>
340
+ <xsl:text>-</xsl:text>
341
+ <xsl:value-of select="substring(idinfo/citation/citeinfo/pubdate,5,2)"/>
342
+ <xsl:text>",</xsl:text>
343
+ </xsl:when>
344
+
345
+ <xsl:when test="string-length(idinfo/citation/citeinfo/pubdate)=8">
346
+ <xsl:text>"dct_issued_s": "</xsl:text>
347
+ <xsl:value-of select="substring(idinfo/citation/citeinfo/pubdate,1,4)"/>
348
+ <xsl:text>-</xsl:text>
349
+ <xsl:value-of select="substring(idinfo/citation/citeinfo/pubdate,5,2)"/>
350
+ <xsl:text>-</xsl:text>
351
+ <xsl:value-of select="substring(idinfo/citation/citeinfo/pubdate,7,2)"/>
352
+ <xsl:text>",</xsl:text>
353
+ </xsl:when>
354
+ </xsl:choose>
355
+
356
+ <!-- singular content date: YYYY -->
357
+
358
+ <xsl:for-each select="idinfo/timeperd/timeinfo/sngdate/caldate">
359
+ <xsl:if test="text() !='' ">
360
+ <xsl:text>"dct_temporal_sm": "</xsl:text>
361
+ <xsl:value-of select="substring(.,1,4)"/>
362
+ <xsl:text>",</xsl:text>
363
+ </xsl:if>
364
+ </xsl:for-each>
365
+
366
+
367
+ <xsl:for-each select="idinfo/timeperd/timeinfo/mdattim/sngdate">
368
+ <xsl:text>"dct_temporal_sm": "</xsl:text>
369
+ <xsl:value-of select="substring(caldate,1,4)"/>
370
+ <xsl:text>",</xsl:text>
371
+ </xsl:for-each>
372
+
373
+
374
+ <!-- months, days YYYY-MM, YYYY-MM-DD
441
375
  <xsl:when test="string-length(idinfo/timeperd/timeinfo/sngdate/caldate)=4">
442
376
  <xsl:value-of select="idinfo/timeperd/timeinfo/sngdate/caldate"/>
443
377
  </xsl:when>
@@ -453,136 +387,145 @@
453
387
  <xsl:text>-</xsl:text>
454
388
  <xsl:value-of select="substring(idinfo/timeperd/timeinfo/sngdate/caldate,7,2)"/>
455
389
  </xsl:when> -->
456
-
457
- <!-- content date range: YYYY-YYYY if dates differ -->
458
- <xsl:when test="idinfo/timeperd/timeinfo/rngdates/begdate/text() != ''">
459
- <field name="dct_temporal_sm">
460
- <xsl:value-of select="substring(idinfo/timeperd/timeinfo/rngdates/begdate, 1,4)"/>
461
- <xsl:if test="substring(idinfo/timeperd/timeinfo/rngdates/begdate,1,4) != substring(idinfo/timeperd/timeinfo/rngdates/enddate,1,4)">
462
- <xsl:text>-</xsl:text>
463
- <xsl:value-of select="substring(idinfo/timeperd/timeinfo/rngdates/enddate,1,4)"/>
464
- </xsl:if>
465
- </field>
466
- </xsl:when>
467
- </xsl:choose>
468
-
469
-
470
- <!-- collection -->
471
- <xsl:for-each select="idinfo/citation/citeinfo/lworkcit/citeinfo">
472
- <field name="dct_isPartOf_sm">
473
- <xsl:value-of select="title"/>
474
- </field>
475
- </xsl:for-each>
476
-
477
- <!-- cross-references -->
478
- <xsl:for-each select="idinfo/crossref/citeinfo">
479
- <field name="dc_relation_sm">
480
- <xsl:value-of select="title"/>
481
- </field>
482
- </xsl:for-each>
483
-
484
- <field name="georss_polygon_s">
485
- <xsl:text></xsl:text>
486
- <xsl:value-of select="$y1"/>
487
- <xsl:text> </xsl:text>
488
- <xsl:value-of select="$x1"/>
489
- <xsl:text> </xsl:text>
490
- <xsl:value-of select="$y2"/>
491
- <xsl:text> </xsl:text>
492
- <xsl:value-of select="$x1"/>
493
- <xsl:text> </xsl:text>
494
- <xsl:value-of select="$y2"/>
495
- <xsl:text> </xsl:text>
496
- <xsl:value-of select="$x2"/>
497
- <xsl:text> </xsl:text>
498
- <xsl:value-of select="$y1"/>
499
- <xsl:text> </xsl:text>
500
- <xsl:value-of select="$x2"/>
501
- <xsl:text> </xsl:text>
502
- <xsl:value-of select="$y1"/>
503
- <xsl:text> </xsl:text>
504
- <xsl:value-of select="$x1"/>
505
- </field>
506
-
507
- <field name="solr_geom">
508
- <xsl:text>ENVELOPE((</xsl:text>
509
- <xsl:value-of select="$x1"/>
510
- <xsl:text> </xsl:text>
511
- <xsl:value-of select="$y1"/>
512
- <xsl:text>, </xsl:text>
513
- <xsl:value-of select="$x2"/>
514
- <xsl:text> </xsl:text>
515
- <xsl:value-of select="$y1"/>
516
- <xsl:text>, </xsl:text>
517
- <xsl:value-of select="$x2"/>
518
- <xsl:text> </xsl:text>
519
- <xsl:value-of select="$y2"/>
520
- <xsl:text>, </xsl:text>
521
- <xsl:value-of select="$x1"/>
522
- <xsl:text> </xsl:text>
523
- <xsl:value-of select="$y2"/>
524
- <xsl:text>, </xsl:text>
525
- <xsl:value-of select="$x1"/>
526
- <xsl:text> </xsl:text>
527
- <xsl:value-of select="$y1"/>
528
- <xsl:text>))</xsl:text>
529
- </field>
530
-
531
- <field name="georss_box_s">
532
- <xsl:value-of select="$y1"/>
533
- <xsl:text> </xsl:text>
534
- <xsl:value-of select="$x1"/>
535
- <xsl:text> </xsl:text>
536
- <xsl:value-of select="$y2"/>
537
- <xsl:text> </xsl:text>
538
- <xsl:value-of select="$x2"/>
539
- </field>
540
-
541
-
542
- <field name="solr_bbox">
543
- <xsl:value-of select="$x1"/>
544
- <xsl:text> </xsl:text>
545
- <xsl:value-of select="$y1"/>
546
- <xsl:text> </xsl:text>
547
- <xsl:value-of select="$x2"/>
548
- <xsl:text> </xsl:text>
549
- <xsl:value-of select="$y2"/>
550
- </field>
551
-
552
- <field name="solr_sw_pt">
553
- <xsl:value-of select="$y1"/>
390
+
391
+ <!-- content date range: YYYY-YYYY if dates in range differ -->
392
+
393
+ <xsl:for-each select="idinfo/timeperd/timeinfo/rngdates">
394
+ <xsl:text>"dct_temporal_sm": "</xsl:text>
395
+ <xsl:value-of select="substring(begdate, 1,4)"/>
396
+ <xsl:if test="substring(begdate,1,4) != substring(enddate,1,4)">
397
+ <xsl:text>-</xsl:text>
398
+ <xsl:value-of select="substring(enddate,1,4)"/>
399
+ </xsl:if>
400
+ <xsl:text>",</xsl:text>
401
+ </xsl:for-each>
402
+
403
+ <xsl:for-each select="idinfo/keywords/temporal/tempkey">
404
+ <xsl:if test="text() != substring(idinfo/timeperd/timeinfo/sngdate/caldate,1,4)">
405
+ <xsl:text>"dct_temporal_sm": "</xsl:text>
406
+ <xsl:value-of select="."/>
407
+ <xsl:text>",</xsl:text>
408
+ </xsl:if>
409
+ </xsl:for-each>
410
+
411
+ <!-- collection -->
412
+
413
+ <xsl:if test="idinfo/citation/citeinfo/lworkcit/citeinfo | idinfo/citation/citeinfo/serinfo/sername">
414
+ <xsl:text>"dct_isPartOf_sm": [</xsl:text>
415
+ <xsl:for-each select="idinfo/citation/citeinfo/lworkcit/citeinfo | idinfo/citation/citeinfo/serinfo">
416
+ <xsl:text>"</xsl:text>
417
+ <xsl:value-of select="title | sername"/>
418
+ <xsl:text>"</xsl:text>
419
+ <xsl:if test="position() != last()">
554
420
  <xsl:text>,</xsl:text>
555
- <xsl:value-of select="$x1"/>
556
- </field>
557
-
558
- <field name="solr_ne_pt">
559
- <xsl:value-of select="$y2"/>
421
+ </xsl:if>
422
+ </xsl:for-each>
423
+ <xsl:text>],</xsl:text>
424
+ </xsl:if>
425
+
426
+
427
+ <!-- cross-references -->
428
+ <xsl:if test="idinfo/crossref/citeinfo">
429
+ <xsl:text>"dct_relation_sm": [</xsl:text>
430
+ <xsl:for-each select="idinfo/crossref/citeinfo">
431
+ <xsl:text>"</xsl:text>
432
+ <xsl:value-of select="title"/>
433
+ <xsl:text>"</xsl:text>
434
+ <xsl:if test="position() != last()">
560
435
  <xsl:text>,</xsl:text>
561
- <xsl:value-of select="$x2"/>
562
- </field>
563
-
564
- <!-- content date: singular, or beginning date of range: YYYY -->
436
+ </xsl:if>
437
+ <xsl:text>],</xsl:text>
438
+ </xsl:for-each>
439
+ </xsl:if>
440
+
441
+ <xsl:text>"georss_polygon_s": "</xsl:text>
442
+ <xsl:text></xsl:text>
443
+ <xsl:value-of select="$y1"/>
444
+ <xsl:text> </xsl:text>
445
+ <xsl:value-of select="$x1"/>
446
+ <xsl:text> </xsl:text>
447
+ <xsl:value-of select="$y2"/>
448
+ <xsl:text> </xsl:text>
449
+ <xsl:value-of select="$x1"/>
450
+ <xsl:text> </xsl:text>
451
+ <xsl:value-of select="$y2"/>
452
+ <xsl:text> </xsl:text>
453
+ <xsl:value-of select="$x2"/>
454
+ <xsl:text> </xsl:text>
455
+ <xsl:value-of select="$y1"/>
456
+ <xsl:text> </xsl:text>
457
+ <xsl:value-of select="$x2"/>
458
+ <xsl:text> </xsl:text>
459
+ <xsl:value-of select="$y1"/>
460
+ <xsl:text> </xsl:text>
461
+ <xsl:value-of select="$x1"/>
462
+ <xsl:text>",</xsl:text>
463
+
464
+ <xsl:text>"solr_geom": "ENVELOPE(</xsl:text>
465
+ <xsl:value-of select="$x1"/>
466
+ <xsl:text>, </xsl:text>
467
+ <xsl:value-of select="$x2"/>
468
+ <xsl:text>, </xsl:text>
469
+ <xsl:value-of select="$y2"/>
470
+ <xsl:text>, </xsl:text>
471
+ <xsl:value-of select="$y1"/>
472
+ <xsl:text>)",</xsl:text>
473
+
474
+ <xsl:text>"georss_box_s": "</xsl:text>
475
+ <xsl:value-of select="$y1"/>
476
+ <xsl:text> </xsl:text>
477
+ <xsl:value-of select="$x1"/>
478
+ <xsl:text> </xsl:text>
479
+ <xsl:value-of select="$y2"/>
480
+ <xsl:text> </xsl:text>
481
+ <xsl:value-of select="$x2"/>
482
+ <xsl:text>",</xsl:text>
483
+
484
+
485
+ <!-- content date for solr year: choose singular, or beginning date of range: YYYY -->
486
+ <xsl:if test="idinfo/timeperd/timeinfo">
487
+ <xsl:choose>
488
+ <xsl:when test="idinfo/timeperd/timeinfo/sngdate/caldate/text() != ''">
565
489
 
566
- <xsl:choose>
567
- <xsl:when test="idinfo/timeperd/timeinfo/sngdate/caldate">
568
- <field name="solr_year_i">
569
- <xsl:value-of select="substring(idinfo/timeperd/timeinfo/sngdate/caldate,1,4)"/>
570
- </field>
571
- </xsl:when>
572
- <xsl:when test="idinfo/timeperd/timeinfo/mdattim/sngdate/caldate">
573
- <field name="solr_year_i">
574
- <xsl:value-of select="substring(idinfo/timeperd/timeinfo/mdattim/sngdate/caldate,1,4)"/>
575
- </field>
576
- </xsl:when>
577
- <xsl:when test="idinfo/timeperd/timeinfo/rngdates/begdate/text() != ''">
578
- <field name="solr_year_i">
579
- <xsl:value-of select="substring(idinfo/timeperd/timeinfo/rngdates/begdate, 1,4)"/>
580
- </field>
581
- </xsl:when>
582
- </xsl:choose>
490
+ <xsl:text>"solr_year_i": </xsl:text>
491
+ <xsl:text>"</xsl:text>
492
+ <xsl:value-of select="substring(idinfo/timeperd/timeinfo/sngdate/caldate,1,4)"/>
493
+ <xsl:text>"</xsl:text>
494
+
495
+ </xsl:when>
583
496
 
584
- </doc>
585
- </add>
586
- </xsl:template>
587
-
497
+ <xsl:when test="idinfo/timeperd/timeinfo/mdattim/sngdate/caldate">
498
+ <xsl:if test="position() = 1">
499
+ <xsl:text>"solr_year_i": </xsl:text>
500
+ <xsl:text>"</xsl:text>
501
+ <xsl:value-of select="substring(caldate,1,4)"/>
502
+ <xsl:text>"</xsl:text>
503
+ </xsl:if>
504
+ </xsl:when>
505
+
506
+ <xsl:when test="idinfo/timeperd/timeinfo/rngdates/begdate/text() != ''[1]">
507
+ <xsl:if test="position() = 1">
508
+ <xsl:text>"solr_year_i": </xsl:text>
509
+ <xsl:text>"</xsl:text>
510
+ <xsl:value-of select="substring(rngdates/begdate/text(), 1,4)"/>
511
+ <xsl:text>"</xsl:text>
512
+ </xsl:if>
513
+ </xsl:when>
514
+
515
+ <xsl:when test="//metadata/idinfo/keywords/temporal/tempkey">
516
+ <xsl:for-each select="//metadata/idinfo/keywords/temporal/tempkey[1]">
517
+ <xsl:if test="text() != ''">
518
+ <xsl:text>"solr_year_i": </xsl:text>
519
+ <xsl:text>"</xsl:text>
520
+ <xsl:value-of select="."/>
521
+ <xsl:text>"</xsl:text>
522
+ </xsl:if>
523
+ </xsl:for-each>
524
+ </xsl:when>
525
+ </xsl:choose>
526
+ </xsl:if>
527
+
528
+
529
+ <xsl:text>}</xsl:text>
530
+ </xsl:template>
588
531
  </xsl:stylesheet>