【发布时间】:2014-03-17 22:38:23
【问题描述】:
如何在 Xpath 2.0 中选择最近的名为 BName 且没有名为“Test”的父节点的先前节点?
我在想的表达是这样的:
preceding::BName[1](not[@parent::Test])
【问题讨论】:
-
请张贴xml文件的样本
如何在 Xpath 2.0 中选择最近的名为 BName 且没有名为“Test”的父节点的先前节点?
我在想的表达是这样的:
preceding::BName[1](not[@parent::Test])
【问题讨论】:
试试
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"/>
【讨论】: