XPath: Как выбрать узлы, которые не имеют атрибутов?
Использование XPath, как выбрать узлы, у которых нет атрибутов (где атрибут count = 0)?
Например:
<nodes>
<node attribute1="aaaa"></node>
<node attribute1="bbbb"></node>
<node></node> <- FIND THIS
</nodes>
Ответ 1
//node[not(@*)]
Чтобы XPath выбрал все узлы с именем "node" в документе без каких-либо атрибутов.
Ответ 2
//node[count(@*)=0]
Выберет все <node> с нулевыми атрибутами
Ответ 3
По адресу Марек Чаплицкий комментируйте и расширяйте ответ
//node[not(@*) or not(string-length(@*))]
.... выберет все элементы узла с нулевыми атрибутами ИЛИ с атрибутами, которые все пусты. Если бы это был только определенный интересующий вас атрибут, а не все из них, то вы могли бы использовать
//node[not(@attribute1) or not(string-length(@attribute1))]
... и это выберет все элементы узла, которые либо не имеют атрибута с именем attribute1 ИЛИ, которые имеют attribute1 attribute1, который является пустым.
То есть следующие элементы будут выбраны любым из этих выражений xpath
<nodes>
<node attribute1="aaaa"></node>
<node attribute1=""></node> <!--This one -->
<node attribute1="bbbb"></node>
<node></node> <!--...and this one -->
</nodes>