В «Content» вы устанавливаете «loop XPath» на /bookstore/book
, так что в итоге вы получите цикл над (в этом примере) двумя элементами - одним, который вы хотите, и другим.
В «Полях» вы обычно настраиваете поля данных, которые будут извлекаться из каждого из этих элементов. Поэтому XPath здесь должен быть относительным.
Но вы использовали //book[@name = '1.1']/price
, что является абсолютным путем. Он выбирает три элемента, из которых Pentaho может взять только первый, чтобы заполнить поле. Вот почему вы получаете 29.99
два раза.
Что делать? Это всегда один и тот же подход.
Чтобы получить общую информацию по всем книгам:
- Выберите нужные элементы в части «петля»:
//book
- Выберите значения поля, используя относительные пути:
./price[1]
и, возможно, ./title
Чтобы получить общую информацию об одной конкретной книге:
- Выберите нужный элемент в части «петля»:
//book[@name = '1.1']
- Выберите значения поля, используя относительные пути:
./price[1]
и, вероятно, ./title
Чтобы узнать цены одной конкретной книги:
- Выберите нужные элементы в части «петля»:
//book[@name = '1.1']/price
- Выберите значения поля, используя относительные пути:
./text()
(или просто .
)