进行数学运算时出现XSLT错误

时间:2016-07-31 13:28:26

标签: xml xslt

在骡子流中,我想使用XSLT将xml文件中格式为“hh:mm”的持续时间转换为秒。

对于转换,我使用了以下内容,

<xsl:template match="EventDuration">
    <duration>
        <xsl:value-of select="60*substring-after(text(), ':') + 3600*substring-before(text(), ':')" />
    </duration>
</xsl:template>

但是它给出了以下错误....

  

XPTY0004:没有为类型的参数定义算术运算符(xs:integer,xs:string)

这种方法有什么问题?

2 个答案:

答案 0 :(得分:2)

使用number()substring-before()substring-after()的结果从字符串转换为数字。

答案 1 :(得分:1)

您似乎正在使用XSLT 2.0,而在2.0中,您需要在进行算术运算之前明确地将字符串转换为数字。

您的另一个选择是使用日期/时间/持续时间算术:

(xs:time(concat(text(), ":00") - xs:time("00:00:00")) div xs:dayTimeDuration("PT1S")