Как получить элемент по части названия атрибута и по значению?
Для получения элемента по части атрибута использую следующий запрос: //*[@*[starts-with(name(), "data-")]]
А как получить элемента и по части названия атрибута и по значению? Например, data-*="123"
//*[@*[starts-with(name(), "data-") and normalize-space(.)="123"]]'
Найдет все элементы у которых есть атрибут, начинающийся на "data-" со значением "123". Значение атрибута мы берем как раз с помощью normalize-space(.).