在骡子流中,我想使用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)
这种方法有什么问题?
答案 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")