2012-09-04 6 views
0

가 친절하게 난 후 링크를 ​​추출 할 지금xquery-는

<div class="patent_bibdata"> 
    <b> First list</b> 
    <a href="1"> Name #1</a> 
    <a href="2"> Name #2</a> 
    <b> Second list</b> 
    <a href="1"> Name #2_1</a> 
    <a href="2"> Name #2_2</a> 
</div> 

below-- 샘플에서 살펴 노드 'b'요소에 텍스트가 "First List"인 경우 - 그러나 "b"요소 다음에 "Second list"라는 텍스트가있는 링크를 원하지 않습니다 - "First List"가 나에게 알려지지 않은 후에 링크 수 . 내가 생각 무엇

는 이제 2 '의 B'tags--에서 텍스트 만 (즉, '이름 # 1'과 '이름 # 2'에서이 항아리

....XQuery code defining the document as variable named "doc" 
let $list:= $doc/div[ @class="patent_bibdata"]/b[. = 'First list']/following-sibling::text() -- but this should get everything after 'First list'-- including 'Second List' and 'Name #2_1' and 'Name #2_2' 

같은 것입니다 우리의 예)는 나에게 알려져있다. 그래서 나는 어떻게 든 조건들을 놓고 그 링크들을 즉각적으로 전임자 형제와 즉각적으로 후계자 형제들에게 조건을 부여해야한다. 그 조건을 넣으라는 명령이 있습니까 (지금까지 내가 그렇다면)? 그리고 내가 옳지 않다면 어떻게 그 링크를 얻는가?

답변

0

이 작동 :

$doc/div[ @class="patent_bibdata"]/b[. = ' First list']/following-sibling::a[not(preceding-sibling::b[. = ' Second list'])] 

먼저 XQuery에 대한 기본적인 이해를 얻을하는 것이 좋습니다 수 있습니다 당신은 XQuery에 대해 오늘 질문이 아니라 기본적인 질문의 양을 고려. 거기에 몇 가지 아주 좋은 책들이 있는데, 특히 프리실라 왈 즐리 (Priscilla Walmsley)의 책을 좋아합니다.

+0

@ dirkk-- following-sibling :: 뒤 따르는 컨텍스트 노드의 모든 형제. preceding-sibling :: 앞에 오는 컨텍스트 노드의 모든 형제. 그러면 주어진 코드에서 위의 '첫 번째 목록'의 다음 형제는 앞의 두 번째 목록의 형제와 동일하지 않습니까? 나는 여기서 약간 혼란 스럽다. – Arvind

+0

당신의 질문을 정확하게 이해했다면, 두 태그 ' Name #1 Name #2'을 추출하고 싶다. 따라서 첫 번째 b 노드 다음에 오는 두 번째 b 노드가없는 선행 형제로 모든 노드를 찾습니다 ([]는 XQuery의 술어 구문 임). 또한 코드를 즉시 이해하지 못하더라도 적어도 자신을 실행하고 코드가 무엇인지 알아 내려고 노력하십시오. 이 경우 단순히 일부 술어를 제거하고 출력을 보면 쉽게 수행 할 수 있습니다. – dirkk

관련 문제