2012-02-08 27 views
30

Tôi đang cố gắng chọn phần tử đầu tiên trong tập hợp các nút kết quả sau khi thực hiện truy vấn xpath.nhận nút đầu tiên trong tập kết quả xpath

Khi tôi làm điều này:

//dl 

tôi nhận được kết quả thiết lập sau:

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

Làm thế nào tôi có thể nhận là người đầu tiên? Cả hai tác phẩm này đều không hoạt động:

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

Tôi đang thực hiện điều này trong Trình kiểm tra web của Chrome.

Trả lời

54

Sử dụng như sau:

(//dl)[1] 

Các dấu ngoặc đơn là rất lớn. Bạn muốn nút đầu tiên có kết quả từ //dl (không phải là tập hợp các phần tử dl là con đầu tiên của cha mẹ của chúng (đó là những gì //dl[1] (không có số lần trả về))).

này dễ thấy khi người ta nhận ra rằng // là viết tắt cho (ví dụ: mở rộng đầy đủ để) /descendant-or-self::node()/ để //dl[1] tương đương với:

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

... mà là nhiều hơn rõ ràng không phải những gì bạn muốn. Thay vào đó, bạn đang tìm kiếm:

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

tôi không biết điều đó là có thể. những gì các ví dụ khác là có mà tôi có thể làm với (//dl)? – tipu

Các vấn đề liên quan