Как насчет:
//*[contains(@name,'KEYA') or contains(@name2,'KEYA')]
Вы можете взять ответ Cheeso и сделать что-то вроде этого:
/cars/car/@*[contains(.,'KEYA') and local-name() != 'dontmatch']/parent::*
Так или иначе, вам придется построить оператор XPathлибо выбрать из белого списка атрибутов (мой пример), либо исключить атрибуты в черном списке (модифицированный пример Cheeso).
Повторное построение на основе работы Cheeso, это может упростить создание черного списка:
//@*[contains(.,'KEYA') and not(contains('dontmatch,dontmatch2', local-name()))]/parent::*
или в качестве белого списка:
//@*[contains(.,'KEYA') and contains('name,name2', local-name())]/parent::**