Что такое XPath, чтобы найти только ОДИН узел (какой бы ни), имеющий определенный атрибут (на самом деле меня интересует атрибут, а не узел). Например, в моем XML у меня есть несколько тегов, имеющих атрибут lang. Я знаю, что все они должны иметь одинаковую ценность. Я просто хочу получить любой из них.
Сейчас я делаю это: //*[1][@lang]/@lang
, но, похоже, он не работает должным образом по неизвестной причине.
Мои попытки привели меня к вещам, начиная от объединения всех значений @lang ('en en en en ...') и заканчивая ничем, иногда между тем, что я хочу, но не во всем XML.
РЕДАКТИРОВАТЬ:
На самом деле //@lang[1]
не может работать, потому что функция position()
вызывается перед проверкой на наличие атрибута lang
. Так что всегда требуется самый первый элемент, найденный в XML. Он работал лучше всего в то время, потому что много-много раз атрибут lang находился в корневом элементе.