geo_combine 0.4.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ruby.yml +53 -0
  3. data/.gitignore +2 -0
  4. data/.rubocop.yml +20 -0
  5. data/.rubocop_todo.yml +165 -0
  6. data/Gemfile +3 -1
  7. data/README.md +80 -1
  8. data/Rakefile +4 -2
  9. data/bin/geocombine +1 -0
  10. data/geo_combine.gemspec +5 -0
  11. data/lib/geo_combine/bounding_box.rb +7 -1
  12. data/lib/geo_combine/ckan_metadata.rb +10 -8
  13. data/lib/geo_combine/cli.rb +3 -1
  14. data/lib/geo_combine/esri_open_data.rb +2 -0
  15. data/lib/geo_combine/exceptions.rb +3 -0
  16. data/lib/geo_combine/fgdc.rb +2 -2
  17. data/lib/geo_combine/formats.rb +2 -0
  18. data/lib/geo_combine/formatting.rb +3 -1
  19. data/lib/geo_combine/geo_blacklight_harvester.rb +211 -0
  20. data/lib/geo_combine/geoblacklight.rb +20 -6
  21. data/lib/geo_combine/geometry_types.rb +2 -0
  22. data/lib/geo_combine/iso19139.rb +2 -1
  23. data/lib/geo_combine/ogp.rb +13 -11
  24. data/lib/geo_combine/railtie.rb +2 -0
  25. data/lib/geo_combine/subjects.rb +2 -0
  26. data/lib/geo_combine/version.rb +3 -1
  27. data/lib/geo_combine.rb +7 -3
  28. data/lib/tasks/geo_combine.rake +57 -26
  29. data/lib/xslt/fgdc2html.xsl +38 -9
  30. data/lib/xslt/iso2html.xsl +1107 -1070
  31. data/spec/features/fgdc2html_spec.rb +53 -1
  32. data/spec/features/iso2html_spec.rb +17 -2
  33. data/spec/fixtures/docs/princeton_fgdc.xml +374 -0
  34. data/spec/fixtures/docs/repos.json +3224 -0
  35. data/spec/fixtures/docs/simple_xml.xml +10 -0
  36. data/spec/fixtures/docs/simple_xslt.xsl +11 -0
  37. data/spec/fixtures/docs/stanford_iso.xml +652 -0
  38. data/spec/fixtures/docs/tufts_fgdc.xml +977 -0
  39. data/spec/fixtures/indexing/basic_geoblacklight.json +27 -0
  40. data/spec/fixtures/indexing/geoblacklight.json +33 -0
  41. data/spec/fixtures/indexing/layers.json +16119 -0
  42. data/spec/fixtures/indexing/test.txt +1 -0
  43. data/spec/fixtures/json_docs.rb +2 -0
  44. data/spec/fixtures/xml_docs.rb +9 -1659
  45. data/spec/helpers.rb +7 -7
  46. data/spec/lib/geo_combine/bounding_box_spec.rb +18 -0
  47. data/spec/lib/geo_combine/ckan_metadata_spec.rb +34 -11
  48. data/spec/lib/geo_combine/esri_open_data_spec.rb +23 -2
  49. data/spec/lib/geo_combine/fgdc_spec.rb +41 -10
  50. data/spec/lib/geo_combine/formatting_spec.rb +13 -5
  51. data/spec/lib/geo_combine/geo_blacklight_harvester_spec.rb +194 -0
  52. data/spec/lib/geo_combine/geoblacklight_spec.rb +41 -11
  53. data/spec/lib/geo_combine/iso19139_spec.rb +26 -14
  54. data/spec/lib/geo_combine/ogp_spec.rb +28 -8
  55. data/spec/lib/geo_combine_spec.rb +7 -4
  56. data/spec/lib/tasks/geo_combine_spec.rb +45 -0
  57. data/spec/spec_helper.rb +19 -84
  58. data/spec/support/fixtures.rb +9 -0
  59. metadata +103 -6
  60. data/.coveralls.yml +0 -1
  61. data/.travis.yml +0 -7
@@ -1,1070 +1,1107 @@
1
- <?xml version="1.0" encoding="utf-8" ?>
2
-
3
- <!--
4
- iso2html.xsl - Transformation from ISO 19139 into HTML
5
- Created by Kim Durante, Stanford University Libraries
6
-
7
- TODO: Needs full Data Quality section mapped
8
- Not sure if complete contactInfo is needed for each Responsible Party?
9
-
10
-
11
-
12
- -->
13
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
14
- xmlns:xlink="http://www.w3.org/1999/xlink"
15
- xmlns:gmd="http://www.isotc211.org/2005/gmd"
16
- xmlns:gco="http://www.isotc211.org/2005/gco"
17
- xmlns:gts="http://www.isotc211.org/2005/gts"
18
- xmlns:srv="http://www.isotc211.org/2005/srv"
19
- xmlns:gml="http://www.opengis.net/gml"
20
- exclude-result-prefixes="gmd gco gml srv xlink gts">
21
-
22
- <xsl:output method="html" encoding="UTF-8" indent="yes"/>
23
-
24
- <xsl:template match="/">
25
- <html>
26
- <head>
27
- <title><xsl:value-of select="gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title"/></title>
28
- </head>
29
- <body>
30
- <h1><xsl:value-of select="gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title"/></h1>
31
- <ul>
32
- <xsl:if test="gmd:MD_Metadata/gmd:identificationInfo">
33
- <li><a href="#iso-identification-info">Identification Information</a></li>
34
- </xsl:if>
35
-
36
- <xsl:if test="gmd:MD_Metadata/gmd:referenceSystemInfo">
37
- <li><a href="#iso-spatial-reference-info">Spatial Reference Information</a></li>
38
- </xsl:if>
39
-
40
- <xsl:if test="gmd:MD_Metadata/gmd:dataQualityInfo">
41
- <li><a href="#iso-data-quality-info">Data Quality Information</a></li>
42
- </xsl:if>
43
-
44
- <xsl:if test="gmd:MD_Metadata/gmd:distributionInfo">
45
- <li><a href="#iso-distribution-info">Distribution Information</a></li>
46
- </xsl:if>
47
-
48
- <xsl:if test="gmd:MD_Metadata/gmd:contentInfo">
49
- <li><a href="#iso-content-info">Content Information</a></li>
50
- </xsl:if>
51
-
52
- <xsl:if test="gmd:MD_Metadata/gmd:spatialRepresentationInfo">
53
- <li><a href="#iso-spatial-representation-info">Spatial Representation Information</a></li>
54
- </xsl:if>
55
-
56
- <xsl:if test="gmd:MD_Metadata">
57
- <li><a href="#iso-metadata-reference-info">Metadata Reference Information</a></li>
58
- </xsl:if>
59
- </ul>
60
- <xsl:apply-templates/>
61
- </body>
62
- </html>
63
- </xsl:template>
64
-
65
-
66
- <xsl:template match="gmd:MD_Metadata">
67
- <div id="iso-identification-info">
68
- <dl>
69
- <dt>Identification Information</dt>
70
- <dd>
71
- <dl>
72
- <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation">
73
- <dt>Citation</dt>
74
- <dd>
75
- <dl>
76
- <dt>Title</dt>
77
- <dd>
78
- <xsl:value-of select="gmd:title"/>
79
- </dd>
80
- <xsl:choose>
81
- <xsl:when test="gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='originator']">
82
- <xsl:for-each select="gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='originator']">
83
- <dt>Originator</dt>
84
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:organisationName | ancestor-or-self::*/gmd:individualName"/></dd>
85
- </xsl:for-each>
86
- </xsl:when>
87
-
88
- <xsl:when test="//gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact">
89
- <xsl:for-each select="//gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact">
90
- <xsl:if test="gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode/@codeListValue='originator'">
91
- <dt>Originator</dt>
92
- <dd><xsl:value-of select="gmd:CI_ResponsibleParty/gmd:organisationName | gmd:CI_ResponsibleParty/gmd:individualName"/></dd>
93
- </xsl:if>
94
- </xsl:for-each>
95
- </xsl:when>
96
- </xsl:choose>
97
-
98
- <xsl:for-each select="gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='publisher']">
99
- <dt>Publisher</dt>
100
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:organisationName | ancestor-or-self::*/gmd:individualName"/></dd>
101
- <xsl:if test="ancestor-or-self::*/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:city">
102
- <dt>Place of Publication</dt>
103
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:city"/>
104
- <xsl:if test="ancestor-or-self::*/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:administrativeArea">
105
- <xsl:text>,</xsl:text>
106
- <xsl:value-of select="ancestor-or-self::*/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:administrativeArea"/>
107
- </xsl:if>
108
- <xsl:if test="ancestor-or-self::*/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:country">
109
- <xsl:text>,</xsl:text>
110
- <xsl:value-of select="ancestor-or-self::*/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:country"/>
111
- </xsl:if>
112
- </dd>
113
- </xsl:if>
114
- </xsl:for-each>
115
-
116
-
117
-
118
- <xsl:for-each select="gmd:date/gmd:CI_Date">
119
- <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'publication')">
120
- <dt>Publication Date</dt>
121
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/></dd>
122
- </xsl:if>
123
- <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'creation')">
124
- <dt>Creation Date</dt>
125
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/></dd>
126
- </xsl:if>
127
- <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'revision')">
128
- <dt>Revision Date</dt>
129
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/></dd>
130
- </xsl:if>
131
- </xsl:for-each>
132
-
133
- <xsl:if test="gmd:edition">
134
- <dt>Edition</dt>
135
- <dd>
136
- <xsl:value-of select="gmd:edition"/>
137
- </dd>
138
- </xsl:if>
139
-
140
- <xsl:if test="gmd:identifier/gmd:MD_Identifier/gmd:code">
141
- <dt>Identifier</dt>
142
- <dd>
143
- <xsl:value-of select="gmd:identifier/gmd:MD_Identifier/gmd:code"/>
144
- </dd>
145
- </xsl:if>
146
-
147
- <xsl:for-each select="gmd:presentationForm/gmd:CI_PresentationFormCode/@codeListValue">
148
- <dt>Geospatial Data Presentation Form</dt>
149
- <dd><xsl:value-of select="."/></dd>
150
- </xsl:for-each>
151
-
152
- <xsl:for-each select="gmd:collectiveTitle">
153
- <dt>Collection Title</dt>
154
- <dd><xsl:value-of select="."/></dd>
155
- </xsl:for-each>
156
-
157
- <xsl:for-each select="gmd:otherCitationDetails">
158
- <dt>Other Citation Details</dt>
159
- <dd>
160
- <xsl:value-of select="."/>
161
- </dd>
162
- </xsl:for-each>
163
-
164
- <xsl:for-each select="gmd:series/gmd:CI_Series">
165
- <dt>Series</dt>
166
- <dd>
167
- <dl>
168
- <dd>
169
- <dt>Series Title</dt>
170
- <dd><xsl:value-of select="gmd:name"/></dd>
171
- <dt>Issue</dt>
172
- <dd><xsl:value-of select="gmd:issueIdentification"/></dd>
173
- </dd>
174
- </dl>
175
- </dd>
176
- </xsl:for-each>
177
- </dl>
178
- </dd>
179
- </xsl:for-each>
180
-
181
-
182
- <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract">
183
- <dt>Abstract</dt>
184
- <dd><xsl:value-of select="."/></dd>
185
- </xsl:for-each>
186
-
187
- <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:purpose">
188
- <dt>Purpose</dt>
189
- <dd><xsl:value-of select="."/></dd>
190
- </xsl:for-each>
191
- <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:supplementalInformation">
192
- <dt>Supplemental Information</dt>
193
- <dd>
194
- <xsl:value-of select="."/>
195
- </dd>
196
- </xsl:for-each>
197
-
198
- <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:equivalentScale/gmd:MD_RepresentativeFraction/gmd:denominator">
199
- <dt>Scale Denominator</dt>
200
- <dd>
201
- <xsl:value-of select="."/>
202
- </dd>
203
- </xsl:for-each>
204
-
205
- <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent">
206
- <dt>Temporal Extent</dt>
207
- <dd>
208
- <dl>
209
- <xsl:if test="ancestor-or-self::*/gmd:description">
210
- <dt>Currentness Reference</dt>
211
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:description"/></dd>
212
- </xsl:if>
213
- <xsl:choose>
214
- <xsl:when test="gml:TimePeriod">
215
- <dt>Time Period</dt>
216
- <dd>
217
- <dl>
218
- <dt>Begin</dt>
219
- <dd>
220
- <xsl:value-of select="gml:TimePeriod/gml:beginPosition"/>
221
- </dd>
222
- <dt>End</dt>
223
- <dd>
224
- <xsl:value-of select="gml:TimePeriod/gml:endPosition"/>
225
- </dd>
226
- </dl>
227
- </dd>
228
- </xsl:when>
229
- <xsl:when test="gml:TimeInstant">
230
- <dt>Time Instant</dt>
231
- <dd><xsl:value-of select="gml:TimeInstant/gml:timePosition"/></dd>
232
- </xsl:when>
233
- </xsl:choose>
234
- </dl>
235
- </dd>
236
- </xsl:for-each>
237
-
238
-
239
- <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox">
240
- <dt>Bounding Box</dt>
241
- <dd>
242
- <dl>
243
- <dt>West</dt>
244
- <dd>
245
- <xsl:value-of select="gmd:westBoundLongitude"/>
246
- </dd>
247
- <dt>East</dt>
248
- <dd>
249
- <xsl:value-of select="gmd:eastBoundLongitude"/>
250
- </dd>
251
- <dt>North</dt>
252
- <dd>
253
- <xsl:value-of select="gmd:northBoundLatitude"/>
254
- </dd>
255
- <dt>South</dt>
256
- <dd>
257
- <xsl:value-of select="gmd:southBoundLatitude"/>
258
- </dd>
259
- </dl>
260
- </dd>
261
- </xsl:for-each>
262
-
263
- <xsl:if test="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:topicCategory/gmd:MD_TopicCategoryCode">
264
- <dt>ISO Topic Category</dt>
265
- <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:topicCategory/gmd:MD_TopicCategoryCode">
266
- <dd>
267
- <xsl:value-of select="."/>
268
- </dd>
269
- </xsl:for-each>
270
- </xsl:if>
271
-
272
-
273
- <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords">
274
-
275
-
276
- <xsl:choose>
277
- <xsl:when test="ancestor-or-self::*/gmd:type/gmd:MD_KeywordTypeCode[@codeListValue='theme']">
278
- <dt>Theme Keyword</dt>
279
- <xsl:for-each select="gmd:keyword">
280
-
281
- <dd>
282
- <xsl:value-of select="."/>
283
- <xsl:if test="position()=last()">
284
- <dl>
285
- <dt>Theme Keyword Thesaurus</dt>
286
- <dd> <xsl:value-of select="ancestor-or-self::*/gmd:thesaurusName/gmd:CI_Citation/gmd:title"/></dd>
287
- </dl>
288
- </xsl:if>
289
- </dd>
290
- </xsl:for-each>
291
-
292
- </xsl:when>
293
-
294
- <xsl:when test="ancestor-or-self::*/gmd:type/gmd:MD_KeywordTypeCode[@codeListValue='place']">
295
- <dt>Place Keyword</dt>
296
- <xsl:for-each select="gmd:keyword">
297
-
298
- <dd>
299
- <xsl:value-of select="."/>
300
- <xsl:if test="position()=last()">
301
- <dl>
302
- <dt>Place Keyword Thesaurus</dt>
303
- <dd> <xsl:value-of select="ancestor-or-self::*/gmd:thesaurusName/gmd:CI_Citation/gmd:title"/></dd>
304
- </dl>
305
- </xsl:if>
306
- </dd>
307
- </xsl:for-each>
308
- </xsl:when>
309
-
310
- <xsl:when test="ancestor-or-self::*/gmd:type/gmd:MD_KeywordTypeCode[@codeListValue='temporal']">
311
- <dt>Temporal Keyword</dt>
312
- <xsl:for-each select="gmd:keyword">
313
-
314
- <dd>
315
- <xsl:value-of select="."/>
316
- </dd>
317
- </xsl:for-each>
318
- </xsl:when>
319
- </xsl:choose>
320
-
321
-
322
- </xsl:for-each>
323
-
324
- <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints">
325
-
326
- <xsl:if test="gmd:MD_LegalConstraints">
327
- <dt>Legal Constraints</dt>
328
- </xsl:if>
329
-
330
- <xsl:if test="gmd:MD_SecurityConstraints">
331
- <dt>Security Constraints</dt>
332
- </xsl:if>
333
-
334
- <xsl:if test="gmd:MD_Constraints">
335
- <dt>Resource Constraints</dt>
336
- </xsl:if>
337
-
338
- <dd>
339
- <dl>
340
- <xsl:if test="*/gmd:useLimitation">
341
- <dt>Use Limitation</dt>
342
- <dd>
343
- <xsl:value-of select="*/gmd:useLimitation"/>
344
- </dd>
345
- </xsl:if>
346
- <xsl:if test="*/gmd:accessConstraints">
347
- <dt>Access Restrictions</dt>
348
- <dd>
349
- <xsl:value-of select="*/gmd:accessConstraints/gmd:MD_RestrictionCode/@codeListValue"/>
350
- </dd>
351
- </xsl:if>
352
- <xsl:if test="*/gmd:useConstraints">
353
- <dt>Use Restrictions</dt>
354
- <dd>
355
- <xsl:value-of select="*/gmd:useConstraints/gmd:MD_RestrictionCode/@codeListValue"/>
356
- </dd>
357
- </xsl:if>
358
- <xsl:if test="*/gmd:otherConstraints">
359
- <dt>Other Restrictions</dt>
360
- <dd>
361
- <xsl:value-of select="*/gmd:otherConstraints"/>
362
- </dd>
363
- </xsl:if>
364
- </dl>
365
- </dd>
366
- </xsl:for-each>
367
-
368
-
369
- <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:status">
370
- <dt>Status</dt>
371
- <dd><xsl:value-of select="gmd:MD_ProgressCode/@codeListValue"/></dd>
372
- </xsl:for-each>
373
-
374
- <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceMaintenance/gmd:MD_MaintenanceInformation/gmd:maintenanceAndUpdateFrequency">
375
- <dt>Maintenance and Update Frequency</dt>
376
- <dd>
377
- <xsl:value-of select="gmd:MD_MaintenanceFrequencyCode/@codeListValue"/>
378
- </dd>
379
- </xsl:for-each>
380
-
381
- <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:aggregationInfo/gmd:MD_AggregateInformation/gmd:associationType/gmd:DS_AssociationTypeCode[@codeListValue='largerWorkCitation']">
382
- <dt>Collection</dt>
383
- <dd>
384
- <dl>
385
- <dt>Collection Title</dt>
386
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:title"/></dd>
387
- <dt>URL</dt>
388
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:identifier/gmd:MD_Identifier/gmd:code"/></dd>
389
- <xsl:for-each select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='originator']">
390
- <dt>Originator</dt>
391
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:organisationName | ancestor-or-self::*/gmd:individualName"/></dd>
392
- </xsl:for-each>
393
- <xsl:for-each select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='publisher']">
394
- <dt>Publisher</dt>
395
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:organisationName | ancestor-or-self::*/gmd:individualName"/></dd>
396
- </xsl:for-each>
397
- <xsl:for-each select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:date">
398
- <xsl:if test="contains(descendant-or-self::*/gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'publication')">
399
- <dt>Publication Date</dt>
400
- <dd><xsl:value-of select="gmd:CI_Date/gmd:date"/></dd>
401
- </xsl:if>
402
- <xsl:if test="contains(descendant-or-self::*/gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'creation')">
403
- <dt>Creation Date</dt>
404
- <dd><xsl:value-of select="gmd:CI_Date/gmd:date"/></dd>
405
- </xsl:if>
406
- <xsl:if test="contains(descendant-or-self::*/gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'revision')">
407
- <dt>Revision Date</dt>
408
- <dd><xsl:value-of select="gmd:CI_Date/gmd:date"/></dd>
409
- </xsl:if>
410
- </xsl:for-each>
411
- <xsl:for-each select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:series/gmd:CI_Series">
412
- <dt>Series</dt>
413
- <dd>
414
- <dl>
415
- <dd>
416
- <dt>Series Title</dt>
417
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:name"/></dd>
418
- <dt>Issue</dt>
419
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:issueIdentification"/></dd>
420
- </dd>
421
- </dl>
422
- </dd>
423
- </xsl:for-each>
424
- </dl>
425
- </dd>
426
- </xsl:for-each>
427
-
428
- <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:aggregationInfo/gmd:MD_AggregateInformation/gmd:associationType/gmd:DS_AssociationTypeCode[@codeListValue='crossReference']">
429
- <dt>Cross Reference</dt>
430
- <dd>
431
- <dl>
432
- <dt>Title</dt>
433
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:title"/></dd>
434
- <dt>URL</dt>
435
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:identifier/gmd:MD_Identifier/gmd:code"/></dd>
436
- <xsl:for-each select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='originator']">
437
- <dt>Originator</dt>
438
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:organisationName | ancestor-or-self::*/gmd:individualName"/></dd>
439
- </xsl:for-each>
440
- <xsl:for-each select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='publisher']">
441
- <dt>Publisher</dt>
442
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:organisationName | ancestor-or-self::*/gmd:individualName"/></dd>
443
- </xsl:for-each>
444
- <xsl:for-each select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:date">
445
- <xsl:if test="contains(descendant-or-self::*/gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'publication')">
446
- <dt>Publication Date</dt>
447
- <dd><xsl:value-of select="gmd:CI_Date/gmd:date"/></dd>
448
- </xsl:if>
449
- <xsl:if test="contains(descendant-or-self::*/gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'creation')">
450
- <dt>Creation Date</dt>
451
- <dd><xsl:value-of select="gmd:CI_Date/gmd:date"/></dd>
452
- </xsl:if>
453
- <xsl:if test="contains(descendant-or-self::*/gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'revision')">
454
- <dt>Revision Date</dt>
455
- <dd><xsl:value-of select="gmd:CI_Date/gmd:date"/></dd>
456
- </xsl:if>
457
- </xsl:for-each>
458
- </dl>
459
- </dd>
460
- </xsl:for-each>
461
- <dt>Language</dt>
462
- <dd>
463
- <xsl:value-of select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:language"/>
464
- </dd>
465
-
466
- <xsl:if test="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:credit">
467
- <dt>Credit</dt>
468
- <dd><xsl:value-of select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:credit"/></dd>
469
- </xsl:if>
470
-
471
- <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact">
472
- <dt>Point of Contact</dt>
473
- <dd>
474
- <dl>
475
- <xsl:for-each select="gmd:CI_ResponsibleParty">
476
- <dt>Contact</dt>
477
- <dd>
478
- <xsl:value-of select="gmd:organisationName | gmd:individualName"/>
479
- </dd>
480
- <xsl:if test="gmd:positionName">
481
- <dt>Position Name</dt>
482
- <dd>
483
- <xsl:value-of select="gmd:positionName"/>
484
- </dd>
485
- </xsl:if>
486
-
487
- <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:deliveryPoint">
488
- <dt>Delivery Point</dt>
489
- <dd>
490
- <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:deliveryPoint"/>
491
- </dd>
492
- </xsl:if>
493
-
494
- <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:city">
495
- <dt>City</dt>
496
- <dd>
497
- <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:city"/>
498
- </dd>
499
- </xsl:if>
500
- <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:administrativeArea">
501
- <dt>Administrative Area</dt>
502
- <dd>
503
- <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:administrativeArea"/>
504
- </dd>
505
- </xsl:if>
506
- <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:postalCode">
507
- <dt>Postal Code</dt>
508
- <dd><xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:postalCode"/></dd>
509
- </xsl:if>
510
- <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:country">
511
- <dt>Country</dt>
512
- <dd>
513
- <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:country"/>
514
- </dd>
515
- </xsl:if>
516
- <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:electronicMailAddress">
517
- <dt>Email</dt>
518
- <dd>
519
- <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:electronicMailAddress"/>
520
- </dd>
521
- </xsl:if>
522
- <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:phone/gmd:CI_Telephone/gmd:voice">
523
- <dt>Phone</dt>
524
- <dd>
525
- <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:phone/gmd:CI_Telephone/gmd:voice"/>
526
- </dd>
527
- </xsl:if>
528
- </xsl:for-each>
529
- </dl>
530
- </dd>
531
- </xsl:for-each>
532
- </dl>
533
- </dd>
534
- </dl>
535
- </div>
536
-
537
- <!-- Spatial Reference Info -->
538
-
539
- <xsl:if test="gmd:referenceSystemInfo">
540
- <div id="iso-spatial-reference-info">
541
- <dt>Spatial Reference Information</dt>
542
- <dd>
543
- <dl>
544
- <dt>Reference System Identifier</dt>
545
- <dd>
546
- <dl>
547
- <dt>Code</dt>
548
- <dd><xsl:value-of select="gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:code"/></dd>
549
- <dt>Code Space</dt>
550
- <dd><xsl:value-of select="gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:codeSpace"/></dd>
551
- <dt>Version</dt>
552
- <dd><xsl:value-of select="gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:version"/></dd>
553
- </dl>
554
- </dd>
555
- </dl>
556
- </dd>
557
- </div>
558
- </xsl:if>
559
-
560
- <!-- Data Quality Info -->
561
- <xsl:if test="gmd:dataQualityInfo/gmd:DQ_DataQuality">
562
- <div id="iso-data-quality-info">
563
- <dt>Data Quality Information</dt>
564
- <dd>
565
- <dl>
566
- <xsl:if test="gmd:DQ_Scope/gmd:level">
567
- <dt>Hierarchy Level</dt>
568
- <dd>
569
- <xsl:value-of select="gmd:DQ_Scope/gmd:level/gmd:MD_ScopeCode[@codeListValue]"/>
570
- </dd>
571
- </xsl:if>
572
- <xsl:for-each select="gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report">
573
- <xsl:if test="gmd:DQ_QuantitativeAttributeAccuracy">
574
- <dt>Quantitative Attribute Accuracy Report</dt>
575
- <dd>
576
- <dl>
577
- <xsl:if test="gmd:DQ_QuantitativeAttributeAccuracy/gmd:evaluationMethodDescription/text()">
578
- <dt>Evaluation Method</dt>
579
- <dd><xsl:value-of select="gmd:DQ_QuantitativeAttributeAccuracy/gmd:evaluationMethodDescription"/></dd>
580
- </xsl:if>
581
- <xsl:if test="gmd:DQ_QuantitativeAttributeAccuracy/gmd:result/text()">
582
- <dt>Result</dt>
583
- <dd><xsl:value-of select="gmd:DQ_QuantitativeAttributeAccuracy/gmd:result"/></dd>
584
- </xsl:if>
585
- </dl>
586
- </dd>
587
- </xsl:if>
588
-
589
- <xsl:if test="gmd:DQ_AbsoluteExternalPositionalAccuracy">
590
- <dt>Absolute External Positional Accuracy</dt>
591
- <dd>
592
- <dl>
593
- <xsl:if test="gmd:DQ_AbsoluteExternalPositionalAccuracy/gmd:evaluationMethodDescription/text()">
594
- <dt>Evaluation Method</dt>
595
- <dd><xsl:value-of select="gmd:DQ_AbsoluteExternalPositionalAccuracy/gmd:evaluationMethodDescription"/></dd>
596
- </xsl:if>
597
- <xsl:if test="gmd:DQ_AbsoluteExternalPositionalAccuracy/gmd:result/text()">
598
- <dt>Result</dt>
599
- <dd><xsl:value-of select="gmd:DQ_AbsoluteExternalPositionalAccuracy/gmd:result"/></dd>
600
- </xsl:if>
601
- </dl>
602
- </dd>
603
- </xsl:if>
604
-
605
- <xsl:if test="gmd:DQ_CompletenessCommission">
606
- <dt>Completeness Commission</dt>
607
- <dd>
608
- <dl>
609
- <xsl:if test="gmd:DQ_CompletenessCommission/gmd:evaluationMethodDescription/text()">
610
- <dt>Evaluation Method</dt>
611
- <dd><xsl:value-of select="gmd:DQ_CompletenessCommission/gmd:evaluationMethodDescription"/></dd>
612
- </xsl:if>
613
- <xsl:if test="gmd:DQ_CompletenessCommission/gmd:result/text()">
614
- <dt>Result</dt>
615
- <dd><xsl:value-of select="gmd:DQ_CompletenessCommission/gmd:result"/></dd>
616
- </xsl:if>
617
- </dl>
618
- </dd>
619
- </xsl:if>
620
- </xsl:for-each>
621
- <xsl:for-each select="gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:lineage/gmd:LI_Lineage">
622
- <dt>Lineage</dt>
623
- <dd>
624
- <dl>
625
- <xsl:if test="gmd:statement">
626
- <dt>Statement</dt>
627
- <dd>
628
- <xsl:value-of select="gmd:statement"/>
629
- </dd>
630
- </xsl:if>
631
- <xsl:for-each select="gmd:processStep/gmd:LI_ProcessStep">
632
- <dt>Process Step</dt>
633
- <dd>
634
- <dl>
635
- <xsl:if test="gmd:description">
636
- <dt>Description</dt>
637
- <dd>
638
- <xsl:value-of select="gmd:description"/>
639
- </dd>
640
- </xsl:if>
641
-
642
- <xsl:for-each select="gmd:CI_ResponsibleParty">
643
- <dt>Processor</dt>
644
- <dd>
645
- <xsl:value-of select="gmd:individualName | gmd:organisationName"/>
646
- </dd>
647
- </xsl:for-each>
648
-
649
- <xsl:if test="gmd:dateTime">
650
- <dt>Process Date</dt>
651
- <dd>
652
- <xsl:value-of select="gmd:dateTime"/>
653
- </dd>
654
- </xsl:if>
655
- </dl>
656
- </dd>
657
- </xsl:for-each>
658
- <xsl:for-each select="gmd:source/gmd:LI_Source/gmd:sourceCitation">
659
- <dt>Source</dt>
660
- <dd>
661
- <dl>
662
- <dt>Title</dt>
663
- <dd>
664
- <xsl:value-of select="gmd:CI_Citation/gmd:title"/>
665
- </dd>
666
- <xsl:for-each select="gmd:CI_Citation/gmd:date/gmd:CI_Date">
667
- <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'publication')">
668
- <dt>Publication Date</dt>
669
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/></dd>
670
- </xsl:if>
671
- <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'creation')">
672
- <dt>Creation Date</dt>
673
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/></dd>
674
- </xsl:if>
675
- <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'revision')">
676
- <dt>Revision Date</dt>
677
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/></dd>
678
- </xsl:if>
679
- </xsl:for-each>
680
- <xsl:for-each select="gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='originator']">
681
- <dt>Originator</dt>
682
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:organisationName | ancestor-or-self::*/gmd:individualName"/></dd>
683
- </xsl:for-each>
684
-
685
- <xsl:for-each select="gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='publisher']">
686
- <dt>Publisher</dt>
687
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:organisationName | ancestor-or-self::*/gmd:individualName"/></dd>
688
- <xsl:if test="ancestor-or-self::*/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:city">
689
- <dt>Place of Publication</dt>
690
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:city"/></dd>
691
- </xsl:if>
692
- </xsl:for-each>
693
-
694
- <xsl:if test="gmd:CI_Citation/gmd:identifier/gmd:MD_Identifier/gmd:code">
695
- <dt>Identifier</dt>
696
- <dd><xsl:value-of select="gmd:CI_Citation/gmd:identifier/gmd:MD_Identifier/gmd:code"/></dd>
697
- </xsl:if>
698
- <xsl:if test="ancestor-or-self::*/gmd:description">
699
- <dt>Description</dt>
700
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:description"/></dd>
701
- </xsl:if>
702
- </dl>
703
- </dd>
704
- </xsl:for-each>
705
- </dl>
706
- </dd>
707
- </xsl:for-each>
708
-
709
- </dl>
710
- </dd>
711
- </div>
712
- </xsl:if>
713
-
714
- <!-- Distribution -->
715
- <xsl:if test="gmd:distributionInfo">
716
- <div id="iso-distribution-info">
717
- <dt>Distribution Information</dt>
718
- <dd>
719
- <dl>
720
- <xsl:if test="gmd:distributionInfo/gmd:MD_Distribution/gmd:distributionFormat/gmd:MD_Format">
721
- <dt>Format Name</dt>
722
- <dd>
723
- <xsl:value-of select="gmd:distributionInfo/gmd:MD_Distribution/gmd:distributionFormat/gmd:MD_Format/gmd:name"/>
724
- </dd>
725
- <xsl:if test="gmd:distributionInfo/gmd:MD_Distribution/gmd:distributionFormat/gmd:MD_Format/gmd:version/text()">
726
- <dt>Format Version</dt>
727
- <dd>
728
- <xsl:value-of select="gmd:distributionInfo/gmd:MD_Distribution/gmd:distributionFormat/gmd:MD_Format/gmd:version"/>
729
- </dd>
730
- </xsl:if>
731
- </xsl:if>
732
-
733
- <xsl:for-each select="gmd:distributionInfo/gmd:MD_Distribution/gmd:distributor/gmd:MD_Distributor">
734
- <dt>Distributor</dt>
735
- <dd>
736
- <xsl:value-of select="gmd:distributorContact/gmd:CI_ResponsibleParty/gmd:organisationName"/>
737
- </dd>
738
- </xsl:for-each>
739
-
740
- <xsl:for-each select="gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions">
741
- <dt>Online Access</dt>
742
- <dd>
743
- <xsl:value-of select="gmd:onLine/gmd:CI_OnlineResource/gmd:linkage/gmd:URL"/>
744
- </dd>
745
- <dt>Protocol</dt>
746
- <dd>
747
- <xsl:value-of select="gmd:onLine/gmd:CI_OnlineResource/gmd:protocol"/>
748
- </dd>
749
- <dt>Name</dt>
750
- <dd>
751
- <xsl:value-of select="gmd:onLine/gmd:CI_OnlineResource/gmd:name"/>
752
- </dd>
753
- <xsl:if test="gmd:onLine/gmd:CI_OnlineResource/gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue">
754
- <dt>Function</dt>
755
- <dd>
756
- <xsl:value-of select="gmd:onLine/gmd:CI_OnlineResource/gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue"/>
757
- </dd>
758
- </xsl:if>
759
- <xsl:if test="gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:transferSize">
760
- <dt>Transfer Size</dt>
761
- <dd><xsl:value-of select="gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:transferSize"/></dd>
762
- </xsl:if>
763
- </xsl:for-each>
764
- </dl>
765
- </dd>
766
- </div>
767
- </xsl:if>
768
-
769
- <!-- Content Info -->
770
- <xsl:if test="gmd:contentInfo">
771
- <div id="iso-content-info">
772
- <dt>Content Information</dt>
773
- <dd>
774
- <dl>
775
- <xsl:if test="gmd:contentInfo/gmd:MD_FeatureCatalogueDescription">
776
- <dt>Feature Catalog Description</dt>
777
- <dd>
778
- <dl>
779
- <dt>Compliance Code</dt>
780
- <dd><xsl:value-of select="gmd:contentInfo/gmd:MD_FeatureCatalogueDescription/gmd:complianceCode"/></dd>
781
- <dt>Language</dt>
782
- <dd><xsl:value-of select="gmd:contentInfo/gmd:MD_FeatureCatalogueDescription/gmd:language"/></dd>
783
- <dt>Included With Dataset</dt>
784
- <dd><xsl:value-of select="gmd:contentInfo/gmd:MD_FeatureCatalogueDescription/gmd:includedWithDataset"/></dd>
785
- <dt>Feature Catalog Citation</dt>
786
- <dd>
787
- <dl>
788
- <dt>Title</dt>
789
- <dd>
790
- <xsl:value-of select="gmd:contentInfo/gmd:MD_FeatureCatalogueDescription/gmd:featureCatalogueCitation/gmd:CI_Citation/gmd:title"/>
791
- </dd>
792
-
793
- <xsl:for-each select="gmd:contentInfo/gmd:MD_FeatureCatalogueDescription/gmd:featureCatalogueCitation/gmd:CI_Citation/gmd:date/gmd:CI_Date">
794
- <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'publication')">
795
- <dt>Publication Date</dt>
796
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/></dd>
797
- </xsl:if>
798
- <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'creation')">
799
- <dt>Creation Date</dt>
800
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/></dd>
801
- </xsl:if>
802
- <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'revision')">
803
- <dt>Revision Date</dt>
804
- <dd><xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/></dd>
805
- </xsl:if>
806
- </xsl:for-each>
807
- <dt>Feature Catalog Identifier</dt>
808
- <dd><xsl:value-of select="gmd:contentInfo/gmd:MD_FeatureCatalogueDescription/gmd:featureCatalogueCitation/gmd:CI_Citation/gmd:identifier/gmd:MD_Identifier/gmd:code"/></dd>
809
- </dl>
810
- </dd>
811
- </dl>
812
- </dd>
813
- </xsl:if>
814
- <xsl:if test="gmd:contentInfo/gmd:MD_ImageDescription">
815
- <dt>Content Type</dt>
816
- <dd>
817
- <xsl:value-of select="gmd:contentInfo/gmd:MD_ImageDescription/gmd:contentType/gmd:MD_CoverageContentTypeCode[@codeListValue]"/>
818
- </dd>
819
- </xsl:if>
820
- </dl>
821
- </dd>
822
- </div>
823
- </xsl:if>
824
- <!-- Spatial Representation -->
825
- <xsl:if test="gmd:spatialRepresentationInfo">
826
- <div id="iso-spatial-representation-info">
827
- <dt>Spatial Representation Information</dt>
828
- <dd>
829
- <dl>
830
- <xsl:choose>
831
- <xsl:when test="gmd:spatialRepresentationInfo/gmd:MD_VectorSpatialRepresentation">
832
- <dt>Vector</dt>
833
- <dd>
834
- <dl>
835
- <dt>Topology Level</dt>
836
- <dd>
837
- <xsl:value-of select="gmd:spatialRepresentationInfo/gmd:MD_VectorSpatialRepresentation/gmd:topologyLevel/gmd:MD_TopologyLevelCode[@codeListValue]"/>
838
- </dd>
839
- <dt>Vector Object Type</dt>
840
- <dd>
841
- <xsl:value-of select="gmd:spatialRepresentationInfo/gmd:MD_VectorSpatialRepresentation/gmd:geometricObjects/gmd:MD_GeometricObjects/gmd:geometricObjectType/gmd:MD_GeometricObjectTypeCode[@codeListValue]"/>
842
- </dd>
843
- <dt>Vector Object Count</dt>
844
- <dd>
845
- <xsl:value-of select="gmd:spatialRepresentationInfo/gmd:MD_VectorSpatialRepresentation/gmd:geometricObjects/gmd:MD_GeometricObjects/gmd:geometricObjectCount"/>
846
- </dd>
847
- </dl>
848
- </dd>
849
- </xsl:when>
850
-
851
- <xsl:when test="gmd:spatialRepresentationInfo/gmd:MD_GridSpatialRepresentation">
852
- <dt>Raster</dt>
853
- <dd>
854
- <dl>
855
- <xsl:if test="gmd:spatialRepresentationInfo/gmd:MD_GridSpatialRepresentation/gmd:numberOfDimensions">
856
- <dt>Number of Dimensions</dt>
857
- <dd>
858
- <xsl:value-of select="gmd:spatialRepresentationInfo/gmd:MD_GridSpatialRepresentation/gmd:numberOfDimensions"/>
859
- </dd>
860
- </xsl:if>
861
- <dd>
862
- <dl>
863
- <xsl:for-each select="gmd:spatialRepresentationInfo/MD_GridSpatialRepresentation/gmd:axisDimensionProperties/gmd:MD_Dimension">
864
- <xsl:if test="gmd:dimensionName/gmd:MD_DimensionNameTypeCode/@codeListValue='column'">
865
- <dt>Column Count</dt>
866
- <dd>
867
- <xsl:value-of select="gmd:dimensionSize"/>
868
- </dd></xsl:if>
869
-
870
- <xsl:if test="gmd:dimensionName/gmd:MD_DimensionNameTypeCode/@codeListValue='row'">
871
- <dt>Row Count</dt>
872
- <dd>
873
- <xsl:value-of select="gmd:dimensionSize"/>
874
- </dd></xsl:if>
875
- </xsl:for-each>
876
-
877
- <xsl:if test="gmd:spatialRepresentationInfo/MD_GridSpatialRepresentation/gmd:cellGeometry/gmd:MD_CellGeometryCode">
878
- <dt>Cell Geometry Type</dt>
879
- <dd>
880
- <xsl:value-of select="gmd:spatialRepresentationInfo/MD_GridSpatialRepresentation/gmd:cellGeometry/gmd:MD_CellGeometryCode/@codeListValue"/>
881
- </dd>
882
- </xsl:if>
883
-
884
- <xsl:if test="gmd:spatialRepresentationInfo/MD_GridSpatialRepresentation/gmd:cornerPoints">
885
- <dt>Corner Points</dt>
886
- <dd>
887
- <dl>
888
- <xsl:for-each select="gmd:spatialRepresentationInfo/MD_GridSpatialRepresentation/gmd:cornerPoints/gml:Point">
889
- <dt>Point</dt>
890
- <dd><xsl:value-of select="gml:pos"/></dd>
891
- </xsl:for-each>
892
- </dl>
893
- </dd>
894
-
895
- <xsl:for-each select="gmd:spatialRepresentationInfo/MD_GridSpatialRepresentation/gmd:centerPoint/gml:Point">
896
- <dt>Center Point</dt>
897
- <dd><xsl:value-of select="gml:pos"/></dd>
898
- </xsl:for-each>
899
- </xsl:if>
900
- </dl>
901
- </dd>
902
- </dl>
903
- </dd>
904
- </xsl:when>
905
- <xsl:when test="gmd:spatialRepresentationInfo/gmd:MD_Georectified">
906
- <dt>Raster</dt>
907
- <dd>
908
- <dl>
909
- <xsl:if test="gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:numberOfDimensions">
910
- <dt>Number of Dimensions</dt>
911
- <dd>
912
- <xsl:value-of select="gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:numberOfDimensions"/>
913
- </dd>
914
- </xsl:if>
915
-
916
- <xsl:for-each select="gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:axisDimensionProperties/gmd:MD_Dimension">
917
- <xsl:if test="gmd:dimensionName/gmd:MD_DimensionNameTypeCode/@codeListValue='column'">
918
- <dt>Column Count</dt>
919
- <dd>
920
- <xsl:value-of select="gmd:dimensionSize"/>
921
- </dd></xsl:if>
922
-
923
- <xsl:if test="gmd:dimensionName/gmd:MD_DimensionNameTypeCode/@codeListValue='row'">
924
- <dt>Row Count</dt>
925
- <dd>
926
- <xsl:value-of select="gmd:dimensionSize"/>
927
- </dd></xsl:if>
928
- </xsl:for-each>
929
-
930
- <xsl:if test="gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:cellGeometry/gmd:MD_CellGeometryCode">
931
- <dt>Cell Geometry Type</dt>
932
- <dd>
933
- <xsl:value-of select="gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:cellGeometry/gmd:MD_CellGeometryCode/@codeListValue"/>
934
- </dd>
935
- </xsl:if>
936
-
937
- <xsl:if test="gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:cornerPoints">
938
- <dt>Corner Points</dt>
939
- <dd>
940
- <dl>
941
- <xsl:for-each select="gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:cornerPoints/gml:Point">
942
- <dt>Point</dt>
943
- <dd><xsl:value-of select="gml:pos"/></dd>
944
- </xsl:for-each>
945
- </dl>
946
- </dd>
947
-
948
- <xsl:for-each select="gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:centerPoint/gml:Point">
949
- <dt>Center Point</dt>
950
- <dd><xsl:value-of select="gml:pos"/></dd>
951
- </xsl:for-each>
952
- </xsl:if>
953
- </dl>
954
- </dd>
955
- </xsl:when>
956
- </xsl:choose>
957
- </dl>
958
- </dd>
959
- </div>
960
- </xsl:if>
961
-
962
- <!-- Metadata Reference Info -->
963
- <div id="iso-metadata-reference-info">
964
- <dt>Metadata Reference Information</dt>
965
- <dd>
966
- <dl>
967
- <dt>Hierarchy Level</dt>
968
- <dd>
969
- <xsl:value-of select="gmd:hierarchyLevelName"/>
970
- </dd>
971
- <dt>Metadata File Identifier</dt>
972
- <dd>
973
- <xsl:value-of select="gmd:fileIdentifier"/>
974
- </dd>
975
- <xsl:if test="gmd:parentIdentifier">
976
- <dt>Parent Identifier</dt>
977
- <dd>
978
- <xsl:value-of select="gmd:parentIdentifier"/>
979
- </dd>
980
- </xsl:if>
981
- <xsl:if test="gmd:dataSetURI">
982
- <dt>Dataset URI</dt>
983
- <dd>
984
- <xsl:value-of select="gmd:dataSetURI"/>
985
- </dd>
986
- </xsl:if>
987
- <xsl:for-each select="gmd:metadataMaintenance/gmd:MD_MaintenanceInformation/gmd:contact">
988
- <dt>Metadata Point of Contact</dt>
989
- <dd>
990
- <dl>
991
- <xsl:for-each select="gmd:CI_ResponsibleParty">
992
- <dt>Name</dt>
993
- <dd>
994
- <xsl:value-of select="gmd:organisationName | gmd:individualName"/>
995
- </dd>
996
- <xsl:if test="gmd:positionName">
997
- <dt>Position Name</dt>
998
- <dd>
999
- <xsl:value-of select="gmd:positionName"/>
1000
- </dd>
1001
- </xsl:if>
1002
- <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:deliveryPoint">
1003
- <dt>Delivery Point</dt>
1004
- <dd>
1005
- <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:deliveryPoint"/>
1006
- </dd>
1007
- </xsl:if>
1008
- <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:city">
1009
- <dt>City</dt>
1010
- <dd>
1011
- <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:city"/>
1012
- </dd>
1013
- </xsl:if>
1014
- <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:administrativeArea">
1015
- <dt>Administrative Area</dt>
1016
- <dd>
1017
- <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:administrativeArea"/>
1018
- </dd>
1019
- </xsl:if>
1020
- <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:postalCode">
1021
- <dt>Postal Code</dt>
1022
- <dd>
1023
- <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:postalCode"/>
1024
- </dd>
1025
- </xsl:if>
1026
- <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:country">
1027
- <dt>Country</dt>
1028
- <dd>
1029
- <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:country"/>
1030
- </dd>
1031
- </xsl:if>
1032
- <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:electronicMailAddress">
1033
- <dt>Email</dt>
1034
- <dd>
1035
- <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:electronicMailAddress"/>
1036
- </dd>
1037
- </xsl:if>
1038
- <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:phone/gmd:CI_Telephone/gmd:voice">
1039
- <dt>Phone</dt>
1040
- <dd>
1041
- <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:phone/gmd:CI_Telephone/gmd:voice"/>
1042
- </dd>
1043
- </xsl:if>
1044
- </xsl:for-each>
1045
- </dl>
1046
- </dd>
1047
- </xsl:for-each>
1048
- <dt>Metadata Date Stamp</dt>
1049
- <dd>
1050
- <xsl:value-of select="gmd:dateStamp"/>
1051
- </dd>
1052
- <dt>Metadata Standard Name</dt>
1053
- <dd>
1054
- <xsl:value-of select="gmd:metadataStandardName"/>
1055
- </dd>
1056
- <dt>Metadata Standard Version</dt>
1057
- <dd>
1058
- <xsl:value-of select="gmd:metadataStandardVersion"/>
1059
- </dd>
1060
- <xsl:if test="gmd:characterSet/gmd:MD_CharacterSetCode[@codeListValue]/text()">
1061
- <dt>Character Set</dt>
1062
- <dd>
1063
- <xsl:value-of select="gmd:characterSet/gmd:MD_CharacterSetCode[@codeListValue]"/>
1064
- </dd>
1065
- </xsl:if>
1066
- </dl>
1067
- </dd>
1068
- </div>
1069
- </xsl:template>
1070
- </xsl:stylesheet>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- iso2html.xsl - Transformation from ISO 19139 into HTML Created by Kim Durante, Stanford University Libraries TODO: Needs full Data Quality section mapped Not sure if complete contactInfo is needed for each Responsible Party? -->
3
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:gts="http://www.isotc211.org/2005/gts" xmlns:srv="http://www.isotc211.org/2005/srv" xmlns:gml="http://www.opengis.net/gml" exclude-result-prefixes="gmd gco gml srv xlink gts">
4
+ <xsl:output method="html" encoding="UTF-8" indent="yes"/>
5
+ <xsl:template match="/">
6
+ <html>
7
+ <head>
8
+ <title>
9
+ <xsl:value-of select="gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title"/>
10
+ </title>
11
+ </head>
12
+ <body>
13
+ <h1>
14
+ <xsl:value-of select="gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title"/>
15
+ </h1>
16
+ <ul>
17
+ <xsl:if test="gmd:MD_Metadata/gmd:identificationInfo">
18
+ <li>
19
+ <a href="#iso-identification-info">Identification Information</a>
20
+ </li>
21
+ </xsl:if>
22
+ <xsl:if test="gmd:MD_Metadata/gmd:referenceSystemInfo">
23
+ <li>
24
+ <a href="#iso-spatial-reference-info">Spatial Reference Information</a>
25
+ </li>
26
+ </xsl:if>
27
+ <xsl:if test="gmd:MD_Metadata/gmd:dataQualityInfo">
28
+ <li>
29
+ <a href="#iso-data-quality-info">Data Quality Information</a>
30
+ </li>
31
+ </xsl:if>
32
+ <xsl:if test="gmd:MD_Metadata/gmd:distributionInfo">
33
+ <li>
34
+ <a href="#iso-distribution-info">Distribution Information</a>
35
+ </li>
36
+ </xsl:if>
37
+ <xsl:if test="gmd:MD_Metadata/gmd:contentInfo">
38
+ <li>
39
+ <a href="#iso-content-info">Content Information</a>
40
+ </li>
41
+ </xsl:if>
42
+ <xsl:if test="gmd:MD_Metadata/gmd:spatialRepresentationInfo">
43
+ <li>
44
+ <a href="#iso-spatial-representation-info">Spatial Representation Information</a>
45
+ </li>
46
+ </xsl:if>
47
+ <xsl:if test="gmd:MD_Metadata">
48
+ <li>
49
+ <a href="#iso-metadata-reference-info">Metadata Reference Information</a>
50
+ </li>
51
+ </xsl:if>
52
+ </ul>
53
+ <xsl:apply-templates/>
54
+ </body>
55
+ </html>
56
+ </xsl:template>
57
+ <xsl:template match="gmd:MD_Metadata">
58
+ <div id="iso-identification-info">
59
+ <h2>Identification Information</h2>
60
+ <dl>
61
+ <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation">
62
+ <dt>Citation</dt>
63
+ <dd>
64
+ <dl>
65
+ <dt>Title</dt>
66
+ <dd>
67
+ <xsl:value-of select="gmd:title"/>
68
+ </dd>
69
+ <xsl:choose>
70
+ <xsl:when test="gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='originator']">
71
+ <xsl:for-each select="gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='originator']">
72
+ <dt>Originator</dt>
73
+ <dd>
74
+ <xsl:value-of select="ancestor-or-self::*/gmd:organisationName | ancestor-or-self::*/gmd:individualName"/>
75
+ </dd>
76
+ </xsl:for-each>
77
+ </xsl:when>
78
+ <xsl:when test="//gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact">
79
+ <xsl:for-each select="//gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact">
80
+ <xsl:if test="gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode/@codeListValue='originator'">
81
+ <dt>Originator</dt>
82
+ <dd>
83
+ <xsl:value-of select="gmd:CI_ResponsibleParty/gmd:organisationName | gmd:CI_ResponsibleParty/gmd:individualName"/>
84
+ </dd>
85
+ </xsl:if>
86
+ </xsl:for-each>
87
+ </xsl:when>
88
+ </xsl:choose>
89
+ <xsl:for-each select="gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='publisher']">
90
+ <dt>Publisher</dt>
91
+ <dd>
92
+ <xsl:value-of select="ancestor-or-self::*/gmd:organisationName | ancestor-or-self::*/gmd:individualName"/>
93
+ </dd>
94
+ <xsl:if test="ancestor-or-self::*/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:city">
95
+ <dt>Place of Publication</dt>
96
+ <dd>
97
+ <xsl:value-of select="ancestor-or-self::*/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:city"/>
98
+ <xsl:if test="ancestor-or-self::*/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:administrativeArea">
99
+ <xsl:text>,</xsl:text>
100
+ <xsl:value-of select="ancestor-or-self::*/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:administrativeArea"/>
101
+ </xsl:if>
102
+ <xsl:if test="ancestor-or-self::*/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:country">
103
+ <xsl:text>,</xsl:text>
104
+ <xsl:value-of select="ancestor-or-self::*/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:country"/>
105
+ </xsl:if>
106
+ </dd>
107
+ </xsl:if>
108
+ </xsl:for-each>
109
+ <xsl:for-each select="gmd:date/gmd:CI_Date">
110
+ <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'publication')">
111
+ <dt>Publication Date</dt>
112
+ <dd>
113
+ <xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/>
114
+ </dd>
115
+ </xsl:if>
116
+ <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'creation')">
117
+ <dt>Creation Date</dt>
118
+ <dd>
119
+ <xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/>
120
+ </dd>
121
+ </xsl:if>
122
+ <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'revision')">
123
+ <dt>Revision Date</dt>
124
+ <dd>
125
+ <xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/>
126
+ </dd>
127
+ </xsl:if>
128
+ </xsl:for-each>
129
+ <xsl:if test="gmd:edition">
130
+ <dt>Edition</dt>
131
+ <dd>
132
+ <xsl:value-of select="gmd:edition"/>
133
+ </dd>
134
+ </xsl:if>
135
+ <xsl:if test="gmd:identifier/gmd:MD_Identifier/gmd:code">
136
+ <dt>Identifier</dt>
137
+ <dd>
138
+ <xsl:value-of select="gmd:identifier/gmd:MD_Identifier/gmd:code"/>
139
+ </dd>
140
+ </xsl:if>
141
+ <xsl:for-each select="gmd:presentationForm/gmd:CI_PresentationFormCode/@codeListValue">
142
+ <dt>Geospatial Data Presentation Form</dt>
143
+ <dd>
144
+ <xsl:value-of select="."/>
145
+ </dd>
146
+ </xsl:for-each>
147
+ <xsl:for-each select="gmd:collectiveTitle">
148
+ <dt>Collection Title</dt>
149
+ <dd>
150
+ <xsl:value-of select="."/>
151
+ </dd>
152
+ </xsl:for-each>
153
+ <xsl:for-each select="gmd:otherCitationDetails">
154
+ <dt>Other Citation Details</dt>
155
+ <dd>
156
+ <xsl:value-of select="."/>
157
+ </dd>
158
+ </xsl:for-each>
159
+ <xsl:for-each select="gmd:series/gmd:CI_Series">
160
+ <dt>Series</dt>
161
+ <dd>
162
+ <dl>
163
+ <dd>
164
+ <dt>Series Title</dt>
165
+ <dd>
166
+ <xsl:value-of select="gmd:name"/>
167
+ </dd>
168
+ <dt>Issue</dt>
169
+ <dd>
170
+ <xsl:value-of select="gmd:issueIdentification"/>
171
+ </dd>
172
+ </dd>
173
+ </dl>
174
+ </dd>
175
+ </xsl:for-each>
176
+ </dl>
177
+ </dd>
178
+ </xsl:for-each>
179
+ <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract">
180
+ <dt>Abstract</dt>
181
+ <dd>
182
+ <xsl:value-of select="."/>
183
+ </dd>
184
+ </xsl:for-each>
185
+ <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:purpose">
186
+ <dt>Purpose</dt>
187
+ <dd>
188
+ <xsl:value-of select="."/>
189
+ </dd>
190
+ </xsl:for-each>
191
+ <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:supplementalInformation">
192
+ <dt>Supplemental Information</dt>
193
+ <dd>
194
+ <xsl:value-of select="."/>
195
+ </dd>
196
+ </xsl:for-each>
197
+ <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:equivalentScale/gmd:MD_RepresentativeFraction/gmd:denominator">
198
+ <dt>Scale Denominator</dt>
199
+ <dd>
200
+ <xsl:value-of select="."/>
201
+ </dd>
202
+ </xsl:for-each>
203
+ <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent">
204
+ <dt>Temporal Extent</dt>
205
+ <dd>
206
+ <dl>
207
+ <xsl:if test="ancestor-or-self::*/gmd:description">
208
+ <dt>Currentness Reference</dt>
209
+ <dd>
210
+ <xsl:value-of select="ancestor-or-self::*/gmd:description"/>
211
+ </dd>
212
+ </xsl:if>
213
+ <xsl:choose>
214
+ <xsl:when test="gml:TimePeriod">
215
+ <dt>Time Period</dt>
216
+ <dd>
217
+ <dl>
218
+ <dt>Begin</dt>
219
+ <dd>
220
+ <xsl:value-of select="gml:TimePeriod/gml:beginPosition"/>
221
+ </dd>
222
+ <dt>End</dt>
223
+ <dd>
224
+ <xsl:value-of select="gml:TimePeriod/gml:endPosition"/>
225
+ </dd>
226
+ </dl>
227
+ </dd>
228
+ </xsl:when>
229
+ <xsl:when test="gml:TimeInstant">
230
+ <dt>Time Instant</dt>
231
+ <dd>
232
+ <xsl:value-of select="gml:TimeInstant/gml:timePosition"/>
233
+ </dd>
234
+ </xsl:when>
235
+ </xsl:choose>
236
+ </dl>
237
+ </dd>
238
+ </xsl:for-each>
239
+ <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox">
240
+ <dt>Bounding Box</dt>
241
+ <dd>
242
+ <dl>
243
+ <dt>West</dt>
244
+ <dd>
245
+ <xsl:value-of select="gmd:westBoundLongitude"/>
246
+ </dd>
247
+ <dt>East</dt>
248
+ <dd>
249
+ <xsl:value-of select="gmd:eastBoundLongitude"/>
250
+ </dd>
251
+ <dt>North</dt>
252
+ <dd>
253
+ <xsl:value-of select="gmd:northBoundLatitude"/>
254
+ </dd>
255
+ <dt>South</dt>
256
+ <dd>
257
+ <xsl:value-of select="gmd:southBoundLatitude"/>
258
+ </dd>
259
+ </dl>
260
+ </dd>
261
+ </xsl:for-each>
262
+ <xsl:if test="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:topicCategory/gmd:MD_TopicCategoryCode">
263
+ <dt>ISO Topic Category</dt>
264
+ <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:topicCategory/gmd:MD_TopicCategoryCode">
265
+ <dd>
266
+ <xsl:value-of select="."/>
267
+ </dd>
268
+ </xsl:for-each>
269
+ </xsl:if>
270
+ <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords">
271
+ <xsl:choose>
272
+ <xsl:when test="ancestor-or-self::*/gmd:type/gmd:MD_KeywordTypeCode[@codeListValue='theme']">
273
+ <dt>Theme Keyword</dt>
274
+ <xsl:for-each select="gmd:keyword">
275
+ <dd>
276
+ <xsl:value-of select="."/>
277
+ <xsl:if test="position()=last()">
278
+ <dl>
279
+ <dt>Theme Keyword Thesaurus</dt>
280
+ <dd>
281
+ <xsl:value-of select="ancestor-or-self::*/gmd:thesaurusName/gmd:CI_Citation/gmd:title"/>
282
+ </dd>
283
+ </dl>
284
+ </xsl:if>
285
+ </dd>
286
+ </xsl:for-each>
287
+ </xsl:when>
288
+ <xsl:when test="ancestor-or-self::*/gmd:type/gmd:MD_KeywordTypeCode[@codeListValue='place']">
289
+ <dt>Place Keyword</dt>
290
+ <xsl:for-each select="gmd:keyword">
291
+ <dd>
292
+ <xsl:value-of select="."/>
293
+ <xsl:if test="position()=last()">
294
+ <dl>
295
+ <dt>Place Keyword Thesaurus</dt>
296
+ <dd>
297
+ <xsl:value-of select="ancestor-or-self::*/gmd:thesaurusName/gmd:CI_Citation/gmd:title"/>
298
+ </dd>
299
+ </dl>
300
+ </xsl:if>
301
+ </dd>
302
+ </xsl:for-each>
303
+ </xsl:when>
304
+ <xsl:when test="ancestor-or-self::*/gmd:type/gmd:MD_KeywordTypeCode[@codeListValue='temporal']">
305
+ <dt>Temporal Keyword</dt>
306
+ <xsl:for-each select="gmd:keyword">
307
+ <dd>
308
+ <xsl:value-of select="."/>
309
+ </dd>
310
+ </xsl:for-each>
311
+ </xsl:when>
312
+ </xsl:choose>
313
+ </xsl:for-each>
314
+ <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints">
315
+ <xsl:if test="gmd:MD_LegalConstraints">
316
+ <dt>Legal Constraints</dt>
317
+ </xsl:if>
318
+ <xsl:if test="gmd:MD_SecurityConstraints">
319
+ <dt>Security Constraints</dt>
320
+ </xsl:if>
321
+ <xsl:if test="gmd:MD_Constraints">
322
+ <dt>Resource Constraints</dt>
323
+ </xsl:if>
324
+ <dd>
325
+ <dl>
326
+ <xsl:if test="*/gmd:useLimitation">
327
+ <dt>Use Limitation</dt>
328
+ <dd>
329
+ <xsl:value-of select="*/gmd:useLimitation"/>
330
+ </dd>
331
+ </xsl:if>
332
+ <xsl:if test="*/gmd:accessConstraints">
333
+ <dt>Access Restrictions</dt>
334
+ <dd>
335
+ <xsl:value-of select="*/gmd:accessConstraints/gmd:MD_RestrictionCode/@codeListValue"/>
336
+ </dd>
337
+ </xsl:if>
338
+ <xsl:if test="*/gmd:useConstraints">
339
+ <dt>Use Restrictions</dt>
340
+ <dd>
341
+ <xsl:value-of select="*/gmd:useConstraints/gmd:MD_RestrictionCode/@codeListValue"/>
342
+ </dd>
343
+ </xsl:if>
344
+ <xsl:if test="*/gmd:otherConstraints">
345
+ <dt>Other Restrictions</dt>
346
+ <dd>
347
+ <xsl:value-of select="*/gmd:otherConstraints"/>
348
+ </dd>
349
+ </xsl:if>
350
+ </dl>
351
+ </dd>
352
+ </xsl:for-each>
353
+ <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:status">
354
+ <dt>Status</dt>
355
+ <dd>
356
+ <xsl:value-of select="gmd:MD_ProgressCode/@codeListValue"/>
357
+ </dd>
358
+ </xsl:for-each>
359
+ <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceMaintenance/gmd:MD_MaintenanceInformation/gmd:maintenanceAndUpdateFrequency">
360
+ <dt>Maintenance and Update Frequency</dt>
361
+ <dd>
362
+ <xsl:value-of select="gmd:MD_MaintenanceFrequencyCode/@codeListValue"/>
363
+ </dd>
364
+ </xsl:for-each>
365
+ <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:aggregationInfo/gmd:MD_AggregateInformation/gmd:associationType/gmd:DS_AssociationTypeCode[@codeListValue='largerWorkCitation']">
366
+ <dt>Collection</dt>
367
+ <dd>
368
+ <dl>
369
+ <dt>Collection Title</dt>
370
+ <dd>
371
+ <xsl:value-of select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:title"/>
372
+ </dd>
373
+ <dt>URL</dt>
374
+ <dd>
375
+ <xsl:value-of select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:identifier/gmd:MD_Identifier/gmd:code"/>
376
+ </dd>
377
+ <xsl:for-each select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='originator']">
378
+ <dt>Originator</dt>
379
+ <dd>
380
+ <xsl:value-of select="ancestor-or-self::*/gmd:organisationName | ancestor-or-self::*/gmd:individualName"/>
381
+ </dd>
382
+ </xsl:for-each>
383
+ <xsl:for-each select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='publisher']">
384
+ <dt>Publisher</dt>
385
+ <dd>
386
+ <xsl:value-of select="ancestor-or-self::*/gmd:organisationName | ancestor-or-self::*/gmd:individualName"/>
387
+ </dd>
388
+ </xsl:for-each>
389
+ <xsl:for-each select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:date">
390
+ <xsl:if test="contains(descendant-or-self::*/gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'publication')">
391
+ <dt>Publication Date</dt>
392
+ <dd>
393
+ <xsl:value-of select="gmd:CI_Date/gmd:date"/>
394
+ </dd>
395
+ </xsl:if>
396
+ <xsl:if test="contains(descendant-or-self::*/gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'creation')">
397
+ <dt>Creation Date</dt>
398
+ <dd>
399
+ <xsl:value-of select="gmd:CI_Date/gmd:date"/>
400
+ </dd>
401
+ </xsl:if>
402
+ <xsl:if test="contains(descendant-or-self::*/gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'revision')">
403
+ <dt>Revision Date</dt>
404
+ <dd>
405
+ <xsl:value-of select="gmd:CI_Date/gmd:date"/>
406
+ </dd>
407
+ </xsl:if>
408
+ </xsl:for-each>
409
+ <xsl:for-each select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:series/gmd:CI_Series">
410
+ <dt>Series</dt>
411
+ <dd>
412
+ <dl>
413
+ <dd>
414
+ <dt>Series Title</dt>
415
+ <dd>
416
+ <xsl:value-of select="ancestor-or-self::*/gmd:name"/>
417
+ </dd>
418
+ <dt>Issue</dt>
419
+ <dd>
420
+ <xsl:value-of select="ancestor-or-self::*/gmd:issueIdentification"/>
421
+ </dd>
422
+ </dd>
423
+ </dl>
424
+ </dd>
425
+ </xsl:for-each>
426
+ </dl>
427
+ </dd>
428
+ </xsl:for-each>
429
+ <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:aggregationInfo/gmd:MD_AggregateInformation/gmd:associationType/gmd:DS_AssociationTypeCode[@codeListValue='crossReference']">
430
+ <dt>Cross Reference</dt>
431
+ <dd>
432
+ <dl>
433
+ <dt>Title</dt>
434
+ <dd>
435
+ <xsl:value-of select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:title"/>
436
+ </dd>
437
+ <dt>URL</dt>
438
+ <dd>
439
+ <xsl:value-of select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:identifier/gmd:MD_Identifier/gmd:code"/>
440
+ </dd>
441
+ <xsl:for-each select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='originator']">
442
+ <dt>Originator</dt>
443
+ <dd>
444
+ <xsl:value-of select="ancestor-or-self::*/gmd:organisationName | ancestor-or-self::*/gmd:individualName"/>
445
+ </dd>
446
+ </xsl:for-each>
447
+ <xsl:for-each select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='publisher']">
448
+ <dt>Publisher</dt>
449
+ <dd>
450
+ <xsl:value-of select="ancestor-or-self::*/gmd:organisationName | ancestor-or-self::*/gmd:individualName"/>
451
+ </dd>
452
+ </xsl:for-each>
453
+ <xsl:for-each select="ancestor-or-self::*/gmd:aggregateDataSetName/gmd:CI_Citation/gmd:date">
454
+ <xsl:if test="contains(descendant-or-self::*/gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'publication')">
455
+ <dt>Publication Date</dt>
456
+ <dd>
457
+ <xsl:value-of select="gmd:CI_Date/gmd:date"/>
458
+ </dd>
459
+ </xsl:if>
460
+ <xsl:if test="contains(descendant-or-self::*/gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'creation')">
461
+ <dt>Creation Date</dt>
462
+ <dd>
463
+ <xsl:value-of select="gmd:CI_Date/gmd:date"/>
464
+ </dd>
465
+ </xsl:if>
466
+ <xsl:if test="contains(descendant-or-self::*/gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'revision')">
467
+ <dt>Revision Date</dt>
468
+ <dd>
469
+ <xsl:value-of select="gmd:CI_Date/gmd:date"/>
470
+ </dd>
471
+ </xsl:if>
472
+ </xsl:for-each>
473
+ </dl>
474
+ </dd>
475
+ </xsl:for-each>
476
+ <dt>Language</dt>
477
+ <dd>
478
+ <xsl:value-of select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:language"/>
479
+ </dd>
480
+ <xsl:if test="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:credit">
481
+ <dt>Credit</dt>
482
+ <dd>
483
+ <xsl:value-of select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:credit"/>
484
+ </dd>
485
+ </xsl:if>
486
+ <xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact">
487
+ <dt>Point of Contact</dt>
488
+ <dd>
489
+ <dl>
490
+ <xsl:for-each select="gmd:CI_ResponsibleParty">
491
+ <dt>Contact</dt>
492
+ <dd>
493
+ <xsl:value-of select="gmd:organisationName | gmd:individualName"/>
494
+ </dd>
495
+ <xsl:if test="gmd:positionName">
496
+ <dt>Position Name</dt>
497
+ <dd>
498
+ <xsl:value-of select="gmd:positionName"/>
499
+ </dd>
500
+ </xsl:if>
501
+ <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:deliveryPoint">
502
+ <dt>Delivery Point</dt>
503
+ <dd>
504
+ <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:deliveryPoint"/>
505
+ </dd>
506
+ </xsl:if>
507
+ <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:city">
508
+ <dt>City</dt>
509
+ <dd>
510
+ <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:city"/>
511
+ </dd>
512
+ </xsl:if>
513
+ <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:administrativeArea">
514
+ <dt>Administrative Area</dt>
515
+ <dd>
516
+ <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:administrativeArea"/>
517
+ </dd>
518
+ </xsl:if>
519
+ <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:postalCode">
520
+ <dt>Postal Code</dt>
521
+ <dd>
522
+ <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:postalCode"/>
523
+ </dd>
524
+ </xsl:if>
525
+ <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:country">
526
+ <dt>Country</dt>
527
+ <dd>
528
+ <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:country"/>
529
+ </dd>
530
+ </xsl:if>
531
+ <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:electronicMailAddress">
532
+ <dt>Email</dt>
533
+ <dd>
534
+ <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:electronicMailAddress"/>
535
+ </dd>
536
+ </xsl:if>
537
+ <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:phone/gmd:CI_Telephone/gmd:voice">
538
+ <dt>Phone</dt>
539
+ <dd>
540
+ <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:phone/gmd:CI_Telephone/gmd:voice"/>
541
+ </dd>
542
+ </xsl:if>
543
+ </xsl:for-each>
544
+ </dl>
545
+ </dd>
546
+ </xsl:for-each>
547
+ </dl>
548
+ </div>
549
+ <!-- Spatial Reference Info -->
550
+ <xsl:if test="gmd:referenceSystemInfo">
551
+ <div id="iso-spatial-reference-info">
552
+ <h2>Spatial Reference Information</h2>
553
+ <dl>
554
+ <dt>Reference System Identifier</dt>
555
+ <dd>
556
+ <dl>
557
+ <dt>Code</dt>
558
+ <dd>
559
+ <xsl:value-of select="gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:code"/>
560
+ </dd>
561
+ <dt>Code Space</dt>
562
+ <dd>
563
+ <xsl:value-of select="gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:codeSpace"/>
564
+ </dd>
565
+ <dt>Version</dt>
566
+ <dd>
567
+ <xsl:value-of select="gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:version"/>
568
+ </dd>
569
+ </dl>
570
+ </dd>
571
+ </dl>
572
+ </div>
573
+ </xsl:if>
574
+ <!-- Data Quality Info -->
575
+ <xsl:if test="gmd:dataQualityInfo/gmd:DQ_DataQuality">
576
+ <div id="iso-data-quality-info">
577
+ <h2>Data Quality Information</h2>
578
+ <dl>
579
+ <xsl:if test="gmd:DQ_Scope/gmd:level">
580
+ <dt>Hierarchy Level</dt>
581
+ <dd>
582
+ <xsl:value-of select="gmd:DQ_Scope/gmd:level/gmd:MD_ScopeCode[@codeListValue]"/>
583
+ </dd>
584
+ </xsl:if>
585
+ <xsl:for-each select="gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report">
586
+ <xsl:if test="gmd:DQ_QuantitativeAttributeAccuracy">
587
+ <dt>Quantitative Attribute Accuracy Report</dt>
588
+ <dd>
589
+ <dl>
590
+ <xsl:if test="gmd:DQ_QuantitativeAttributeAccuracy/gmd:evaluationMethodDescription/text()">
591
+ <dt>Evaluation Method</dt>
592
+ <dd>
593
+ <xsl:value-of select="gmd:DQ_QuantitativeAttributeAccuracy/gmd:evaluationMethodDescription"/>
594
+ </dd>
595
+ </xsl:if>
596
+ <xsl:if test="gmd:DQ_QuantitativeAttributeAccuracy/gmd:result/text()">
597
+ <dt>Result</dt>
598
+ <dd>
599
+ <xsl:value-of select="gmd:DQ_QuantitativeAttributeAccuracy/gmd:result"/>
600
+ </dd>
601
+ </xsl:if>
602
+ </dl>
603
+ </dd>
604
+ </xsl:if>
605
+ <xsl:if test="gmd:DQ_AbsoluteExternalPositionalAccuracy">
606
+ <dt>Absolute External Positional Accuracy</dt>
607
+ <dd>
608
+ <dl>
609
+ <xsl:if test="gmd:DQ_AbsoluteExternalPositionalAccuracy/gmd:evaluationMethodDescription/text()">
610
+ <dt>Evaluation Method</dt>
611
+ <dd>
612
+ <xsl:value-of select="gmd:DQ_AbsoluteExternalPositionalAccuracy/gmd:evaluationMethodDescription"/>
613
+ </dd>
614
+ </xsl:if>
615
+ <xsl:if test="gmd:DQ_AbsoluteExternalPositionalAccuracy/gmd:result/text()">
616
+ <dt>Result</dt>
617
+ <dd>
618
+ <xsl:value-of select="gmd:DQ_AbsoluteExternalPositionalAccuracy/gmd:result"/>
619
+ </dd>
620
+ </xsl:if>
621
+ </dl>
622
+ </dd>
623
+ </xsl:if>
624
+ <xsl:if test="gmd:DQ_CompletenessCommission">
625
+ <dt>Completeness Commission</dt>
626
+ <dd>
627
+ <dl>
628
+ <xsl:if test="gmd:DQ_CompletenessCommission/gmd:evaluationMethodDescription/text()">
629
+ <dt>Evaluation Method</dt>
630
+ <dd>
631
+ <xsl:value-of select="gmd:DQ_CompletenessCommission/gmd:evaluationMethodDescription"/>
632
+ </dd>
633
+ </xsl:if>
634
+ <xsl:if test="gmd:DQ_CompletenessCommission/gmd:result/text()">
635
+ <dt>Result</dt>
636
+ <dd>
637
+ <xsl:value-of select="gmd:DQ_CompletenessCommission/gmd:result"/>
638
+ </dd>
639
+ </xsl:if>
640
+ </dl>
641
+ </dd>
642
+ </xsl:if>
643
+ </xsl:for-each>
644
+ <xsl:for-each select="gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:lineage/gmd:LI_Lineage">
645
+ <dt>Lineage</dt>
646
+ <dd>
647
+ <dl>
648
+ <xsl:if test="gmd:statement">
649
+ <dt>Statement</dt>
650
+ <dd>
651
+ <xsl:value-of select="gmd:statement"/>
652
+ </dd>
653
+ </xsl:if>
654
+ <xsl:for-each select="gmd:processStep/gmd:LI_ProcessStep">
655
+ <dt>Process Step</dt>
656
+ <dd>
657
+ <dl>
658
+ <xsl:if test="gmd:description">
659
+ <dt>Description</dt>
660
+ <dd>
661
+ <xsl:value-of select="gmd:description"/>
662
+ </dd>
663
+ </xsl:if>
664
+ <xsl:for-each select="gmd:CI_ResponsibleParty">
665
+ <dt>Processor</dt>
666
+ <dd>
667
+ <xsl:value-of select="gmd:individualName | gmd:organisationName"/>
668
+ </dd>
669
+ </xsl:for-each>
670
+ <xsl:if test="gmd:dateTime">
671
+ <dt>Process Date</dt>
672
+ <dd>
673
+ <xsl:value-of select="gmd:dateTime"/>
674
+ </dd>
675
+ </xsl:if>
676
+ </dl>
677
+ </dd>
678
+ </xsl:for-each>
679
+ <xsl:for-each select="gmd:source/gmd:LI_Source/gmd:sourceCitation">
680
+ <dt>Source</dt>
681
+ <dd>
682
+ <dl>
683
+ <dt>Title</dt>
684
+ <dd>
685
+ <xsl:value-of select="gmd:CI_Citation/gmd:title"/>
686
+ </dd>
687
+ <xsl:for-each select="gmd:CI_Citation/gmd:date/gmd:CI_Date">
688
+ <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'publication')">
689
+ <dt>Publication Date</dt>
690
+ <dd>
691
+ <xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/>
692
+ </dd>
693
+ </xsl:if>
694
+ <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'creation')">
695
+ <dt>Creation Date</dt>
696
+ <dd>
697
+ <xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/>
698
+ </dd>
699
+ </xsl:if>
700
+ <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'revision')">
701
+ <dt>Revision Date</dt>
702
+ <dd>
703
+ <xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/>
704
+ </dd>
705
+ </xsl:if>
706
+ </xsl:for-each>
707
+ <xsl:for-each select="gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='originator']">
708
+ <dt>Originator</dt>
709
+ <dd>
710
+ <xsl:value-of select="ancestor-or-self::*/gmd:organisationName | ancestor-or-self::*/gmd:individualName"/>
711
+ </dd>
712
+ </xsl:for-each>
713
+ <xsl:for-each select="gmd:CI_Citation/gmd:citedResponsibleParty/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode[@codeListValue='publisher']">
714
+ <dt>Publisher</dt>
715
+ <dd>
716
+ <xsl:value-of select="ancestor-or-self::*/gmd:organisationName | ancestor-or-self::*/gmd:individualName"/>
717
+ </dd>
718
+ <xsl:if test="ancestor-or-self::*/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:city">
719
+ <dt>Place of Publication</dt>
720
+ <dd>
721
+ <xsl:value-of select="ancestor-or-self::*/gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:city"/>
722
+ </dd>
723
+ </xsl:if>
724
+ </xsl:for-each>
725
+ <xsl:if test="gmd:CI_Citation/gmd:identifier/gmd:MD_Identifier/gmd:code">
726
+ <dt>Identifier</dt>
727
+ <dd>
728
+ <xsl:value-of select="gmd:CI_Citation/gmd:identifier/gmd:MD_Identifier/gmd:code"/>
729
+ </dd>
730
+ </xsl:if>
731
+ <xsl:if test="ancestor-or-self::*/gmd:description">
732
+ <dt>Description</dt>
733
+ <dd>
734
+ <xsl:value-of select="ancestor-or-self::*/gmd:description"/>
735
+ </dd>
736
+ </xsl:if>
737
+ </dl>
738
+ </dd>
739
+ </xsl:for-each>
740
+ </dl>
741
+ </dd>
742
+ </xsl:for-each>
743
+ </dl>
744
+ </div>
745
+ </xsl:if>
746
+ <!-- Distribution -->
747
+ <xsl:if test="gmd:distributionInfo">
748
+ <div id="iso-distribution-info">
749
+ <h2>Distribution Information</h2>
750
+ <dl>
751
+ <xsl:if test="gmd:distributionInfo/gmd:MD_Distribution/gmd:distributionFormat/gmd:MD_Format">
752
+ <dt>Format Name</dt>
753
+ <dd>
754
+ <xsl:value-of select="gmd:distributionInfo/gmd:MD_Distribution/gmd:distributionFormat/gmd:MD_Format/gmd:name"/>
755
+ </dd>
756
+ <xsl:if test="gmd:distributionInfo/gmd:MD_Distribution/gmd:distributionFormat/gmd:MD_Format/gmd:version/text()">
757
+ <dt>Format Version</dt>
758
+ <dd>
759
+ <xsl:value-of select="gmd:distributionInfo/gmd:MD_Distribution/gmd:distributionFormat/gmd:MD_Format/gmd:version"/>
760
+ </dd>
761
+ </xsl:if>
762
+ </xsl:if>
763
+ <xsl:for-each select="gmd:distributionInfo/gmd:MD_Distribution/gmd:distributor/gmd:MD_Distributor">
764
+ <dt>Distributor</dt>
765
+ <dd>
766
+ <xsl:value-of select="gmd:distributorContact/gmd:CI_ResponsibleParty/gmd:organisationName"/>
767
+ </dd>
768
+ </xsl:for-each>
769
+ <xsl:for-each select="gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions">
770
+ <dt>Online Access</dt>
771
+ <dd>
772
+ <xsl:value-of select="gmd:onLine/gmd:CI_OnlineResource/gmd:linkage/gmd:URL"/>
773
+ </dd>
774
+ <dt>Protocol</dt>
775
+ <dd>
776
+ <xsl:value-of select="gmd:onLine/gmd:CI_OnlineResource/gmd:protocol"/>
777
+ </dd>
778
+ <dt>Name</dt>
779
+ <dd>
780
+ <xsl:value-of select="gmd:onLine/gmd:CI_OnlineResource/gmd:name"/>
781
+ </dd>
782
+ <xsl:if test="gmd:onLine/gmd:CI_OnlineResource/gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue">
783
+ <dt>Function</dt>
784
+ <dd>
785
+ <xsl:value-of select="gmd:onLine/gmd:CI_OnlineResource/gmd:function/gmd:CI_OnLineFunctionCode/@codeListValue"/>
786
+ </dd>
787
+ </xsl:if>
788
+ <xsl:if test="gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:transferSize">
789
+ <dt>Transfer Size</dt>
790
+ <dd>
791
+ <xsl:value-of select="gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:transferSize"/>
792
+ </dd>
793
+ </xsl:if>
794
+ </xsl:for-each>
795
+ </dl>
796
+ </div>
797
+ </xsl:if>
798
+ <!-- Content Info -->
799
+ <xsl:if test="gmd:contentInfo">
800
+ <div id="iso-content-info">
801
+ <h2>Content Information</h2>
802
+ <dl>
803
+ <xsl:if test="gmd:contentInfo/gmd:MD_FeatureCatalogueDescription">
804
+ <dt>Feature Catalog Description</dt>
805
+ <dd>
806
+ <dl>
807
+ <dt>Compliance Code</dt>
808
+ <dd>
809
+ <xsl:value-of select="gmd:contentInfo/gmd:MD_FeatureCatalogueDescription/gmd:complianceCode"/>
810
+ </dd>
811
+ <dt>Language</dt>
812
+ <dd>
813
+ <xsl:value-of select="gmd:contentInfo/gmd:MD_FeatureCatalogueDescription/gmd:language"/>
814
+ </dd>
815
+ <dt>Included With Dataset</dt>
816
+ <dd>
817
+ <xsl:value-of select="gmd:contentInfo/gmd:MD_FeatureCatalogueDescription/gmd:includedWithDataset"/>
818
+ </dd>
819
+ <dt>Feature Catalog Citation</dt>
820
+ <dd>
821
+ <dl>
822
+ <dt>Title</dt>
823
+ <dd>
824
+ <xsl:value-of select="gmd:contentInfo/gmd:MD_FeatureCatalogueDescription/gmd:featureCatalogueCitation/gmd:CI_Citation/gmd:title"/>
825
+ </dd>
826
+ <xsl:for-each select="gmd:contentInfo/gmd:MD_FeatureCatalogueDescription/gmd:featureCatalogueCitation/gmd:CI_Citation/gmd:date/gmd:CI_Date">
827
+ <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'publication')">
828
+ <dt>Publication Date</dt>
829
+ <dd>
830
+ <xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/>
831
+ </dd>
832
+ </xsl:if>
833
+ <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'creation')">
834
+ <dt>Creation Date</dt>
835
+ <dd>
836
+ <xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/>
837
+ </dd>
838
+ </xsl:if>
839
+ <xsl:if test="contains(gmd:dateType/gmd:CI_DateTypeCode/@codeListValue,'revision')">
840
+ <dt>Revision Date</dt>
841
+ <dd>
842
+ <xsl:value-of select="ancestor-or-self::*/gmd:date/gmd:CI_Date/gmd:date"/>
843
+ </dd>
844
+ </xsl:if>
845
+ </xsl:for-each>
846
+ <dt>Feature Catalog Identifier</dt>
847
+ <dd>
848
+ <xsl:value-of select="gmd:contentInfo/gmd:MD_FeatureCatalogueDescription/gmd:featureCatalogueCitation/gmd:CI_Citation/gmd:identifier/gmd:MD_Identifier/gmd:code"/>
849
+ </dd>
850
+ </dl>
851
+ </dd>
852
+ </dl>
853
+ </dd>
854
+ </xsl:if>
855
+ <xsl:if test="gmd:contentInfo/gmd:MD_ImageDescription">
856
+ <dt>Content Type</dt>
857
+ <dd>
858
+ <xsl:value-of select="gmd:contentInfo/gmd:MD_ImageDescription/gmd:contentType/gmd:MD_CoverageContentTypeCode[@codeListValue]"/>
859
+ </dd>
860
+ </xsl:if>
861
+ </dl>
862
+ </div>
863
+ </xsl:if>
864
+ <!-- Spatial Representation -->
865
+ <xsl:if test="gmd:spatialRepresentationInfo">
866
+ <div id="iso-spatial-representation-info">
867
+ <h2>Spatial Representation Information</h2>
868
+ <dl>
869
+ <xsl:choose>
870
+ <xsl:when test="gmd:spatialRepresentationInfo/gmd:MD_VectorSpatialRepresentation">
871
+ <dt>Vector</dt>
872
+ <dd>
873
+ <dl>
874
+ <dt>Topology Level</dt>
875
+ <dd>
876
+ <xsl:value-of select="gmd:spatialRepresentationInfo/gmd:MD_VectorSpatialRepresentation/gmd:topologyLevel/gmd:MD_TopologyLevelCode[@codeListValue]"/>
877
+ </dd>
878
+ <dt>Vector Object Type</dt>
879
+ <dd>
880
+ <xsl:value-of select="gmd:spatialRepresentationInfo/gmd:MD_VectorSpatialRepresentation/gmd:geometricObjects/gmd:MD_GeometricObjects/gmd:geometricObjectType/gmd:MD_GeometricObjectTypeCode[@codeListValue]"/>
881
+ </dd>
882
+ <dt>Vector Object Count</dt>
883
+ <dd>
884
+ <xsl:value-of select="gmd:spatialRepresentationInfo/gmd:MD_VectorSpatialRepresentation/gmd:geometricObjects/gmd:MD_GeometricObjects/gmd:geometricObjectCount"/>
885
+ </dd>
886
+ </dl>
887
+ </dd>
888
+ </xsl:when>
889
+ <xsl:when test="gmd:spatialRepresentationInfo/gmd:MD_GridSpatialRepresentation">
890
+ <dt>Raster</dt>
891
+ <dd>
892
+ <dl>
893
+ <xsl:if test="gmd:spatialRepresentationInfo/gmd:MD_GridSpatialRepresentation/gmd:numberOfDimensions">
894
+ <dt>Number of Dimensions</dt>
895
+ <dd>
896
+ <xsl:value-of select="gmd:spatialRepresentationInfo/gmd:MD_GridSpatialRepresentation/gmd:numberOfDimensions"/>
897
+ </dd>
898
+ </xsl:if>
899
+ <dd>
900
+ <dl>
901
+ <xsl:for-each select="gmd:spatialRepresentationInfo/MD_GridSpatialRepresentation/gmd:axisDimensionProperties/gmd:MD_Dimension">
902
+ <xsl:if test="gmd:dimensionName/gmd:MD_DimensionNameTypeCode/@codeListValue='column'">
903
+ <dt>Column Count</dt>
904
+ <dd>
905
+ <xsl:value-of select="gmd:dimensionSize"/>
906
+ </dd>
907
+ </xsl:if>
908
+ <xsl:if test="gmd:dimensionName/gmd:MD_DimensionNameTypeCode/@codeListValue='row'">
909
+ <dt>Row Count</dt>
910
+ <dd>
911
+ <xsl:value-of select="gmd:dimensionSize"/>
912
+ </dd>
913
+ </xsl:if>
914
+ </xsl:for-each>
915
+ <xsl:if test="gmd:spatialRepresentationInfo/MD_GridSpatialRepresentation/gmd:cellGeometry/gmd:MD_CellGeometryCode">
916
+ <dt>Cell Geometry Type</dt>
917
+ <dd>
918
+ <xsl:value-of select="gmd:spatialRepresentationInfo/MD_GridSpatialRepresentation/gmd:cellGeometry/gmd:MD_CellGeometryCode/@codeListValue"/>
919
+ </dd>
920
+ </xsl:if>
921
+ <xsl:if test="gmd:spatialRepresentationInfo/MD_GridSpatialRepresentation/gmd:cornerPoints">
922
+ <dt>Corner Points</dt>
923
+ <dd>
924
+ <dl>
925
+ <xsl:for-each select="gmd:spatialRepresentationInfo/MD_GridSpatialRepresentation/gmd:cornerPoints/gml:Point">
926
+ <dt>Point</dt>
927
+ <dd>
928
+ <xsl:value-of select="gml:pos"/>
929
+ </dd>
930
+ </xsl:for-each>
931
+ </dl>
932
+ </dd>
933
+ <xsl:for-each select="gmd:spatialRepresentationInfo/MD_GridSpatialRepresentation/gmd:centerPoint/gml:Point">
934
+ <dt>Center Point</dt>
935
+ <dd>
936
+ <xsl:value-of select="gml:pos"/>
937
+ </dd>
938
+ </xsl:for-each>
939
+ </xsl:if>
940
+ </dl>
941
+ </dd>
942
+ </dl>
943
+ </dd>
944
+ </xsl:when>
945
+ <xsl:when test="gmd:spatialRepresentationInfo/gmd:MD_Georectified">
946
+ <dt>Raster</dt>
947
+ <dd>
948
+ <dl>
949
+ <xsl:if test="gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:numberOfDimensions">
950
+ <dt>Number of Dimensions</dt>
951
+ <dd>
952
+ <xsl:value-of select="gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:numberOfDimensions"/>
953
+ </dd>
954
+ </xsl:if>
955
+ <xsl:for-each select="gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:axisDimensionProperties/gmd:MD_Dimension">
956
+ <xsl:if test="gmd:dimensionName/gmd:MD_DimensionNameTypeCode/@codeListValue='column'">
957
+ <dt>Column Count</dt>
958
+ <dd>
959
+ <xsl:value-of select="gmd:dimensionSize"/>
960
+ </dd>
961
+ </xsl:if>
962
+ <xsl:if test="gmd:dimensionName/gmd:MD_DimensionNameTypeCode/@codeListValue='row'">
963
+ <dt>Row Count</dt>
964
+ <dd>
965
+ <xsl:value-of select="gmd:dimensionSize"/>
966
+ </dd>
967
+ </xsl:if>
968
+ </xsl:for-each>
969
+ <xsl:if test="gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:cellGeometry/gmd:MD_CellGeometryCode">
970
+ <dt>Cell Geometry Type</dt>
971
+ <dd>
972
+ <xsl:value-of select="gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:cellGeometry/gmd:MD_CellGeometryCode/@codeListValue"/>
973
+ </dd>
974
+ </xsl:if>
975
+ <xsl:if test="gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:cornerPoints">
976
+ <dt>Corner Points</dt>
977
+ <dd>
978
+ <dl>
979
+ <xsl:for-each select="gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:cornerPoints/gml:Point">
980
+ <dt>Point</dt>
981
+ <dd>
982
+ <xsl:value-of select="gml:pos"/>
983
+ </dd>
984
+ </xsl:for-each>
985
+ </dl>
986
+ </dd>
987
+ <xsl:for-each select="gmd:spatialRepresentationInfo/gmd:MD_Georectified/gmd:centerPoint/gml:Point">
988
+ <dt>Center Point</dt>
989
+ <dd>
990
+ <xsl:value-of select="gml:pos"/>
991
+ </dd>
992
+ </xsl:for-each>
993
+ </xsl:if>
994
+ </dl>
995
+ </dd>
996
+ </xsl:when>
997
+ </xsl:choose>
998
+ </dl>
999
+ </div>
1000
+ </xsl:if>
1001
+ <!-- Metadata Reference Info -->
1002
+ <div id="iso-metadata-reference-info">
1003
+ <h2>Metadata Reference Information</h2>
1004
+ <dl>
1005
+ <dt>Hierarchy Level</dt>
1006
+ <dd>
1007
+ <xsl:value-of select="gmd:hierarchyLevelName"/>
1008
+ </dd>
1009
+ <dt>Metadata File Identifier</dt>
1010
+ <dd>
1011
+ <xsl:value-of select="gmd:fileIdentifier"/>
1012
+ </dd>
1013
+ <xsl:if test="gmd:parentIdentifier">
1014
+ <dt>Parent Identifier</dt>
1015
+ <dd>
1016
+ <xsl:value-of select="gmd:parentIdentifier"/>
1017
+ </dd>
1018
+ </xsl:if>
1019
+ <xsl:if test="gmd:dataSetURI">
1020
+ <dt>Dataset URI</dt>
1021
+ <dd>
1022
+ <xsl:value-of select="gmd:dataSetURI"/>
1023
+ </dd>
1024
+ </xsl:if>
1025
+ <xsl:for-each select="gmd:metadataMaintenance/gmd:MD_MaintenanceInformation/gmd:contact">
1026
+ <dt>Metadata Point of Contact</dt>
1027
+ <dd>
1028
+ <dl>
1029
+ <xsl:for-each select="gmd:CI_ResponsibleParty">
1030
+ <dt>Name</dt>
1031
+ <dd>
1032
+ <xsl:value-of select="gmd:organisationName | gmd:individualName"/>
1033
+ </dd>
1034
+ <xsl:if test="gmd:positionName">
1035
+ <dt>Position Name</dt>
1036
+ <dd>
1037
+ <xsl:value-of select="gmd:positionName"/>
1038
+ </dd>
1039
+ </xsl:if>
1040
+ <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:deliveryPoint">
1041
+ <dt>Delivery Point</dt>
1042
+ <dd>
1043
+ <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:deliveryPoint"/>
1044
+ </dd>
1045
+ </xsl:if>
1046
+ <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:city">
1047
+ <dt>City</dt>
1048
+ <dd>
1049
+ <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:city"/>
1050
+ </dd>
1051
+ </xsl:if>
1052
+ <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:administrativeArea">
1053
+ <dt>Administrative Area</dt>
1054
+ <dd>
1055
+ <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:administrativeArea"/>
1056
+ </dd>
1057
+ </xsl:if>
1058
+ <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:postalCode">
1059
+ <dt>Postal Code</dt>
1060
+ <dd>
1061
+ <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:postalCode"/>
1062
+ </dd>
1063
+ </xsl:if>
1064
+ <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:country">
1065
+ <dt>Country</dt>
1066
+ <dd>
1067
+ <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:country"/>
1068
+ </dd>
1069
+ </xsl:if>
1070
+ <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:electronicMailAddress">
1071
+ <dt>Email</dt>
1072
+ <dd>
1073
+ <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:address/gmd:CI_Address/gmd:electronicMailAddress"/>
1074
+ </dd>
1075
+ </xsl:if>
1076
+ <xsl:if test="gmd:contactInfo/gmd:CI_Contact/gmd:phone/gmd:CI_Telephone/gmd:voice">
1077
+ <dt>Phone</dt>
1078
+ <dd>
1079
+ <xsl:value-of select="gmd:contactInfo/gmd:CI_Contact/gmd:phone/gmd:CI_Telephone/gmd:voice"/>
1080
+ </dd>
1081
+ </xsl:if>
1082
+ </xsl:for-each>
1083
+ </dl>
1084
+ </dd>
1085
+ </xsl:for-each>
1086
+ <dt>Metadata Date Stamp</dt>
1087
+ <dd>
1088
+ <xsl:value-of select="gmd:dateStamp"/>
1089
+ </dd>
1090
+ <dt>Metadata Standard Name</dt>
1091
+ <dd>
1092
+ <xsl:value-of select="gmd:metadataStandardName"/>
1093
+ </dd>
1094
+ <dt>Metadata Standard Version</dt>
1095
+ <dd>
1096
+ <xsl:value-of select="gmd:metadataStandardVersion"/>
1097
+ </dd>
1098
+ <xsl:if test="gmd:characterSet/gmd:MD_CharacterSetCode[@codeListValue]/text()">
1099
+ <dt>Character Set</dt>
1100
+ <dd>
1101
+ <xsl:value-of select="gmd:characterSet/gmd:MD_CharacterSetCode[@codeListValue]"/>
1102
+ </dd>
1103
+ </xsl:if>
1104
+ </dl>
1105
+ </div>
1106
+ </xsl:template>
1107
+ </xsl:stylesheet>