2011-01-07 2 views
0

으로 필드를 포함에 따라 테이블 행을 찾을 수XPath는 여기에 내가 지금이 무슨 관련 레이블과 값

//tr[.//label[.='foo']/@for] 

가 나는 또한 확인 그 string() 기능 예상대로 작동하지만 string()id 특성을 일치 시키면 끊기는 것 같습니다. 왜 그런가?

여기이 일치해야합니다 X [MT] ML의 비트를 - 그것은 두 번째 행을 찾아야한다 :

<tr> 
    <td> 
    <label for="thing1">foo</label> 
    <input id="thing1" value="not-bar" /> 
    </td> 
</tr> 
<tr> 
    <td> 
    <label for="thing2">foo</label> 
    <input id="thing2" value="bar" /> 
    </td> 
</tr> 

감사합니다!

+0

처리중인 XML 샘플을 표시 할 수 있습니까? – Flack

+0

또한 구문 오류가 있습니다. 하나의 대괄호가 없습니다. //tr[.**[id = string (.// label [. = 'foo']/@ for)] 및 @ value = 'bar']를 사용해야합니다. 아직도 다소 비효율적 인 표현처럼 보입니다. 우리가 XML을 보게되면 더 나은 것을 제공 할 수 있을지도 모릅니다. – Flack

+0

@Flack : 누락 된 대괄호와 약간의 XML로 질문을 업데이트했습니다. – wuputah

답변

2
//tr[*/input 
    [@id = ../label[.='foo']/@for and @value='bar'] 
    ] 

충분 해 보입니다.

+0

감사합니다. 여기에서 변경 한대로 문제의 핵심이 'string()'함수이고 label에 대한 형제 참조 인 것처럼 보입니다. 그것을 바꿨고 작동 중입니다! – wuputah