Это выражение //text() = 'Alliance Consulting'
превращается в логическое значение.
В случае этого тестового образца:
<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
.
Выражение, которое вам нужно вычислить для набора узлов, поэтому используйте:
//text()[. = 'Alliance Consulting']
Например, выражение:
count(//text()[normalize-space() = 'Alliance Consulting'])
против вышеуказанного документа вернет 3
.
Чтобы выбрать текстовые узлы, которые содержат 'Alliance Consulting'
во всем строковом значении (например, 'Alliance Consulting provides great services'
), используйте:
//text()[contains(.,'Alliance Consulting')]
Обратите внимание, что смежные текстовые узлы должны стать единицами после того, как синтаксический анализатор доберется додокумент.