仅选择一个与父名称匹配的子项 xpath 1.0
Selection only one child that match the Parent Name xpath 1.0
所以我有这个 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>`
我想要的是 select 每个 <Program>
父元素只有一个元素 <Name>
。
困难在于如何在每个 <Program>
元素上匹配 <ProgFileName>
。
我需要使用的Context节点是<Name>
所以我不能做类似 //NcJob/Name != ./preceding::Program/NcJob/Name
的事情
这里有什么帮助吗?
感谢您的宝贵时间!
您可以使用以下符合您所述条件的 XPath 表达式:
//Name[preceding::ProgName[1]/text()=ancestor::Program[1]/@Name]
输出:Job3
所以我有这个 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>`
我想要的是 select 每个 <Program>
父元素只有一个元素 <Name>
。
困难在于如何在每个 <Program>
元素上匹配 <ProgFileName>
。
我需要使用的Context节点是<Name>
所以我不能做类似 //NcJob/Name != ./preceding::Program/NcJob/Name
这里有什么帮助吗?
感谢您的宝贵时间!
您可以使用以下符合您所述条件的 XPath 表达式:
//Name[preceding::ProgName[1]/text()=ancestor::Program[1]/@Name]
输出:Job3