2012-04-07 5 views
29

다음과 같은 매우 간단한 예제를 고려하십시오.지정한 노드를 찾은 후 형제 노드 찾기

<n></n> 
<k></k> 
<m></m> 
<k></k> 

내가 m 노드 후 첫 k 형제는 어떻게 검색 할 수 있습니까? 기본적으로 일부 노드를 찾은 다음 해당 노드에서 검색을 계속합니다.

+1

@Neil과 그 의견의 답변이 사라진 이유는 무엇입니까? –

답변

57

내가 m 노드 후 첫 k 형제는 어떻게 검색 할 수 있습니까? 기본적으로 일부 노드를 찾은 다음 해당 노드에서 검색을 계속하십시오.

<t> 
    <n></n> 
    <k></k> 
    <m></m> 
    <k></k> 
</t> 

다음 XPath 식 :

/*/m[1]/following-sibling::k[1] 

이 첫 번째의 첫 번째 k 다음-형제를 선택

우리는 다음과 같은 XML 문서를 가지고 있다고 가정 m XML 문서의 맨 위 요소 하위 항목입니다.

+0

너무 복잡합니다. –

+0

사실, 어제 투표를 취소하고 싶었지만 사이트에서 24 분이 지나서야 너무 늦었다 고 말했습니다. 인생이 다 그렇지. –

4

좋은 질문 : 그것을 시도 ........

<a> 
<n></n> 
<k></k> 
<m></m> 
<k></k> <==== 
<k></k> 
<m></m> 
<k></k> 
</a> 


    /a/k[. = preceding::m][1] 
+0

이 대답은 흥미 롭습니다.하지만 ** 처음의 "m"부터 ** k 다음에 "k"가 시작됩니다. ** 현재 노드 **가 아닙니다. –

+0

또한,'preceding :: m' 비트가 역 참조입니까? 먼저'm'을 찾는 해결책보다 성능이 좋지 않습니까? (모르겠다) – jpaugh

관련 문제