1 |
7735
|
aaronmk
|
<?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>
|