<routes>
<drivinginstruction>
<start>SA5 9BZ, UK</start>
<end>CF2 5RF, UK</end>
<time>2 hours, 12 minutes</time>
<total_distance>429.83</total_distance>
<step>
<id>1</id>
<instruction>Start out going SOUTHWEST on Unamed Road.</instruction>
<distance>0.1</distance>
</step>
<step>
<id>2</id>
<instruction>Turn LEFT onto Unamed Road.</instruction>
<distance>0.2</distance>
</step>
<step>
<id>3</id>
<instruction>Take the SECOND exit.</instruction>
<distance>0.1</distance>
</step>
</drivinginstruction>
</routes>
我想使用xpath 2.0来获取距离为&lt;的id和距离。 1。 这是我有多远。
if (routes/drivinginstruction/step/distance[@value < 1.0]) then routes/drivinginstruction/step/(id|distance) else 0
返回0。 任何人都可以帮忙。
关心保罗。
答案 0 :(得分:1)
问题在于@value
引用名为&#39; value&#39;的属性在XML中不存在。您希望使用.
来获取元素的值。无论如何,你可以在没有if
的情况下实现,只需要XPath谓词:
routes/drivinginstruction/step[distance < 1.0]/(id|distance)
<强> demo
强>
或使用XPath 1.0兼容版本:
routes/drivinginstruction/step[distance < 1.0]/*[self::id|self::distance]
<强>更新强>
完整XML的问题可能是distance
元素中的一个是空的,与十进制数相比会导致错误。假设您不希望从distance
元素返回任何不包含有效数字值的内容,那么您可以在之前添加另一个谓词来检查:
/routes/drivinginstruction/step[number(distance)][distance < 1.0]/(id|distance)
<强> demo
强>
答案 1 :(得分:0)
使用har07给我的建议我对他的答案做了一些改动,因为它不会在PathEnq中给我完整的xml结果。 这是最终的Xpath 2.0查询。
/routes/drivinginstruction/step/distance[number(.)< 1]/../(id|distance)
感谢所有提供意见的人。