javascript xml xpath yahoo-widgets xpath-1.0

javascript - ¿Cómo seleccionar el elemento nth en xpath 1.0?



xml yahoo-widgets (2)

Tengo algunos XML y una consulta XPath. Estoy usando Yahoo! widgets, así que estoy usando XPath 1.0.

Aquí está la esencia de mi XML ...

<root> <cat num="SOURCE"> <movie> <swf>speak.swf</swf> <width>250</width> <height>150</height> <colour>cccccc</colour> </movie> <movie> <swf>inertia.swf</swf> <width>380</width> <height>130</height> <colour>9a9a9a</colour> </movie> <movie> <swf>swing.swf</swf> <width>380</width> <height>130</height> <colour>9A9A9A</colour> </movie> ....

Ahora ... si ejecuto esta consulta:

"root/cat/movie/swf"

Obtengo 42 resultados, todos los nodos ''swf'' que son correctos.

Sin embargo, si solo quiero la sexta, me gustaría poder hacer:

"root/cat/movie/swf[6]"

Pero me sale una lista que contiene 0 nodos.

Extrañamente, usar [1] (Y ningún otro valor) produce mi lista de los 42 nodos.

Claramente me estoy perdiendo algo bastante fundamental aquí. ¿Alguien ve lo que es?


Me pregunto si quieres decir:

"root/cat/movie[6]/swf"

(Obtiene el swf de la sexta película)

o alternativamente:

"(root/cat/movie/swf)[6]"

(encuentra todos los elementos de la película / swf, y selecciona el 6º)

Cuando cada película tiene exactamente un swf, las dos son iguales; si una película tiene cero o varios elementos swf, las dos consultas son sutilmente diferentes ...


"root/cat/movie/swf[6]"

se refiere a cada sexto nodo <swf> en el contexto "root/cat/movie" .

Solo tiene un nodo <swf> cada uno.

Lo que quieres decir es:

"root/cat/movie[6]/swf"