仅选择一个与父名称匹配的子项 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