Project

General

Profile

1
<?xml version="1.0"?>
2
<!--
3
  *  '$RCSfile: eml-coverage-2.0.0.xsl,v $'
4
  *      Authors: Matthew Brooke
5
  *    Copyright: 2000 Regents of the University of California and the
6
  *               National Center for Ecological Analysis and Synthesis
7
  *  For Details: http://www.nceas.ucsb.edu/
8
  *
9
  *   '$Author: cjones $'
10
  *     '$Date: 2004/10/05 23:50:34 $'
11
  * '$Revision: 1.1 $'
12
  *
13
  * This program is free software; you can redistribute it and/or modify
14
  * it under the terms of the GNU General Public License as published by
15
  * the Free Software Foundation; either version 2 of the License, or
16
  * (at your option) any later version.
17
  *
18
  * This program is distributed in the hope that it will be useful,
19
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21
  * GNU General Public License for more details.
22
  *
23
  * You should have received a copy of the GNU General Public License
24
  * along with this program; if not, write to the Free Software
25
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
26
  *
27
  * This is an XSLT (http://www.w3.org/TR/xslt) stylesheet designed to
28
  * convert an XML file that is valid with respect to the eml-variable.dtd
29
  * module of the Ecological Metadata Language (EML) into an HTML format
30
  * suitable for rendering with modern web browsers.
31
-->
32

    
33
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
34
  <xsl:import href="eml-literature-2.0.0.xsl"/>
35

    
36
  <xsl:output method="html" encoding="iso-8859-1"
37
    doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
38
    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
39
    indent="yes" />  
40

    
41
  <!-- This module is for coverage and it is self contained(It is a table
42
       and will handle reference by it self)-->
43
			 <!-- mob took out the table elements in the coverage template. they are also in 
44
			 geo, temporal and taxonomic templates -->
45
  <xsl:template name="coverage">
46
        <xsl:choose>
47
         <xsl:when test="references!=''">
48
          <xsl:variable name="ref_id" select="references"/>
49
          <xsl:variable name="references" select="$ids[@id=$ref_id]" />
50
          <xsl:for-each select="$references">
51
			<!--	  <table class="{$tabledefaultStyle}">  -->
52
            <xsl:for-each select="geographicCoverage">
53
                <xsl:call-template name="geographicCoverage">
54
                </xsl:call-template>
55
            </xsl:for-each>
56
       <!--  </table>  -->
57
        <!--  <table class="{$tabledefaultStyle}">  -->
58
             <xsl:for-each select="temporalCoverage">
59
                <xsl:call-template name="temporalCoverage">
60
                </xsl:call-template>
61
            </xsl:for-each>
62
         <!-- </table>  -->
63
         <!-- <table class="{$tabledefaultStyle}">  -->
64
            <xsl:for-each select="taxonomicCoverage">
65
                <xsl:call-template name="taxonomicCoverage">
66
                </xsl:call-template>
67
            </xsl:for-each>
68
        <!--  </table>  -->
69
          </xsl:for-each>
70
        </xsl:when>
71
        <xsl:otherwise>
72
      <!--   <table class="{$tabledefaultStyle}">  -->
73
            <xsl:for-each select="geographicCoverage">
74
                <xsl:call-template name="geographicCoverage">
75
                </xsl:call-template>
76
            </xsl:for-each>
77
       <!--  </table>  -->
78
        <!--   <table class="{$tabledefaultStyle}"> -->
79
            <xsl:for-each select="temporalCoverage">
80
                <xsl:call-template name="temporalCoverage">
81
                </xsl:call-template>
82
            </xsl:for-each>
83
         <!-- </table> -->
84
        <!--  <table class="{$tabledefaultStyle}"> -->
85
            <xsl:for-each select="taxonomicCoverage">
86
                <xsl:call-template name="taxonomicCoverage">
87
                </xsl:call-template>
88
            </xsl:for-each>
89
        <!--  </table>  -->
90
        </xsl:otherwise>
91
      </xsl:choose>
92
  </xsl:template>
93

    
94
 <!-- ********************************************************************* -->
95
 <!-- **************  G E O G R A P H I C   C O V E R A G E  ************** -->
96
 <!-- ********************************************************************* -->
97
  <xsl:template name="geographicCoverage">
98
    <xsl:choose>
99
      <xsl:when test="references!=''">
100
        <xsl:variable name="ref_id" select="references"/>
101
        <xsl:variable name="references" select="$ids[@id=$ref_id]" />
102
        <xsl:for-each select="$references">
103
          <xsl:for-each select="geographicCoverage">
104
            <table class="{$tabledefaultStyle}">
105
              <xsl:call-template name="geographicCovCommon" />
106
            </table>
107
          </xsl:for-each>
108
        </xsl:for-each>
109
      </xsl:when>
110
      <xsl:otherwise>
111
          <table class="{$tabledefaultStyle}">
112
            <xsl:call-template name="geographicCovCommon" />
113
          </table>
114
      </xsl:otherwise>
115
    </xsl:choose>
116
  </xsl:template>
117

    
118
  <xsl:template name="geographicCovCommon">
119
      <tr>
120
        <th colspan="2">
121
          <xsl:text>Geographic Region:</xsl:text>
122
        </th>
123
      </tr>
124
      <xsl:apply-templates select="geographicDescription"/>
125
      <xsl:apply-templates select="boundingCoordinates"/>
126
      <xsl:for-each select="datasetGPolygon">
127
          <xsl:if test="datasetGPolygonOuterGRing">
128
            <xsl:apply-templates select="datasetGPolygonOuterGRing"/>
129
          </xsl:if>
130
          <xsl:if test="datasetGPolygonExclusionGRing">
131
              <xsl:apply-templates select="datasetGPolygonExclusionGRing"/>
132
          </xsl:if>
133
     </xsl:for-each>
134
  </xsl:template>
135

    
136
  <xsl:template match="geographicDescription">
137
    <tr>
138
      <td class="{$firstColStyle}">Geographic Description:</td>
139
      <td class="{$secondColStyle}"><xsl:value-of select="."/></td>
140
    </tr>
141
  </xsl:template>
142

    
143
  <xsl:template match="boundingCoordinates">
144
      <tr><td class="{$firstColStyle}">
145
           Bounding Coordinates:
146
          </td>
147
       <td>
148
         <table>
149
           <xsl:apply-templates select="westBoundingCoordinate"/>
150
           <xsl:apply-templates select="eastBoundingCoordinate"/>
151
           <xsl:apply-templates select="northBoundingCoordinate"/>
152
           <xsl:apply-templates select="southBoundingCoordinate"/>
153
           <xsl:apply-templates select="boundingAltitudes"/>
154
         </table>
155
      </td>
156
      </tr>
157
  </xsl:template>
158

    
159
  <xsl:template match="westBoundingCoordinate">
160
    <tr><td class="{$firstColStyle}">
161
         <xsl:text>West: &#160;</xsl:text>
162
        </td>
163
        <td class="{$secondColStyle}">
164
         <xsl:value-of select="."/>&#160; degrees
165
        </td>
166
     </tr>
167
  </xsl:template>
168

    
169
  <xsl:template match="eastBoundingCoordinate">
170
    <tr><td class="{$firstColStyle}">
171
       <xsl:text>East: &#160;</xsl:text>
172
       </td>
173
       <td class="{$secondColStyle}">
174
         <xsl:value-of select="."/>&#160; degrees
175
       </td>
176
     </tr>
177
  </xsl:template>
178

    
179
  <xsl:template match="northBoundingCoordinate">
180
    <tr><td class="{$firstColStyle}">
181
         <xsl:text>North: &#160;</xsl:text>
182
        </td>
183
        <td class="{$secondColStyle}">
184
          <xsl:value-of select="."/>&#160; degrees
185
        </td>
186
     </tr>
187
  </xsl:template>
188

    
189
  <xsl:template match="southBoundingCoordinate">
190
    <tr><td class="{$firstColStyle}">
191
         <xsl:text>South: &#160;</xsl:text>
192
       </td>
193
       <td class="{$secondColStyle}">
194
         <xsl:value-of select="."/>&#160; degrees
195
        </td>
196
    </tr>
197
  </xsl:template>
198

    
199

    
200
  <xsl:template match="boundingAltitudes">
201

    
202
      <tr><td class="{$firstColStyle}">
203
        Mimimum Altitude:</td><td class="{$secondColStyle}">
204
        <xsl:apply-templates select="altitudeMinimum"/></td></tr>
205
      <tr><td class="{$firstColStyle}">
206
        Maximum Altitude:</td><td class="{$secondColStyle}">
207
        <xsl:apply-templates select="altitudeMaximum"/></td></tr>
208

    
209
  </xsl:template>
210

    
211
  <xsl:template match="altitudeMinimum">
212
     <xsl:value-of select="."/> &#160;<xsl:value-of select="../altitudeUnits"/>
213
  </xsl:template>
214

    
215
  <xsl:template match="altitudeMaximum">
216
    <xsl:value-of select="."/> &#160;<xsl:value-of select="../altitudeUnits"/>
217
  </xsl:template>
218

    
219
  <xsl:template match="datasetGPolygonOuterGRing">
220
    <tr><td class="{$firstColStyle}">
221
          <xsl:text>G-Ploygon(Outer Ring): </xsl:text>
222
        </td>
223
        <td class="{$secondColStyle}">
224
           <xsl:apply-templates select="gRingPoint"/>
225
           <xsl:apply-templates select="gRing"/>
226
        </td>
227
     </tr>
228
  </xsl:template>
229

    
230
  <xsl:template match="datasetGPolygonExclusionGRing">
231
    <tr><td class="{$firstColStyle}">
232
          <xsl:text>G-Ploygon(Exclusion Ring): </xsl:text>
233
        </td>
234
        <td class="{$secondColStyle}">
235
           <xsl:apply-templates select="gRingPoint"/>
236
           <xsl:apply-templates select="gRing"/>
237
        </td>
238
     </tr>
239
  </xsl:template>
240

    
241
  <xsl:template match="gRing">
242
    <xsl:text>(GRing) &#160;</xsl:text>
243
    <xsl:text>Latitude: </xsl:text>
244
    <xsl:value-of select="gRingLatitude"/>,
245
    <xsl:text>Longitude: </xsl:text>
246
    <xsl:value-of select="gRingLongitude"/><br/>
247
  </xsl:template>
248

    
249
  <xsl:template match="gRingPoint">
250
    <xsl:text>Latitude: </xsl:text>
251
    <xsl:value-of select="gRingLatitude"/>,
252
    <xsl:text>Longitude: </xsl:text>
253
    <xsl:value-of select="gRingLongitude"/><br/>
254
  </xsl:template>
255

    
256
<!-- ********************************************************************* -->
257
<!-- ****************  T E M P O R A L   C O V E R A G E  **************** -->
258
<!-- ********************************************************************* -->
259

    
260
  <xsl:template name="temporalCoverage">
261
    <xsl:choose>
262
      <xsl:when test="references!=''">
263
        <xsl:variable name="ref_id" select="references"/>
264
        <xsl:variable name="references" select="$ids[@id=$ref_id]" />
265
        <xsl:for-each select="$references">
266
          <table class="{$tabledefaultStyle}">
267
            <xsl:call-template name="temporalCovCommon" />
268
          </table>
269
        </xsl:for-each>
270
      </xsl:when>
271
      <xsl:otherwise>
272
          <table class="{$tabledefaultStyle}">
273
            <xsl:call-template name="temporalCovCommon" />
274
          </table>
275
      </xsl:otherwise>
276
    </xsl:choose>
277
  </xsl:template>
278

    
279
  <xsl:template name="temporalCovCommon" >
280
     <tr><th colspan="2">
281
      <xsl:text>Time Period:</xsl:text></th></tr>
282
      <xsl:apply-templates select="singleDateTime"/>
283
      <xsl:apply-templates select="rangeOfDates"/>
284
  </xsl:template>
285

    
286
  <xsl:template match="singleDateTime">
287
    <tr><td class="{$firstColStyle}">
288
            Date:
289
         </td>
290
         <td>
291
             <xsl:call-template name="singleDateType" />
292
         </td>
293
     </tr>
294
   </xsl:template>
295

    
296
  <xsl:template match="rangeOfDates">
297
     <tr><td class="{$firstColStyle}">
298
            Begin:
299
         </td>
300
         <td>
301
            <xsl:apply-templates select="beginDate"/>
302
          </td>
303
     </tr>
304

    
305
     <tr><td class="{$firstColStyle}">
306
            End:
307
          </td>
308
          <td>
309
             <xsl:apply-templates select="endDate"/>
310
          </td>
311
     </tr>
312
  </xsl:template>
313

    
314

    
315
  <xsl:template match="beginDate">
316
      <xsl:call-template name="singleDateType"/>
317
  </xsl:template>
318

    
319
  <xsl:template match="endDate">
320
      <xsl:call-template name="singleDateType"/>
321
  </xsl:template>
322

    
323
  <xsl:template name="singleDateType">
324
    <table>
325
     <xsl:if test="calendarDate">
326
      <tr>
327
       <td colspan="2" class="{$secondColStyle}">
328
          <xsl:value-of select="calendarDate"/>
329
          <xsl:if test="./time and normalize-space(./time)!=''">
330
            <xsl:text>&#160; at &#160;</xsl:text><xsl:apply-templates select="time"/>
331
          </xsl:if>
332
        </td>
333
      </tr>
334
     </xsl:if>
335
     <xsl:if test="alternativeTimeScale">
336
         <xsl:apply-templates select="alternativeTimeScale"/>
337
     </xsl:if>
338
    </table>
339
  </xsl:template>
340

    
341

    
342
  <xsl:template match="alternativeTimeScale">
343

    
344
        <tr><td class="{$firstColStyle}">
345
            Timescale:</td><td class="{$secondColStyle}"><xsl:value-of select="timeScaleName"/></td></tr>
346
        <tr><td class="{$firstColStyle}">
347
            Time estimate:</td><td class="{$secondColStyle}"><xsl:value-of select="timeScaleAgeEstimate"/></td></tr>
348
        <xsl:if test="timeScaleAgeUncertainty and normalize-space(timeScaleAgeUncertainty)!=''">
349
        <tr><td class="{$firstColStyle}">
350
            Time uncertainty:</td><td class="{$secondColStyle}"><xsl:value-of select="timeScaleAgeUncertainty"/></td></tr>
351
        </xsl:if>
352
        <xsl:if test="timeScaleAgeExplanation and normalize-space(timeScaleAgeExplanation)!=''">
353
        <tr><td class="{$firstColStyle}">
354
            Time explanation:</td><td class="{$secondColStyle}"><xsl:value-of select="timeScaleAgeExplanation"/></td></tr>
355
        </xsl:if>
356
        <xsl:if test="timeScaleCitation and normalize-space(timeScaleCitation)!=''">
357
        <tr><td class="{$firstColStyle}">
358
            Citation:</td><td class="{$secondColStyle}">
359
            <xsl:apply-templates select="timeScaleCitation"/>
360
        </td></tr>
361
        </xsl:if>
362

    
363
  </xsl:template>
364

    
365
  <xsl:template match="timeScaleCitation">
366
     <!-- Using citation module here -->
367
     <xsl:call-template name="citation">
368
     </xsl:call-template>
369
  </xsl:template>
370

    
371
<!-- ********************************************************************* -->
372
<!-- ***************  T A X O N O M I C   C O V E R A G E  *************** -->
373
<!-- ********************************************************************* -->
374
  <xsl:template name="taxonomicCoverage">
375
     <xsl:choose>
376
      <xsl:when test="references!=''">
377
        <xsl:variable name="ref_id" select="references"/>
378
        <xsl:variable name="references" select="$ids[@id=$ref_id]" />
379
        <xsl:for-each select="$references">
380
          <table class="{$tabledefaultStyle}">
381
            <xsl:call-template name="taxonomicCovCommon" />
382
          </table>
383
        </xsl:for-each>
384
      </xsl:when>
385
      <xsl:otherwise>
386
        <table class="{$tabledefaultStyle}">
387
          <xsl:call-template name="taxonomicCovCommon" />
388
        </table>
389
      </xsl:otherwise>
390
    </xsl:choose>
391
  </xsl:template>
392

    
393

    
394
  <xsl:template name="taxonomicCovCommon">
395
      <tr><th colspan="2">
396
      <xsl:text>Taxonomic Range:</xsl:text></th></tr>
397
      <xsl:apply-templates select="taxonomicSystem"/>
398
      <xsl:apply-templates select="generalTaxonomicCoverage"/>
399
      <xsl:for-each select="taxonomicClassification">
400
          <xsl:apply-templates select="."/>
401
      </xsl:for-each>
402
  </xsl:template>
403

    
404

    
405
 <xsl:template match="taxonomicSystem">
406
     <tr><td class="{$firstColStyle}">
407
        <xsl:text>Taxonomic System:</xsl:text></td>
408
        <td>
409
            <table class="{$tabledefaultStyle}">
410
              <xsl:apply-templates select="./*"/>
411
            </table>
412
        </td>
413
     </tr>
414
  </xsl:template>
415

    
416

    
417
  <xsl:template match="classificationSystem">
418
     <xsl:for-each select="classificationSystemCitation">
419
        <tr><td class="{$firstColStyle}">Classification Citation:</td>
420
          <td>
421
           <xsl:call-template name="citation">
422
             <xsl:with-param name="citationfirstColStyle" select="$firstColStyle"/>
423
             <xsl:with-param name="citationsubHeaderStyle" select="$subHeaderStyle"/>
424
           </xsl:call-template>
425
         </td>
426
        </tr>
427
     </xsl:for-each>
428
     <xsl:if test="classificationSystemModifications and normalize-space(classificationSystemModifications)!=''">
429
      <tr><td class="{$firstColStyle}">Modification:</td>
430
        <td class="{$secondColStyle}">
431
          <xsl:value-of select="classificationSystemModifications"/>
432
        </td>
433
      </tr>
434
     </xsl:if>
435
  </xsl:template>
436

    
437

    
438
  <xsl:template match="identificationReference">
439
      <tr><td class="{$firstColStyle}">ID Reference:</td>
440
          <td>
441
             <xsl:call-template name="citation">
442
                <xsl:with-param name="citationfirstColStyle" select="$firstColStyle"/>
443
                <xsl:with-param name="citationsubHeaderStyle" select="$subHeaderStyle"/>
444
             </xsl:call-template>
445
          </td>
446
     </tr>
447
  </xsl:template>
448

    
449
  <xsl:template match="identifierName">
450
      <tr><td class="{$firstColStyle}">ID Name:</td>
451
          <td>
452
             <xsl:call-template name="party">
453
               <xsl:with-param name="partyfirstColStyle" select="$firstColStyle"/>
454
             </xsl:call-template>
455
          </td>
456
      </tr>
457
  </xsl:template>
458

    
459
  <xsl:template match="taxonomicProcedures">
460
    <tr><td class="{$firstColStyle}">
461
        <xsl:text>Procedures:</xsl:text></td><td class="{$secondColStyle}">
462
        <xsl:value-of select="."/></td></tr>
463
  </xsl:template>
464

    
465
  <xsl:template match="taxonomicCompleteness">
466
    <tr><td class="{$firstColStyle}">
467
        <xsl:text>Completeness:</xsl:text></td><td class="{$secondColStyle}">
468
        <xsl:value-of select="."/></td></tr>
469
  </xsl:template>
470

    
471
  <xsl:template match="vouchers">
472
      <tr><td class="{$firstColStyle}">Vouchers:</td>
473
        <td>
474
        <table class="{$tabledefaultStyle}">
475
        <xsl:apply-templates select="specimen"/>
476
        <xsl:apply-templates select="repository"/>
477
        </table>
478
        </td></tr>
479
  </xsl:template>
480

    
481
  <xsl:template match="specimen">
482
    <tr><td class="{$firstColStyle}">
483
        <xsl:text>Specimen:</xsl:text></td><td class="{$secondColStyle}">
484
        <xsl:value-of select="."/></td></tr>
485
  </xsl:template>
486

    
487
  <xsl:template match="repository">
488
    <tr><td class="{$firstColStyle}">Repository:</td>
489
        <td>
490
            <xsl:for-each select="originator">
491
               <xsl:call-template name="party">
492
                 <xsl:with-param name="partyfirstColStyle" select="$firstColStyle"/>
493
               </xsl:call-template>
494
            </xsl:for-each>
495
        </td>
496
    </tr>
497
  </xsl:template>
498

    
499

    
500
  <xsl:template match="generalTaxonomicCoverage">
501
      <tr><td class="{$firstColStyle}">
502
             <xsl:text>General Coverage:</xsl:text></td>
503
           <td class="{$secondColStyle}">
504
             <xsl:value-of select="."/>
505
          </td>
506
      </tr>
507
  </xsl:template>
508

    
509

    
510
  <xsl:template match="taxonomicClassification">
511
    <tr><td class="{$firstColStyle}">
512
        <xsl:text>Classification:</xsl:text></td><td>
513
        <table class="{$tabledefaultStyle}">
514
        <xsl:apply-templates select="./*" mode="nest"/>
515
        </table>
516
        </td></tr>
517
  </xsl:template>
518

    
519
  <xsl:template match="taxonRankName" mode="nest" >
520
      <tr><td class="{$firstColStyle}">
521
        <xsl:text>Rank Name:</xsl:text></td><td class="{$secondColStyle}">
522
        <xsl:value-of select="."/></td></tr>
523
  </xsl:template>
524

    
525
  <xsl:template match="taxonRankValue" mode="nest">
526
      <tr><td class="{$firstColStyle}">
527
        <xsl:text>Rank Value:</xsl:text></td><td class="{$secondColStyle}">
528
        <xsl:value-of select="."/></td></tr>
529
  </xsl:template>
530

    
531
  <xsl:template match="commonName" mode="nest">
532
      <tr><td class="{$firstColStyle}">
533
            <xsl:text>Common Name:</xsl:text></td><td class="{$secondColStyle}">
534
            <xsl:value-of select="."/>
535
          </td>
536
      </tr>
537
  </xsl:template>
538

    
539
  <xsl:template match="taxonomicClassification" mode="nest">
540
    <tr><td class="{$firstColStyle}">
541
          <xsl:text>Classification:</xsl:text>
542
        </td>
543
        <td>
544
           <table class="{$tabledefaultStyle}">
545
             <xsl:apply-templates select="./*" mode="nest"/>
546
           </table>
547
        </td>
548
     </tr>
549
  </xsl:template>
550

    
551
</xsl:stylesheet>
(14-14/58)