1

在这个代码挑战中,我必须创建一个 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>

Sum 不能直接在 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>
4

1 回答 1

0

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

于 2012-09-06T16:31:54.700 回答