ブラウザーは実際には DTD を読み取りません。理論的には可能であり、XML ドキュメントを処理するときに実際にそうする可能性もありますが、HTML 仕様のエンティティ定義は、実際には、ブラウザーが組み込みとして知っているはずの表記法を記述する方法にすぎません。もちろん、XML プロセッサは DTD を読み取ることもできますが、それは別の話だと思います。
したがって、これは、なぜ のようなエンティティ参照©
を使用するのかという問題に要約されます。考えられる理由のリストを次に示します。
- 非 Unicode 文字エンコーディングを使用する場合、エンティティ参照または文字参照 ( など
©
) を使用して、直接表現可能な範囲外のすべての文字を表す必要があります。
- 文字を直接入力する便利な方法がないため、エンティティ参照を使用したい場合があります。多くの場合、特殊文字を入力する方法を学ぶのに苦労することができないという理由だけで、これを行います。
- 一部の文字が見えないか、スペースのように見えます。文字列「1 234」(改行なしスペースあり) は、「1 234」(通常のスペースあり) とほとんど同じように表示されるため、書く
1 234
と、改行禁止スペースがあることがより明確になります。
- 一部の文字は、他の一般的な文字と視覚的に区別するのが難しい場合があります。「-」と「-」の違いがわかりますか?とを使用する
−
と–
、HTML ソース コードでの違いがより顕著になります。
- いくつかの文字は、少なくともいくつかの条件下では、データ文字として表示される場合、エンティティ参照または文字参照を使用して記述する必要があります。これは
<
および&
および (属性値を含む) に"
およびに適用されます'
。
に関して©
は、ほとんどの場合、理由 2 のみが該当します。
アンパサンドはエンティティまたは文字参照を開くため、エンティティを持ちます。そのため、データ文字として使用する場合はそれ自体を「エンティティ化」する必要がある場合があります。HTML 仕様では、正式に次のように定義されています。
<!ENTITY amp CDATA "&">
したがって、あいまいさや永遠のループはありません。エンティティは、HTML で定義されたすべてのエンティティと同様に、数字を使用する文字参照の観点から定義されます。