gpt4 book ai didi

xpath - 使用 XPath 查找特定祖 parent 的第一个 child ?

转载 作者:行者123 更新时间:2023-12-03 16:06:30 25 4
gpt4 key购买 nike

我正在处理一些粗糙的 HTML。这是给定元素的祖先的程式化示例:
/html/body/foo/bar/baz/quux/b
我有一个引用 body在我的代码和 b是我的 XPath 查询的上下文元素。在上面的例子中,我如何找到 foo ?更具描述性,我如何找到给定祖先中的第一个元素,它是另一个给定元素的子元素? body 之间的元素和 b是未知的,并且在运行时的类型和深度各不相同。我可以在 XPath 之外通过迭代 b 的祖先来做到这一点。直到我到达 body但我想知道是否有一些 XPath 祖先魔法来找到这个相对引用。

最佳答案

使用 :

ancestor::body[1]/foo

这将选择作为 body 的第一个子元素的元素那是始祖 body上下文节点。

即使你知道没有嵌套 body元素,上面比 稍微高效一点:
ancestor::body/foo

因为计算最后一个表达式,所有祖先都将被测试为 body .

更新 :

在评论中,OP澄清了:

Well, I'm trying to find the intersection of the two sets (ancestors of context node, children of body)



在 XPath 1.0 中,这是 q 直接代入著名的节点集交集的 Kayessian 公式 :
$ns1[count(.|$ns2) = count($ns2)]

在这种情况下,我们替换为 $ns1ancestor::*和 $ns2 与 /*/body/* :
ancestor::*[count(. | /*/body/*) = count(/*/body/*)]

在 XPath 2.0 中这更容易,使用 intersect接线员 :
ancestor::* intersect /*/body/*

关于xpath - 使用 XPath 查找特定祖 parent 的第一个 child ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11285848/

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