gpt4 book ai didi

xpath - 结合 XPATH 谓词和位置

转载 作者:行者123 更新时间:2023-12-03 15:26:13 24 4
gpt4 key购买 nike

我有一组具有类 media-gallery-item 的 div 元素.
我想选择元素编号 x。

当只选择所有项目时,我得到 5 个结果

$x("//div[@id='content-area']//div[@class='media-gallery-item']")

现在我希望能够选择第 2 项,但我不知道如何正确组合两者:
$x("//div[@id='content-area']//div[@class='media-gallery-item'][2]")

$x("//div[@id='content-area']//div[@class='media-gallery-item'
and position() = 2]")

我知道这些没有多大意义,因为它不是真正的 AND ,但更像是:“首先根据此过滤,然后选择第二个匹配项”。
这样做的目的是继续选择事物(例如,在第二个元素中,为我获取 href 元素的 a 属性)

最佳答案

一步一步的回答。

选择带有 div[@id='content-area'] 的元素祖先,它们是各自 parent 的第二个 child 使用:

//div[@id='content-area']//div[2]

选择第二个(按文档顺序) div带有 div[@id='content-area'] 的元素祖先用途:
(//div[@id='content-area']//div)[2]

请注意差异。

然后,要选择元素,它们是各自父元素的第二个子元素,前提是它们具有“媒体库项目”类,请使用:
//div[@id='content-area']//div[2][@class='media-gallery-item']

选择元素,它们是具有类 media-gallery-item 的那些子元素(它们各自的父元素)中的第二个元素:
//div[@id='content-area']//div[@class='media-gallery-item'][2]

选择第二个(按文档顺序) div带有 div[@id='content-area'] 的元素祖先,前提是它有 media-gallery-item类(class):
(//div[@id='content-area']//div)[2][@class='media-gallery-item']

从所有 div 中选择第二个(按文档顺序)带有 div[@id='content-area'] 的元素祖先和一个 media-gallery-item类(class):
(//div[@id='content-area']//div)[@class='media-gallery-item'][2]

规范报价 正如@Alejandro 所建议的:

A predicate filters a node-set with respect to an axis to produce a new node-set. For each node in the node-set to be filtered, the PredicateExpr is evaluated with that node as the context node, with the number of nodes in the node-set as the context size, and with the proximity position of the node in the node-set with respect to the axis as the context position



http://w3.org/TR/xpath/#predicates

The proximity position of a member of a node-set with respect to an axis is defined to be the position of the node in the node-set ordered in document order if the axis is a forward axis and ordered in reverse document order if the axis is a reverse axis



http://w3.org/TR/xpath/#dt-proximity-position

底线是位置谓词相对于轴起作用。并且您需要括号来明确声明优先级。因此不是 child轴,但解析后的节点集 descendant-or-self计算位置时将考虑轴。

关于xpath - 结合 XPATH 谓词和位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4961349/

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