Hat die xpath-Abfrage die Option Limit wie mysql?

8

Ich möchte die Anzahl der Ergebnisse begrenzen, die ich von der xpath-Abfrage erhalte.

Zum Beispiel: -

%Vor%

Sie sehen LIMIT 0,100 .

    
Shiva Kumar R 11.04.2012, 14:13
quelle

2 Antworten

7

Sie sollten "//*[firstname='Sheila' and position() <= 100] "

verwenden können

Bearbeiten:

Gegeben das folgende XML:

%Vor%

Sie können den folgenden XPath verwenden, um die ersten drei Städte zu erhalten:

%Vor%

Ergebnisse:

%Vor%

Wenn Sie dies auf Knoten beschränken möchten, die mit element beginnen:

%Vor%

Beachten Sie, dass dieses letzte Beispiel funktioniert, weil Sie all die untergeordneten Knoten von cityList auswählen. In diesem Fall arbeitet Position() so, dass die Ergebnisse wie erwartet begrenzt werden. Wenn sich unter dem Knoten cityList eine Mischung aus anderen Knotennamen befindet, erhalten Sie unerwünschte Ergebnisse.
Ändern Sie beispielsweise das XML wie folgt:

%Vor%

und unter Verwendung des obigen XPath-Ausdrucks erhalten wir jetzt

%Vor%

Beachten Sie, dass wir das zweite und dritte Ergebnis verlieren, weil die position() -Funktion in einer höheren Rangfolge auswertet - genau wie bei der Anfrage "Gib mir die ersten drei Knoten, jetzt von denen gebe ich alle." Knoten, die mit 'element' beginnen ".

    
Geoff 11.04.2012 14:21
quelle
0

Habe selbst in das selbe Problem gelandet und hatte ein Problem mit Geoffs Antwort, da es, wie er klar beschreibt, die Anzahl der zurückgegebenen Elemente beschränkt, bevor es die anderen Teile der Abfrage wegen der Vorrangstellung ausführt.

Meine Lösung besteht darin, die position() < 10 als zusätzliche Bedingung hinzuzufügen, nachdem meine anderen Bedingungen angewendet wurden, z. B .:

%Vor%

Beachten Sie, dass ich zwei separate bedingte Blöcke verwende. Dies wird zuerst Elemente herausfiltern, die meinem Zustand gerecht werden und zweitens nur 10 davon nehmen.

    
Klepto 29.10.2015 10:24
quelle

Tags und Links