XPath: comment sélectionner un noeud avec un attribut par index?

j'ai plusieurs noeuds avec un attribut particulier et j'ai besoin d'en choisir un par index. Par exemple, je dois sélectionner second <div> avec "test" de la classe //div[@class='test'][2] ne fonctionne pas.

y a-t-il un moyen de sélectionner un noeud avec un attribut par index ? Comment faire?

22
demandé sur HongKilDong 2011-04-28 16:36:35

2 réponses

C'est une FAQ.

Dans XPath [] l'opérateur a une priorité plus élevée( se lie plus fort) que le // pseudo-opérateur.

A cause de cela, l'expression:

//div[@class='test'][2]

sélectionne tous les div éléments dont l' class l'attribut est "test", et qui (le div elements) sont les deuxièmesdiv enfant de leurs parents. Ce n'est pas ce que vous voulez.

Utiliser:

(//div[@class='test'])[2]
54
répondu Dimitre Novatchev 2011-04-28 12:57:37

je crois que selon la spécification XML, les attributs ne sont pas considérés comme ayant une commande.

Note that the order of attribute specifications in a start-tag or empty-element tag is not significant.

Voir ici Je pense que vous feriez mieux de reformuler votre structure de sorte que l'ordre des attributs ne décrive rien. Si vous pouvez donner plus de détails, nous pourrions vous faire des suggestions.

EDIT: en relisant ton post, on dirait que vous essayez de trouver le nœud ordonnance et pas d'attribut de l'ordre. L'ordre des noeuds est autorisé et votre syntaxe semble OK de la main gauche. Dans quel logiciel tu fais ça?

2
répondu Matt Molnar 2011-04-28 12:41:25