アメブロのRSSをldRで読んでいたら、なんか文字がピンク色になっていた。
RSSを見てみたら、description要素の中にstyle属性つきpタグだのfontタグだのが含まれていた。description要素の要素タイプってどんなだっけ。
RSS1.0
RSS 1.0の仕様書を見るとModelは (#PCDATA) となっている。"<" を書くとタグの開始区切り子とみなされ、そのタグによってマークアップされる要素はdescription要素の子要素とはなりえないから、文法違反ということになる。
RSS2.0
RSS 2.0 の仕様書を見てもdescription要素の子要素に何が来るかよく分からん。さすがReally Simple Syndication
は伊達じゃない。item要素の定義みたいなところを見てもdescription要素は単にThe item synopsis
を表現するものとされ、この要素がitem要素下に何回出現するのかとかもわからない。XSDを見てみたら、要素内容として文字列を取り、item要素に0回以上出現するとあった。
Atom
Atomの場合はsummary要素は内容としてatomTextConstructをとり、type属性がhtmlならタグを実体参照することで任意の妥当な要素を、xhtmlならdiv要素を子に持てる。
結局
アメブロはRSS2.0なので、別にどうでもよかった。
あと、RSSに全文を載せるべきか要約・抜粋を載せるべきかがよく議論になっているけど、どちらも提供したらいい。RSS1.0なら要約をdescription要素に、全文をcontentモジュールのencoded要素にしたらいいし、RSS2.0でもそうできるはず。Atomには要約をマークアップするのにsummary要素を、全文をマークアップするのにcontent要素を使える。RSSリーダーは全文表示と要約表示を切り替えできるようになっているべきだし、あと物理的なスタイル指定を無視できるようにもしてほしい。