2

我正在查看 Nokogiri::CSS 的源代码,因为我需要将 CSS 选择器转换为 XPATH。运行示例代码并调用 xpath_for 方法后,我看到它返回了一个数组。为什么是这样?CSS 选择器是否有可能返回多个 xpath?

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

1 回答 1

5

一个CSS 选择器可以包含多个用逗号分隔的组件

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。

于 2012-05-08T20:15:15.140 回答