diff options
author | Miika Turkia <miika.turkia@nixu.fi> | 2013-11-21 04:04:10 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-11-21 04:25:01 -0800 |
commit | cd0475fe961ba65b65dd8cc707167c218c2b8649 (patch) | |
tree | a6c7f54cfae9121e282c1f4551d1d332881572f5 /xslt | |
parent | 5b0162d9d46cf4ac247eb65176a376360e3d2904 (diff) | |
download | subsurface-cd0475fe961ba65b65dd8cc707167c218c2b8649.tar.gz |
Improve UDDF export to include more dive data
Basic information like buddy, location and visibility is included in
UDDF export. Also attempt to grab temperature information from both
temperature and divetemperature tags.
This partially fixes bug #224. However, at least divemaster and tags are
not exported (as the UDDF spec either does not have these or has hidden
the information of these fields somewhere between so many seemingly
unnecessary other fields).
See #224
Signed-off-by: Miika Turkia <miika.turkia@nixu.fi>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'xslt')
-rw-r--r-- | xslt/uddf-export.xslt | 88 |
1 files changed, 84 insertions, 4 deletions
diff --git a/xslt/uddf-export.xslt b/xslt/uddf-export.xslt index a41a7fccd..1d25c8cf6 100644 --- a/xslt/uddf-export.xslt +++ b/xslt/uddf-export.xslt @@ -44,8 +44,12 @@ </xsl:for-each> </equipment> </owner> + + <xsl:apply-templates select="//buddy"/> </diver> + <xsl:apply-templates select="//location"/> + <!-- Define all the unique gases found in the dive log --> <gasdefinitions> <!-- Get unique gas mixes from all the recorded dives --> @@ -107,13 +111,56 @@ </uddf> </xsl:template> + <xsl:key name="buddy" match="buddy" use="."/> + <xsl:template match="buddy"> + <xsl:if test="generate-id() = generate-id(key('buddy', normalize-space(.)))"> + <buddy> + <xsl:attribute name="id"> + <xsl:value-of select="."/> + </xsl:attribute> + <personal> + <first_name> + <xsl:value-of select="."/> + </first_name> + </personal> + </buddy> + </xsl:if> + </xsl:template> + + <xsl:key name="location" match="location" use="."/> + <xsl:template match="location"> + <xsl:if test="generate-id() = generate-id(key('location', normalize-space(.)))"> + <dive_site> + <xsl:attribute name="id"> + <xsl:value-of select="."/> + </xsl:attribute> + <name> + <xsl:value-of select="."/> + </name> + <geography> + <location> + <xsl:value-of select="."/> + </location> + <gps> + <latitude> + <xsl:value-of select="substring-before(@gps, ' ')"/> + </latitude> + <longitude> + <xsl:value-of select="substring-after(@gps, ' ')"/> + </longitude> + </gps> + </geography> + </dive_site> + </xsl:if> + </xsl:template> + <xsl:template match="dive"> <dive id="{generate-id(.)}"> <informationbeforedive> - <xsl:if test="node()/temperature/@air != ''"> + <xsl:if test="temperature/@air|divetemperature/@air != ''"> <airtemperature> - <xsl:value-of select="format-number(substring-before(node()/temperature/@air, ' ') + 273.15, '0.00')"/> + <xsl:value-of select="format-number(substring-before(temperature/@air|divetemperature/@air, ' ') + 273.15, '0.00')"/> </airtemperature> </xsl:if> <datetime> @@ -122,6 +169,20 @@ <divenumber> <xsl:value-of select="./@number"/> </divenumber> + <xsl:if test="buddy != ''"> + <buddy_ref> + <xsl:attribute name="ref"> + <xsl:value-of select="buddy"/> + </xsl:attribute> + </buddy_ref> + </xsl:if> + <xsl:if test="location != ''"> + <dive_site_ref> + <xsl:attribute name="ref"> + <xsl:value-of select="location"/> + </xsl:attribute> + </dive_site_ref> + </xsl:if> </informationbeforedive> <samples> @@ -250,9 +311,9 @@ </xsl:call-template> </diveduration> </xsl:if> - <xsl:if test="node()/temperature/@water != ''"> + <xsl:if test="temperature/@water|divetemperature/@water != ''"> <lowesttemperature> - <xsl:value-of select="format-number(substring-before(node()/temperature/@water, ' ') + 273.15, '0.00')"/> + <xsl:value-of select="format-number(substring-before(temperature/@water|divetemperature/@water, ' ') + 273.15, '0.00')"/> </lowesttemperature> </xsl:if> <notes> @@ -272,6 +333,25 @@ </xsl:choose> </ratingvalue> </rating> + <visibility> + <xsl:choose> + <xsl:when test="./@visibility = 1"> + <xsl:value-of select="1"/> + </xsl:when> + <xsl:when test="./@visibility = 2"> + <xsl:value-of select="3"/> + </xsl:when> + <xsl:when test="./@visibility = 3"> + <xsl:value-of select="5"/> + </xsl:when> + <xsl:when test="./@visibility = 4"> + <xsl:value-of select="10"/> + </xsl:when> + <xsl:when test="./@visibility = 5"> + <xsl:value-of select="15"/> + </xsl:when> + </xsl:choose> + </visibility> </informationafterdive> </dive> |