Скажем, у меня был следующий XML:

<a>
   <b>
      <c>
         <d />
         <e />
      </c>
   </b>
   <g>
      <b>
         <h />
         <f />
      </b>
   </g>

Если я хочу выбрать всех потомков узла 'b', я могу использовать следующий запрос xpath:

//b//*

Или используя оси:

//b/descendant::*

Но я хочу выбрать только 4 потомка узла 'b', кто-нибудь знает, как это сделать, пожалуйста?

PS: я использую xpath 1.0

1
amani 18 Апр 2020 в 22:08

2 ответа

Это улажено! Я просто должен использовать круглые скобки, как это:

(//b/descendant::*)[position()<=4]

Потому что без них часть [position () <= 4] будет применена к позиции элемента-потомка в его родительском элементе, а не к его позиции в наборе узлов результата.

0
amani 19 Апр 2020 в 18:47
//c/descendant::*[position() <= 4]
0
Slkrasnodar 18 Апр 2020 в 20:06