summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Miika Turkia <miika.turkia@gmail.com>2013-03-02 09:22:08 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-03-01 23:49:09 -0800
commit0f9142b4e3ea3a46f7cee95cf9363c5fd3264ad3 (patch)
tree10780500736925c6a3a90113c7bd02a18fa7d9cb
parent51d20880210d990e35982137067cda1801460d0a (diff)
downloadsubsurface-0f9142b4e3ea3a46f7cee95cf9363c5fd3264ad3.tar.gz
Grab a bit more info from UDDF import
otu and po2 are now grabbed. The po2 value comes from setpo2 tag. Also divecomputerid is constructed from the generator information. Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--xslt/commonTemplates.xsl40
-rw-r--r--xslt/uddf.xslt51
2 files changed, 77 insertions, 14 deletions
diff --git a/xslt/commonTemplates.xsl b/xslt/commonTemplates.xsl
index 2d64a05d8..a9aa44279 100644
--- a/xslt/commonTemplates.xsl
+++ b/xslt/commonTemplates.xsl
@@ -1,6 +1,8 @@
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <!-- Convert ISO 8601 time format to "standard" date and time format
+ -->
<xsl:template name="datetime">
<xsl:param name="value"/>
@@ -58,4 +60,42 @@
</xsl:if>
</xsl:template>
+ <!-- Convert units in Pascal given in scientific notation to normal
+ decimal notation -->
+ <xsl:template name="convertPascal">
+ <xsl:param name="value"/>
+
+ <xsl:variable name="number">
+ <xsl:value-of select="translate($value, 'e', 'E')"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="contains($number, 'E')">
+ <xsl:variable name="pressure">
+ <xsl:choose>
+ <xsl:when test="$value != ''">
+ <xsl:variable name="Exp" select="substring-after($number, 'E')"/>
+ <xsl:variable name="Man" select="substring-before($number, 'E')"/>
+ <xsl:variable name="Fac" select="substring('100000000000000000000', 1, substring($Exp,2) + 1)"/>
+ <xsl:choose>
+ <xsl:when test="$Exp != ''">
+ <xsl:value-of select="(number($Man) * number($Fac))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$number"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:value-of select="$pressure div 100000"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$value"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
</xsl:stylesheet>
diff --git a/xslt/uddf.xslt b/xslt/uddf.xslt
index 1b45ccad6..d06747878 100644
--- a/xslt/uddf.xslt
+++ b/xslt/uddf.xslt
@@ -9,20 +9,34 @@
<xsl:template match="/">
<divelog program="subsurface" version="2">
+ <settings>
+ <divecomputerid deviceid="ffffffff">
+ <xsl:apply-templates select="/uddf/generator|/u:uddf/u:generator"/>
+ </divecomputerid>
+ </settings>
<dives>
<xsl:apply-templates select="/uddf/profiledata/repetitiongroup/dive|/u:uddf/u:profiledata/u:repetitiongroup/u:dive"/>
</dives>
</divelog>
</xsl:template>
- <!-- Print warning if we don't handle some element -->
- <xsl:template match="*">
- <xsl:message terminate="no">
- WARNING: Unmatched element: <xsl:value-of select="name()"/>
- </xsl:message>
-
- <xsl:apply-templates/>
- </xsl:template>
+ <xsl:template match="generator|u:generator">
+ <xsl:if test="manufacturer/name|u:manufacturer/u:name != ''">
+ <xsl:attribute name="model">
+ <xsl:value-of select="manufacturer/name|/u:manufacturer/u:name"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="name|u:name != ''">
+ <xsl:attribute name="firmware">
+ <xsl:value-of select="name|u:name"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="version|u:version != ''">
+ <xsl:attribute name="serial">
+ <xsl:value-of select="version|u:version"/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:template>
<xsl:template match="gasdefinitions|u:gasdefinitions">
<xsl:for-each select="u:mix|mix">
@@ -150,16 +164,25 @@
</xsl:attribute>
</xsl:if>
- <!-- otu -->
- <xsl:if test="cns &gt; 0">
- <xsl:attribute name="cns">
- <xsl:value-of select="concat(cns, ' C')"/>
+ <xsl:if test="otu|u:otu &gt; 0">
+ <xsl:attribute name="otu">
+ <xsl:value-of select="otu|u:otu"/>
</xsl:attribute>
</xsl:if>
- <xsl:if test="u:cns &gt; 0">
+ <xsl:if test="cns|u:cns &gt; 0">
<xsl:attribute name="cns">
- <xsl:value-of select="concat(u:cns, ' C')"/>
+ <xsl:value-of select="concat(cns|u:cns, ' C')"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="setpo2|u:setpo2 != ''">
+ <xsl:attribute name="po2">
+ <xsl:call-template name="convertPascal">
+ <xsl:with-param name="value">
+ <xsl:value-of select="setpo2|u:setpo2"/>
+ </xsl:with-param>
+ </xsl:call-template>
</xsl:attribute>
</xsl:if>
</sample>