如何从节点获取最新值并将其保存到变量

时间:2019-07-11 13:26:00

标签: xml xslt

我有以下XML。我想要做的是使用XSLT将最新的持续时间输入变量中。

<Root>
<Department name="Test1">
<Duration>N/A</Duration>
</Department>
<Department name="Test2">
<Duration>00:02:33</Duration>
</Department>
<Department name="Test3">
<Duration>00:00:43</Duration>
</Department>
<Department name="Test4">
<Duration>N/A</Duration>
</Department>
<Department name="Test5">
<Duration>00:00:23</Duration>
</Department>
<Department name="Test6">
<Duration>00:05:03</Duration>
</Department>
<Department name="Test7">
<Duration>N/A</Duration>
</Department>
<Department name="Test8">
<Duration>00:01:25</Duration>
</Department>
<Department name="Test9">
<Duration>N/A</Duration>
</Department>
</Root>

因此,鉴于上述XML,最近的持续时间应为00:05:03。

我尝试了以下操作,但是得到了错误的值。我正在获得N / A。

<xsl:variable name="maxDuration">
<xsl:for-each select="/Root/Department/Duration" >
<xsl:sort data-type="text" order="descending" />
<xsl:if test="position()=1">
<xsl:value-of select="." />
</xsl:if>
</xsl:for-each>
</xsl:variable>

1 个答案:

答案 0 :(得分:1)

“ N / A”出现在XML中,按字母顺序,“ N / A”在“ 00:05:03”之后。 (“ N”具有ASCII值78,“ 0”具有ASCII值48)

一种解决方案是忽略“ N / A”

<xsl:for-each select="/Root/Department/Duration[. != 'N/A']" >