文字参照は、SGMLにおいてある種の特別な機能を持つ文字、<、>、&などを データ文字として表現する場合に用いられます。文書にそのままこれらの記号をデータとして書き いれた場合、それはマークの一部として解釈されてしまいます。これを避けるために文字参照を使って これらの記号を記述することが出来ます。
HTML4.0のSGML宣言によれば、HTML4.0の文字セット(character set)は ISO 10646-1 (USC-4) となっています。しかし現在これはBMP面しか定められていません。このBMP面の文字(256×256 の65536字)は、いわゆるユニコードと呼ばれている文字セットです。HTML4.0における文字参照 の数値はこの文字セットの番号(コードポイント)ということになります。
文字参照を使えば、通常は表現できない文字でも(例えばアラビア文字とか)表現する手段が出来ます。 もちろん、それらを表示するのにはフォントセットやユーザーエージェントの対応が必要です。
文字参照には、文字のコードポイントを指定して参照する数値文字参照と、 実体宣言された文字の名前を使って実体参照する文字実体参照があります。
HTML4.0では数値文字参照の数値にはユニコードのコードポイントを使っています。 十進数表記と十六進数表記の二つの表記法が用意されていますが、IE4.0、NN4.0共に 十六進数表記はサポートしていないので注意が必要です。
以下は" å "(上に小さい丸のついた小文字の a ) の表記例です。十六進表記を表す "x"及び数値のアルファベットは大文字小文字どちらでもかまいません。
また、ユニコードでは漢字の"水"コードポイントは6C34ですが、その場合は、
基本的には文字参照は十進数表記の文字参照(数値文字参照)なのですが、文字に名前を付けて実体宣言 することによって一般実体参照として文字参照することが出来ます。
© という実体参照を考えてみます。
要素の内容や要素の属性値などに実体参照の開始の区切り子 & が現れると、それ以降、
参照の終了の区切り子 ; が現れるまでの文字は一般実体名として解釈されます。
この場合の一般実体名" copy "ということになりますが、それは以下の実体宣言によって宣言されています。
<!ENTITY copy CDATA "©" -- copyright sign, U+00A9 ISOnum -->
この実体宣言により、©という実体参照は、文字データ実体 © として 置換さる事になります。さて、この &# はSGMLにおいては「文字参照の開始の区切り子(cro)」 ですので、文字番号169の文字がさらに文字参照され、 © は © として表現され、 結局 © 実体として ©として置換されます。
コードポイント、文字実体参照の名前、表示、その文字の定義等の表を 文字実体参照の実体宣言から作ってみました。
表示される字形はフォントやブラウザのサポートの程度によって変わってきますが、
ユニコード・コンソシアムで提示している本来の字形は以下のURLで見ることが出来ます。
http://charts.unicode.org/Unicode.charts/glyphless/Unicode.html
なお、表を作る元となった実体宣言は以下の場所で参照できます。