Следующий XPath должен работать для вас, он вернет только <p>
узлы, которые содержат текст, указанный в операторе contains.Я немного расширил пример для тестирования и включил скрипту здесь .
XPath:
div/p[contains(., 'caractère a priori')]
Входные данные
<div>
<p>leur caractère <foreign xml:lang="lat">a priori</foreign>, soit..</p>
<p>leur poisson <foreign xml:lang="lat">a priori</foreign>, soit..</p>
</div>
Выходные данные
<p>leur caractère <foreign xml:lang="lat">a priori</foreign>, soit..</p>
Надеюсь, этого достаточно для продолжения!