2012-03-30 93 views
3

XPath過濾項目我不知道所以我有一些麻煩,找到線索的術語。
基本上假設我有類似與特定元素

<book> 
    <genre>sci-fi</genre> 
    <genre>happy</genre> 
</book> 
<book> 
    <genre>romance</genre> 
</book> 

我想查詢的不具有「科幻」爲體裁的一個書單。 我嘗試一些簡單的像

//book[//book/genre != "sci-fi"] 

的想法,這將返回所有的不具有「科幻」值類型元素的書籍,但它仍然會返回第一個原因之一它的風格是不是「科幻」

此外,我將如何短語的方式,人都會有一個想法是什麼我談論這個問題?

回答

7

爲方括號的術語是謂詞。您正在尋找不具有所謂的流派與「科幻」的文本子元素書的元素。這一套將至少與一種不是科幻的流派相匹配。

//book[genre != "sci-fi"] 

下面將做你想要什麼:

//book[not(genre = 'sci-fi')] 

而且注意,您可以再添加其他路徑的是結束,所以如果你的書有一個title元素,你可以得到所有的標題與:

//book[not(genre = 'sci-fi')]/title 
+0

乍一看,他們似乎在邏輯上意味着同樣的事情。爲什麼這個「不」在工作時=!不? – MxyL 2012-03-30 20:29:53

+1

'[流派!=「科幻」]'表示「匹配的那些具有至少一個流派這是不科幻」。 '[否(流派=「科幻」)]'表示「不匹配那些確實具有至少一個流派等於科幻」。 – Dave 2012-03-30 20:32:49

+0

哦,我現在明白了。謝謝。 – MxyL 2012-03-30 20:35:13