summaryrefslogtreecommitdiffstats
path: root/xslt
diff options
context:
space:
mode:
authorGravatar Miika Turkia <miika.turkia@gmail.com>2014-11-25 19:47:04 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-11-25 13:19:49 -0800
commit1b74947bf56a2ef3b38470044d991a75ed0c5e30 (patch)
treea4b63ce2d76ee024870d5b1dc8d6039f7b391702 /xslt
parent3b3d8949f7b3aede87fd779b314c6604020cbd16 (diff)
downloadsubsurface-1b74947bf56a2ef3b38470044d991a75ed0c5e30.tar.gz
Allow user to select date format on manual CSV import
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/manualcsv2xml.xslt41
1 files changed, 37 insertions, 4 deletions
diff --git a/xslt/manualcsv2xml.xslt b/xslt/manualcsv2xml.xslt
index 7e138d1e0..cbfb9ea14 100644
--- a/xslt/manualcsv2xml.xslt
+++ b/xslt/manualcsv2xml.xslt
@@ -18,6 +18,7 @@
<xsl:param name="buddyField" select="buddyField"/>
<xsl:param name="notesField" select="notesField"/>
<xsl:param name="weightField" select="weightField"/>
+ <xsl:param name="dateformat" select="dateformat"/>
<xsl:output method="xml" indent="yes"/>
<xsl:variable name="lf"><xsl:text>
@@ -79,10 +80,42 @@
<xsl:attribute name="date">
<xsl:choose>
<xsl:when test="$dateField >= 0">
- <xsl:call-template name="getFieldByIndex">
- <xsl:with-param name="index" select="$dateField"/>
- <xsl:with-param name="line" select="$line"/>
- </xsl:call-template>
+ <xsl:variable name="indate">
+ <xsl:call-template name="getFieldByIndex">
+ <xsl:with-param name="index" select="$dateField"/>
+ <xsl:with-param name="line" select="$line"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="separator">
+ <xsl:choose>
+ <xsl:when test="substring-before($indate, '.') != ''">
+ <xsl:value-of select="'.'"/>
+ </xsl:when>
+ <xsl:when test="substring-before($indate, '-') != ''">
+ <xsl:value-of select="'-'"/>
+ </xsl:when>
+ <xsl:when test="substring-before($indate, '/') != ''">
+ <xsl:value-of select="'/'"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- dd.mm.yyyy -->
+ <xsl:when test="$datefmt = 0">
+ <xsl:value-of select="concat(substring-after(substring-after($indate, $separator), $separator), '-', substring-before(substring-after($indate, $separator), $separator), '-', substring-before($indate, $separator))"/>
+ </xsl:when>
+ <!-- mm.yy.yyyy -->
+ <xsl:when test="$datefmt = 1">
+ <xsl:value-of select="concat(substring-after(substring-after($indate, $separator), $separator), '-', substring-before($indate, $separator), '-', substring-before(substring-after($indate, $separator), $separator))"/>
+ </xsl:when>
+ <!-- yyyy.mm.dd -->
+ <xsl:when test="$datefmt = 2">
+ <xsl:value-of select="concat(substring-before($indate, $separator), '-', substring-before(substring-after($indate, $separator), $separator), '-', substring-after(substring-after($indate, $separator), $separator))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'1900-1-1'"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(substring($date, 1, 4), '-', substring($date, 5, 2), '-', substring($date, 7, 2))"/>