将Xslt 1.0字符串转换为数字

时间:2014-05-13 08:34:39

标签: xslt-1.0

我需要转换此数据:

经度8-55,810,经度为8.93016666

获得了这种转变:

  • 8是整数部分并保持不变;
  • 第二部分'。'获得股息53,510乘60

在xslt 1.0中我:

<!-- Declared a variable longitudine es. 8-55,810-->
<xsl:variable name="lon" select='LONGITUDE'/>

<!-- I put in a variable the part after '-' es. 55.810 -->
<xsl:variable name="partemobilelon" select="substring-after($lon,'-')"/>

现在我需要将&#39; 55.810&#39;(字符串)转换为数字并除以60(在&#39;之后只有8个字符,&#39;)。

1 个答案:

答案 0 :(得分:3)

看看这是否有帮助:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:variable name="longitude" select="'8-55,810'" />

<xsl:template match="/">
    <output>
        <xsl:param name="int" select="substring-before($longitude, '-')" />
        <xsl:param name="dec" select="translate(substring-after($longitude, '-'), ',', '.')"/>
        <xsl:value-of select="$int + $dec div 60" />
    </output>
</xsl:template>

</xsl:stylesheet>

编辑:

围绕结果,请尝试:

<xsl:template match="/">
    <output>
        <xsl:param name="int" select="substring-before($longitude, '-')" />
        <xsl:param name="dec" select="translate(substring-after($longitude, '-'), ',', '.')"/>
        <xsl:param name="num" select="$int + $dec div 60" />
        <xsl:value-of select="round($num * 100000000) div 100000000" />
    </output>
</xsl:template>

或只是:

<xsl:template match="/">
    <output>
        <xsl:param name="int" select="substring-before($longitude, '-')" />
        <xsl:param name="dec" select="translate(substring-after($longitude, '-'), ',', '.')"/>
        <xsl:value-of select="format-number($int + $dec div 60, '0.########')" />
    </output>
</xsl:template>