1

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

<mytag duration="29.473">

我想使用 XSLT 将其转换为如下所示的内容,其中 starttime 是当前时间,endtime 是当前时间 + 持续时间秒。

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

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

4

1 回答 1

0

如果您使用的是 XSLT 2.0,则可以将其转换durationxs: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"/>
于 2013-05-24T22:12:57.287 回答