Как выбрать определенное количество потомков узла, используя xpath? - PullRequest
1 голос
/ 18 апреля 2020

скажем, у меня было следующее 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

Ответы [ 2 ]

0 голосов
/ 19 апреля 2020

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

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

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

0 голосов
/ 18 апреля 2020
//c/descendant::*[position() <= 4]
...