wake-up-neo.com

XPath: Wie wählt man Knoten ohne Attribute aus?

Wie kann man mit XPath Knoten auswählen, die keine Attribute haben (wobei die Attributzahl = 0 ist)?

Beispielsweise:

<nodes>
    <node attribute1="aaaa"></node>
    <node attribute1="bbbb"></node>
    <node></node> <- FIND THIS
</nodes>
84
Zanoni
//node[not(@*)]

Das ist der XPath, mit dem alle Knoten mit dem Namen "node" im Dokument ohne Attribute ausgewählt werden.

137
48klocs
//node[count(@*)=0]

Wählt alle <Knoten> mit Nullattributen aus

22
erik

Um Marek Czaplickis Kommentar anzusprechen und die Antwort zu erweitern

//node[not(@*) or not(string-length(@*))]

.... wählt alle Knotenelemente mit null Attributen aus OR die Attribute haben, die alle leer sind. Wenn es nur ein bestimmtes Attribut war, an dem Sie interessiert sind, und nicht alle, dann Sie könnte benutzen

//node[not(@attribute1) or not(string-length(@attribute1))]

... und dies würde alle Knotenelemente auswählen, die entweder kein Attribut mit dem Namen attribute1 OR mit einem attribute1 - Attribut haben, das leer ist.

Das heißt, die folgenden Elemente würden durch einen dieser xpath-Ausdrücke ausgewählt

<nodes>
    <node attribute1="aaaa"></node>
    <node attribute1=""></node> <!--This one -->
    <node attribute1="bbbb"></node>
    <node></node> <!--...and this one -->
</nodes>

Siehe jsfiddle Beispiel hier

5
phil