我在使用XPath时有一个问题和操作的问题。当前,即使第一个条件本身失败,它在搜索XPath时会评估每个条件。这很奇怪。不是吗?
在评估逻辑和操作时,有许多语言遵循短路行为。
为什么xpath如此不同?还是有其他方法或配置可以告诉XPath像其他语言一样行事?
xpath 1.0和xpath 2.0之间有区别。
xpath 1.0(@wero引用(说必须按顺序评估条件,并且一旦条件返回false,评估必须立即停止。
xpath 2.0更加自由,并允许以任何顺序或并行评估条件。
为什么XPath 2.0有所不同?因为它遵循声明性数据库查询语言的传统,而不是程序编程语言的传统。在数据库查询语言中,重新将布尔表达式重新分配为最大程度地使用索引是一个关键的优化策略,它可以在毫秒中以毫秒和花费数小时运行的查询之间有所不同。由于表达式无法用声明语言具有副作用,因此执行执行顺序确实适得其反。
当您说"它评估"每个条件"您的代词"不是指语言的XPath时,它是指特定的XPATH实现。知道(a(哪一个和(b(您如何观察这种行为并得出这些结论会很有趣。
可能是XPath引擎中的错误。看一下XPath推荐:
通过评估每个操作数和 将其价值转换为布尔值,好像是通过打电话给布尔值 功能。如果两个值都是真实和错误,则结果是正确的 否则。右操作数为未评估如果左操作数 评估为false。