2010-03-12 2 views
1

Как найти элементы, имеющие хотя бы один атрибут?XPath для поиска элементов с атрибутами

Пример:

<tr>...</tr> 
<tr style="">...</tr> 
<tr width="">...</tr> 

Я хочу, чтобы все элементы TR, но ...

Я попытался следующие, но XPath не работает.

//table//tr[contains(attributes::*,'')] 

Благодаря

+0

XPather может помочь: http://xpath.alephzarro.com/ – ANeves

ответ

3

Это должно сделать это:

//table/tr[@*] 

Причина, почему ваш не работает, потому что это всегда возвращает истину, если второй параметр ''. Когда выражение возвращает узел, заключенный в квадратные скобки, считается истинным, если он не пуст, false, если он пуст. Таким образом, [@*] вернет набор всех атрибутов и будет интерпретироваться как истинный, если есть какой-либо подарок.

+0

Нет, он возвращает все строки. Я считаю, что все строки будут содержать ''. Вот почему он возвращает все tr-узлы. – priyank

+0

@priyank: Я просто дал ему тест в интерпретаторе XSLT Visual Studio, и мой пример работает так, как ожидалось. – Welbog

+0

@priyank: Это, конечно, не то же самое. Используйте XPather и проверьте эту страницу, используя '// div' и' // div [@ *] '- они дают другое количество элементов. – ANeves

Смежные вопросы