Home > 仕事のこと > 文字実体参照(実体参照)•数値文字参照(文字参照)を RSS1.0 で表示する

文字実体参照(実体参照)•数値文字参照(文字参照)を RSS1.0 で表示する

Firefox でちょん切れるです。IE に至ってはパースエラー。

とあるプロジェクトで吐いた RSS がどうも調子が悪い。
その RSS はこんな感じの。

ちょん切れちゃってる RSS

4つ目の item の「Emacs の Tramp こんなに便利とは - ひげぽん OSとか作っちゃうかMona-」から下がちょん切れてる。ソースを見ても確かに20件あるのに5つ目の item の「mixi Engineers’ Blog » DBMによるテーブルデータベース その弐」以降の item が表示されない。

  4つ目の item
  <item rdf:about="http://d.hatena.ne.jp/higepon/20090126/1232937495">
    <title> Emacs の Tramp こんなに便利とは - ひげぽん OSとか作っちゃうかMona-</title>
    <link>http://d.hatena.ne.jp/higepon/20090126/1232937495</link>
    <description>便利だ。</description>
    <content:encoded>便利だ。</content:encoded>
    <dc:date>2009-01-27T03:05:52</dc:date>
    <dc:subject>emacs</dc:subject>
    <dc:subject>TIPS</dc:subject>
    <dc:subject>ssh</dc:subject>
    <dc:subject>Tramp</dc:subject>
  </item>
  5つ目の item
  <item rdf:about="http://alpha.mixi.co.jp/blog/?p=292">
    <title>mixi Engineers&#8217; Blog &raquo; DBMによるテーブルデータベース その弐</title>
    <link>http://alpha.mixi.co.jp/blog/?p=292</link>
    <description></description>
    <content:encoded></content:encoded>
    <dc:date>2009-01-27T03:04:22</dc:date>
    <dc:subject>mixi</dc:subject>
    <dc:subject>mikio</dc:subject>
    <dc:subject>DBM</dc:subject>
    <dc:subject>TokyoCabinet</dc:subject>
  </item>

RSS のソースをのぞくと気になるところを発見。mixi Engineers' Blog の &#8217;&raquo; が非常に怪しい。以前、 HTML をパースして title タグを取ろうとしたときも「うぐぅ」って言っていたような気もする。きっと今回もそれが原因だと思う。
グーグルさんで調べてみると RSS(XML) で使用できる実体参照は

  • &amp;(&)
  • &lt;(<)
  • &gt;(>)
  • &apos;(')
  • &quot;(")
のみのようです。ちなみに、これらを定義済み実体と言うそうです。

mixi Engineers' Blog の &raquo; は RSS(XML) では使用することができないので今回僕が吐いた RSS がちょん切れてしまって「うぐぅ」となっているのだろうと思います。
文字参照の &#8217; の方も多分使用できないのだと思います。

うぐぅ。
上記の使用できる実体参照・文字参照はあくまでデフォルトでということで、&#8217;&raquo; が定義された DTD を読み込めばよいそうです。
ということで、今回読み込んだ DTD はこれ。

http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

その DTD を読み込んだ RSS がこれ。

ちょん切れちゃってない RSS

途中でちょん切れることなく表示されていますよね?XML のソースを見ると

  <item rdf:about="http://alpha.mixi.co.jp/blog/?p=292">
    <title>mixi Engineers&#8217; Blog &raquo; DBMによるテーブルデータベース その弐</title>
    <link>http://alpha.mixi.co.jp/blog/?p=292</link>
    <description></description>
    <content:encoded></content:encoded>
    <dc:date>2009-01-27T03:04:22</dc:date>
    <dc:subject>mixi</dc:subject>
    <dc:subject>mikio</dc:subject>
    <dc:subject>DBM</dc:subject>
    <dc:subject&>TokyoCabinet</dc:subject>
  </item>

&#8217;&raquo; のままですね。ちゃんと参照されているみたいです。

めでたし、めでたしと言いたいところだけれども、はてブなんかの RSS のソースを見ると &#8217; に、&raquo;» になっていますが RSS を吐く際にアプリ側で変換しているのでしょうか?
この場合、常套手段って何なんでしょう?XML だと言っているのに XHMLT の DTD を読み込むのは間違っている気がしてならない。RSS2.0 の場合はどうなのだろうか?Atom の場合は?
うぬぅ。

そうそう、僕の MT には記事を書いている途中に記事の「公開状態」がこっそり「公開」になる新機能が着いています。書いている途中に記事を保存するとうっかり PING を送信してしまいます。
その更新扱いにされている自分の記事をRSSリーダー越し眺めているときってS目線で見ればいいのかM目線で見ればいいのか複雑な気持ちになります。

追記:
W3C の RSS の構文チャックするとダメよダメダメダメ星人って言われる。

Comments:0

Comment Form

Trackbacks:0

TrackBack URL for this entry
http://hibinokoto.jp/mt/mt-tb.cgi/307
Listed below are links to weblogs that reference
文字実体参照(実体参照)•数値文字参照(文字参照)を RSS1.0 で表示する from 日々のこと

Home > 仕事のこと > 文字実体参照(実体参照)•数値文字参照(文字参照)を RSS1.0 で表示する

Search
Feeds

Return to page top