結論
属性値(プロパティ値)はすべて小文字で記述しないといけない。
例
以下のようなソース(の一部)があったとします。
<table width="100%" border="1"> <tbody> <tr class="FooBar"> <td width="100%">内容1</td> </tr> <tr class="FooBar"> <td width="100%">内容2</td> </tr> <tr class="FooBar"> <td width="100%">内容3</td> </tr>
このとき、Nokogiri を用いるために以下のように書いたとします。@doc
は、上記のHTMLをパースするためのNokogiriのオブジェクトです。
nodesets = @doc.xpath("//tr[@class='FooBar']") puts nodesets.count
これを実行したときの表示結果は、0
です。つまり、見つけられていないです。
FooBar
を小文字に書き直し、以下のようにコードを書き直します。
nodesets = @doc.xpath("//tr[@class='foobar']") puts nodesets.count
今度はちゃんと3
が表示されました。
ハマりからの脱出
また大ハマり事案かと思いましたが、今回はそれほどではありませんでした。一段上のタグであるtbody
の内容を取得し表示させることで、当該属性値が小文字でなければいけないのでは、と気づけたからです。
公式ドキュメントを読む、明確な意図を持って手を動かして実験する、エラーコードを一字一句読む*1、これらの鉄則を忘れないようにしたいです。
*1:今回は関係ありませんでしたが