以前の記事「HTML Syntax Parser」に書いた「Heimdallrのソースに組み込まれている超簡易Parser」は、概要ウィンドウにRSS Feedのdescription要素の中身を表示するために使われています。
「えー、でも<href="http://hogehoge">ほげ</a>って書いてもHeimdallrの概要ウィンドウにリンク張られませんよ?」
いえいえ、Heimdallrが解釈するのは<p>と<br>だけなのです。後のタグは表示しないようにはしますがそれ以外に何か処理を行うことはしません。
「いや、でも概要ウィンドウに<p>とかタグがそのまま表示されることがあるのですが・・?」
いえいえ、Heimdallrが解析を行うのは、仕様書に「エンコードされたHTMLを使ってもいいですよ」と明記されたdescription要素だけです。
「具体的にどれやねん」
Heimdallrが対応しているRSSのバージョンは、0.91/0.92/1.0/2.0です。1つずつ仕様書を見ていきます。
0.91は、仕様書のdescription要素の説明に、
A phrase that describes your channel, your channel's positioning statement. Maximum length is 500 characters.と書いてあるだけであり、使って良いとは書いていないので解析を行わず、プレーンテキストだと見なします。
0.92は、仕様書に、
0.92 allows entity-encoded HTML in theと、エンコードされたHTMLを使って良いと明記されているので解析を行います。of an item, to reflect actual practice by bloggers, who are often proficient HTML coders.
1.0は、仕様書に、明記はされていません。よって0.91と同様に、プレーンテキストだけと見なします。
Contentモジュールのcontent:encoded要素については、
An element whose contents are the entity-encoded or CDATA-escaped version of the content of the item.と、エンコードされたHTMLを使って良いと明記されているので解析を行います。
2.0は、仕様書に、
the description contains the text (entity-encoded HTML is allowed; see examples)使ってよいと明記されているので解析を行います。
とまあ、こんな感じでバージョン毎にエンコードされたHTMLとして解析したり、プレーンテキストとして扱ったりと、処理が異なっているのです。
「訳分からん・・・」
あああごめんなさい。このように仕様を細かく考えても、ユーザにとってのメリットにはならないとは思うんですが、仕様書に書いてないことをするのはちょっと抵抗があったのでこうしたわけです。私って仕様原理主義者ですねぇ。
「アンタ頭の固いヤツやなぁ」
どうするべきなのかは未だ迷いも残っていますが、頭のカタイRSSリーダーが世の中に1つくらいあっても良いかなぁということで当面は現状のままの予定です。