HTML で使う文字参照の種類について解説:どれがよいか

HTML のイメージ。

HTML や XML では特殊な記号を記述するときに文字参照を使用します。 例えば HTML や XML において < は、特別な意味を持ちます。テキストの中に < を記述するときは、&lt; や &#60; < と書きます。

この文字参照ですが、先に示したように同じ記号でもいくつか記述方法があります。さ らに文字参照という名前自体がかなり曖昧で、様々な言い回しがあるので、それらについてもまとめておきます。

文字参照の種類

文字参照(character references)には次のように大きく2つの種類があります。

  • 文字参照(character references)
    • 文字実体参照(character entity references)
    • 数値文字参照(numerical character references)

文字実体参照は、&amp;lt; などの記述方法です。 一方で数値文字参照&#60;&#x3C; のように &#(x); に数字が続く記述方法です。いずれも同じ結果となります

数値文字参照が 2 種類あるのにも理由があります。1 つが 10 進数表記で、もう 1 つが 16 進数表記であるためです。 &# で始まる数値文字参照が 10 進数表記、&#x で始まる数値文字参照が 16 進数表記です。 16 進数表記の x は小文字でも大文字でも同じ意味になります。

文字実体参照は数値文字参照と比較して、直感的に記述することが利点です。 例えば &(ampersand) は文字実体参照では &amp; と記述します。amp は ampersand の略語です。

一方で数値文字参照の時は &amp;#38;&amp;#x26; となり、数値から出力される結果が「&」であることを推定することは難しいでしょう。

曖昧な表記

「文字参照」で検索すると曖昧な表記が多々見つかります。 例えば単純に「文字参照」とだけ書かれている場合や、「実体文字参照」のように「文字」と「実体」が反転していたり、「文字実態参照」のような誤字が見つかります。

「文字実体参照」か「実体文字参照」かは、翻訳の仕方によって変わるものなのでどちらが正しいとは言えないでしょう。 数値文字参照についても同様です。ただし「文字実体参照」と書かれているにもかかわらず「数値文字参照」について言及していたり、またはその逆である場合には問題です。 恐らく両者の違いについて理解していない方が書かれた記事なのでしょう。

文字参照の選択

文字参照のうち、文字実体参照が良いのか数値文字参照が良いのか、悩むことがあるかもしれません。 出力される結果は同じですから、どちらを利用しても良いと思います(執筆時時点では)。

先に解説したように、文字実体参照の方が直感的に記述することが出来ますから、文字実体参照の方が使用されることが多いかもしれません。

ただし混在させることは好ましいことではありません。特に複数の著者で書くときです。 例えばあるテキスト A は文字実体参照で書き、あるテキスト B を数値文字参照で書く、といったことは可能な限り避けるべきでしょう。

特に 10 進数の数値文字参照と 16 進数の数値文字参照を混在させることも良くありません。 いずれの場合にも多くのブラウザでは適切に出力されますが、良いドキュメントとは言いがたいです。

16 進数か 10 進数かを選ぶべきかは状況に応じて選択するしかありません。ほとんどの場合でどちらを選んでも問題は起きません。 16 進数が HTML に正式に導入されたのは HTML4.x からですが、それより以前の HTML を記述することはありませんから、16進数を選んではいけない理由にはなりません。

2013年現在では Web のソースを見る限り 10 進数の方が 16 進数よりも使用されているように見えます。 恐らく互換を考慮してのことでしょう。ただし 16 進数の方が対応幅が広いので、長期にわたり管理されるようなドキュメントであれば、16 進数の方が良いこともあるでしょう。