XPATH соответствует функциональной проблеме - работает, но не работает - PullRequest
2 голосов
/ 25 июля 2011

Я использую 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 и проанализировать их с помощью строковых функций. КОНЕЧНЫЙ РЕЗУЛЬТАТ ДОЛЖЕН СМОТРЕТЬ, КАК ЭТО:

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

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

1 Ответ

1 голос
/ 27 июля 2011

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

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

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

или этот XPath:

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