summaryrefslogtreecommitdiffstats
path: root/xslt
diff options
context:
space:
mode:
authorGravatar Miika Turkia <miika.turkia@gmail.com>2013-04-22 07:02:47 +0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-04-22 09:07:00 -0700
commitcfa36448a110e81c42a332987c413a2ddf847ad7 (patch)
treefd9096dbf57c46ee70c7b55ecd7323a60228d5d3 /xslt
parenta727f55c677699019f69d4115f1b5c6f7d493f80 (diff)
downloadsubsurface-cfa36448a110e81c42a332987c413a2ddf847ad7.tar.gz
XSLT for importing individual DM4 dives
This XSLT can be used when exporting single dives from DM4 and importing them to Subsurface. Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'xslt')
-rw-r--r--xslt/SuuntoDM4.xslt138
-rw-r--r--xslt/commonTemplates.xsl6
2 files changed, 144 insertions, 0 deletions
diff --git a/xslt/SuuntoDM4.xslt b/xslt/SuuntoDM4.xslt
new file mode 100644
index 000000000..5c61c0c52
--- /dev/null
+++ b/xslt/SuuntoDM4.xslt
@@ -0,0 +1,138 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:u="http://schemas.datacontract.org/2004/07/Suunto.Diving.Dal"
+ version="1.0">
+ <xsl:import href="commonTemplates.xsl"/>
+ <xsl:strip-space elements="*"/>
+ <xsl:output method="xml" indent="yes"/>
+
+ <xsl:template match="/">
+ <divelog program="subsurface-import" version="2">
+ <settings>
+ <divecomputerid deviceid="ffffffff">
+ <xsl:attribute name="model">
+ <xsl:value-of select="/u:Dive/u:Source"/>
+ </xsl:attribute>
+ <xsl:attribute name="serial">
+ <xsl:value-of select="/u:Dive/u:SourceSerialNumber"/>
+ </xsl:attribute>
+ </divecomputerid>
+ </settings>
+ <dives>
+ <dive>
+ <xsl:attribute name="duration">
+ <xsl:call-template name="sec2time">
+ <xsl:with-param name="timeSec">
+ <xsl:value-of select="/u:Dive/u:DiveTime"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="datetime">
+ <xsl:with-param name="value">
+ <xsl:value-of select="/u:Dive/u:StartTime"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:if test="/u:Dive/u:Visibility != ''">
+ <xsl:attribute name="visibility">
+ <xsl:value-of select="/u:Dive/u:Visibility"/>
+ </xsl:attribute>
+ </xsl:if>
+ <depth>
+ <xsl:attribute name="max">
+ <xsl:value-of select="/u:Dive/u:MaxDepth"/>
+ </xsl:attribute>
+ <xsl:attribute name="min">
+ <xsl:value-of select="aou"/>
+ </xsl:attribute>
+ </depth>
+ <xsl:for-each select="/u:Dive/u:Marks/u:Mark">
+ <event>
+ <xsl:attribute name="time">
+ <xsl:call-template name="sec2time">
+ <xsl:with-param name="timeSec">
+ <xsl:value-of select="u:MarkTime"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="name">
+ <xsl:choose>
+ <xsl:when test="u:Type = '19'">
+ <xsl:value-of select="'surface'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="u:Type"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </event>
+ </xsl:for-each>
+ <xsl:for-each select="/u:Dive/u:DiveMixtures/u:DiveMixture">
+ <cylinder>
+ <xsl:if test="u:Size &gt; 0">
+ <xsl:attribute name="size">
+ <xsl:value-of select="u:Size"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="u:StartPressure &gt; 0">
+ <xsl:attribute name="start">
+ <xsl:value-of select="u:StartPressure"/>
+ </xsl:attribute>
+ <xsl:attribute name="end">
+ <xsl:value-of select="u:EndPressure"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="o2">
+ <xsl:value-of select="u:Oxygen"/>
+ </xsl:attribute>
+ <xsl:attribute name="he">
+ <xsl:value-of select="u:Helium"/>
+ </xsl:attribute>
+ </cylinder>
+ </xsl:for-each>
+ <temperature>
+ <xsl:attribute name="water">
+ <xsl:value-of select="/u:Dive/u:BottomTemperature"/>
+ </xsl:attribute>
+ <xsl:attribute name="air">
+ <xsl:value-of select="/u:Dive/u:StartTemperature"/>
+ </xsl:attribute>
+ </temperature>
+
+ <notes>
+ <xsl:value-of select="/u:Dive/u:Note"/>
+ </notes>
+
+ <sampleinterval>
+ <xsl:value-of select="/u:Dive/u:SampleInterval"/>
+ </sampleinterval>
+
+ <xsl:if test="/u:Dive/u:Weight != ''">
+ <weightsystem>
+ <xsl:attribute name="weight">
+ <xsl:value-of select="concat(/u:Dive/u:Weight, ' kg')"/>
+ </xsl:attribute>
+ <xsl:attribute name="description">
+ <xsl:value-of select="'unknown'"/>
+ </xsl:attribute>
+ </weightsystem>
+ </xsl:if>
+
+ <blob>
+ <xsl:attribute name="profileblob">
+ <xsl:value-of select="/u:Dive/u:ProfileBlob"/>
+ </xsl:attribute>
+ <xsl:attribute name="temperatureblob">
+ <xsl:value-of select="/u:Dive/u:TemperatureBlob"/>
+ </xsl:attribute>
+ <xsl:attribute name="pressureblob">
+ <xsl:value-of select="/u:Dive/u:PressureBlob"/>
+ </xsl:attribute>
+ </blob>
+
+ </dive>
+ </dives>
+
+ </divelog>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/xslt/commonTemplates.xsl b/xslt/commonTemplates.xsl
index 87af4d686..955cf8250 100644
--- a/xslt/commonTemplates.xsl
+++ b/xslt/commonTemplates.xsl
@@ -104,6 +104,12 @@
<xsl:value-of select="substring-before($time, ':') * 60 + substring-before(substring-after($time, ':'), ' ')"/>
</xsl:template>
+ <xsl:template name="sec2time">
+ <xsl:param name="timeSec"/>
+
+ <xsl:value-of select="concat(round($timeSec div 60), ':', format-number($timeSec mod 60, '00'))"/>
+ </xsl:template>
+
<!-- Calculate sum of all parameters, and strip any unit following the
value -->
<xsl:template name="sum">