gpt4 book ai didi

xml - XPath - 除了第一个特定元素之外的所有后续兄弟

转载 作者:数据小太阳 更新时间:2023-10-29 01:42:55 25 4
gpt4 key购买 nike

假设我正在查询一个 xhtml 文档,并且我想查询一个带有 id='target' 的表之后的所有 sibling 。 .另外,我也不想要第一个 <table> sibling 也不是第一个<ol>这个特定元素的 sibling 。这是我能想到的最好的:

//table[@id='target']/following-sibling::*[not(self::table[1]) and not(self::ol[1])]

但是,这并没有在应该的时候返回任何结果。显然我不理解这方面的一些语法(我找不到好的信息来源)。如果对 XPath 语法更有经验的人可以帮助我,我将不胜感激。另外,出于纯粹的学术目的,我很好奇上面的内容实际上在做什么。

更新:
请参阅 LarsH 的回答以了解我的 XPath 为何无法正常工作的解释,并查看 Dimitre 的回答以获得已接受的解决方案。

最佳答案

使用:

 /table[@id='target']/following-sibling::*[not(self::table) and not(self::ol)] 
|
/table[@id='target']/following-sibling::table[position() > 1]
|
/table[@id='target']/following-sibling::ol[position() > 1]

这将选择表中所有以下不是 table 且不是 ol 的 sibling 以及所有以下位置为 2 的 table sibling 或更高以及以下所有位置为 2 或更高的 ol sibling 。

这正是您想要的:除了 sibling 之后的第一个 table 和 sibling 之后的第一个 ol 之外的所有后续 sibling 。

这是纯 XPath 1.0,没有使用任何 XSLT 函数。

关于xml - XPath - 除了第一个特定元素之外的所有后续兄弟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4300817/

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