Подтвердить что ты не робот

XPath: Как выбрать узлы, которые не имеют атрибутов?

Использование XPath, как выбрать узлы, у которых нет атрибутов (где атрибут count = 0)?

Например:

<nodes>
    <node attribute1="aaaa"></node>
    <node attribute1="bbbb"></node>
    <node></node> <- FIND THIS
</nodes>
4b9b3361

Ответ 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>

Смотрите пример jsfiddle здесь