2012-02-08 11 views
30

Próbuję wybrać pierwszy element w zestawie wynikowych węzłów po wykonaniu zapytania xpath.uzyskiwanie pierwszego węzła w zestawie wyników Xpath

Kiedy to zrobić:

//dl 

otrzymuję następujący zestaw wyników:

[<dl>​…​</dl>​, <dl>​…​</dl>​] 

Jak mogę dostać się pierwszy? Żadna z tych funkcji nie działa:

//dl[1] 
//dl[position()=1] 

Uruchamiam to w internetowym Inspektorze Chrome.

Odpowiedz

54

pomocą następujących:

(//dl)[1] 

Nawiasy są znaczne. Chcesz pierwszego węzła, który wynika z //dl (a nie zestawu elementów dl, które są pierwszymi potomkami ich obiektów nadrzędnych (co oznacza, że ​​zwraca //dl[1] (no parens)).

Jest to łatwiejsze do zauważenia, gdy zdamy sobie sprawę, że // jest skrótem (tj rozszerza pełni) /descendant-or-self::node()/ tak że //dl[1] odpowiada:

/descendant-or-self::node()/dl[1] 

... co jest bardziej oczywiście nie to, co chcesz. Zamiast tego:

(/descendant-or-self::node()/dl)[1] 
+0

Nie wiedziałem, że to możliwe. jakie są inne przykłady, które można zrobić z (// dl)? – tipu

Powiązane problemy