如何选择xpath 1.0中的第n项?
我有一些 XML 和一个 XPath 查询。 我正在使用雅虎! 小部件,所以我使用 XPath 1.0。
这是我的 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>
....
现在...如果我运行此查询:
"root/cat/movie/swf"
我得到 42 个结果,所有“swf”节点都是正确的。
但是,如果我只想要第 6 个节点,我希望能够执行以下操作:
"root/cat/movie/swf[6]"
但我得到一个包含 0 个节点的列表。
奇怪的是,使用 [1](没有其他值)会生成所有 42 个节点的列表。
显然我在这里遗漏了一些非常基本的东西。 有人看出它是什么吗?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不知道你的意思是:(
获取第6部电影的swf)
还是:(
找到所有电影/swf元素,并选择第6个)
当每部电影只有一个swf时,两者是相同的; 如果一部电影有零个或多个 swf 元素,则这两个查询略有不同......
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...
引用
"root/cat/movie"
上下文中的每个第 6 个
节点。每个节点只有一个
节点。你的意思是:
refers to each 6th
<swf>
node in"root/cat/movie"
context.You have only one
<swf>
node each.What you mean is: