XPath для выбора элемента на основе дочернего значения childs

Попытка выбрать элемент, основанный на значении одного из его дочерних детей

Думая следующее, но не работая, оцените любую помощь, спасибо

./book[/author/name = 'John'] или

./book[/author/name text() = 'John']

Хотите все книги, где имя автора = 'John'

Xml файл

<list>
   <book>
      <author>
         <name>John</name>
         <number>4324234</number>
      </author>
      <title>New Book</title>
      <isbn>dsdaassda</isbn>
   </book>
   <book>...</book>
   <book>...</book>
</list>

Ответ 1

Почти там. В вашем предикате вам нужен относительный путь, поэтому измените

./book[/author/name = 'John'] 

либо

./book[author/name = 'John'] 

или

./book[./author/name = 'John'] 

и вы будете соответствовать вашему элементу. Ваш текущий предикат возвращается к корню документа для поиска author.