XSLT根据持续时间(以秒为单位)计算开始和结束时间

时间:2013-05-24 20:41:11

标签: xml xslt

如果我的标签包含持续时间(以秒为单位)。

<mytag duration="29.473">

我希望使用XSLT将其转换为类似下面的内容,其中starttime是当前时间,endtime是当前时间+持续时间秒。

<mytag starttime="date:date-time()" endtime="date:date-time() + duration">

如何实现这一目标?我已经尝试了xs:dayTimeDuration,但我不确定如何使用它并传递持续时间。任何帮助将不胜感激。我是XSLT的新手。谢谢!

1 个答案:

答案 0 :(得分:0)

如果您使用的是XSLT 2.0,则可以将duration转换为xs:dayTimeDuration。我还建议将当前的dateTime变为一个变量,因此它在您使用它的所有地方都完全相同。

示例...

XML输入

<mytag duration="29.473"/>

XSLT 2.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 starttime="2013-05-24T16:15:13.346-06:00"
       endtime="2013-05-24T16:15:42.819-06:00"/>