Xpath найти совпадение значений узла в другом узле частично

#xml #xpath #xpath-2.0 #mismatch #xpath-1.0

#xml #xpath #xpath-2.0 #несоответствие #xpath-1.0

Вопрос:

У меня есть этот XML:

 <ref>
  <label>MCLaren, 1996</label>
  <year>1997</year>
</ref>
<ref>
  <label>Dhanvanth, 2016</label>
  <year>2016</year>
</ref>
<ref>
  <label>Darwin2 2001</label>
  <year>1997</year>
</ref>
  

Я хочу проверить значение года «1997» на соответствие указанному выше значению метки «McLaren, 1996» в соответствующем теге, если необходимо отобразить несоответствие значения года с меткой, ожидаемый ответ в XPath

Я попробовал приведенный ниже код:

 /ref[descendant::label != descendant::year[contains(text(),'')]]
  

Комментарии:

1. Вы решили свою проблему ?

Ответ №1:

Я не уверен, правильно ли я понял, что вы хотите, но следующий XPath:

 /root/ref[not(contains(descendant::label/text(), descendant::year/text()))]
  

возвращает все ссылки, где текст года не содержится в тексте метки

Вывод

 <ref>
  <label>MCLaren, 1996</label>
  <year>1997</year>
</ref>
<ref>
  <label>Darwin2 2001</label>
  <year>1997</year>
</ref>
  

Комментарии:

1. Большое вам спасибо.. Теперь я понимаю концепцию..