Der erste Ausdruck entspricht jede übergeordnetes Element. Der zweite Ausdruck passt nur, wenn das übergeordnete Element ein item
Element. Das ist der einzige Unterschied. Ich kann mir keine signifikanten Auswirkungen auf die Leistung vorstellen, da beide Knotentests in konstanter Zeit durchgeführt werden können.
Beachten Sie diese Zeile aus der XPath 1.0 Spezifikation :
Jeder Knoten mit Ausnahme des Wurzelknotens hat genau einen übergeordneten Knoten, nämlich entweder ein Elementknoten oder der Wurzelknoten.
In der Praxis bedeutet dies, dass parent::*
passt zu jede außer dem des Root-Elements.
Zur Veranschaulichung ein einfaches Beispiel-Dokument:
<root>
<one/>
<item>
<two/>
</item>
</root>
Dann:
-
//parent::*
erhalten Sie die root
y item
Elemente (jeder übergeordnete Knoten, der ein Element ist)
-
//parent::item
gibt nur die item
Element (das einzige übergeordnete Element, das ein item
)
-
//parent::node()
erhalten Sie das Elternteil von root
(d. h. der Wurzelknoten) sowie die root
y item
Elemente