2012-03-30 14 views
3

用語がわからないので、リードを見つける際に問題があります。
は基本的に私はxpath特定の要素を含む項目をフィルタリングする

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

のようなものを持っていると私は、ジャンルの一つとして「サイファイ」を持っていない書籍のリストを照会するとします。 私はそれが「サイファイ」の値を持つジャンルの要素を持っていないが、それはまだの1ので、最初のものを返すの本のすべてを返しますという考えを持つ単純なもののような

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

を試してみましたそのジャンルは「SF」ではありません

また、私の話していることを人々がどのように考えているのでしょうか?

答えて

7

角括弧の用語は述語です。あなたは、 "sci-fi"のテキストを持つgenreという子要素を持たない本の要素を探しています。これは、SF以外のジャンルの1つ以上の書籍すべてに一致します。

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

以下は、あなたがやりたいことになります。

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

をそして、あなたはそのの最後に追加のパスを追加することができますので、あなたの本はtitle要素を持っていた場合は、すべてを得ることができることに注意してください

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

一見、それらは論理的に同じことを意味するように見えます。なぜそれは「うまくいきませんか」!=そうではないのですか? – MxyL

+1

'[ジャンル= =" sci-fi "]は、少なくとも1つのジャンルがSF以外のものと一致するものを意味します。 '[not(genre = 'sci-fi')] 'は、少なくとも1つのジャンルがsci-fiと等しいものと一致しないことを意味します。 – Dave

+0

ああ、私は今それを得る。ありがとう。 – MxyL

関連する問題