假设我有一个像(
)这样的XML(子)树 n
|-a
| |- b
|-c
| |- x
| |- d
|-e
鉴于我有一个选择 X 的选择器,它将选择节点 x ,如何选择不直接打开的最顶层元素(即排除其子元素)从 n 到 x 的链?因此,对于该示例,结果应为[ a , d , e ]。
此外, n 不一定是文档的根,也应排除 x 的后代。
编辑:
直接删除链上的节点是微不足道的:
.//*[not(descendant::X or ancestor-or-self::X)]
所以问题就变成了:给定一个返回一些断开连接的树的XPath,如何获取每个树的根节点。
编辑2:
由于人们对以下原因感兴趣:我正在测试一个带有第三方窗口小部件的网站,该窗口小部件应该生成一个树<n><c><x>...</x></c></n>
给定容器节点 n 和内容 x < / em>的。这里 c 可以是一个或多个级别的元素。
现在,在某些情况下,窗口小部件会生成比所需更多的标记(例如 c 或 x 的兄弟姐妹),我的测试应选择这些元素并报告。
答案 0 :(得分:1)
想出来:
.//*[not(descendant::X or ancestor-or-self::X)][parent::*[descendant::X]]