所以我有这个XMl文件要使用XPATH进行过滤。
`<Root>
<Program Name="PGM_Name1">
<ProgFileName>200</ProgFileName>
<ProgName>PGM_Name</ProgName>
<NcJob>
<Name>Job1</Name>
<NcJob>
</Program>
<Program Name="PGM_Name">
<ProgFileName>200</ProgFileName>
<ProgName>PGM_Name1</ProgName>
<NcJob>
<Name>Job2</Name>
<NcJob>
</Program>
<Program Name="PGM_Name2">
<ProgFileName>201</ProgFileName>
<ProgName>PGM_Name2</ProgName>
<NcJob>
<Name>Job3</Name>
<NcJob>
</Program>
</Root>`
我想要的是从每个<Program>
父元素中只选择一个元素<Name>
。困难在于如何在每个<Program>
元素上匹配<ProgFileName>
。
我需要使用的Context节点是<Name>
所以我不能做任何类似于//NcJob/Name != ./preceding::Program/NcJob/Name
的事情
这里有人帮忙吗?
感谢您抽出时间!
您可以使用以下XPath表达式来尊重您所声明的条件:
//Name[preceding::ProgName[1]/text()=ancestor::Program[1]/@Name]
输出:Job3