2017-04-15 5 views
1

문자의 평등을 확인 :XPath는 -/elimiate 중복 제거 및 문자의 위치를 ​​얻을 & I는 다음과 같은 HTML 코드를 일부 XPath 쿼리를 작성하는 요청했다

<catalog> 
<book id="bk101"> 
    <author>Gambardella, Matthew</author> 
    <title>XML Developer's Guide</title> 
    <genre>Computer</genre> 
    <shops> 
    <shop name="Best Books"> 
    <price>44.95</price> 
    </shop> 
    <shop name="Books and More"> 
    <price>48.95</price> 
    </shop> 
    </shops> 
    <publish_date>2000-10-01</publish_date> 
    <description> 
    An in-depth look at creating applications with XML. 
    </description> 
</book> 

..... 10 책 이 스타일

</catalog> 

는 쿼리는 다음과 같습니다

을 수행합니다. 10 달러 미만의 책을 가진 모든 상점을 반환하십시오. 내 검색어 : /catalog/book/shops/shop[price<10]
문제 : 동일한 상점 노드를 1 개 이상 반환하십시오 (동일한 상점 이 10 달러 미만의 가격으로 하나 이상의 책을 판매하기 때문에). questionA : 어떻게 dulpicates를 제거/제거 하시겠습니까?

b. 2000 년 이후에 책을 출판하는 모든 저자를 돌려 내 쿼리 : /catalog/book[publish_date/text()[1]='2']/author 문제 : 나던 작업의 게시 _ 의 첫 번째 문자를 취득하고 2 questionB에 동일 있는지 확인하려고 : 첫 번째를 얻는 방법 문자 노드의 문자를 확인하고 다른 문자에 euqals가 있는지 확인하십시오.

+1

참고로 여기에는 HTML이 없습니다. 이것은 XML입니다. –

답변

1

1)을 선택

/catalog/book/shops/shop[price<10 and not(@name = preceding::shop[price<10]/@name)] 

2) 마이너스 전에 문자열, 숫자로 캐스팅을 가지고 제거하려면 2000 년과 비교 이전과 동일한 name 태그 price 아니 shop 10 미만이되도록 shop 두 배로 1)과 같은 트릭을 사용할 수 있습니다.

/catalog/book[number(substring-before(publish_date,"-")) >= 2000]/author