Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XSLT根据持续时间(以秒为单位)计算开始和结束时间_Xml_Xslt - Fatal编程技术网

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中有很大的不同。您需要告诉我们您使用的是哪个版本,否则任何答案都可能是浪费时间。