2012-03-30 2 views
3

용어에 대해 확실하지 않아서 리드를 찾는 데 문제가 있습니다.
기본적으로 내가특정 요소가있는 xpath 필터링 항목

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

같은 있다고 가정 그리고 장르의 하나로서 "공상 과학"을하지 않아도 책의 목록을 조회 할. 나는 그것이 "공상 과학"값과 장르 요소가없는 모든 책을 반환한다는 생각으로 간단한 일처럼

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

을 시도,하지만 여전히 하나 때문에 첫 번째를 반환 그것의 장르는 "공상 과학"이 아닙니다.

또한 사람들이 내가 말하는 것에 대해 어떻게 생각하는지이 질문을 어떻게 표현할 수 있습니까?

답변

7

대괄호에 대한 용어는 술어입니다. 당신은 "sci-fi"텍스트를 가진 장르라는 자식 요소가없는 책의 요소를 찾고 있습니다. 이 책은 공상 과학 소설이 아닌 장르가 적어도 하나있는 모든 도서를 검색합니다.

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

을 그리고 당신의 책은 당신이 모두를 얻을 수있는 title 요소를 가지고, 그래서 만약 당신이 다음, 그 끝에 추가 경로를 추가 할 수 있습니다 :

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

다음은 당신이 원하는 것을 할 것입니다 제목은 다음과 같습니다 :

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

언뜻보기에 그들은 논리적으로 같은 것을 의미합니다. 왜 그럴 때 "안된다"는 것인가! = 그렇지 않습니까? – MxyL

+1

'[genre! = "sci-fi"] '는 적어도 하나의 장르가 공상 과학 소설이 아닌 것을 의미합니다. ''(장르 = '공상 과학적') ''은 적어도 하나의 장르가 공상 과학 영화와 일치하지 않는 것을 의미합니다. – Dave

+0

오, 이제 알겠습니다. 감사. – MxyL

관련 문제