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

Ian*_*ood 11 xml xpath position

再次xml ..

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

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

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

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

我确定我是一个菜鸟,并且已经做过这个,但周五......

偷看

Chr*_*lls 27

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

//parent/child[sex='male'][position() >= 10 and position() < 21]
Run Code Online (Sandbox Code Playgroud)


Dim*_*hev 5

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

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

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

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

错误的 ...

//parent/child
           [sex = 'male'
          and 
           position() >= 10
          and 
           position() < 21
           ] 
Run Code Online (Sandbox Code Playgroud)

选择具有sting值的子项并且是其父项的第10个到第20 个子项之一的所有child元素(parentXML文档中的任何元素).sex"male"child

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

你想要的是:

  1. 选择具有带有sting值的子项的所有child元素(parentXML文档中的任何元素)sex"male"

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

所以,对于第1步:

//parent/child[sex = 'male']
Run Code Online (Sandbox Code Playgroud)

并添加第2步:

//parent/child[sex = 'male']
                [position() >= 10
               and 
                not(position() > 20
                ]
Run Code Online (Sandbox Code Playgroud)