Xml XPATH来选择最近的前一个节点
如何选择在Xpath 2.0中没有父节点“Test”的最近的前一个节点BName 我想到的表达方式是:Xml XPATH来选择最近的前一个节点,xml,xpath,xpath-2.0,Xml,Xpath,Xpath 2.0,如何选择在Xpath 2.0中没有父节点“Test”的最近的前一个节点BName 我想到的表达方式是: preceding::BName[1](not[@parent::Test]) 试一试 解释 按与文档相反的顺序选择前面所有名为BName的节点 preceding::BName[not(parent::Test)] 仅保留没有名称为Test的父节点,即删除具有Test父节点的所有节点 preceding::BName[not(parent::Test)][1] 选择第一个节点。由于节点
preceding::BName[1](not[@parent::Test])
试一试
解释
按与文档相反的顺序选择前面所有名为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>
选择节点
<BName id="2"/>
请发布xml文件的示例非常感谢!它工作得很好。我尝试避免使用祖父母节点=Test的节点,而不是父节点,怎么样?[我将在SO中提出一个新问题]
<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"/>