2012-11-28 3 views
0

모든 tbody 요소가 하위 요소 인 <font color="red"> 요소를 찾으려고합니다.이 XPath 표현식이 작동해야합니까? // test/ancestor :: test

//font[@color="red"]/ancestor::tbody 

을했지만 작동하지 않습니다

나는이 XPath 식을 사용하고 있습니다. 그것을 사용해야합니까, 아니면 제가 사용하고있는 도서관 (또는 다른 곳)의 문제입니까? 나는 Nokogiri이라는 Ruby 라이브러리를 사용하고 있습니다.

는 또한
//tbody[descendant::font[@color="red"]] 

하지만 여전히 행운을 시도했다.

//tbody[.//font[@color="red"]] 
+0

두 번째 표현식은 '//'로 시작해야합니다. 첫 번째가 작동해야합니다. 문서에 네임 스페이스가 있습니까? – choroba

+0

죄송 합니다만 실제로 두 번째 표현 앞에 두 개의 슬래시 '//'를 넣는 것을 잊어 버렸습니다. 그래도 여전히 작동하지 않습니다. 아니요. 문서에 네임 스페이스가 없습니다. – Miscreant

답변

1

내가 문제가 발견 :

+1

크롬에서 보면 Chrome의 '수정 된'마크 업을 볼 수 있습니다. 예 : html '

세포
가', 크롬이 우리가 항상 XML 소스의 샘플을 보여 사람들에게 왜 누락'tbody' 요소 – AakashM

+1

를 제공 할 것이라고 밝혔습니다. 아마 사용하여 소스 샘플을 복사 한 것 @MichaelKay –

+0

을 도구를 알지 못하는 Chrome 개발자 도구는 수정할 수 있습니다. fy the source by : – Miscreant

3

이 XPATH 표현식은 <font color="red">가 포함 된 모든 tbody 태그를 선택합니다 실제로 내가 사용 된 문서의 소스 코드에는 tbody 요소가 없었다!

은 내가 크롬의 개발자 도구의 요소 탭을 사용하여 소스 코드를 검색했기 때문에이 있었다 생각이 도구는 어떤 이유로 거기에 <tbody> 요소를 추가!

그래서 아래의 XPath 식 해야 작업, 적절한 tbody 요소가 실제로 소스 코드에 존재하는 경우 작업을 수행합니다.

//font[@color="red"]/ancestor::tbody 
+0

Downvoter, XPATH 표현식에 누락 된''''을 추가했습니다 –

+0

'.//'의 함수는 무엇입니까? –

+0

@ shiplu.mokadd.im :이 경우에는 _current 요소의 자손을 찾습니다. 'tbody' 태그를 사용합니다 ..'.'을 생략하면 쿼리는 루트 노드의 하위 노드 인 font 태그를 찾습니다. –

관련 문제