2012-05-08 2 views
2

CSS 선택기를 XPATH로 변환해야하기 때문에 Nokogiri :: CSS의 소스 코드를보고 있습니다. 샘플 코드를 실행하고 xpath_for 메소드를 호출 한 후 배열을 반환하는 것을 볼 수 있습니다. 왜 이런거야? CSS 선택기가 둘 이상의 xpath를 반환 할 수있는 기회가 있습니까?Nokogiri :: CSS.xpath_for가 배열을 반환하는 이유는 무엇입니까?

[18] pry(main)> Nokogiri::CSS.xpath_for 'div.divddy input:first' 
=> ["//div[contains(concat(' ', @class, ' '), ' divddy ')]//input[position() = 1]"] 

답변

5

CSS selector can contain multiple components separated by commas : 선택기

선택기 쉼표로 구분의

5. 그룹 목록에서 각 각 셀렉터에 의해 선택된 모든 요소의 조합을 나타내는 . 예를 들어

:

div.divddy input:first, div#where_is input.pancakes_house { /*...*/ } 

그래서 아마 xpath_for이 경우 배열을 반환

당신은 그룹화 선택 손. 예 :

>> Nokogiri::CSS.xpath_for 'div.divddy input:first, div#where_is input.pancakes_house' 
=> ["//div[contains(concat(' ', @class, ' '), ' divddy ')]//input[position() = 1]", "//div[@id = 'where_is']//input[contains(concat(' ', @class, ' '), ' pancakes_house ')]"] 

반환되는 배열의 길이는이 경우 2입니다.

+2

또는 더 간단하게 :'Nokogiri :: CSS.xpath_for "a, b"# => [ "// a", "// b"]' – Phrogz

+4

@Phrogz : 그래, 그렇지만 나는 할 수 없을거야. Fargo 레퍼런스에서 미끄러짐) –

+1

위대한 대답, 정말 고마워요! 필수 참조 (OT) http://www.youtube.com/watch?v=dJUvPZI3Cr4 – bruno077

관련 문제