gpt4 book ai didi

XPath:匹配 'foo' 的 'bar' 后代,但如果 'quux' 介于两者之间则不匹配

转载 作者:行者123 更新时间:2023-12-03 15:50:38 25 4
gpt4 key购买 nike

在 XPath(请仅适用于 1.0)中,是否可以找到“bar”的所有“foo”后代,其中在任何级别之间都没有“quux”?也就是说,例如,这些 'foo' 应该匹配:

<bar><foo/></bar>
<bar><a><foo/></a></bar>
<bar><a><b><c><d><e><f><g><foo/></g></f></e></d></c></b></a></bar>

但这些不应该:
<bar><quux><foo/></quux></bar>
<bar><a><quux><foo/></quux></a></bar>
<bar><quux><a><foo/></a></quux></bar>
<bar><a><quux><b><foo/></b></quux></a></bar>
quux 的实例高于 bar或以下 foo不应该阻止匹配,即这些 'foo's 应该匹配:
<bar><foo><quux/></foo></bar>
<quux><bar><foo/></bar></quux>
bar/not(quux)/foo不起作用,因为它只接受三级结构。与 // 相关的任何内容在那一点上,它会让一个 quux 溜走。 bar//foo[not(ancestor::quux)]几乎可以工作,但是当 quux 是 bar 的祖先时会失败。

最佳答案

表达您想要的一种方式是 quux 的数量foo的祖先与quux的数量相同那个foo的祖先s bar祖先,使所有quux s 是 bar 的祖先和 foo .

以下表达式将选择这样的 foo s:

//bar//foo[count(./ancestor::quux) = count(./ancestor::bar/ancestor::quux)]

关于XPath:匹配 'foo' 的 'bar' 后代,但如果 'quux' 介于两者之间则不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50865291/

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