自前のRSSフィード中に、XMLで未定義の使えない文字実体参照が入っていてトラブル発生、というハナシ。
ブログの更新情報をチェックするのには、RSSなどのフォーマットで作られたフィードと呼ばれるデータを利用するのが一般的です。現在使われているブログシステムでは、このフィードへのリンクを利用できるようになっています。
お客様から、自分のブログのカテゴリー別の更新情報を入手したいというご要望がありました。そのブログは全体のRSSフィードは書き出してくれるものの、カテゴリー別のフィードはなかったためです。
そこで、カテゴリー別の表示データからsimple_html_domというスクリプトを利用して、ブログタイトルや日付などの必要な情報を抜き出して独自のRSSフィードを書き出すスクリプトを作成しました。
最近までご要望通りの動作をしていたのですが、ある日を境に更新情報が取れなくなってしまいます。
同じブログの他のカテゴリーでは問題がありませんでしたので、両カテゴリーと比較をしたところ、問題のあるカテゴリーのタイトルで文字実体参照が使われていました。
XMLで定義済みの、使える文字実体参照は
&(&)
<(<)
>(>)
"(")
'(')
の5つ。
なのですが、問題となったタイトルで使われていたのは、×で表わされる「×」でした。
ということで、書き出すRSSフィードにDTDで文字実体参照を数値文字参照に定義して対処しました。
!DOCTYPE rdf:RDF [
<!ENTITY times "×" >
]>
文字実体参照と数値文字参照の違い、普段はあまり気にしていなかったけれど、要注意。
Tweet