delicious…

スクリーンショット 2016-02-16 23.48.46このブログを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<
  :

なんかトラッキングのリンクが埋め込まれて、そのリンクの中のパラメータの&が&amp;になってないためかな。横着せずにCDATAとかで囲めば何事も起こらなかっただろうに。

これ不思議なのは、XMLのバリデータの権威である http://validator.w3.org/ にこのリンクを食わせても、ノーエラーになるところ。→参考リンク

w3.orgが解析したソースを見ると、中身が違う。あれっと思ってダウンロードしたファイルの中身を貼り付けて直接validateをかけるとやっぱりエラーになった。delicious.comはw3.orgからのアクセスだと正しいXMLを出して、うちからだと不正なXMLを出すらしい。まじですか…割と労力かけてんじゃんdelicious。てっきり新規開発停止してるもんだとばかり思ってたよ。

このプラグインがどんなパーサを使ってるのかよく知らないんだけど、まあWeb上に転がっているファイルのフォーマットが厳格なものだと思っちゃいけないよね、という感想を持つ。私の経験上、別に不正なフォーマットを使っているdeliciousが悪いというふうには思わないんだ。大昔に検索エンジンを作ってて、ページを収集するロボットを書いてたんだよね私。そのとき知ったんだ。フォーマットやバリデーションが大事なんて言う奴は現実が見えてないんだと。

つまり、この不正なXMLをパースできないプラグインは出来が悪い!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です