Вопрос (ы):
Может ли выражение XPath 1.0 возвращать только имена узлов xml (квалифицированных или нет), а не весь узел? XPath 2.0 способен на то же самое?
Деталь:
Я профилирую серию правильно сформированных XML-документов для использования узлов XML-элементов (т. Е. Получаю совокупное число XML-узлов в нескольких XML-документах). У меня есть Perl-скрипт, который получает желаемый набор узлов каждого документа, а затем выполняет итерацию по каждому узлу, чтобы получить количество имен узлов, используя XML :: XPath :: Node :: Element-> getName. У меня есть альтернативная реализация, которая профилирует атрибуты узла xml и текстовые значения, но использует оператор XPath для извлечения «атомарных значений» (в отличие от использования XML :: XPath :: Node :: Element-> getAttribute () или аналогичного в perl ).
[Обратите внимание, что я понимаю, что «атомарные значения» на самом деле являются наборами атрибутов / текстовых узлов.]
Я испытываю 50-кратное улучшение производительности, когда выражение XPath позволяет возвращать нужные «атомарные значения», а не циклически повторять результаты в perl, поэтому я хотел бы получать имена узлов xml способом, аналогичным атрибуту ( то есть 'attribute :: ' или '@ ') и текстовые (то есть 'text ()') узлы. Я просмотрел спецификации XPath и XML, но не смог найти решение.
edit: Если быть более точным, я ищу что-то вроде 'local-name(//*)'
, но что-то, что возвращает набор имен для всех соответствующих узлов (в отличие от только первого найденного узла).