Ответ 1
Это выражение //text() = 'Alliance Consulting'
имеет значение boolean.
В случае этого тестового образца:
<r>
<t>Alliance Consulting</t>
<s>
<p>Test string
<f>Alliance Consulting</f>
</p>
</s>
<z>
Alliance Consulting
<y>
Other string
</y>
</z>
</r>
Он вернет true
, конечно.
Выражение, которое вам нужно, должно оцениваться в node -set, поэтому используйте:
//text()[. = 'Alliance Consulting']
например. выражение:
count(//text()[normalize-space() = 'Alliance Consulting'])
в отношении указанного выше документа вернется 3
.
Чтобы выбрать текстовые узлы, содержащие 'Alliance Consulting'
во всем строковом значении (например, 'Alliance Consulting provides great services'
), используйте:
//text()[contains(.,'Alliance Consulting')]
Обратите внимание, что текстовые узлы рядом должны стать едиными после того, как парсер попадает в документ.