2004年9月27日月曜日

Blogにおける文字参照(エンティティ)

一般的にBlogはそれ用のツールを使って運用されることが多いのですが、そうしたツールはRSS(RDF Site Summary)も自動的に生成してくれるので非常に便利です。RSSというのはサイトの要約を効率的に公開できるように整備された書式で、これを自動収集して更新状況をチェックするというのが一般的な応用例でしょうか。

次期Mac OSであるMac OS X Tigerに搭載されるWebブラウザSafari RSSには、RSSを収集してリスト化する機能が追加されるとのことで、リリースの暁には複数のニュースサイトやBlogなどの情報を一覧して、効率的に見て回るというのが普通になりそうです。

さて、Blogツールなどを利用して情報を公開して、ついでにRSSも作ってもらっているというような人は、ちょっと気をつけないといけないことがあります。それは文字参照の問題です。

文字参照というのはなにかといいますと、アクセント付きのアルファベット(こととねお試しBlogのカテゴリにあるéみたいな文字のことですね)など、ちょっと特殊な文字を表現するための方法です。HTMLのタグに使われる<とかを文章中に使いたいとき、&lt;と書かないといけないとか聞いたことはありませんか? この&;でキーワードや数値をはさんで表現する方法が文字参照です。キーワードを使うのは文字実体参照、数値を使うのは数値文字参照と区別して呼ばれます。

問題になるのは文字実体参照を行う場合です。この文字実体参照というのはどんな場合でも使っていいというわけではないのです。HTMLやXHTMLによる文書は、その文書がどういう決まりで記述されているのかを説明する設計図(文書型定義といいます)を最初に明記しています(文書型宣言といいます)。X/HTMLを解釈するソフトウェアはこの文書型定義を読んで、その文書の構造を把握するのです。

文字実体参照で使用されるキーワードもこの文書型定義に含まれています。このキーワードはこういう文字を指し示していますよということが文書型定義に書かれてあって、ブラウザはその定義に従って、文字実体参照で書かれた文字を(定義されたように)正しく表示できるというわけです。

ですが、RSSでは文書型宣言をしないようなのです。XML宣言はあるのですが文書型宣言はない。つまりこれはどういうことかといいますと、X/HTMLで使用できる文字実体参照がRSSに混ざるとエラーを生じさせる原因になるということです。

じゃあどうすればいいかといいますと、これはもう数値文字参照するしかないわけです。例えばeアクサン・テギュ(é)を表記する場合は、&eacute;と書くんじゃなくて&#233;と数値で書きます。ちょっとめんどくさいですね、覚えにくいです。ですがこうしておけば、RSSに書き出されても問題がありません。

ところで、文書型宣言をしていないXMLで文字実体参照は不可かといいますと、そうでもありません。以下にあげるものは定義済みなので文字実体参照できますよ。

  • < : &lt;
  • > : &gt;
  • & : &amp;
  • ' : &apos;
  • " : &quot;

参考

0 件のコメント: