gpt4 book ai didi

jquery - xpath:是否可以排除 not 函数中的最后一个元素

转载 作者:行者123 更新时间:2023-12-01 02:54:10 24 4
gpt4 key购买 nike

给定以下 html:

<div>
<div id="t1" foo="bar" class="myClass">cello</div>
<div id="t2" class="myClass">melo there</div>
<div id="t3" class="myClass">quello</div>
</div>
<div>
<div id="t4" foo="bar" class="myClass">cello</div>
<div id="t5" class="myClass">melo there</div>
<div id="t6" class="myClass">quello</div>
</div>

使用jquery(在1.11.1以及可能的其他版本中),我们可以使用以下表达式:

div.myClass:not([foo=bar]:last)

它将返回 t1、t2、t3、t5、t6。换句话说,它选择所有 class=myClass 的 div,并删除所有这些 div它有一个值为 bar 的属性 foo,除了最后一个 div。

现在,我试图找到与 xpath 1.0 等效的 xpath 表达式。有谁知道 xpath 等效表达式是否可能,如果是这样,xpath 表达式会是什么?

到目前为止,这是我尝试过的 xpath 表达式(使用 php),它们都没有返回 1,2,3,5,6 ,因为它应该:

$x = "//div[@class='myClass'][not(self::node()[@foo='bar'])]"; // 2,3,5,6
$x = "//div[@class='myClass'][not(self::node()[@foo='bar'][position()=last()])]"; // 2,3,5,6
$x = "//div[@class='myClass'][not(self::node()[@foo='bar'] and position()=last() )]"; // 1,2,3,4,5,6
$x = "//div[@class='myClass'][not(self::node()[@foo='bar'] and position()=1 )]"; // 2,3,5,6
$x = "//div[@class='myClass'][not(self::node()[@foo='bar'])[position()=last()]]"; // DOMXPath::query(): Invalid type
$x = "//div[@class='myClass'][not(self::node()[@foo='bar'])][position()=last()]"; // 3,6
$x = "//div[@class='myClass'][not(self::node()[@foo='bar'])][position()<last()]"; // 2,5
$x = "//div[@class='myClass'][not(self::node()[@foo='bar'])][position()=1]"; // 2,5
$x = "//div[@class='myClass'][not(self::node()[@foo='bar'][4])]"; // 1,2,3,4,5,6
$x = "//div[@class='myClass'][not(self::node()[@foo='bar'][1])]"; // 2,3,5,6

最佳答案

//div[@class='myClass']
[not(count(. | (//div[@class='myClass' and @foo='bar'])[last()]) = 1)]

或者换句话说,如果您不需要文字not:

//div[@class='myClass']
[count(. | (//div[@class='myClass' and @foo='bar'])[last()]) > 1]

这些依赖于这样一个事实:在 XPath 1.0 中,测试一个表达式选择的节点是否与另一个表达式选择的节点是否是同一节点的方法是询问是否

count(A | B) = 1

如果A和B选择相同的节点,那么它们的并集|只是一个节点。相反,如果并集包含多个节点,则 A 和 B 不是同一节点。

关于jquery - xpath:是否可以排除 not 函数中的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31073227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com