为什么Nokogiri :: CSS.xpath_for会返回一个数组?

bru*_*077 2 ruby xpath css-selectors nokogiri

我正在查看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]"]
Run Code Online (Sandbox Code Playgroud)

mu *_*ort 5

CSS选择可以包含由逗号分隔的多个组件:

5.选择者组

以逗号分隔的选择器列表表示列表中每个单独选择器选择的所有元素的并集.

例如:

div.divddy input:first, div#where_is input.pancakes_house { /*...*/ }
Run Code Online (Sandbox Code Playgroud)

因此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 ')]"]
Run Code Online (Sandbox Code Playgroud)

请注意,在这种情况下,返回的数组长度为2.

  • @Phrogz:嗯,但是我不能参加法戈参考;) (4认同)
  • 或者更简单:`Nokogiri :: CSS.xpath_for"a,b"#=> ["// a","// b"]` (2认同)