xpath - 需要一些关于在 XPath 中获取最大值的解释

标签 xpath max

我是 XPath 的新手,我发现要获得最大属性数,我可以使用下一条语句://Book[not(@id >//Book/@id) 并且效果很好。

我只是不明白为什么它返回最大 id 而不是最小 id,因为看起来我正在检查一个节点的 id 是否大于任何其他节点的 id,然后在它不存在的地方返回一本书。

我可能很愚蠢,但是,请有人解释一下:)

最佳答案

您不是在查询最大值,而是在查询最小值。您的查询

//Book[not(@id > //Book/@id)

可以翻译成自然语言为“查找所有 @id 不大于任何其他书籍的 @id 的书籍”。你可能想使用

//Book[not(@id < //Book/@id)

对于任意输入,您可能想使用 <=相反,它只返回一个最大值(如果共享则不返回)。作为@id s 必须是唯一的,这在这里无关紧要。

请注意 //Book[@id > //Book/@id]不等于上面的查询,尽管数学会这样建议。 XPath 的比较运算符遵循一种集合语义:如果左侧的任何值大于右侧的任何值,则谓词为真;因此它将包括除最小 @id 以外的所有书籍值(value)。

关于xpath - 需要一些关于在 XPath 中获取最大值的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21718374/

相关文章:

java - 在 List<> 上使用 .max() 和 .stream()

arrays - 在 Ruby 语言中的一个 if 语句中使用多个条件

mysql - 如何写mysql select获取每日峰值

r - R 中每多列的每个行名(1、2 或 A、B..)的最大值

xml - Excel 2013 FILTERXML() 返回错误值?

xml - XSLT 1.0代码流

java - 如何编写代码来比较selenium中的下拉选项

python - 如何从xpath获取绝对url?

python - XPATH - 获取父子元组

java - 此功能的最佳情况是什么?