如何在XSLT中以“timespan”格式表示持续时间

时间:2012-09-06 15:38:29

标签: xml xslt

在此代码挑战中,我必须创建一个XSLT转换,它将对所有TestResut节点的迭代持续时间求和。简而言之,TestResults运行了多长时间。

    <TestResults>
        <TestResult>
            <Iteration duration="00:00:02.6312623" />
            <Iteration duration="00:01:03.5725194" />
            <Iteration duration="00:00:07.5725194" />
        </TestResult>
        <TestResult>
            <Iteration duration="00:00:04.6312623" />
            <Iteration duration="00:01:03.6777194" />
            <Iteration duration="00:02:07.5723194" />
        </TestResult>
    </TestResults>

无法直接在TestResults / TestResult / Iteration / @ duration xpath上完成求和,而是在此处需要转换表示时间的刻度,我要问:在同一时间总结所有持续时间的最佳做法是什么多次转换?

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
      <xsl:output method="xml" indent="yes"/>

      <xsl:template match="/">
        <xsl:variable name="TotalDuration" select="sum(TestResults/TestResult/Iteration/@duration)"/>

        <Summary>
          <Duration>
            <xsl:value-of select="$TotalDuration"/>
          </Duration>
        </Summary>
      </xsl:template>
    </xsl:stylesheet>

1 个答案:

答案 0 :(得分:0)

这是XSLT 1.0还是2.0?在2.0中,有很多日期/时间算法的支持。在1.0中,查看EXSLT日期/时间库。