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"