2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
3 <xsl:strip-space elements="*"/>
4 <xsl:output method="xml" indent="yes"/>
6 <xsl:template match="/">
8 <program name="subsurface" version="1"/>
9 <xsl:apply-templates select="/SUUNTO/MSG"/>
13 <xsl:template match="MSG">
14 <xsl:variable name="units" select="'si'"/>
16 <dive number="{DIVENUMBER}">
17 <xsl:attribute name="date">
18 <xsl:call-template name="dateConvert">
19 <xsl:with-param name="date" select="DATE"/>
23 <xsl:attribute name="time">
24 <xsl:value-of select="TIME"/>
27 <xsl:attribute name="duration">
28 <xsl:call-template name="timeConvert">
29 <xsl:with-param name="timeSec" select="DIVETIMESEC"/>
30 <xsl:with-param name="units" select="$units"/>
35 <xsl:when test="MEANDEPTH != ''">
36 <depth max="{concat(MAXDEPTH,' m')}" mean="{concat(MEANDEPTH, ' m')}"/>
39 <depth max="{concat(MAXDEPTH,' m')}"/>
43 <temperature air="{concat(AIRTEMP, ' C')}" water="{concat(WATERTEMPATEND, ' C')}"/>
44 <xsl:if test="SURFACETIME != '0'">
46 <xsl:call-template name="timeConvert">
47 <xsl:with-param name="timeSec" select="SURFACETIME" />
48 <xsl:with-param name="units" select="$units" />
52 <divemaster><xsl:value-of select="DIVEMASTER" /></divemaster>
53 <buddy><xsl:value-of select="PARTNER" /></buddy>
55 <xsl:when test="LOCATION != ''">
56 <location><xsl:value-of select="normalize-space(concat(LOCATION, ' ' , SITE))" /></location>
59 <xsl:if test="SITE != ''">
60 <location><xsl:value-of select="SITE" /></location>
65 <xsl:if test="WEIGTH != ''">
67 <xsl:attribute name="weight">
68 <xsl:value-of select="concat(WEIGTH, ' kg')"/>
74 <xsl:if test="LOGNOTES != ''">
75 <xsl:value-of select="LOGNOTES" />
77 <xsl:if test="WEATHER != ''">
78 Weather: <xsl:value-of select="WEATHER" />
80 <xsl:if test="WATERVISIBILITYDESC != ''">
81 Visibility: <xsl:value-of select="WATERVISIBILITYDESC" />
83 <xsl:if test="BOATNAME != ''">
84 Boat name: <xsl:value-of select="BOATNAME" />
88 <!-- FIXME: add support for multiple cylinders, need sample data -->
90 <xsl:attribute name="o2">
92 <xsl:when test="O2PCT != ''">
93 <xsl:value-of select="concat(O2PCT, '%')"/>
95 <xsl:otherwise>21.0%</xsl:otherwise>
98 <xsl:if test="HEPCT != ''">
99 <xsl:attribute name="he">
100 <xsl:value-of select="concat(HEPCT, '%')"/>
103 <xsl:if test="CYLINDERDESCRIPTION != ''">
104 <xsl:attribute name="description">
105 <xsl:value-of select="CYLINDERDESCRIPTION"/>
108 <xsl:if test="CYLINDERSIZE != ''">
109 <xsl:attribute name="size">
111 <xsl:when test="CYLINDERUNITS = '0'">
112 <xsl:value-of select="concat(CYLINDERSIZE, ' l')"/>
115 <xsl:call-template name="cuft2l">
116 <xsl:with-param name="size" select="CYLINDERSIZE"/>
117 <xsl:with-param name="pressure" select="CYLINDERWORKPRESSURE"/>
123 <xsl:attribute name="start">
124 <xsl:variable name="number" select="CYLINDERSTARTPRESSURE"/>
125 <xsl:call-template name="pressure">
126 <xsl:with-param name="number" select="$number"/>
127 <xsl:with-param name="units" select="$units"/>
130 <xsl:attribute name="end">
131 <xsl:variable name="number" select="CYLINDERENDPRESSURE"/>
132 <xsl:call-template name="pressure">
133 <xsl:with-param name="number" select="$number"/>
134 <xsl:with-param name="units" select="$units"/>
137 <xsl:if test="CYLINDERWORKPRESSURE != '0'">
138 <xsl:attribute name="workpressure">
139 <xsl:variable name="number" select="CYLINDERWORKPRESSURE"/>
140 <xsl:call-template name="pressure">
141 <xsl:with-param name="number" select="$number"/>
142 <xsl:with-param name="units" select="$units"/>
148 <!-- DELTA is the sample interval -->
149 <xsl:variable name="delta">
151 <xsl:when test="SAMPLEINTERVAL != ''">
152 <xsl:value-of select="SAMPLEINTERVAL"/>
154 <xsl:otherwise>0</xsl:otherwise>
160 <!-- FIXME: test this with proper data -->
161 <xsl:for-each select="GASCHANGE">
162 <xsl:if test="MIXTIME != '0'">
163 <event name="gaschange">
164 <xsl:attribute name="value">
165 <xsl:value-of select="MIXVALUE" />
167 <xsl:attribute name="time">
168 <xsl:call-template name="timeConvert">
169 <xsl:with-param name="timeSec" select="MIXTIME"/>
170 <xsl:with-param name="units" select="'si'"/>
176 <!-- end gas change-->
178 <!-- dive sample - all the depth and temp readings -->
179 <xsl:for-each select="SAMPLE">
181 <xsl:when test="BOOKMARK = ''">
183 <xsl:attribute name="time">
184 <xsl:call-template name="timeConvert">
185 <xsl:with-param name="timeSec" select="SAMPLETIME"/>
186 <xsl:with-param name="units" select="'si'"/>
189 <xsl:attribute name="depth">
190 <xsl:value-of select="concat(DEPTH, ' m')"/>
192 <xsl:attribute name="temp">
193 <xsl:value-of select="TEMPERATURE"/>
195 <xsl:attribute name="pressure">
196 <xsl:call-template name="pressure">
197 <xsl:with-param name="number" select="PRESSURE"/>
198 <xsl:with-param name="units" select="$units"/>
204 <xsl:if test="BOOKMARK != 'Surface'">
205 <event name="{BOOKMARK}">
206 <xsl:attribute name="time">
207 <xsl:call-template name="timeConvert">
208 <xsl:with-param name="timeSec" select="SAMPLETIME"/>
209 <xsl:with-param name="units" select="'si'"/>
223 <!-- convert pressure to bars -->
224 <xsl:template name="pressure">
225 <xsl:param name="number"/>
226 <xsl:param name="units"/>
229 <xsl:when test="$number != ''">
230 <xsl:value-of select="concat(($number div 1000), ' bar')"/>
232 <xsl:otherwise>0</xsl:otherwise>
235 <!-- end convert pressure -->
237 <!-- convert cuft to liters-->
238 <xsl:template name="cuft2l">
239 <xsl:param name="size"/>
240 <xsl:param name="pressure"/>
242 <xsl:when test="$pressure != '0'">
243 <xsl:value-of select="concat(format-number((($size*28.3168466) div ($pressure div 1013.25)), '0.000'), ' l')" />
245 <xsl:otherwise>0</xsl:otherwise>
250 <!-- convert time in seconds to minutes:seconds -->
251 <xsl:template name="timeConvert">
252 <xsl:param name="timeSec"/>
253 <xsl:param name="units"/>
256 <xsl:when test="$timeSec = '0'">
257 <xsl:value-of select="'0:00 min'" />
259 <xsl:when test="$units = 'si'">
260 <xsl:value-of select="concat(floor(number($timeSec) div 60), ':', format-number(floor(number($timeSec) mod 60), '00'), ' min')"/>
263 <xsl:value-of select="concat(substring-before($timeSec, '.'), ':', format-number(substring-after($timeSec, '.'), '00'), ' min')"/>
267 <!-- end convert time -->
269 <!-- convert date from dotted notation to dash notation -->
270 <xsl:template name="dateConvert">
271 <xsl:param name="date" />
272 <xsl:value-of select="concat(substring($date,7,4), '-', substring($date,4,2), '-', substring($date,1,2))" />