Für das folgende HTML-Beispiel kann eine XPath-Abfrage, die die Geschwister der "a" -Elemente mit class = 'A' zurückgibt, die class = 'B' haben, wie folgt geschrieben werden: //a[@class='A']/following-sibling::a[@class='B']
. Diese Abfrage gibt 4 <a class="B"/>
-Elemente aus.
Ich möchte jedoch nur die <a class="B"/>
-Elemente, die dem aktuellen <a class="A"/>
-Element folgen, und keine anderen, die anderen <a class="B"/>
-Elementen / -Knoten folgen. Mit anderen Worten, ich möchte nur die folgenden <a class="B"/>
Geschwisterelemente, bis das nächste <a class="B"/>
Element auftaucht.
Beispiel HTML:
%Vor%Ideen, wie ich meine aktuelle XPath-Abfrage auf genau diese Geschwister beschränken kann, wären sehr willkommen:
Um alle a
Elemente mit einem class
Attribut von B
zwischen einigen spezifischen a
mit einem class
gleich A
und dem nächsten solchen Vorkommen auszuwählen:
Dies wählt alles zwischen dem n-ten a[@class='A']
und dem nächsten solchen Element aus. Betrachten Sie für ein bestimmtes Beispiel die folgende Eingabe:
Um die zwei Elemente zwischen dem zweiten <a class="A"/>
und dem dritten <a class="A"/>
zu erhalten:
Im Englischen heißt das:
Geben Sie mir alle
a
-Elemente mit einemclass
-Attribut, dessen Wert gleichB
ist, die nach dem zweitena
mit einem Klassenattribut gleichA
kommen und die nur zwei vorangehende Geschwister haben mit einemclass
Attribut gleichA
Ähnlich und allgemeiner können wir die Kayessian-Methode anwenden, um die Schnittmenge zweier Knotenmengen zu finden. Im Beispiel wollen wir den Schnittpunkt aller @class='B'
Elemente in 1) der Menge der Geschwister nach der zweiten <a class="A"/>
und 2) der Menge der Geschwister vor der dritten <a class="A"/>
. Der Schnittpunkt dieser beiden Mengen ist genau der Knoten, der zwischen diesen beiden Teilerelementen liegt und wie folgt ausgedrückt werden kann: