2011-04-28 22 views

Respuesta

51

Esta es una pregunta frecuente.

En XPath, el operador [] tiene una precedencia más alta (se une más fuerte) que el pseudooperador //.

Debido a esto, la expresión:

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

selecciona todos los elementos cuya divclass atributo es la "prueba" y que (los elementos div) son la segunda tales div hijo de su padre. Esto no es lo que quieres.

Uso:

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

Creo que por especificación XML, no se considera que los atributos tengan un orden.
Note that the order of attribute specifications in a start-tag or empty-element tag is not significant.
Ver here Creo que sería mejor volver a factorizar la estructura de modo que el orden de los atributos no describa nada. Si puede dar más detalles, podremos ofrecer sugerencias.

EDITAR: Al volver a leer su publicación, parece que está tratando de encontrar el orden de los nodos y no el orden de los atributos. Se permite el orden de nodo y su sintaxis se ve bien de mano a mano. ¿En qué software estás haciendo esto?

+0

Fue mi culpa - analizador se escondieron las etiquetas. He agregado el formateo adecuado. Uso PHP DOM extensión http://ua.php.net/manual/en/book.dom.php y parece que esta extensión proporciona implementación débil de XPath – HongKilDong

+1

¿Has intentado '// div [@ class = ' test '] [position() = 2] ' –

Cuestiones relacionadas