I have some XML and an XPath query. I’m using Yahoo! widgets, so I’m using XPath 1.0.
Here’s the gist of my 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> ....
Now… if I run this query:
'root/cat/movie/swf'
I get 42 results, all ‘swf’ nodes which is correct.
If however, I just want the 6th one, I’d like to be able to do:
'root/cat/movie/swf[6]'
But I get a list containing 0 nodes.
Weirdly, using [1] (And no other value) yields my list of all 42 nodes.
Clearly I’m missing something quite fundamental here. Anyone see what it is?
I wonder if you mean:
(gets the swf of the 6th movie)
or alternatively:
(finds all the movie/swf elements, and selects the 6th)
When each movie has exactly one swf, the two are the same; if a movie has zero or multiple swf elements, they the two queries are subtly different…