2

CSSセレクターをXPATHに変換する必要があったので、Nokogiri::CSSのソースコードを見ています。サンプルコードを実行して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 に答える