1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ds="http://tempuri.org/dsNVS.xsd" xmlns:dwg="http://rs.tdwg.org/dwc/geospatial" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
|
3
|
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
|
4
|
<xsl:template match="/">
|
5
|
<vegX>
|
6
|
<!--Overall structure-->
|
7
|
<!--<xsl:attribute name="xsi:noNamespaceSchemaLocation" namespace="http://www.w3.org/2001/XMLSchema-instance"><xsl:value-of select="'C:\Development\VegX\VegX 1.5.2/veg.xsd'"/></xsl:attribute>-->
|
8
|
<projects>
|
9
|
<xsl:apply-templates select="//ds:Project"/>
|
10
|
</projects>
|
11
|
<plots>
|
12
|
<xsl:apply-templates select="//ds:Plot"/>
|
13
|
</plots>
|
14
|
<plotObservations>
|
15
|
<xsl:apply-templates select="//ds:PlotObs"/>
|
16
|
</plotObservations>
|
17
|
<taxonNameUsageConcepts>
|
18
|
<xsl:apply-templates select="//ds:Taxon"/>
|
19
|
</taxonNameUsageConcepts>
|
20
|
<aggregateOrganismObservations>
|
21
|
<xsl:apply-templates select="//ds:TaxonCategoryValue"/>
|
22
|
<xsl:apply-templates select="//ds:TaxonSimpleValue"/>
|
23
|
<xsl:apply-templates select="//ds:TaxonBrowse"/>
|
24
|
<xsl:apply-templates select="//ds:TaxonPercentageCover"/>
|
25
|
</aggregateOrganismObservations>
|
26
|
<strata>
|
27
|
<xsl:apply-templates select="//ds:TierMeasurementCategory"/>
|
28
|
</strata>
|
29
|
<stratumObservations>
|
30
|
<xsl:apply-templates select="//ds:Tier"/>
|
31
|
</stratumObservations>
|
32
|
<individualOrganismObservations>
|
33
|
<xsl:apply-templates select="//ds:Diameter"/>
|
34
|
<xsl:apply-templates select="//ds:OrthogonalWidth"/>
|
35
|
</individualOrganismObservations>
|
36
|
<individualOrganisms>
|
37
|
<xsl:apply-templates select="//ds:Item"/>
|
38
|
</individualOrganisms>
|
39
|
<attributes>
|
40
|
<attribute><!--Need an attribute for canopy (tree) height-->
|
41
|
<xsl:attribute name="id">tree</xsl:attribute>
|
42
|
<qualitative>
|
43
|
<methodID>
|
44
|
</methodID>
|
45
|
<code>tree</code>
|
46
|
</qualitative>
|
47
|
</attribute>
|
48
|
<xsl:apply-templates select="//ds:MeasurementCategory"/>
|
49
|
<xsl:apply-templates select="//ds:MeasurementUnit"/>
|
50
|
</attributes>
|
51
|
<methods>
|
52
|
<xsl:apply-templates select="//ds:Measurement"/>
|
53
|
</methods>
|
54
|
<protocols>
|
55
|
<xsl:apply-templates select="//ds:Method"/>
|
56
|
</protocols>
|
57
|
|
58
|
</vegX>
|
59
|
</xsl:template>
|
60
|
|
61
|
<xsl:template match="ds:Method">
|
62
|
<!--A NVS Method corresponds to a VegX Protocol-->
|
63
|
<protocol>
|
64
|
<xsl:attribute name="id"><xsl:value-of select="ds:MethodID"/></xsl:attribute>
|
65
|
<name>
|
66
|
<xsl:value-of select="ds:MethodName"/>
|
67
|
</name>
|
68
|
<citationID/>
|
69
|
<partyWithRole/>
|
70
|
</protocol>
|
71
|
</xsl:template>
|
72
|
<xsl:template match="ds:Measurement">
|
73
|
<!--A NVS Measurement (plus associated measure and technique info) corresponds to a VegX Method-->
|
74
|
<method>
|
75
|
<xsl:attribute name="id"><xsl:value-of select="ds:MeasurementID"/></xsl:attribute>
|
76
|
<description>Measure:<xsl:value-of select="ds:MeasureName"/> using Technique:<xsl:value-of select="ds:TechniqueName"/>
|
77
|
</description>
|
78
|
<protocolID>
|
79
|
<xsl:value-of select="ds:MethodID"/>
|
80
|
</protocolID>
|
81
|
<name>
|
82
|
<xsl:value-of select="ds:MeasureName"/>_<xsl:value-of select="ds:TechniqueName"/>
|
83
|
</name>
|
84
|
</method>
|
85
|
</xsl:template>
|
86
|
<xsl:template match="ds:MeasurementUnit">
|
87
|
<xsl:if test="ds:Units!=''">
|
88
|
|
89
|
<!--A NVS MeasurementUnit which has units corresponds to a VegX qualitative Attribute-->
|
90
|
<attribute>
|
91
|
<xsl:attribute name="id">MU<xsl:value-of select="ds:MeasurementUnitID"/></xsl:attribute>
|
92
|
<quantitative>
|
93
|
<methodID>
|
94
|
<xsl:value-of select="ds:MeasurementID"/>
|
95
|
</methodID>
|
96
|
<unit>
|
97
|
<xsl:value-of select="ds:Units"/>
|
98
|
</unit>
|
99
|
</quantitative>
|
100
|
</attribute>
|
101
|
</xsl:if>
|
102
|
</xsl:template>
|
103
|
<xsl:template match="ds:MeasurementCategory">
|
104
|
<!--A NVS MeasurementCategory corresponds to a VegX ordinal or qualitative Attribute-->
|
105
|
<attribute>
|
106
|
<xsl:attribute name="id">MC<xsl:value-of select="ds:MeasurementCategoryID"/></xsl:attribute>
|
107
|
<xsl:choose>
|
108
|
<xsl:when test="ds:CategoryUnits!=''">
|
109
|
<ordinal>
|
110
|
<code>
|
111
|
<xsl:value-of select="ds:CategoryDisplayText"/>
|
112
|
</code>
|
113
|
<methodID>
|
114
|
<xsl:value-of select="ds:MeasurementID"/>
|
115
|
</methodID>
|
116
|
<definition>
|
117
|
<xsl:value-of select="ds:CategoryDescription"/>
|
118
|
</definition>
|
119
|
<upperLimit>
|
120
|
<xsl:value-of select="ds:CategoryUpperBound"/>
|
121
|
</upperLimit>
|
122
|
<lowerLimit>
|
123
|
<xsl:value-of select="ds:CategoryLowerBound"/>
|
124
|
</lowerLimit>
|
125
|
<order>
|
126
|
<xsl:value-of select="ds:MeasurementCategoryIndex"/>
|
127
|
</order>
|
128
|
</ordinal>
|
129
|
</xsl:when>
|
130
|
<xsl:when test="ds:CategoryUnits=''">
|
131
|
<qualitative>
|
132
|
<methodID>
|
133
|
<xsl:value-of select="ds:MeasurementID"/>
|
134
|
</methodID>
|
135
|
<code>
|
136
|
<xsl:value-of select="ds:CategoryDisplayText"/>
|
137
|
</code>
|
138
|
</qualitative>
|
139
|
</xsl:when>
|
140
|
</xsl:choose>
|
141
|
</attribute>
|
142
|
</xsl:template>
|
143
|
|
144
|
<xsl:template name="GetTechniqueNonSample">
|
145
|
<!--Used to give a technique name to describe a set of code values-->
|
146
|
<!--For plot and other non-sample method measurements-->
|
147
|
<xsl:param name="ThisProjectID"/>
|
148
|
<xsl:param name="ThisMeasureTypeID"/>
|
149
|
<xsl:for-each select="//ds:SampleMeasure[ds:ProjectID=$ThisProjectID] ">
|
150
|
<xsl:variable name="ID"><xsl:value-of select="ds:MeasurementUnitID"/></xsl:variable>
|
151
|
<xsl:for-each select="//ds:MeasurementUnit[ds:MeasurementUnitID=$ID and ds:MeasureTypeID=$ThisMeasureTypeID]">
|
152
|
<xsl:value-of select="ds:TechniqueName"/>
|
153
|
</xsl:for-each>
|
154
|
</xsl:for-each>
|
155
|
</xsl:template>
|
156
|
|
157
|
<xsl:template name="GetTechniqueNoProject">
|
158
|
<!--Used to give a technique name to describe a set of code values-->
|
159
|
<!--For plot method measurements-->
|
160
|
<xsl:param name="ThisMeasurementCategoryID"/>
|
161
|
<xsl:for-each select="//ds:MeasurementCategory[ds:MeasurementCategoryID=$ThisMeasurementCategoryID] ">
|
162
|
<xsl:value-of select="ds:TechniqueName"/>
|
163
|
</xsl:for-each>
|
164
|
</xsl:template>
|
165
|
|
166
|
<xsl:template name="GetTechniqueSample">
|
167
|
<!--Used to give a technique name to describe a set of code values-->
|
168
|
<!--For measurements within a Sample Method (eg Recce)-->
|
169
|
<xsl:param name="ThisSampleMethodID"/>
|
170
|
<xsl:param name="ThisMeasureTypeID"/>
|
171
|
<xsl:for-each select="//ds:SampleMeasure[ds:SampleMethodID=$ThisSampleMethodID] ">
|
172
|
<xsl:variable name="ID"><xsl:value-of select="ds:MeasurementUnitID"/></xsl:variable>
|
173
|
<xsl:for-each select="//ds:MeasurementUnit[ds:MeasurementUnitID=$ID and ds:MeasureTypeID=$ThisMeasureTypeID]">
|
174
|
<xsl:value-of select="ds:TechniqueName"/>
|
175
|
</xsl:for-each>
|
176
|
</xsl:for-each>
|
177
|
</xsl:template>
|
178
|
|
179
|
<xsl:template name="GetMeasurementCategoryText">
|
180
|
<!--Used to give a a category's text, where VegX does not store an AttributeID-->
|
181
|
<xsl:param name="ThisMeasurementCategoryID"/>
|
182
|
<xsl:for-each select="//ds:MeasurementCategory[ds:MeasurementCategoryID=$ThisMeasurementCategoryID] ">
|
183
|
<xsl:value-of select="ds:CategoryDisplayText"/>
|
184
|
</xsl:for-each>
|
185
|
</xsl:template>
|
186
|
|
187
|
|
188
|
<xsl:template name="GetMeasurementUnitIDSample">
|
189
|
<!--Used to give a VegX AttributeID (a NVS MeasurementUnitID) to describe units of measurement-->
|
190
|
<!--For measurements within a Sample Method (eg Recce)-->
|
191
|
<xsl:param name="ThisSampleMethodID"/>
|
192
|
<xsl:param name="ThisMeasureTypeID"/>
|
193
|
<xsl:for-each select="//ds:SampleMeasure[ds:SampleMethodID=$ThisSampleMethodID]">
|
194
|
<xsl:variable name="ID"><xsl:value-of select="ds:MeasurementUnitID"/></xsl:variable>
|
195
|
<xsl:for-each select="//ds:MeasurementUnit[ds:MeasurementUnitID=$ID and ds:MeasureTypeID=$ThisMeasureTypeID]">MU<xsl:value-of select="ds:MeasurementUnitID"/>
|
196
|
</xsl:for-each>
|
197
|
</xsl:for-each>
|
198
|
</xsl:template>
|
199
|
|
200
|
<xsl:template name="GetMeasurementUnitIDNonSample">
|
201
|
<!--Used to give a VegX MethodID (a NVS MeasurementUnitID) to describe how something was measured-->
|
202
|
<!--For plot and other non-sample method measurements-->
|
203
|
<xsl:param name="ThisProjectID"/>
|
204
|
<xsl:param name="ThisMeasureTypeID"/>
|
205
|
<xsl:for-each select="//ds:SampleMeasure[ds:ProjectID=$ThisProjectID]">
|
206
|
<xsl:variable name="ID"><xsl:value-of select="ds:MeasurementUnitID"/></xsl:variable>
|
207
|
<xsl:for-each select="//ds:MeasurementUnit[ds:MeasurementUnitID=$ID and ds:MeasureTypeID=$ThisMeasureTypeID]">
|
208
|
MU<xsl:value-of select="ds:MeasurementUnitID"/>
|
209
|
</xsl:for-each>
|
210
|
</xsl:for-each>
|
211
|
</xsl:template>
|
212
|
|
213
|
<xsl:template name="GetMeasurementIDSample">
|
214
|
<!--Used to give a VegX MethodID (a NVS MeasurementID) to describe how something was measured-->
|
215
|
<!--For measurements within a Sample Method (eg Recce)-->
|
216
|
<xsl:param name="ThisSampleMethodID"/>
|
217
|
<xsl:param name="ThisMeasureTypeID"/>
|
218
|
<xsl:for-each select="//ds:SampleMeasure[ds:SampleMethodID=$ThisSampleMethodID] ">
|
219
|
<xsl:variable name="ID"><xsl:value-of select="ds:MeasurementUnitID"/></xsl:variable>
|
220
|
<xsl:for-each select="//ds:MeasurementUnit[ds:MeasurementUnitID=$ID and ds:MeasureTypeID=$ThisMeasureTypeID]">
|
221
|
<xsl:value-of select="ds:MeasurementID"/>
|
222
|
</xsl:for-each>
|
223
|
</xsl:for-each>
|
224
|
</xsl:template>
|
225
|
|
226
|
<xsl:template name="GetMeasurementIDNonSample">
|
227
|
<!--Used to give a VegX MethodID (a NVS MeasurementID) to describe how something was measured-->
|
228
|
<!--For plot and other non-sample method measurements-->
|
229
|
<xsl:param name="ThisProjectID"/>
|
230
|
<xsl:param name="ThisMeasureTypeID"/>
|
231
|
<xsl:for-each select="//ds:SampleMeasure[ds:ProjectID=$ThisProjectID] ">
|
232
|
<xsl:variable name="ID"><xsl:value-of select="ds:MeasurementUnitID"/></xsl:variable>
|
233
|
<xsl:for-each select="//ds:MeasurementUnit[ds:MeasurementUnitID=$ID and ds:MeasureTypeID=$ThisMeasureTypeID]">
|
234
|
<xsl:value-of select="ds:MeasurementID"/>
|
235
|
</xsl:for-each>
|
236
|
</xsl:for-each>
|
237
|
</xsl:template>
|
238
|
|
239
|
|
240
|
|
241
|
<xsl:template name="Notes">
|
242
|
<!--Notes are associated with various types of entity-->
|
243
|
<xsl:param name="NoteObjectTypeName"/>
|
244
|
<xsl:param name="NoteObjectID"/>
|
245
|
<xsl:for-each select="//ds:Note[ds:NoteObjectTypeName=$NoteObjectTypeName and ds:NoteObjectID=$NoteObjectID]">
|
246
|
<!--No Notes collection in VegX, just multiple notes-->
|
247
|
<note>
|
248
|
<text>
|
249
|
<xsl:value-of select="ds:Note"/>
|
250
|
</text>
|
251
|
<xsl:if test="ds:NoteDate!=''">
|
252
|
<date>
|
253
|
<xsl:value-of select="ds:NoteDate"/>
|
254
|
</date>
|
255
|
</xsl:if>
|
256
|
<xsl:if test="ds:Type!=''">
|
257
|
<type>
|
258
|
<xsl:value-of select="ds:Type"/>
|
259
|
</type>
|
260
|
</xsl:if>
|
261
|
</note>
|
262
|
</xsl:for-each>
|
263
|
</xsl:template>
|
264
|
<xsl:template match="ds:Project">
|
265
|
<project>
|
266
|
<xsl:attribute name="id"><xsl:value-of select="ds:ProjectID"/></xsl:attribute>
|
267
|
<title>
|
268
|
<xsl:value-of select="ds:ProjectName"/>
|
269
|
</title>
|
270
|
<personnel/>
|
271
|
<xsl:if test="ds:ProjectDescription!=''">
|
272
|
<designDescription>
|
273
|
<description>
|
274
|
<xsl:value-of select="ds:ProjectDescription"/>
|
275
|
</description>
|
276
|
</designDescription>
|
277
|
</xsl:if>
|
278
|
<!--No Project notes in VegX schema?-->
|
279
|
<!--<xsl:call-template name = "Notes">
|
280
|
<xsl:with-param name = "NoteObjectTypeName">Project</xsl:with-param>
|
281
|
<xsl:with-param name = "NoteObjectID"><xsl:value-of select="ds:ProjectID"/></xsl:with-param>
|
282
|
</xsl:call-template> -->
|
283
|
</project>
|
284
|
</xsl:template>
|
285
|
<xsl:template match="ds:Plot">
|
286
|
<plot>
|
287
|
<!--Why does a plot have an ID attribute as well as a plotUniqueidentifier?-->
|
288
|
<!--xsl:attribute name="id"><xsl:value-of select="ds:PlotID"/></xsl:attribute-->
|
289
|
<plotUniqueIdentifier>
|
290
|
<xsl:value-of select="ds:PlotID"/>
|
291
|
</plotUniqueIdentifier>
|
292
|
<plotName>
|
293
|
<xsl:value-of select="ds:PlotName"/>
|
294
|
</plotName>
|
295
|
<xsl:if test="ds:PlotLocationDescription!=''">
|
296
|
<locationNarrative>
|
297
|
<xsl:value-of select="ds:PlotLocationDescription"/>
|
298
|
</locationNarrative>
|
299
|
</xsl:if>
|
300
|
<xsl:if test="ds:PlotID!=ds:ParentPlotID and ds:ParentPlotID !=-1">
|
301
|
<relatedPlot>
|
302
|
<relatedPlot>
|
303
|
<relatedPlotID>
|
304
|
<xsl:value-of select="ds:ParentPlotID"/>
|
305
|
</relatedPlotID>
|
306
|
<plotRelationship>Nested</plotRelationship>
|
307
|
</relatedPlot> </relatedPlot>
|
308
|
</xsl:if>
|
309
|
<xsl:call-template name="Notes">
|
310
|
<xsl:with-param name="NoteObjectTypeName">Plot</xsl:with-param>
|
311
|
<xsl:with-param name="NoteObjectID">
|
312
|
<xsl:value-of select="ds:PlotID"/>
|
313
|
</xsl:with-param>
|
314
|
</xsl:call-template>
|
315
|
<xsl:if test="ds:PlacementMeasurementCategoryID">
|
316
|
<placementMethod>
|
317
|
<xsl:call-template name="GetMeasurementCategoryText">
|
318
|
<xsl:with-param name="ThisMeasurementCategoryID">
|
319
|
<xsl:value-of select="ds:PlacementMeasurementCategoryID"/>
|
320
|
</xsl:with-param>
|
321
|
</xsl:call-template>
|
322
|
</placementMethod>
|
323
|
</xsl:if>
|
324
|
<xsl:if test="ds:PlotID=ds:ParentPlotID">
|
325
|
<!--Only parent plots have coordinates in NVS-->
|
326
|
<geospatial>
|
327
|
<xsl:call-template name="Coordinates">
|
328
|
<xsl:with-param name="ThisPlotID">
|
329
|
<xsl:value-of select="ds:PlotID"/>
|
330
|
</xsl:with-param>
|
331
|
<xsl:with-param name="PlotAltitude">
|
332
|
<xsl:value-of select="ds:PlotAltitude"/>
|
333
|
</xsl:with-param>
|
334
|
</xsl:call-template>
|
335
|
</geospatial>
|
336
|
</xsl:if>
|
337
|
<xsl:if test="ds:PlotArea">
|
338
|
<area>
|
339
|
<value>
|
340
|
<xsl:value-of select="ds:PlotArea"/>
|
341
|
</value>
|
342
|
<attributeID>MU<xsl:value-of select="ds:AreaMeasurementUnitID"/></attributeID>
|
343
|
</area>
|
344
|
</xsl:if>
|
345
|
<xsl:if test="ds:ShapeMeasurementCategoryID">
|
346
|
<shape>
|
347
|
<xsl:call-template name="GetMeasurementCategoryText">
|
348
|
<xsl:with-param name="ThisMeasurementCategoryID">
|
349
|
<xsl:value-of select="ds:ShapeMeasurementCategoryID"/>
|
350
|
</xsl:with-param>
|
351
|
</xsl:call-template>
|
352
|
</shape>
|
353
|
</xsl:if>
|
354
|
<xsl:if test="ds:PlotRectangleLength01 or ds:PlotRectangleLength02">
|
355
|
<plotDimension>
|
356
|
<xsl:if test="ds:RectangleLength01">
|
357
|
<length>
|
358
|
<attributeID>MU<xsl:value-of select="ds:LengthMeasurementUnitID"/></attributeID>
|
359
|
<value>
|
360
|
<xsl:value-of select="ds:PlotRectangleLength01"/>
|
361
|
</value>
|
362
|
</length>
|
363
|
</xsl:if>
|
364
|
<xsl:if test="ds:RectangleLength02">
|
365
|
<width>
|
366
|
<attributeID>MU<xsl:value-of select="ds:LengthMeasurementUnitID"/></attributeID>
|
367
|
<value>
|
368
|
<xsl:value-of select="ds:PlotRectangleLength02"/>
|
369
|
</value>
|
370
|
</width>
|
371
|
</xsl:if>
|
372
|
</plotDimension>
|
373
|
</xsl:if>
|
374
|
<xsl:if test="ds:Radius">
|
375
|
<radius>
|
376
|
<attributeID>MU<xsl:value-of select="ds:RadiusMeasurementUnitID"/></attributeID>
|
377
|
<value>
|
378
|
<xsl:value-of select="ds:PlotRadius"/>
|
379
|
</value>
|
380
|
</radius>
|
381
|
</xsl:if>
|
382
|
<xsl:if test="ds:Aspect">
|
383
|
<slopeAspect>
|
384
|
<slopeAspectMeasurement>
|
385
|
<attributeID>MU<xsl:value-of select="ds:AspectMeasurementUnitID"/></attributeID>
|
386
|
<value>
|
387
|
<xsl:value-of select="ds:PlotAspect"/>
|
388
|
</value>
|
389
|
</slopeAspectMeasurement>
|
390
|
</slopeAspect>
|
391
|
</xsl:if>
|
392
|
<xsl:if test="ds:Slope">
|
393
|
<slopeGradient>
|
394
|
<attributeID>MU<xsl:value-of select="ds:SlopeMeasurementUnitID"/></attributeID>
|
395
|
<value>
|
396
|
<xsl:value-of select="ds:PlotSlope"/>
|
397
|
</value>
|
398
|
</slopeGradient>
|
399
|
</xsl:if>
|
400
|
<xsl:if test="ds:ParentMaterialMeasurementCategoryID">
|
401
|
<geology>
|
402
|
<rockType>
|
403
|
<xsl:call-template name="GetMeasurementCategoryText">
|
404
|
<xsl:with-param name="ThisMeasurementCategoryID">
|
405
|
<xsl:value-of select="ds:ParentMaterialMeasurementCategoryID"/>
|
406
|
</xsl:with-param>
|
407
|
</xsl:call-template>
|
408
|
</rockType>
|
409
|
<geologicalSchema>
|
410
|
<xsl:call-template name="GetTechniqueNoProject">
|
411
|
<xsl:with-param name="ThisMeasurementCategoryID">
|
412
|
<xsl:value-of select="ds:ParentMaterialMeasurementCategoryID"/>
|
413
|
</xsl:with-param>
|
414
|
</xsl:call-template>
|
415
|
</geologicalSchema>
|
416
|
</geology>
|
417
|
</xsl:if>
|
418
|
<xsl:if test="ds:LandformMeasurementCategoryID">
|
419
|
<landform>
|
420
|
<xsl:call-template name="GetMeasurementCategoryText">
|
421
|
<xsl:with-param name="ThisMeasurementCategoryID">
|
422
|
<xsl:value-of select="ds:LandformMeasurementCategoryID"/>
|
423
|
</xsl:with-param>
|
424
|
</xsl:call-template>
|
425
|
</landform>
|
426
|
</xsl:if>
|
427
|
</plot>
|
428
|
</xsl:template>
|
429
|
<xsl:template name="Coordinates">
|
430
|
<!--Called from ds:Plot to give coordinates for a particular Plot-->
|
431
|
<xsl:param name="ThisPlotID"/>
|
432
|
<xsl:param name="PlotAltitude"/>
|
433
|
<xsl:for-each select="//ds:PlotObs[ds:PlotID=$ThisPlotID]">
|
434
|
<xsl:variable name="PlotObsID"><xsl:value-of select="ds:PlotObsID"/></xsl:variable>
|
435
|
<xsl:for-each select="//ds:AbsoluteCoord[ds:PlotObsID=$PlotObsID]">
|
436
|
<xsl:sort select="Priority" order="descending"/>
|
437
|
<xsl:if test="position()=1">
|
438
|
|
439
|
<xsl:choose>
|
440
|
<xsl:when test="ds:Type='Geographic Coordinate (lat/long)'">
|
441
|
<DecimalLatitude>
|
442
|
<xsl:value-of select="ds:YNorthLat"/>
|
443
|
</DecimalLatitude>
|
444
|
<DecimalLongitude>
|
445
|
<xsl:value-of select="ds:XEastLong"/>
|
446
|
</DecimalLongitude>
|
447
|
</xsl:when>
|
448
|
</xsl:choose>
|
449
|
<GeodeticDatum>
|
450
|
<xsl:call-template name="GetMeasurementCategoryText">
|
451
|
<xsl:with-param name="ThisMeasurementCategoryID">
|
452
|
<xsl:value-of select="ds:DatumMeasurementCategoryID"/>
|
453
|
</xsl:with-param>
|
454
|
</xsl:call-template>
|
455
|
</GeodeticDatum>
|
456
|
<verbatimElevation><xsl:value-of select="$PlotAltitude"/></verbatimElevation>
|
457
|
<xsl:choose>
|
458
|
<xsl:when test="ds:MapsheetMeasurementCategoryID">
|
459
|
<gridCoordinateSystemName>
|
460
|
<xsl:call-template name="GetMeasurementCategoryText">
|
461
|
<xsl:with-param name="ThisMeasurementCategoryID">
|
462
|
<xsl:value-of select="ds:MapSeriesMeasurementCategoryID"/>
|
463
|
</xsl:with-param>
|
464
|
</xsl:call-template>
|
465
|
</gridCoordinateSystemName>
|
466
|
<xsl:text disable-output-escaping="yes"> </xsl:text>
|
467
|
<!--New line-->
|
468
|
<gridCode>
|
469
|
<xsl:call-template name="GetMeasurementCategoryText">
|
470
|
<xsl:with-param name="ThisMeasurementCategoryID">
|
471
|
<xsl:value-of select="ds:MapsheetMeasurementCategoryID"/>
|
472
|
</xsl:with-param>
|
473
|
</xsl:call-template>
|
474
|
</gridCode>
|
475
|
<xsl:text disable-output-escaping="yes"> </xsl:text>
|
476
|
<!--New line-->
|
477
|
</xsl:when>
|
478
|
<xsl:when test="ds:AbsoluteCoordXEastLong">
|
479
|
<authorEastCoordinate>
|
480
|
<xsl:value-of select="ds:AbsoluteCoordXEastLong"/>
|
481
|
</authorEastCoordinate>
|
482
|
<!--New line-->
|
483
|
<authorNorthCoordinate>
|
484
|
<xsl:value-of select="ds:AbsoluteCoordYNorthLat"/>
|
485
|
</authorNorthCoordinate>
|
486
|
</xsl:when>
|
487
|
</xsl:choose>
|
488
|
</xsl:if>
|
489
|
<!-- <xsl:text disable-output-escaping="yes"> </xsl:text> -->
|
490
|
<!--New line-->
|
491
|
</xsl:for-each>
|
492
|
</xsl:for-each>
|
493
|
<xsl:text disable-output-escaping="yes"> </xsl:text>
|
494
|
<!--New line-->
|
495
|
</xsl:template>
|
496
|
<xsl:template match="ds:PlotObs">
|
497
|
<plotObservation>
|
498
|
<!--Nowhere to put NVS PlotObsCurrentname-->
|
499
|
<xsl:attribute name="id"><xsl:value-of select="ds:PlotObsID"/></xsl:attribute>
|
500
|
<plotUniqueIdentifierID>
|
501
|
<xsl:value-of select="ds:PlotID"/>
|
502
|
</plotUniqueIdentifierID>
|
503
|
<!--Start date is not optional in schema, StartDate field uses ProjectStartDate if PlotObsStartDate is missing -->
|
504
|
<obsStartDate>
|
505
|
<xsl:value-of select="ds:PlotObsStartDate"/>
|
506
|
</obsStartDate>
|
507
|
<xsl:if test="ds:PlotObsStopDate!=''">
|
508
|
<obsEndDate>
|
509
|
<xsl:value-of select="ds:PlotObsStopDate"/>
|
510
|
</obsEndDate>
|
511
|
</xsl:if>
|
512
|
<projectID>
|
513
|
<xsl:value-of select="ds:ProjectID"/>
|
514
|
</projectID>
|
515
|
<xsl:call-template name="Notes">
|
516
|
<xsl:with-param name="NoteObjectTypeName">PlotObservation</xsl:with-param>
|
517
|
<xsl:with-param name="NoteObjectID">
|
518
|
<xsl:value-of select="ds:PlotObsID"/>
|
519
|
</xsl:with-param>
|
520
|
</xsl:call-template>
|
521
|
<xsl:if test="ds:PlotObsID=ds:ParentPlotObsID or ds:ParentPlotObsID =-1">
|
522
|
<surfaceCover>
|
523
|
<methodID>
|
524
|
<xsl:call-template name="GetMeasurementIDNonSample">
|
525
|
<xsl:with-param name="ThisProjectID">
|
526
|
<xsl:value-of select="ds:ProjectID"/>
|
527
|
</xsl:with-param>
|
528
|
<!--NVSClassLibrary.EMeasureType.GroundCoverCategory=91-->
|
529
|
<xsl:with-param name="ThisMeasureTypeID">91</xsl:with-param>
|
530
|
</xsl:call-template>
|
531
|
</methodID>
|
532
|
<xsl:call-template name="GroundCovers">
|
533
|
<xsl:with-param name="ThisPlotObsID">
|
534
|
<xsl:value-of select="ds:PlotObsID"/>
|
535
|
</xsl:with-param>
|
536
|
</xsl:call-template>
|
537
|
</surfaceCover>
|
538
|
</xsl:if>
|
539
|
<xsl:if test="ds:PlotObsCanopyPercentage">
|
540
|
<vegetationCover>
|
541
|
<methodID>
|
542
|
<xsl:call-template name="GetMeasurementIDNonSample">
|
543
|
<xsl:with-param name="ThisProjectID">
|
544
|
<xsl:value-of select="ds:ProjectID"/>
|
545
|
</xsl:with-param>
|
546
|
<!--NVSClassLibrary.EMeasureType.PlotObservationCanopy=11-->
|
547
|
<xsl:with-param name="ThisMeasureTypeID">11</xsl:with-param>
|
548
|
</xsl:call-template>
|
549
|
</methodID>
|
550
|
<cover>
|
551
|
<coverTypeAttributeID>tree</coverTypeAttributeID>
|
552
|
<coverPercent>
|
553
|
<value>
|
554
|
<xsl:value-of select="ds:PlotObsCanopyPercentage"/>
|
555
|
</value>
|
556
|
</coverPercent>
|
557
|
</cover>
|
558
|
</vegetationCover>
|
559
|
</xsl:if>
|
560
|
<xsl:if test="ds:PlotObsMeanTopHeight">
|
561
|
<vegetationStructure>
|
562
|
<methodID>
|
563
|
<xsl:call-template name="GetMeasurementIDNonSample">
|
564
|
<xsl:with-param name="ThisProjectID">
|
565
|
<xsl:value-of select="ds:ProjectID"/>
|
566
|
</xsl:with-param>
|
567
|
<!--NVSClassLibrary.EMeasureType.HeightMeasurementMethod=37-->
|
568
|
<xsl:with-param name="ThisMeasureTypeID">37</xsl:with-param>
|
569
|
</xsl:call-template>
|
570
|
</methodID>
|
571
|
<structure>
|
572
|
<vegetationComponentAttributeID>tree</vegetationComponentAttributeID>
|
573
|
<height>
|
574
|
<value>
|
575
|
<xsl:value-of select="ds:PlotObsMeanTopHeight"/>
|
576
|
</value>
|
577
|
</height>
|
578
|
</structure>
|
579
|
</vegetationStructure>
|
580
|
</xsl:if>
|
581
|
</plotObservation>
|
582
|
</xsl:template>
|
583
|
<xsl:template name="GroundCovers">
|
584
|
<!--Called from ds:PlotObs to give ground covers for a particular PlotObservation-->
|
585
|
<xsl:param name="ThisPlotObsID"/>
|
586
|
<xsl:text disable-output-escaping="yes"> </xsl:text>
|
587
|
<!--New line-->
|
588
|
<xsl:for-each select="//ds:PlotGroundCover[ds:PlotObsID=$ThisPlotObsID]">
|
589
|
<cover>
|
590
|
<coverTypeAttributeID>MC<xsl:value-of select="ds:TypeMeasurementCategoryID"/></coverTypeAttributeID>
|
591
|
<coverPercent>
|
592
|
<value>
|
593
|
<xsl:value-of select="ds:PlotGroundCoverPercent"/>
|
594
|
</value>
|
595
|
<attributeID>
|
596
|
<xsl:call-template name="GetMeasurementUnitIDNonSample">
|
597
|
<xsl:with-param name="ThisProjectID">
|
598
|
<xsl:value-of select="ds:ProjectID"/>
|
599
|
</xsl:with-param>
|
600
|
<!--NVSClassLibrary.EMeasureType.GroundCover%=91-->
|
601
|
<xsl:with-param name="ThisMeasureTypeID">92</xsl:with-param>
|
602
|
</xsl:call-template>
|
603
|
</attributeID>
|
604
|
</coverPercent>
|
605
|
</cover>
|
606
|
<xsl:text disable-output-escaping="yes"> </xsl:text>
|
607
|
<!--New line-->
|
608
|
</xsl:for-each>
|
609
|
|
610
|
</xsl:template>
|
611
|
<xsl:template match="ds:Taxon">
|
612
|
<taxonNameUsageConcept>
|
613
|
<xsl:attribute name="id"><xsl:value-of select="ds:TaxonID"/></xsl:attribute>
|
614
|
<authorName>
|
615
|
<xsl:value-of select="ds:TaxonSpeciesName"/>
|
616
|
</authorName>
|
617
|
<authorCode>
|
618
|
<xsl:value-of select="ds:TaxonSpeciesCode"/>
|
619
|
</authorCode>
|
620
|
</taxonNameUsageConcept>
|
621
|
</xsl:template>
|
622
|
<xsl:template match="ds:TierMeasurementCategory">
|
623
|
<!--A summary of the categories used by tiers in the projects-->
|
624
|
<stratum>
|
625
|
<xsl:attribute name="id">MC<xsl:value-of select="ds:MeasurementCategoryID"/></xsl:attribute>
|
626
|
<methodID>
|
627
|
<!--May be either a Recce Tier or a Taxon Tier (seedling)-->
|
628
|
<xsl:call-template name="GetMeasurementIDSample">
|
629
|
<xsl:with-param name="ThisSampleMethodID">
|
630
|
<xsl:value-of select="ds:SampleMethodID"/>
|
631
|
</xsl:with-param>
|
632
|
<!--NVSClassLibrary.EMeasureType.RecceTier=41-->
|
633
|
<xsl:with-param name="ThisMeasureTypeID">41</xsl:with-param>
|
634
|
</xsl:call-template>
|
635
|
<xsl:call-template name="GetMeasurementIDSample">
|
636
|
<xsl:with-param name="ThisSampleMethodID">
|
637
|
<xsl:value-of select="ds:SampleMethodID"/>
|
638
|
</xsl:with-param>
|
639
|
<!--NVSClassLibrary.EMeasureType.RecceTier=47-->
|
640
|
<xsl:with-param name="ThisMeasureTypeID">47</xsl:with-param>
|
641
|
</xsl:call-template>
|
642
|
</methodID>
|
643
|
<stratumName>
|
644
|
<xsl:value-of select="ds:CategoryDisplayText"/>
|
645
|
</stratumName>
|
646
|
<stratumIndex>
|
647
|
<xsl:value-of select="ds:CategoryName"/>
|
648
|
</stratumIndex>
|
649
|
</stratum>
|
650
|
</xsl:template>
|
651
|
<xsl:template match="ds:Tier[ds:TierID]">
|
652
|
<stratumObservation>
|
653
|
<xsl:attribute name="id"><xsl:value-of select="ds:TierID"/></xsl:attribute>
|
654
|
<stratumID>MC<xsl:value-of select="ds:MeasurementCategoryID"/></stratumID>
|
655
|
<plotObservationID>
|
656
|
<xsl:value-of select="ds:PlotObsID"/>
|
657
|
</plotObservationID>
|
658
|
<xsl:choose>
|
659
|
<xsl:when test="ds:TierUpper">
|
660
|
<height>
|
661
|
<value>
|
662
|
<xsl:value-of select="ds:TierUpper"/>
|
663
|
</value>
|
664
|
<attributeID>
|
665
|
<xsl:call-template name="GetMeasurementUnitIDSample">
|
666
|
<xsl:with-param name="ThisSampleMethodID">
|
667
|
<xsl:value-of select="ds:SampleMethodID"/>
|
668
|
</xsl:with-param>
|
669
|
<!--NVSClassLibrary.EMeasureType.TaxonTierHeight=115-->
|
670
|
<xsl:with-param name="ThisMeasureTypeID">115</xsl:with-param>
|
671
|
</xsl:call-template>
|
672
|
</attributeID>
|
673
|
</height>
|
674
|
</xsl:when>
|
675
|
<xsl:otherwise>
|
676
|
<height><value/><attributeID/></height>
|
677
|
</xsl:otherwise>
|
678
|
</xsl:choose>
|
679
|
<xsl:choose>
|
680
|
<xsl:when test="ds:TierLower">
|
681
|
<base>
|
682
|
<value>
|
683
|
<xsl:value-of select="ds:TierLower"/>
|
684
|
</value>
|
685
|
<attributeID>
|
686
|
<xsl:call-template name="GetMeasurementUnitIDSample">
|
687
|
<xsl:with-param name="ThisSampleMethodID">
|
688
|
<xsl:value-of select="ds:SampleMethodID"/>
|
689
|
</xsl:with-param>
|
690
|
<!--NVSClassLibrary.EMeasureType.TaxonTierHeight=115-->
|
691
|
<xsl:with-param name="ThisMeasureTypeID">115</xsl:with-param>
|
692
|
</xsl:call-template>
|
693
|
</attributeID>
|
694
|
</base>
|
695
|
</xsl:when>
|
696
|
<xsl:otherwise>
|
697
|
<base><value/><attributeID/></base>
|
698
|
</xsl:otherwise>
|
699
|
</xsl:choose>
|
700
|
<stratumValue>
|
701
|
<attributeID><xsl:if test="ds:CoverClassMeasurementCategoryID">MC<xsl:value-of select="ds:CoverClassMeasurementCategoryID"/>
|
702
|
</xsl:if></attributeID>
|
703
|
</stratumValue>
|
704
|
</stratumObservation>
|
705
|
</xsl:template>
|
706
|
<xsl:template match="ds:TaxonCategoryValue">
|
707
|
<aggregateOrganismObservation>
|
708
|
<xsl:attribute name="id"><xsl:value-of select="ds:TaxonObsID"/></xsl:attribute>
|
709
|
<plotObservationID>
|
710
|
<xsl:value-of select="ds:PlotObsID"/>
|
711
|
</plotObservationID>
|
712
|
<xsl:if test="ds:TierID">
|
713
|
<stratumObservationID>
|
714
|
<xsl:value-of select="ds:TierID"/>
|
715
|
</stratumObservationID>
|
716
|
</xsl:if>
|
717
|
<taxonNameUsageConceptID>
|
718
|
<xsl:value-of select="ds:TaxonID"/>
|
719
|
</taxonNameUsageConceptID>
|
720
|
<aggregateValue>
|
721
|
<attributeID>MC<xsl:value-of select="ds:MeasurementCategoryID"/></attributeID>
|
722
|
</aggregateValue>
|
723
|
<xsl:if test="ds:TaxonObsNote!=''">
|
724
|
<note>
|
725
|
<text>
|
726
|
<xsl:value-of select="ds:TaxonObsNote"/>
|
727
|
</text>
|
728
|
<date/>
|
729
|
<type>TaxonObsNote</type>
|
730
|
</note>
|
731
|
</xsl:if>
|
732
|
<xsl:call-template name="Notes">
|
733
|
<xsl:with-param name="NoteObjectTypeName">TaxonObservation</xsl:with-param>
|
734
|
<xsl:with-param name="NoteObjectID">
|
735
|
<xsl:value-of select="ds:TaxonObsID"/>
|
736
|
</xsl:with-param>
|
737
|
</xsl:call-template>
|
738
|
</aggregateOrganismObservation>
|
739
|
</xsl:template>
|
740
|
<xsl:template match="ds:TaxonSimpleValue">
|
741
|
<aggregateOrganismObservation>
|
742
|
<xsl:attribute name="id"><xsl:value-of select="ds:TaxonObsID"/></xsl:attribute>
|
743
|
<plotObservationID>
|
744
|
<xsl:value-of select="ds:PlotObsID"/>
|
745
|
</plotObservationID>
|
746
|
<stratumObservationID>
|
747
|
<xsl:value-of select="ds:TierID"/>
|
748
|
</stratumObservationID>
|
749
|
<taxonNameUsageConceptID>
|
750
|
<xsl:value-of select="ds:TaxonID"/>
|
751
|
</taxonNameUsageConceptID>
|
752
|
<aggregateValue><aggregateValue>
|
753
|
<value>
|
754
|
<xsl:value-of select="ds:TaxonSimpleValueValue"/>
|
755
|
</value>
|
756
|
<attributeID>
|
757
|
<xsl:call-template name="GetMeasurementUnitIDSample">
|
758
|
<xsl:with-param name="ThisSampleMethodID">
|
759
|
<xsl:value-of select="ds:SampleMethodID"/>
|
760
|
</xsl:with-param>
|
761
|
<!--NVSClassLibrary.EMeasureType.TaxonSimpleValue=45-->
|
762
|
<xsl:with-param name="ThisMeasureTypeID">45</xsl:with-param>
|
763
|
</xsl:call-template>
|
764
|
</attributeID>
|
765
|
</aggregateValue></aggregateValue>
|
766
|
<xsl:if test="ds:TaxonObsNote!=''">
|
767
|
<note>
|
768
|
<text>
|
769
|
<xsl:value-of select="ds:TaxonObsNote"/>
|
770
|
</text>
|
771
|
<date/>
|
772
|
<type>TaxonObsNote</type>
|
773
|
</note>
|
774
|
</xsl:if>
|
775
|
<xsl:call-template name="Notes">
|
776
|
<xsl:with-param name="NoteObjectTypeName">TaxonObservation</xsl:with-param>
|
777
|
<xsl:with-param name="NoteObjectID">
|
778
|
<xsl:value-of select="ds:TaxonObsID"/>
|
779
|
</xsl:with-param>
|
780
|
</xsl:call-template>
|
781
|
</aggregateOrganismObservation>
|
782
|
</xsl:template>
|
783
|
<xsl:template match="ds:TaxonBrowse">
|
784
|
<aggregateOrganismObservation>
|
785
|
<xsl:attribute name="id"><xsl:value-of select="ds:TaxonObsID"/></xsl:attribute>
|
786
|
<plotObservationID>
|
787
|
<xsl:value-of select="ds:PlotObsID"/>
|
788
|
</plotObservationID>
|
789
|
<xsl:if test="ds:TierID">
|
790
|
<stratumObservationID>
|
791
|
<xsl:value-of select="ds:TierID"/>
|
792
|
</stratumObservationID>
|
793
|
</xsl:if>
|
794
|
<taxonNameUsageConceptID>
|
795
|
<xsl:value-of select="ds:TaxonID"/>
|
796
|
</taxonNameUsageConceptID>
|
797
|
<aggregateValue>
|
798
|
<attributeID>MC<xsl:value-of select="ds:SeverityMeasurementCategoryID"/></attributeID>
|
799
|
</aggregateValue>
|
800
|
<xsl:if test="ds:TaxonObsNote!=''">
|
801
|
<note>
|
802
|
<text>
|
803
|
<xsl:value-of select="ds:TaxonObsNote"/>
|
804
|
</text>
|
805
|
<type>TaxonObsNote</type>
|
806
|
</note>
|
807
|
</xsl:if>
|
808
|
<xsl:call-template name="Notes">
|
809
|
<xsl:with-param name="NoteObjectTypeName">TaxonObservation</xsl:with-param>
|
810
|
<xsl:with-param name="NoteObjectID">
|
811
|
<xsl:value-of select="ds:TaxonObsID"/>
|
812
|
</xsl:with-param>
|
813
|
</xsl:call-template>
|
814
|
</aggregateOrganismObservation>
|
815
|
</xsl:template>
|
816
|
<xsl:template match="ds:TaxonPercentageCover">
|
817
|
<aggregateOrganismObservation>
|
818
|
<xsl:attribute name="id"><xsl:value-of select="ds:TaxonObsID"/></xsl:attribute>
|
819
|
<plotObservationID>
|
820
|
<xsl:value-of select="ds:PlotObsID"/>
|
821
|
</plotObservationID>
|
822
|
<taxonNameUsageConceptID>
|
823
|
<xsl:value-of select="ds:TaxonID"/>
|
824
|
</taxonNameUsageConceptID>
|
825
|
<aggregateValue><aggregateValue>
|
826
|
<value>
|
827
|
<xsl:value-of select="ds:PercentageCover"/>
|
828
|
</value>
|
829
|
<attributeID>
|
830
|
<xsl:call-template name="GetMeasurementUnitIDSample">
|
831
|
<xsl:with-param name="ThisSampleMethodID">
|
832
|
<xsl:value-of select="ds:SampleMethodID"/>
|
833
|
</xsl:with-param>
|
834
|
<!--NVSClassLibrary.EMeasureType.TaxonPercentageCover=42-->
|
835
|
<xsl:with-param name="ThisMeasureTypeID">42</xsl:with-param>
|
836
|
</xsl:call-template>
|
837
|
</attributeID>
|
838
|
</aggregateValue></aggregateValue>
|
839
|
<xsl:if test="ds:TaxonObsNote!=''">
|
840
|
<note>
|
841
|
<text>
|
842
|
<xsl:value-of select="ds:TaxonObsNote"/>
|
843
|
</text>
|
844
|
<type>TaxonObsNote</type>
|
845
|
</note>
|
846
|
</xsl:if>
|
847
|
<xsl:call-template name="Notes">
|
848
|
<xsl:with-param name="NoteObjectTypeName">TaxonObservation</xsl:with-param>
|
849
|
<xsl:with-param name="NoteObjectID">
|
850
|
<xsl:value-of select="ds:TaxonObsID"/>
|
851
|
</xsl:with-param>
|
852
|
</xsl:call-template>
|
853
|
</aggregateOrganismObservation>
|
854
|
</xsl:template>
|
855
|
<xsl:template match="ds:Item">
|
856
|
<!--A NVS Item (a tree) correspondes to a VegX individual item-->
|
857
|
<individualOrganism>
|
858
|
<xsl:attribute name="id"><xsl:value-of select="ds:ItemID"/></xsl:attribute>
|
859
|
<!--VegX schema has taxonNameUsageConceptsID instead of taxonNameUsageConceptID-->
|
860
|
<taxonNameUsageConceptID>
|
861
|
<xsl:value-of select="ds:TaxonID"/>
|
862
|
</taxonNameUsageConceptID>
|
863
|
<xsl:if test="ds:ItemCurrentIdentifier!=''">
|
864
|
<identificationLabel>
|
865
|
<xsl:value-of select="ds:ItemCurrentIdentifier"/>
|
866
|
</identificationLabel>
|
867
|
</xsl:if>
|
868
|
<xsl:call-template name="Notes">
|
869
|
<xsl:with-param name="NoteObjectTypeName">Item</xsl:with-param>
|
870
|
<xsl:with-param name="NoteObjectID">
|
871
|
<xsl:value-of select="ds:ItemID"/>
|
872
|
</xsl:with-param>
|
873
|
</xsl:call-template>
|
874
|
</individualOrganism>
|
875
|
</xsl:template>
|
876
|
<xsl:template match="ds:Diameter">
|
877
|
<individualOrganismObservation>
|
878
|
<xsl:attribute name="id"><xsl:value-of select="ds:DiameterID"/></xsl:attribute>
|
879
|
<plotObservationID>
|
880
|
<xsl:value-of select="ds:PlotObsID"/>
|
881
|
</plotObservationID>
|
882
|
<individualOrganismID>
|
883
|
<xsl:value-of select="ds:ItemID"/>
|
884
|
</individualOrganismID>
|
885
|
<xsl:if test="ds:ItemObsNote!=''">
|
886
|
<note>
|
887
|
<text>
|
888
|
<xsl:value-of select="ds:ItemObsNote"/>
|
889
|
</text>
|
890
|
<date/>
|
891
|
<type>ItemObsNote</type>
|
892
|
</note>
|
893
|
</xsl:if>
|
894
|
<xsl:if test="ds:LinearDimension">
|
895
|
<height>
|
896
|
<value>
|
897
|
<xsl:value-of select="ds:LinearDimension"/>
|
898
|
</value>
|
899
|
<attributeID>
|
900
|
<xsl:call-template name="GetMeasurementUnitIDSample">
|
901
|
<xsl:with-param name="ThisSampleMethodID">
|
902
|
<xsl:value-of select="ds:SampleMethodID"/>
|
903
|
</xsl:with-param>
|
904
|
<!--NVSClassLibrary.EMeasureType.LinearDimension=52-->
|
905
|
<xsl:with-param name="ThisMeasureTypeID">52</xsl:with-param>
|
906
|
</xsl:call-template>
|
907
|
</attributeID>
|
908
|
</height>
|
909
|
</xsl:if>
|
910
|
<xsl:if test="ds:DiameterValue">
|
911
|
<diameterBaseDistance>
|
912
|
<diameter>
|
913
|
<!--Convert cm to metres-->
|
914
|
<value>
|
915
|
<xsl:value-of select="ds:DiameterValue"/>
|
916
|
</value>
|
917
|
<attributeID>
|
918
|
<xsl:call-template name="GetMeasurementUnitIDSample">
|
919
|
<xsl:with-param name="ThisSampleMethodID">
|
920
|
<xsl:value-of select="ds:SampleMethodID"/>
|
921
|
</xsl:with-param>
|
922
|
<!--NVSClassLibrary.EMeasureType.DiameterValue=54-->
|
923
|
<xsl:with-param name="ThisMeasureTypeID">54</xsl:with-param>
|
924
|
</xsl:call-template>
|
925
|
</attributeID>
|
926
|
</diameter>
|
927
|
<baseDistance>
|
928
|
<xsl:if test="ds:DiameterHeight">
|
929
|
<value>
|
930
|
<xsl:value-of select="ds:DiameterHeight"/>
|
931
|
</value>
|
932
|
<attributeID>
|
933
|
<xsl:call-template name="GetMeasurementUnitIDSample">
|
934
|
<xsl:with-param name="ThisSampleMethodID">
|
935
|
<xsl:value-of select="ds:SampleMethodID"/>
|
936
|
</xsl:with-param>
|
937
|
<!--NVSClassLibrary.EMeasureType.DiameterHeight=62-->
|
938
|
<xsl:with-param name="ThisMeasureTypeID">62</xsl:with-param>
|
939
|
</xsl:call-template>
|
940
|
</attributeID>
|
941
|
</xsl:if>
|
942
|
<xsl:if test="ds:PositionMeasurementCategoryID">
|
943
|
MC<attributeID>PositionMeasurementCategoryID</attributeID>
|
944
|
</xsl:if>
|
945
|
</baseDistance>
|
946
|
</diameterBaseDistance>
|
947
|
</xsl:if>
|
948
|
<xsl:if test="ds:AliveStateMeasurementCategoryID">
|
949
|
<individualOrganismHealth>
|
950
|
<xsl:call-template name="GetMeasurementCategoryText">
|
951
|
<xsl:with-param name="ThisMeasurementCategoryID">
|
952
|
<xsl:value-of select="ds:AliveStateMeasurementCategoryID"/>
|
953
|
</xsl:with-param>
|
954
|
</xsl:call-template>
|
955
|
</individualOrganismHealth>
|
956
|
</xsl:if>
|
957
|
|
958
|
<xsl:call-template name="Notes">
|
959
|
<xsl:with-param name="NoteObjectTypeName">ItemObservation</xsl:with-param>
|
960
|
<xsl:with-param name="NoteObjectID">
|
961
|
<xsl:value-of select="ds:ItemObsID"/>
|
962
|
</xsl:with-param>
|
963
|
</xsl:call-template>
|
964
|
</individualOrganismObservation>
|
965
|
</xsl:template>
|
966
|
<xsl:template match="ds:OrthogonalWidth">
|
967
|
<individualOrganismObservation>
|
968
|
<xsl:attribute name="id">OWidth<xsl:value-of select="ds:OrthogonalWidthID"/></xsl:attribute>
|
969
|
<plotObservationID>
|
970
|
<xsl:value-of select="ds:PlotObsID"/>
|
971
|
</plotObservationID>
|
972
|
<individualOrganismID>
|
973
|
<xsl:value-of select="ds:ItemID"/>
|
974
|
</individualOrganismID>
|
975
|
<xsl:if test="ds:ItemObsNote!=''">
|
976
|
<note>
|
977
|
<text>
|
978
|
<xsl:value-of select="ds:ItemObsNote"/>
|
979
|
</text>
|
980
|
<date/>
|
981
|
<type>ItemObsNote</type>
|
982
|
</note>
|
983
|
</xsl:if>
|
984
|
<xsl:if test="ds:LinearDimension">
|
985
|
<height>
|
986
|
<xsl:value-of select="ds:LinearDimension"/>
|
987
|
</height>
|
988
|
</xsl:if>
|
989
|
<!--relatedIndividual>
|
990
|
<relatedItem>
|
991
|
<relatedItemID>
|
992
|
</relatedItemID>
|
993
|
</relatedItem>
|
994
|
<itemRelationship/>
|
995
|
</relatedIndividualTODO bracketing-->
|
996
|
<multipleMeasurement>
|
997
|
<name>Width</name>
|
998
|
<measurement>
|
999
|
<value>
|
1000
|
<xsl:value-of select="ds:OrthogonalWidthOne"/>
|
1001
|
</value>
|
1002
|
<attributeID>
|
1003
|
<xsl:call-template name="GetMeasurementUnitIDSample">
|
1004
|
<xsl:with-param name="ThisSampleMethodID">
|
1005
|
<xsl:value-of select="ds:SampleMethodID"/>
|
1006
|
</xsl:with-param>
|
1007
|
<!--NVSClassLibrary.EMeasureType.OrthogonalWidthValue=56-->
|
1008
|
<xsl:with-param name="ThisMeasureTypeID">56</xsl:with-param>
|
1009
|
</xsl:call-template>
|
1010
|
</attributeID>
|
1011
|
</measurement>
|
1012
|
<measurement>
|
1013
|
<value>
|
1014
|
<xsl:value-of select="ds:OrthogonalWidthTwo"/>
|
1015
|
</value>
|
1016
|
<attributeID>
|
1017
|
<xsl:call-template name="GetMeasurementUnitIDSample">
|
1018
|
<xsl:with-param name="ThisSampleMethodID">
|
1019
|
<xsl:value-of select="ds:SampleMethodID"/>
|
1020
|
</xsl:with-param>
|
1021
|
<!--NVSClassLibrary.EMeasureType.OrthogonalWidthValue=56-->
|
1022
|
<xsl:with-param name="ThisMeasureTypeID">56</xsl:with-param>
|
1023
|
</xsl:call-template>
|
1024
|
</attributeID>
|
1025
|
</measurement>
|
1026
|
</multipleMeasurement>
|
1027
|
|
1028
|
<xsl:call-template name="Notes">
|
1029
|
<xsl:with-param name="NoteObjectTypeName">ItemObservation</xsl:with-param>
|
1030
|
<xsl:with-param name="NoteObjectID">
|
1031
|
<xsl:value-of select="ds:ItemObsID"/>
|
1032
|
</xsl:with-param>
|
1033
|
</xsl:call-template>
|
1034
|
<xsl:if test="ds:AliveStateMeasurementCategoryID">
|
1035
|
<individualOrganismHealth>
|
1036
|
<xsl:call-template name="GetMeasurementCategoryText">
|
1037
|
<xsl:with-param name="ThisMeasurementCategoryID">
|
1038
|
<xsl:value-of select="ds:AliveStateMeasurementCategoryID"/>
|
1039
|
</xsl:with-param>
|
1040
|
</xsl:call-template>
|
1041
|
</individualOrganismHealth>
|
1042
|
</xsl:if>
|
1043
|
</individualOrganismObservation>
|
1044
|
</xsl:template>
|
1045
|
</xsl:stylesheet>
|