Как выбрать n-й элемент в xpath 1.0?
У меня есть XML и запрос XPath. Я использую Yahoo! виджеты, поэтому я использую 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 узлов.
Понятно, что у меня что-то совершенно фундаментальное. Кто-нибудь видит, что это такое?
Ответы
Ответ 1
Интересно, имеете ли вы в виду:
"root/cat/movie[6]/swf"
(получает SWF 6-го фильма)
или, альтернативно:
"(root/cat/movie/swf)[6]"
(находит все элементы фильма /swf и выбирает 6-й)
Когда каждый фильм имеет ровно один swf, они одинаковы; если в фильме есть ноль или несколько элементов swf, они два запроса отличаются друг от друга...
Ответ 2
"root/cat/movie/swf[6]"
относится к каждому 6-му <swf>
node в "root/cat/movie"
контексте.
У вас есть только один <swf>
node каждый.
Что вы имеете в виду:
"root/cat/movie[6]/swf"