このブログをPCで見た場合、delicious.comの私のアカウントのRSSが右側に流れるようになっています。
ある日見てみたらXMLのパースエラー…
RSS エラー: This XML document is invalid, likely due to invalid characters. XML error: EntityRef: expecting ';' at line 16, column 77
これは恥ずかしい。
ダウンロードしてxsltprocとかにかけてみると、確かにエラーが出る。
- wget http://feeds.delicious.com/v2/rss/wtnb75
- xsltproc wtnb75
wtnb75:16: parser error : EntityRef: expecting ';' <guid isPermaLink="false">http://tracking.instantcheckmate.com/?a=418&oc ^ wtnb75:16: parser error : EntityRef: expecting ';' <guid isPermaLink="false">http://tracking.instantcheckmate.com/?a=418&oc=1&c ^ wtnb75:16: parser error : EntityRef: expecting ';' id isPermaLink="false">http://tracking.instantcheckmate.com/?a=418&oc=1&c=246&s1 ^ wtnb75:17: parser error : EntityRef: expecting ';' <link>http://tracking.instantcheckmate.com/?a=418&oc=1&c=246&s1=rss< :
なんかトラッキングのリンクが埋め込まれて、そのリンクの中のパラメータの&が&になってないためかな。横着せずにCDATAとかで囲めば何事も起こらなかっただろうに。
これ不思議なのは、XMLのバリデータの権威である http://validator.w3.org/ にこのリンクを食わせても、ノーエラーになるところ。→参考リンク
w3.orgが解析したソースを見ると、中身が違う。あれっと思ってダウンロードしたファイルの中身を貼り付けて直接validateをかけるとやっぱりエラーになった。delicious.comはw3.orgからのアクセスだと正しいXMLを出して、うちからだと不正なXMLを出すらしい。まじですか…割と労力かけてんじゃんdelicious。てっきり新規開発停止してるもんだとばかり思ってたよ。
このプラグインがどんなパーサを使ってるのかよく知らないんだけど、まあWeb上に転がっているファイルのフォーマットが厳格なものだと思っちゃいけないよね、という感想を持つ。私の経験上、別に不正なフォーマットを使っているdeliciousが悪いというふうには思わないんだ。大昔に検索エンジンを作ってて、ページを収集するロボットを書いてたんだよね私。そのとき知ったんだ。フォーマットやバリデーションが大事なんて言う奴は現実が見えてないんだと。
つまり、この不正なXMLをパースできないプラグインは出来が悪い!