This implements divelog export into CSV format. This currently supports
only metric units and lacks user interface.

See #434

Signed-off-by: Miika Turkia <[email protected]>
---
I am sending this out as I'll be off the Internet for the next week and
it seems that there is some interest to implement this feature. It is
just better not to waste time on the part I have already implemented but
to do the rest that is still missing.

For the GUI, I think that we should support exporting selected dives
(right click on the divelist and select export CSV from menu) and
exporting all dives (this is currently done from the file menu for other
exports). Of course, if we are to support multiple export formats, the
UI would really need some loving, not to flood the menus.
---
 xslt/xml2csv.xslt | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)
 create mode 100644 xslt/xml2csv.xslt

diff --git a/xslt/xml2csv.xslt b/xslt/xml2csv.xslt
new file mode 100644
index 0000000..2a1a1df
--- /dev/null
+++ b/xslt/xml2csv.xslt
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">
+  <xsl:strip-space elements="*"/>
+  <xsl:output method="text" encoding="UTF-8"/>
+
+  <xsl:variable name="fs">,</xsl:variable>
+
+  <xsl:template match="/divelog/dives">
+    <xsl:value-of select='concat("dive number", $fs, "dive date", $fs, "dive 
time", $fs, "time", $fs, "depth", $fs, "temperature", $fs, "pressure")'/>
+    <xsl:text>
+</xsl:text>
+    <xsl:apply-templates select="dive|trip/dive"/>
+  </xsl:template>
+
+  <xsl:template match="dive">
+    <xsl:variable name="number">
+      <xsl:value-of select="@number"/>
+    </xsl:variable>
+    <xsl:variable name="date">
+      <xsl:value-of select="@date"/>
+    </xsl:variable>
+    <xsl:variable name="time">
+      <xsl:value-of select="@time"/>
+    </xsl:variable>
+    <xsl:for-each select="divecomputer/sample|sample">
+      <xsl:value-of select="concat('&quot;', $number, '&quot;')"/>
+      <xsl:value-of select="$fs"/>
+      <xsl:value-of select="concat('&quot;', $date, '&quot;')"/>
+      <xsl:value-of select="$fs"/>
+      <xsl:value-of select="concat('&quot;', $time, '&quot;')"/>
+      <xsl:value-of select="$fs"/>
+      <xsl:value-of select="concat('&quot;', substring-before(@time, ' '), 
'&quot;')"/>
+      <xsl:value-of select="$fs"/>
+      <xsl:value-of select="concat('&quot;', substring-before(@depth, ' '), 
'&quot;')"/>
+
+      <xsl:value-of select="$fs"/>
+      <xsl:if test="@temp != ''">
+        <xsl:value-of select="concat('&quot;', substring-before(@temp, ' '), 
'&quot;')"/>
+      </xsl:if>
+
+      <xsl:value-of select="$fs"/>
+      <xsl:if test="@pressure != ''">
+        <xsl:value-of select="concat('&quot;', substring-before(@pressure, ' 
'), '&quot;')"/>
+      </xsl:if>
+
+      <xsl:text>
+</xsl:text>
+    </xsl:for-each>
+  </xsl:template>
+
+</xsl:stylesheet>  
-- 
1.8.3.2

_______________________________________________
subsurface mailing list
[email protected]
http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to