如何 return 元素值作为这些元素之一的值检查的结果
How to return element values as a result of a value check of one of those elements
<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 获取距离 < 1 的 id 和距离。
这就是我的进展。
if (routes/drivinginstruction/step/distance[@value < 1.0]) then routes/drivinginstruction/step/(id|distance) else 0
这个returns0。
有谁能帮忙吗
问候保罗。
问题是 @value
引用了名为 'value' 的属性,该属性在您的 XML 中不存在。您想要使用 .
来获取元素的值。无论如何,你可以在没有 if
的情况下实现它,只需 XPath 谓词:
routes/drivinginstruction/step[distance < 1.0]/(id|distance)
或使用 XPath 1.0 兼容版本:
routes/drivinginstruction/step[distance < 1.0]/*[self::id|self::distance]
更新
您的完整 XML 的问题可能是 distance
元素之一为空,与十进制数相比会导致错误。假设您不想从 distance
元素中 return 任何不包含有效数值的元素,那么您可以添加另一个谓词来检查它:
/routes/drivinginstruction/step[number(distance)][distance < 1.0]/(id|distance)
根据 har07 给我的建议,我对他的回答做了细微的修改,因为它不会给我 PathEnq 中完整 xml 的结果。
这是有效的最终 Xpath 2.0 查询。
/routes/drivinginstruction/step/distance[number(.)< 1]/../(id|distance)
感谢所有提供意见的人。
<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 获取距离 < 1 的 id 和距离。 这就是我的进展。
if (routes/drivinginstruction/step/distance[@value < 1.0]) then routes/drivinginstruction/step/(id|distance) else 0
这个returns0。 有谁能帮忙吗
问候保罗。
问题是 @value
引用了名为 'value' 的属性,该属性在您的 XML 中不存在。您想要使用 .
来获取元素的值。无论如何,你可以在没有 if
的情况下实现它,只需 XPath 谓词:
routes/drivinginstruction/step[distance < 1.0]/(id|distance)
或使用 XPath 1.0 兼容版本:
routes/drivinginstruction/step[distance < 1.0]/*[self::id|self::distance]
更新
您的完整 XML 的问题可能是 distance
元素之一为空,与十进制数相比会导致错误。假设您不想从 distance
元素中 return 任何不包含有效数值的元素,那么您可以添加另一个谓词来检查它:
/routes/drivinginstruction/step[number(distance)][distance < 1.0]/(id|distance)
根据 har07 给我的建议,我对他的回答做了细微的修改,因为它不会给我 PathEnq 中完整 xml 的结果。 这是有效的最终 Xpath 2.0 查询。
/routes/drivinginstruction/step/distance[number(.)< 1]/../(id|distance)
感谢所有提供意见的人。