let*_*aik 1 xml xpath datetime xpath-2.0
我有以下简单的xml:
<root>
<item>
<d>2002-05-30T09:00:00</d>
</item>
<item>
<d>2005-05-30T09:00:00</d>
</item>
<item>
<d>2003-05-30T09:00:00</d>
</item>
</root>
Run Code Online (Sandbox Code Playgroud)
现在我想找到使用XPath的最小或最大dateTime节点.
我现在的解决方案是:
/root/item[not(number(translate(./d, 'TZ:-', '.')) <= number(translate(following-sibling::item, 'TZ:-', '.')))][not(number(translate(./d, 'TZ:-', '.')) <= number(translate(preceding-sibling::item, 'TZ:-', '.')))][1]/d
Run Code Online (Sandbox Code Playgroud)
它有效,但是很难看,而且效率不高.基本上它将dateTime转换为数字,然后将它们相互比较.我从这里改编了这个.
最好的方法是什么?
干杯
新
小智 11
你不能在XPath 1.0中如果你事先不知道它的数量,item
因为每个函数都有一个没有node-set参数的东西,它的参数会占用node-set中的第一个节点,而order comparison运算符不能用于字符串.
在XPath 2.0中,您可以使用:
max(/root/item/d/xs:dateTime(.))
Run Code Online (Sandbox Code Playgroud)