Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XPATH来选择最近的前一个节点_Xml_Xpath_Xpath 2.0 - Fatal编程技术网

Xml XPATH来选择最近的前一个节点

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] 选择第一个节点。由于节点

如何选择在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]
选择第一个节点。由于节点集的文档顺序相反,因此这是距离上下文节点最近的节点

例子 鉴于文件

<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"/>