Обратите внимание, что \u00a0
работает, потому что ваше выражение XPath встроено в некоторый хост-язык (например, Java или Javascript), который распознает escape-последовательность uNNNN
- это преобразуется в символ NBSP с помощью содержащего язык хоста, а не сам XPath. Если бы XPath был встроен в XML (например, в XSLT или XSD), вы бы использовали  
вместо \u00a0
.
Нет специального способа обработки NBSP в XPath, но вы могли бы перевести эти символы для регулярных пробелов с помощью translate ():
//b[translate(text(), '\u00a0', ' ') = 'WordA WordB WordC']
Обратите также внимание, что в таких выражениях обычно лучше использовать .
вместо text()
для доступа к строковому значению элемента. Это более устойчиво к вариациям, которые могут возникнуть, например, одно из слов, выделенных курсивом, или слова, разделенные комментариями.