Ich möchte die Anzahl der Ergebnisse begrenzen, die ich von der xpath-Abfrage erhalte.
Zum Beispiel: -
%Vor% Sie sehen LIMIT 0,100
.
Sie sollten "//*[firstname='Sheila' and position() <= 100]
"
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:
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:
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 ".
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 .:
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.