XPath: Wie wählt man folgende Geschwister bis zu einem bestimmten Geschwister aus?

8

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:

    
user3674248 25.05.2014, 23:21
quelle

3 Antworten

4

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:

%Vor%

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:

%Vor%

Um die zwei Elemente zwischen dem zweiten <a class="A"/> und dem dritten <a class="A"/> zu erhalten:

%Vor%

Im Englischen heißt das:

  

Geben Sie mir alle a -Elemente mit einem class -Attribut, dessen Wert gleich B ist, die nach dem zweiten a mit einem Klassenattribut gleich A kommen und die nur zwei vorangehende Geschwister haben mit einem class Attribut gleich A

Ä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:

%Vor%     
Wayne Burkett 26.05.2014 03:24
quelle
1

Sie können diesen Weg versuchen:

%Vor%

Oberhalb von XPath werden alle <a class='B'> -Elemente zwischen den beiden <a class='A'> -Elementen ausgewählt.

    
har07 26.05.2014 00:56
quelle
-1

versuchen Sie es so:

%Vor%     
Joel M. Lamsen 26.05.2014 03:44
quelle

Tags und Links