geo_combine 0.0.5 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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>