diff options
author | Miika Turkia <miika.turkia@gmail.com> | 2013-03-02 09:22:08 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-03-01 23:49:09 -0800 |
commit | 0f9142b4e3ea3a46f7cee95cf9363c5fd3264ad3 (patch) | |
tree | 10780500736925c6a3a90113c7bd02a18fa7d9cb | |
parent | 51d20880210d990e35982137067cda1801460d0a (diff) | |
download | subsurface-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.xsl | 40 | ||||
-rw-r--r-- | xslt/uddf.xslt | 51 |
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 > 0"> - <xsl:attribute name="cns"> - <xsl:value-of select="concat(cns, ' C')"/> + <xsl:if test="otu|u:otu > 0"> + <xsl:attribute name="otu"> + <xsl:value-of select="otu|u:otu"/> </xsl:attribute> </xsl:if> - <xsl:if test="u:cns > 0"> + <xsl:if test="cns|u:cns > 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> |