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