Выделение только одного дочернего элемента, соответствующего Parent Name xpath 1.0 - PullRequest
0 голосов
/ 17 апреля 2020

Итак, у меня есть 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>`

И я хочу выбрать только один элемент <Name> от каждого <Program> родителя. Сложность в том, как сопоставить <ProgFileName> на каждом <Program> элементе.

Узел Context, который мне нужно использовать, - <Name>, поэтому я не могу сделать ничего похожего на //NcJob/Name != ./preceding::Program/NcJob/Name

* 1013. * Любая помощь здесь?

Спасибо за ваше время!

1 Ответ

0 голосов
/ 17 апреля 2020

Вы можете использовать следующее выражение XPath, соответствующее указанным условиям:

//Name[preceding::ProgName[1]/text()=ancestor::Program[1]/@Name]

Вывод: Job3

...