2010-02-08 19 views

Trả lời

7

Bạn có thể sử dụng 'và' in cho-mỗi vòng lặp, nhưng không phải theo cách bạn đã đề cập (là không chắc chắn chính xác những gì bạn muốn đạt được)

tôi giả yêu cầu một cái gì đó của bạn như thế nào, hoặc là

1) bạn muốn lặp qua Trip mà cả hai đứa trẻ đơn vị là (instanceresult) không null, Trong trường hợp này bạn phải viết như thế này ..

<xsl:for-each select="trip[instance!='' and result!='']> 

nếu bất kỳ một trong các ví dụ và kết quả là null, sau đó vòng lặp của bạn không nhập các yếu tố cụ thể là, chuyến đi.


2) Bạn muốn tìm kiếm qua từng instanceresult con bên mẹ trip có giá trị là không null. Trong trường hợp này bạn không cần and ..

<xsl:for-each select="trip/instance[.!=''] | trip/result[.!='']"> 

Điều này sẽ hiệu quả.

Bây giờ câu trả lời cho Q của bạn ..
với for-each vòng lặp bạn có thể thiết lập các phạm vi chọn ..
cho-ví dụ: Trong trường hợp (1), phạm vi chọn là "root_name//trip" và trong trường hợp (2) phạm vi chọn là "root_name//trip/instance" cũng "root_name//trip/result" ..

tôi hy vọng, tôi đã hiểu câu hỏi của bạn một cách chính xác và trả lời nó như hiểu ..

6

Không, bạn không thể sử dụng and trong thuộc tính select.

Bạn muốn sử dụng union điều hành: |, mà cư xử giống như một và loại giống như một hay, tùy thuộc vào cách bạn suy nghĩ về nó.

Nó sẽ cung cấp cho bạn một danh sách riêng biệt của cả hai bộ nút và sẽ trả lại chúng theo thứ tự tài liệu mà chúng tìm thấy (không phải tất cả instance và sau đó tất cả các yếu tố result).

<xsl:for-each select="trip/instance[.!=''] | trip/result[.!='']"> 
</xsl:for-each> 

Bên trong for-each ngữ cảnh sẽ chuyển đổi giữa mỗi nút được chọn trong mỗi lần lặp. Bạn có thể truy cập nút hiện tại với . hoặc current().

+0

1 cho giải thích về toán tử UNION .. và cho điểm "QUÁ TRÌNH CÁCH BẠN NGH ABOUT VỀ IT" –

+0

@Mads Hansen: Cảm ơn bạn – Zoheir

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