2010-11-23 5 views
10

Étant donnée une quantité de nœuds arbitraires pour sélectionner:tous les autres noeuds uing XPATH

<root> 
    <foo>1</foo> 
    <foo>2</foo> 
    <foo>3</foo> 
    <foo>4</foo> 
    <!-- ... --> 
<root> 

Comment sélectionner tous les foo pour que je sois foo [1], foo [3], ...?

Répondre

20

Essayez

/root/foo[position() mod 2 = 1] 

Aucune idée si cela fonctionnera bien, peut-être besoin 0. J'oublie si la position commence à 0 ou 1

+0

qui est plus susceptible d'être sur la bonne voie. Je regardais la référence http://www.w3schools.com/xpath/xpath_operators.asp ici et j'essayais de voir ça. Faites-nous savoir quand vous avez trouvé la bonne réponse! –

+5

La position de position XPath() commence à 1, donc vous avez raison. – yonran

+0

+1 Bonne réponse. –

0

poste() retourne un nombre qui indique la position d'un élément par rapport aux autres éléments enfants. La fonction mod renvoie le "reste" d'une division: 5 mod 2 = 1; 6 mod 2 = 0; 9 mod 2 = 1; 10 mod 2 = 0;

voir aussi: https://en.wiktionary.org/wiki/modulo

Questions connexes