« Mac_Stripe-XHTML_Strict-ja を 1.0.5 に合わせた | Main | org.ccil.cowan.tagsoup の情報求む »
1.0.5 を試してみてどうも RSS がおかしい。
feed.template の item 要素の中の description で EntryBody テンプレートタグを使うわけだが次のようになってしまう。
| 指定した属性 | HTML タグ | 日本語 |
|---|---|---|
| (無指定) | そのまま | 実体参照になる |
strip_html="1" |
なくなる | 実体参照になる |
encode_html="1" |
HTML 予約文字が実体参照になる | 実体参照にした上で、& が & になる。 |
close_empty_tags="1" |
そのまま(若干修正されるケースあり) | 実体参照になる |
tidy_html="1" |
そのまま(若干修正されるケースあり) | 実体参照になる |
つまり属性の処理とは関係なく日本語が実体参照にされてしまっている。このこと自体も凄く嫌だが、encode_html 属性と組み合わせると悲惨なことになる。UTF-8 を使用している場合、3 バイトの日本語文字が、実体参照になって 8 バイトくらい、更に & が実体参照にされて 12 バイトくらいになってしまうからだ。
因に EntryBody テンプレートタグを feed.template 内で使用するときに strip_html="1" も encode_html="1" も指定しないときは <![CDATA[<$EntryBody$>]]> と書かないとならない。そしてエントリのソースに ]]> と書くようなことはしてはならない。