Проблема соответствия функции XPATH работает, но не работает

Я использую Eclipse для запуска XSL 2.0 (XPATH 2.0), и у меня есть следующий источник:

<testTop>
    <Level1 id="abc" Text="from 1-2"/>
    <Level1 id="pqr" Text="from 3-44" />
    <Level1 id="xyz" Text="from 49-101" />
</testTop>

Когда я тестирую следующее выражение в Eclipse, //*[matches(@Text, '\d+-\d+')] я получаю правильные узлы, но не сами атрибуты Text

Level1 ID=abc
Level1 ID=pqr
Level1 ID=xyz

... тогда как //@Text дает мне атрибуты Text. Может ли кто-нибудь помочь мне понять, почему ?? Я хотел бы получить значения атрибута Text и проанализировать их с помощью строковых функций. КОНЕЧНЫЙ РЕЗУЛЬТАТ ДОЛЖЕН БЫТЬ ТАКИМ:

<output originalText="from 1-2" value1="1" value2="2" />

Разве я не должен получать все атрибуты, которые являются частью каждого совпадающего узла?


person R Nem    schedule 25.07.2011    source источник


Ответы (1)


Ваш XPath выбирает элементы с нужными вам атрибутами. Если вы хотите выбрать @Text, соответствующий вашему шаблону, вам нужно настроить свой XPath, чтобы выбрать атрибуты, а не элемент.

Вы можете использовать этот XPath:

//*[matches(@Text, '\d+-\d+')]/@Text

или этот XPath:

//*/@Text[matches(., '\d+-\d+')]
person Mads Hansen    schedule 27.07.2011