假设我正在查询xhtml文档,我想查询表后面的所有兄弟姐妹id='target'.此外,我既不想要第一个<table>兄弟姐妹也不想要<ol>这个特定元素的第一个兄弟姐妹.这是我能想到的最好的:
//table[@id='target']/following-sibling::*[not(self::table[1]) and not(self::ol[1])]
Run Code Online (Sandbox Code Playgroud)
但是,这应该没有返回任何结果.显然我不理解这方面的一些语法(我找不到一个好的信息来源).如果有经验丰富的XPath语法的人能帮到我,我当然会感激不尽.另外,出于纯粹的学术目的,我很好奇上面的内容实际上是做什么的.
更新:
请参阅LarsH的答案,解释为什么我的XPath无法正常工作,并看到Dimitre对已接受的解决方案的回答.
Dim*_*hev 14
用途:
/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]
Run Code Online (Sandbox Code Playgroud)
这将选择表格的所有以下兄弟姐妹,这些兄弟姐妹不是table和不是ol以及所有以下table兄弟姐妹,其位置为2或更大,以及所有以下ol兄弟姐妹的位置为2或更大.
这正是你想要的:除了第一个table兄弟姐妹和第一个ol兄弟姐妹之外的所有兄弟姐妹.
这是纯XPath 1.0,不使用任何XSLT函数.