文字列から、CSSセレクターなのか、Xpathなのか、判定したいのですが、
何か良い判定基準あれば、アドバイスいただきたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
例えば、div
であればどっちでもあり得るので、確実な手段はないです。
(Xpathなら./div
と書くだろうというのはさておき)
なので、ちゃんとやろうとしても、「XPathと見なして構文解析して問題なければXPathと見なし、そうでないとCSS」とするくらいでしょうか。あるいはその逆でCSS優先でも良いですが。
Nokogiriのsearch
はどっちでも引数に出来ますが、ソースを見ると、
Ruby
1LOOKS_LIKE_XPATH = %r{^(\./|/|\.\.|\.$)} 2~~~ 3def search(*args) 4 paths, handler, ns, binds = extract_params(args) 5 6 xpaths = paths.map(&:to_s).map do |path| 7 LOOKS_LIKE_XPATH.match?(path) ? path : xpath_query_from_css_rule(path, ns) 8 end.flatten.uniq 9 10 xpath(*(xpaths + [ns, handler, binds].compact)) 11end
と、簡単な正規表現でチェックしていますね。これだと単にdiv
と書くとCSSと見なすという妥当な結果です。
投稿2022/06/28 05:25
総合スコア84559
0
ベストアンサー
セレクタに/
が入ることは(属性値の一部として以外)ありませんが、Xpathは1レベルの要素だけで処理するのでない限り/
が入ります。
a
だけのような場合は、どちらとしても解釈が成立します。
投稿2022/06/28 05:20
総合スコア145184
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/28 09:01
2022/06/28 10:07