なぜ HTMLエンティティではなくHTML要素なのでしょうか? 質問する

なぜ HTMLエンティティではなくHTML要素なのでしょうか? 質問する

本当になぜでしょうか? のような表現の方&br;が適切ではないでしょうか?

ベストアンサー1

HTML エンティティ参照は、HTML のバージョンに応じて、SGML エンティティまたは XML エンティティのいずれかになります (HTML は基礎となるテクノロジからエンティティを継承します)。エンティティは、ドキュメントの別の場所で定義されたコンテンツのチャンクを挿入する方法です。

すべての HTML エンティティは単一文字エンティティであるため、基本的に文字参照と同じです (技術的には文字参照とは異なりますが、複数文字エンティティは定義されていないため、この区別は HTML に影響しません)。

たとえば、HTML プロセッサがそれを見ると、—DTD 内の次のセクションに基づいて、そのエンティティ参照の内容を適切なエンティティに置き換えます。

<!ENTITY mdash   CDATA "&#8212;" -- em dash, U+2014 ISOpub -->

つまり、エンティティ参照をエンティティに置き換え&#8212;、エンティティは文字参照となり、文字(U+2014) に置き換えられます。実際には、HTML を直接理解しない汎用 XML または SGML プロセッサを使用してこれを実行しない限り、これは 1 つのステップで実行されます。

さて、あなたの仮定の &br; を何に置き換えれば改行が起こるでしょうか? 改行文字や、あまり知られていない U+2028 LINE SEPARATOR (プレーンテキストでは意味的には HTML と同じ意味<br/>) でさえ、改行は起こりません。なぜなら、これらはほとんどの HTML コードでは重要ではない空白文字だからです。ソースコード内で読みやすいようにフォーマットできなければ HTML を書くのがずっと難しくなるので、これはありがたいことです。

必要なのは実体ではなく、意味的にレンダリングこの時点で、コンテンツには改行が含まれています。また、他のものを示す必要もありません (ブロック要素の開始または終了によってすでに改行を示すことはできますが、これは必要なことではありません)。これを行う唯一の合理的な方法は、まさにそれを意味する要素を用意することです。そのため、要素を用意し<br/>、関連するタグをソース コードに配置します。

おすすめ記事