XPath find text in any text node

This expression //text() = 'Alliance Consulting' evals to a boolean.

In case of this test sample:

<r>
    <t>Alliance Consulting</t>
    <s>
        <p>Test string
            <f>Alliance Consulting</f>
        </p>
    </s>
    <z>
        Alliance Consulting
        <y>
            Other string
        </y>
    </z>
</r>

It will return true of course.

Expression you need should evaluate to node-set, so use:

//text()[. = 'Alliance Consulting']

E.g. expression:

count(//text()[normalize-space() = 'Alliance Consulting'])

against the above document will return 3.

To select text nodes which contain 'Alliance Consulting' in the whole string value (e.g. 'Alliance Consulting provides great services') use:

//text()[contains(.,'Alliance Consulting')]

Do note that adjacent text nodes should become one after parser gets to the document.

Leave a Comment