Ich habe folgende xml:Vorfahren-or-self
<?xml version="1.0" encoding="utf-8" ?>
<ROLES>
<ROLE type="A">
<USER name="w" />
<USER name="x" />
<ROLE type="B">
<USER name="x" />
<USER name="y" />
</ROLE>
<ROLE type="C">
<USER name="x" />
<USER name="y" />
<USER name="z" />
</ROLE>
</ROLE>
<ROLE type ="D">
<USER name="w" />
</ROLE>
</ROLES>
und ich möchte alle USER-Knoten mit name="x"
finden und welche unmittelbaren Kinder ROLLE Knoten mit dem Attribut „type“ gleich „C“ und ihre Vorfahren mit name="x"
(wahrscheinlich mit Vorfahren-oder-Selbst-Achse). In diesem Fall sollte der Knotensatz zwei Knoten enthalten (nicht drei, da das Auftreten von x unter B nicht zählen soll).
Was ist der korrekte XPath-Ausdruck, der es tun würde? Warum funktioniert der folgende Ausdruck nicht?
/ROLES//ROLE[@type='C']/USER[@name='x']/ancestor-or-self::USER[@name='x']
(dies nur ein Knoten zurückkehrt, wahrscheinlich die Selbst Achse und nicht die Vorfahren)
Jede Hilfe am meisten geschätzt wird.
Ihre Beschreibung, was Sie wollen, stimmt nicht mit Ihrem XML überein. Aus Ihrer Beschreibung sollten Sie nur einen USER-Knoten erhalten, da das Vorkommen von x unter A und B nicht zählt (Beachten Sie, dass x unter A * nicht * auf der Vorfahrenachse ist, es ist nur ein Geschwister eines Vorfahrenknotens). Könnten Sie das klären? –