Как получить последнее значение из узлов и сохранить его в переменной - PullRequest
0 голосов
/ 11 июля 2019

У меня есть следующий 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 Ответ

1 голос
/ 11 июля 2019

«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']" > 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...