geo_combine 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +4 -3
- data/README.md +61 -0
- data/lib/geo_combine.rb +3 -0
- data/lib/geo_combine/geo_blacklight_harvester.rb +203 -0
- data/lib/geo_combine/version.rb +1 -1
- data/lib/tasks/geo_combine.rake +10 -0
- data/lib/xslt/iso2html.xsl +1107 -1070
- data/spec/features/iso2html_spec.rb +7 -1
- data/spec/lib/geo_combine/geo_blacklight_harvester_spec.rb +190 -0
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a403eec66c0f81cd06bed4033f411ed137276277e6f9a6eb0a672c64428dcca0
|
4
|
+
data.tar.gz: 7c6e8a61d3d8783a633edac40c57c435a4b6b3d9bd17ff1ae272e794fb6c2b56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b995db35d3452c377d93a9384018e54c01730b76462e5109d3a4ab3e7e24ddcbf3a8fa1b7703b2e571832a054d8a43459a34b18df9b5af418e87107c8509a873
|
7
|
+
data.tar.gz: fc129701c6e2fb138e9f43aab3b2b6e84dc68696813cbb1fb5c7ede89f364c88b8d5717a3e477fc030dfd2ee588a335df0274bf4005f1434c14a841d0f92e0de
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -101,6 +101,67 @@ change the [`commitWithin` parameter](https://lucene.apache.org/solr/guide/6_6/u
|
|
101
101
|
$ SOLR_COMMIT_WITHIN=100 bundle exec rake geocombine:index
|
102
102
|
```
|
103
103
|
|
104
|
+
### Harvesting and indexing documents from GeoBlacklight sites
|
105
|
+
|
106
|
+
GeoCombine provides a Harvester class and rake task to harvest and index content from GeoBlacklight sites (or any site that follows the Blacklight API format). Given that the configurations can change from consumer to consumer and site to site, the class provides a relatively simple configuration API. This can be configured in an initializer, a wrapping rake task, or any other ruby context where the rake task our class would be invoked.
|
107
|
+
|
108
|
+
#### Harvester configuration
|
109
|
+
|
110
|
+
Only the sites themselves are required to be configured but there are various configuration options that can (optionally) be supplied to modify the harvester's behavior.
|
111
|
+
|
112
|
+
```ruby
|
113
|
+
GeoCombine::GeoBlacklightIndexer.configure do
|
114
|
+
{
|
115
|
+
commit_within: '10000',
|
116
|
+
crawl_delay: 1, # All sites
|
117
|
+
debug: true,
|
118
|
+
SITE1: {
|
119
|
+
crawl_delay: 2, # SITE1 only
|
120
|
+
host: 'https://geoblacklight.example.edu',
|
121
|
+
params: {
|
122
|
+
f: {
|
123
|
+
dct_provenance_s: ['Institution']
|
124
|
+
}
|
125
|
+
}
|
126
|
+
},
|
127
|
+
SITE2: {
|
128
|
+
host: 'https://geoportal.example.edu',
|
129
|
+
params: {
|
130
|
+
q: '*'
|
131
|
+
}
|
132
|
+
}
|
133
|
+
}
|
134
|
+
end
|
135
|
+
```
|
136
|
+
|
137
|
+
##### Crawl Delays (default: none)
|
138
|
+
|
139
|
+
Crawl delays can be configured (in seconds) either globally for all sites or on a per-site basis. This will cause a delay for that number of seconds between each search results page (note that Blacklight 7 necessitates a lot of requests per results page and this only causes the delay per page of results)
|
140
|
+
|
141
|
+
##### Solr's commitWithin (default: 5000 milliseconds)
|
142
|
+
|
143
|
+
Solr's commitWithin option can be configured (in milliseconds) by passing a value under the commit_within key.
|
144
|
+
|
145
|
+
##### Debugging (default: false)
|
146
|
+
|
147
|
+
The harvester and indexer will only `puts` content when errors happen. It is possible to see some progress information by setting the debug configuration option.
|
148
|
+
|
149
|
+
#### Transforming Documents
|
150
|
+
|
151
|
+
You may need to transform documents that are harvested for various purposes (removing fields, adding fields, omitting a document all together, etc). You can configure some ruby code (a proc) that will take the document in, transform it, and return the transformed document. By default the indexer will remove the `score`, `timestamp`, and `_version_` fields from the documents harvested. If you provide your own transformer, you'll likely want to remove these fields in addition to the other transformations you provide.
|
152
|
+
|
153
|
+
```ruby
|
154
|
+
GeoCombine::GeoBlacklightIndexer.document_transformer = -> (document) do
|
155
|
+
# Removes "bogus_field" from the content we're harvesting
|
156
|
+
# in addition to some other solr fields we don't want
|
157
|
+
%w[_version_ score timestamp bogus_field].each do |field|
|
158
|
+
document.delete(field)
|
159
|
+
end
|
160
|
+
|
161
|
+
document
|
162
|
+
end
|
163
|
+
```
|
164
|
+
|
104
165
|
## Tests
|
105
166
|
|
106
167
|
To run the tests, use:
|
data/lib/geo_combine.rb
CHANGED
@@ -68,6 +68,9 @@ require 'geo_combine/esri_open_data'
|
|
68
68
|
require 'geo_combine/ckan_metadata'
|
69
69
|
require 'geo_combine/ogp'
|
70
70
|
|
71
|
+
# Require harvesting/indexing files
|
72
|
+
require 'geo_combine/geo_blacklight_harvester'
|
73
|
+
|
71
74
|
# Require gem files
|
72
75
|
require 'geo_combine/version'
|
73
76
|
require 'geo_combine/railtie' if defined?(Rails)
|
@@ -0,0 +1,203 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module GeoCombine
|
4
|
+
##
|
5
|
+
# A class to harvest and index results from GeoBlacklight sites
|
6
|
+
# You can configure the sites to be harvested via a configure command.
|
7
|
+
# GeoCombine::GeoBlacklightHarvester.configure do
|
8
|
+
# {
|
9
|
+
# SITE: { host: 'https://example.com', params: { f: { dct_provenance_s: ['SITE'] } } }
|
10
|
+
# }
|
11
|
+
# end
|
12
|
+
# The class configuration also allows for various other things to be configured:
|
13
|
+
# - A debug parameter to print out details of what is being harvested and indexed
|
14
|
+
# - crawl delays for each page of results (globally or on a per site basis)
|
15
|
+
# - Solr's commitWithin parameter (defaults to 5000)
|
16
|
+
# - A document transformer proc to modify a document before indexing (defaults to removing _version_, score, and timestamp)
|
17
|
+
# Example: GeoCombine::GeoBlacklightHarvester.new('SITE').index
|
18
|
+
class GeoBlacklightHarvester
|
19
|
+
require 'active_support/core_ext/object/to_query'
|
20
|
+
|
21
|
+
class << self
|
22
|
+
attr_writer :document_transformer
|
23
|
+
|
24
|
+
def configure(&block)
|
25
|
+
@config = yield block
|
26
|
+
end
|
27
|
+
|
28
|
+
def config
|
29
|
+
@config || {}
|
30
|
+
end
|
31
|
+
|
32
|
+
def document_transformer
|
33
|
+
@document_transformer || ->(document) do
|
34
|
+
document.delete('_version_')
|
35
|
+
document.delete('score')
|
36
|
+
document.delete('timestamp')
|
37
|
+
document
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
attr_reader :site, :site_key
|
44
|
+
def initialize(site_key)
|
45
|
+
@site_key = site_key
|
46
|
+
@site = self.class.config[site_key]
|
47
|
+
|
48
|
+
raise ArgumentError, "Site key #{@site_key.inspect} is not configured for #{self.class.name}" unless @site
|
49
|
+
end
|
50
|
+
|
51
|
+
def index
|
52
|
+
puts "Fetching page 1 @ #{base_url}&page=1" if self.class.config[:debug]
|
53
|
+
response = JSON.parse(Net::HTTP.get(URI("#{base_url}&page=1")))
|
54
|
+
response_class = BlacklightResponseVersionFactory.call(response)
|
55
|
+
|
56
|
+
response_class.new(response: response, base_url: base_url).documents.each do |docs|
|
57
|
+
docs.map! do |document|
|
58
|
+
self.class.document_transformer.call(document) if self.class.document_transformer
|
59
|
+
end.compact
|
60
|
+
|
61
|
+
puts "Adding #{docs.count} documents to solr" if self.class.config[:debug]
|
62
|
+
solr_connection.update params: { commitWithin: commit_within, overwrite: true },
|
63
|
+
data: docs.to_json,
|
64
|
+
headers: { 'Content-Type' => 'application/json' }
|
65
|
+
|
66
|
+
sleep(crawl_delay.to_i) if crawl_delay
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
##
|
71
|
+
# A "factory" class to determine the blacklight response version to use
|
72
|
+
class BlacklightResponseVersionFactory
|
73
|
+
def self.call(json)
|
74
|
+
keys = json.keys
|
75
|
+
if keys.include?('response')
|
76
|
+
LegacyBlacklightResponse
|
77
|
+
elsif keys.any? && %w[links data].all? { |param| keys.include?(param) }
|
78
|
+
ModernBlacklightResponse
|
79
|
+
else
|
80
|
+
raise NotImplementedError, "The following json response was not able to be parsed by the GeoBlacklightHarvester\n#{json}"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
class LegacyBlacklightResponse
|
86
|
+
attr_reader :base_url
|
87
|
+
attr_accessor :response, :page
|
88
|
+
def initialize(response:, base_url:)
|
89
|
+
@base_url = base_url
|
90
|
+
@response = response
|
91
|
+
@page = 1
|
92
|
+
end
|
93
|
+
|
94
|
+
def documents
|
95
|
+
return enum_for(:documents) unless block_given?
|
96
|
+
|
97
|
+
while current_page && total_pages && (current_page <= total_pages) do
|
98
|
+
yield response.dig('response', 'docs')
|
99
|
+
|
100
|
+
break if current_page == total_pages
|
101
|
+
self.page += 1
|
102
|
+
puts "Fetching page #{page} @ #{url}" if GeoCombine::GeoBlacklightHarvester.config[:debug]
|
103
|
+
|
104
|
+
begin
|
105
|
+
self.response = JSON.parse(Net::HTTP.get(URI(url)))
|
106
|
+
rescue => e
|
107
|
+
puts "Request for #{url} failed with #{e}"
|
108
|
+
self.response = nil
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
private
|
114
|
+
|
115
|
+
def url
|
116
|
+
"#{base_url}&page=#{page}"
|
117
|
+
end
|
118
|
+
|
119
|
+
def current_page
|
120
|
+
response.dig('response', 'pages', 'current_page')
|
121
|
+
end
|
122
|
+
|
123
|
+
def total_pages
|
124
|
+
response.dig('response', 'pages', 'total_pages')
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
##
|
129
|
+
# Class to return documents from the Blacklight API (v7 and above)
|
130
|
+
class ModernBlacklightResponse
|
131
|
+
attr_reader :base_url
|
132
|
+
attr_accessor :response, :page
|
133
|
+
def initialize(response:, base_url:)
|
134
|
+
@base_url = base_url
|
135
|
+
@response = response
|
136
|
+
@page = 1
|
137
|
+
end
|
138
|
+
|
139
|
+
def documents
|
140
|
+
return enum_for(:documents) unless block_given?
|
141
|
+
|
142
|
+
while response && response['data'].any?
|
143
|
+
document_urls = response['data'].collect { |data| data.dig('links', 'self') }.compact
|
144
|
+
|
145
|
+
yield documents_from_urls(document_urls)
|
146
|
+
|
147
|
+
url = response.dig('links', 'next')
|
148
|
+
break unless url
|
149
|
+
self.page += 1
|
150
|
+
puts "Fetching page #{page} @ #{url}" if GeoCombine::GeoBlacklightHarvester.config[:debug]
|
151
|
+
begin
|
152
|
+
self.response = JSON.parse(Net::HTTP.get(URI(url)))
|
153
|
+
rescue => e
|
154
|
+
puts "Request for #{url} failed with #{e}"
|
155
|
+
self.response = nil
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
private
|
161
|
+
|
162
|
+
def documents_from_urls(urls)
|
163
|
+
puts "Fetching #{urls.count} documents for page #{page}" if GeoCombine::GeoBlacklightHarvester.config[:debug]
|
164
|
+
urls.map do |url|
|
165
|
+
begin
|
166
|
+
JSON.parse(Net::HTTP.get(URI("#{url}/raw")))
|
167
|
+
rescue => e
|
168
|
+
puts "Fetching \"#{url}/raw\" failed with #{e}"
|
169
|
+
|
170
|
+
nil
|
171
|
+
end
|
172
|
+
end.compact
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
private
|
177
|
+
|
178
|
+
def base_url
|
179
|
+
"#{site[:host]}?#{default_params.to_query}"
|
180
|
+
end
|
181
|
+
|
182
|
+
def solr_connection
|
183
|
+
solr_url = ENV['SOLR_URL'] || 'http://127.0.0.1:8983/solr/blacklight-core'
|
184
|
+
|
185
|
+
RSolr.connect url: solr_url, adapter: :net_http_persistent
|
186
|
+
end
|
187
|
+
|
188
|
+
def commit_within
|
189
|
+
self.class.config[:commit_within] || '5000'
|
190
|
+
end
|
191
|
+
|
192
|
+
def crawl_delay
|
193
|
+
site[:crawl_delay] || self.class.config[:crawl_delay]
|
194
|
+
end
|
195
|
+
|
196
|
+
def default_params
|
197
|
+
{
|
198
|
+
per_page: 100,
|
199
|
+
format: :json
|
200
|
+
}.merge(site[:params])
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
data/lib/geo_combine/version.rb
CHANGED
data/lib/tasks/geo_combine.rake
CHANGED
@@ -2,6 +2,7 @@ require 'net/http'
|
|
2
2
|
require 'json'
|
3
3
|
require 'rsolr'
|
4
4
|
require 'find'
|
5
|
+
require 'geo_combine/geo_blacklight_harvester'
|
5
6
|
|
6
7
|
namespace :geocombine do
|
7
8
|
commit_within = (ENV['SOLR_COMMIT_WITHIN'] || 5000).to_i
|
@@ -60,4 +61,13 @@ namespace :geocombine do
|
|
60
61
|
end
|
61
62
|
solr.commit
|
62
63
|
end
|
64
|
+
|
65
|
+
namespace :geoblacklight_harvester do
|
66
|
+
desc 'Harvest documents from a configured GeoBlacklight instance'
|
67
|
+
task :index, [:site] do |_t, args|
|
68
|
+
raise ArgumentError, 'A site argument is required' unless args.site
|
69
|
+
|
70
|
+
GeoCombine::GeoBlacklightHarvester.new(args.site).index
|
71
|
+
end
|
72
|
+
end
|
63
73
|
end
|
data/lib/xslt/iso2html.xsl
CHANGED
@@ -1,1070 +1,1107 @@
|
|
1
|
-
<?xml version="1.0" encoding="
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
<
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
<dt>
|
468
|
-
<dd
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
<
|
772
|
-
<
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
|
932
|
-
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
|
937
|
-
|
938
|
-
|
939
|
-
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
|
944
|
-
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
|
965
|
-
|
966
|
-
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
|
983
|
-
|
984
|
-
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
992
|
-
|
993
|
-
|
994
|
-
|
995
|
-
|
996
|
-
|
997
|
-
|
998
|
-
|
999
|
-
|
1000
|
-
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1029
|
-
|
1030
|
-
|
1031
|
-
|
1032
|
-
|
1033
|
-
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
|
1042
|
-
|
1043
|
-
|
1044
|
-
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
|
1053
|
-
|
1054
|
-
|
1055
|
-
|
1056
|
-
|
1057
|
-
|
1058
|
-
<xsl:
|
1059
|
-
|
1060
|
-
|
1061
|
-
|
1062
|
-
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
1066
|
-
|
1067
|
-
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
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>
|