[PATCH 2/3] CSV import: implement unit conversion for temperature

Miika Turkia miika.turkia at gmail.com
Thu Jul 30 22:19:38 PDT 2015


If input is in F, we need to convert it to C on import.

Signed-off-by: Miika Turkia <miika.turkia at gmail.com>
---
 xslt/manualcsv2xml.xslt | 36 ++++++++++++++++++++++++++++--------
 1 file changed, 28 insertions(+), 8 deletions(-)

diff --git a/xslt/manualcsv2xml.xslt b/xslt/manualcsv2xml.xslt
index 5141c44..7690926 100644
--- a/xslt/manualcsv2xml.xslt
+++ b/xslt/manualcsv2xml.xslt
@@ -223,18 +223,38 @@
         <temperature>
           <xsl:if test="$airtempField >= 0">
             <xsl:attribute name="air">
-              <xsl:call-template name="getFieldByIndex">
-                <xsl:with-param name="index" select="$airtempField"/>
-                <xsl:with-param name="line" select="$line"/>
-              </xsl:call-template>
+              <xsl:variable name="air">
+                <xsl:call-template name="getFieldByIndex">
+                  <xsl:with-param name="index" select="$airtempField"/>
+                  <xsl:with-param name="line" select="$line"/>
+                </xsl:call-template>
+              </xsl:variable>
+              <xsl:choose>
+                <xsl:when test="$units = 0">
+                  <xsl:value-of select="$air"/>
+                </xsl:when>
+                <xsl:otherwise>
+                  <xsl:value-of select="(translate(translate($air, translate($air, '1234567890,.', ''), ''), ',', '.') - 32) * 5 div 9"/>
+                </xsl:otherwise>
+              </xsl:choose>
             </xsl:attribute>
           </xsl:if>
           <xsl:if test="$watertempField >= 0">
             <xsl:attribute name="water">
-              <xsl:call-template name="getFieldByIndex">
-                <xsl:with-param name="index" select="$watertempField"/>
-                <xsl:with-param name="line" select="$line"/>
-              </xsl:call-template>
+              <xsl:variable name="water">
+                <xsl:call-template name="getFieldByIndex">
+                  <xsl:with-param name="index" select="$watertempField"/>
+                  <xsl:with-param name="line" select="$line"/>
+                </xsl:call-template>
+              </xsl:variable>
+              <xsl:choose>
+                <xsl:when test="$units = 0">
+                  <xsl:value-of select="$water"/>
+                </xsl:when>
+                <xsl:otherwise>
+                  <xsl:value-of select="(translate(translate($water, translate($water, '1234567890,.', ''), ''), ',', '.') - 32) * 5 div 9"/>
+                </xsl:otherwise>
+              </xsl:choose>
             </xsl:attribute>
           </xsl:if>
         </temperature>
-- 
2.1.4



More information about the subsurface mailing list