如何选择最近的名为BName的前一个节点,该节点没有一个名为&#34的父级;测试"在Xpath 2.0?
表达我想的是:
preceding::BName[1](not[@parent::Test])
答案 0 :(得分:1)
尝试
preceding::BName[not(parent::Test)][1]
preceding::BName
以反向文档顺序选择名称为BName
的所有前面的节点。
preceding::BName[not(parent::Test)]
仅保留不具有名称为Test
的父节点的节点,即删除具有Test
父节点的所有节点。
preceding::BName[not(parent::Test)][1]
选择第一个节点。由于节点集按逆向文档顺序排列,因此这是最接近上下文节点的节点。
鉴于文件
<Document>
<Container>
<BName id="1"/>
</Container>
<Container>
<BName id="2"/>
</Container>
<Test>
<BName id="3"/>
<Context/>
</Test>
</Document>
表达式
//Context/preceding::BName[not(parent::Test)][1]
选择节点
<BName id="2"/>