Xml XSLT根据持续时间(以秒为单位)计算开始和结束时间
如果我有一个标签,它包含以秒为单位的持续时间Xml XSLT根据持续时间(以秒为单位)计算开始和结束时间,xml,xslt,Xml,Xslt,如果我有一个标签,它包含以秒为单位的持续时间 <mytag duration="29.473"> <mytag starttime="date:date-time()" endtime="date:date-time() + duration"> 我想使用XSLT将其转换为如下内容,其中starttime是当前时间,endtime是当前时间+持续时间秒 <mytag duration="29.473"> <mytag starttime="da
<mytag duration="29.473">
<mytag starttime="date:date-time()" endtime="date:date-time() + duration">
我想使用XSLT将其转换为如下内容,其中starttime是当前时间,endtime是当前时间+持续时间秒
<mytag duration="29.473">
<mytag starttime="date:date-time()" endtime="date:date-time() + duration">
如何做到这一点?我尝试了
xs:dayTimeDuration
,但我不确定如何使用它并传递持续时间。任何帮助都将不胜感激。我是XSLT新手。谢谢 如果您使用的是XSLT2.0,您可以将duration
转换为xs:dayTimeDuration
。我还建议将当前日期时间设置为一个变量,以便在所有使用它的地方都完全相同
例如
XML输入
<mytag duration="29.473"/>
<mytag starttime="2013-05-24T16:15:13.346-06:00"
endtime="2013-05-24T16:15:42.819-06:00"/>
XSLT2.0
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:variable name="currDT" select="current-dateTime()"/>
<xsl:template match="/*">
<mytag starttime="{$currDT}" endtime="{$currDT + xs:dayTimeDuration(concat('PT',@duration,'S'))}"/>
</xsl:template>
</xsl:stylesheet>
输出
<mytag duration="29.473"/>
<mytag starttime="2013-05-24T16:15:13.346-06:00"
endtime="2013-05-24T16:15:42.819-06:00"/>
我使用的是xsltproc(),当我使用xs:dayTimeDuration时,我得到了“xmlXPathCompOpEval:function dayTimeDuration not found”。有更好的带命令行的处理器吗?抱歉,我对这一切都不熟悉:)@user2418898-xsltproc仅限于XSLT1.0。我建议从命令行(java)运行Saxon。如果您希望我在回答中添加示例命令行,请告诉我。HE版本是免费的:这里有一个到命令行docs的链接:非常好用!谢谢你,丹尼尔!日期和时间处理在XSLT1.0和2.0中有很大的不同。您需要告诉我们您使用的是哪个版本,否则任何答案都可能是浪费时间。