xpath - 获取所选集合的前10项

时间:2011-01-21 14:10:47

标签: xml xpath position

再次xml ..

我想从一个集合中选择一组子节点(用于分页)。

$nodes = $xml->query(//parent
                        /child[sex = 'male' 
                               and position() >= 10 
                               and position() < 21]);

如果我没有记错的话,那就是选择第10到第20个孩子的男孩。

我需要的是选择集合中的前10-20(或30-40)个男性......

确定我是一个菜鸟,并且在此之前做了这个,但周五......

ta peeps

2 个答案:

答案 0 :(得分:26)

让位置条件对初始条件的结果节点集进行操作:

//parent/child[sex='male'][position() >= 10 and position() < 21]

答案 1 :(得分:5)

  

我想选择一组子节点(   用于分页目的)。

$nodes = $xml->query(//parent
                         /child[sex = 'male'
                                 and position() >= 10
                                 and position() < 21]); 
     

如果我没有错,那只会   选择第10名的男孩   到了第20个孩子。

     

我需要的是选择第一个   集合中有10-20(或30-40)名男性......

错误 ......

//parent/child
           [sex = 'male'
          and 
           position() >= 10
          and 
           position() < 21
           ] 

选择child元素(XML文档中的任何parent元素)的所有sex元素,其中"male"子元素的值为child,且是第10个元素之一他们父母的第二个child孩子。

可能只有少数甚至没有这样的元素。

你想要的是

  1. 选择parent元素(XML文档中任何sex元素)的所有"male"元素,其中//parent/child[sex = 'male'] 子项的值为//parent/child[sex = 'male'] [position() >= 10 and not(position() > 20 ]

    < / LI>
  2. 从上面步骤1中选择的那些中选择仅位于10到20位的那些

  3. 所以,对于第1步

    {{1}}

    并添加第2步

    {{1}}