2010-03-08 29 views

Trả lời

88

Khá đơn giản:

//tr[not(@id) and not(@class)] 

Điều đó sẽ cung cấp cho bạn tất cả các yếu tố tr thiếu cả idclass thuộc tính. Nếu bạn muốn tất cả tr yếu tố thiếu một trong hai, sử dụng or thay vì and:

//tr[not(@id) or not(@class)] 

Khi các thuộc tính và các yếu tố được sử dụng theo cách này, nếu thuộc tính hoặc yếu tố có giá trị nó được xử lý như thể đó là sự thật . Nếu nó bị thiếu, nó được coi như là sai.

+0

Làm việc 'hoặc' ví dụ. Kể từ khi một tiêu cực chống lại? –

6

Bạn có thể thử //tr[not(@id)]?

-2
if (elm.hasAttribute('id')) { 
    //if id - implement here 
       } else if (elm.hasAttribute('class')) { 
        //if class - implement here 
       } else { 
        for (i = 1, sib = elm.previousSibling; sib; sib = sib.previousSibling) { 
         if (sib.localName == elm.localName) i++; }; 
         segs.unshift(elm.localName.toLowerCase() + '[' + i + ']'); 
       } 
6

Nếu bạn đang tìm kiếm một yếu tố mà lớp a nhưng không có lớp b, bạn có thể làm như sau.

//*[contains(@class, 'a') and not(contains(@class, 'b'))]

Hoặc nếu bạn muốn chắc chắn không phù hợp với một phần.

//*[contains(concat(' ', normalize-space(@class), ' '), ' some-class ') and not(contains(concat(' ', normalize-space(@class), ' '), ' another-class '))]

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