content:encodedを実装しようせっかくなので、content:encodedをうちのRSSに実装しようと思ったのだけれど、CDATAセクションの生成方法が思いつかなかった。仕様書を読む限り、実体参照に置き換えるだけでもかまわないようだけど、CDATAの方が綺麗で良いかなぁ、と思う。XSLTでうまく変換する方法ないかな。
ところで、個人的に気になるのが、どういう経緯でエスケープする事になってしまったのか、だ。XMLなのだから語彙を混ぜてしまえば良いのに、わざわざCDATAセクションで括って文字列として扱う事になっている。たとえば、次のような感じだ。
<content:encoded><![CDATA[<p>What a <em>beautiful</em> day!</p>]]></content:encoded>
よく考えると、この例のp要素は宙に浮いてしまっている。名前空間について何も述べられていないので、もしかしたらXHTML以外の語彙である可能性がある。
仕様書を読み進めていくと、content:formatでフォーマットを指定できるとは書いてある。随分回りくどいことをするなぁ、と思ったのだが、どうやらこれはcontent:encoded内のデータがXML以外の規格でも(例えばHTML4.1)対応できるように考慮されているようだ。
しかし、ここでさらに気になるのは、内容データが複数語彙で構成されていたらどうするのだろう、と言うことだ。XHTML+SVGとか言われたら混乱しそうな気がする。たしかにSGML系のデータも取り込めるのは便利かも知れないが、今更感が強い気がする。十分に整備されているXMLの名前空間を使った方が便利というか、DOMなりXSLTなりで一発変換できるし、RSSを処理するプログラムも語彙の判別が楽だろう。XMLはXMLで完結していた方が良いんではないだろうか。
http://yudai.arielworks.com/memo/2004/10/12/011321.trackback
末尾に「1 + 0」の計算結果を繋げて下さい。例えば計算結果が「17」の場合、「011321.trackback17」です。これは機械的なトラックバックスパムを防止するための措置です。