XPath для вибору елемента на основі значущості дитини


208

Намагаючись вибрати елемент, виходячи зі значення одного з його дитячих дітей

Думаючи наступне, але не працюючи, вдячний за будь-яку допомогу, дякую

./book[/author/name = 'John'] або

./book[/author/name text() = '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>

Відповіді:


300

Майже там. У своєму присудку ви хочете відносний шлях, тому змініть

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

до будь-якого

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

або

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

і ти будеш відповідати своїй стихії. Ваш поточний предикат повертається до кореня документа, щоб шукати author.


1
Без .мене не працювало (потрібно ./author/name)
MichaelChirico

Чи можливо використовувати цей синтаксис у функції? Наприклад, як реалізувати щось таке, як ./book[contains(author/name, "John")]?
Просто учень

1
@OgrishMan нові запитання повинні містити нове запитання , але перед цим я б просто спробував! Як правило, ви хочете , до речі, одинарні лапки, 'а не подвійні лапки "для рядкових літералів в xpath.
AakashM
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.