web-dev-qa-db-fra.com

Quel est le XPath pour sélectionner une gamme de nœuds?

J'ai un fichier XML qui est structuré comme ceci:

 <foo>
     <bar></bar>
     <bar></bar>
     ...
</foo>

Je ne sais pas comment saisir une gamme de nœuds. Quelqu'un pourrait-il me donner un exemple d'expression xpath qui attrape les nœuds de barres 100-200?

38
Shawn

tiliser:

/*/bar[position() >= 100 and not(position() > 200)]

NOTE:

  1. Exactement les éléments bar éléments à la position de 100 à 200 (inclus) sont sélectionnés.

  2. L'évaluation de ces expressions XPath peut être plusieurs fois plus rapide qu'une expression utilisant le // Abréviation, car ce dernier provoque une analyse complète de l'arbre dont la racine est le nœud de contexte. essaie toujours d'éviter d'utiliser le // Abréviation Dans les cas où cela est possible.

70
Dimitre Novatchev
//foo/bar[100 <= position() and position() < 200]
10
kennytm

N'est pas fn:subsequence la meilleure voie?

subsequence( /foo/bar, 100, 101 )

renvoie tous les éléments de la position 100 à 200, soit 101 éléments (ou moins si la séquence source est plus courte).

8
CiaPan