ほとんどのHTML文字エンティティが作成された理由の背後にある理論的根拠は理解していますが、アンパサンドHTMLエンティティの背後にある目的は理解していません。&
には&
シンボルよりも多くのビットが含まれており、すでに&
が含まれています!
アンパサンドは、単に記号を使用するのではなく、より多くのデータを必要とする形式でエンコードする必要があると判断されたのはなぜですか?
コメント
- これは、別の引用符の中に引用符を含める方法のようなものです。コンピュータには、長い間この問題がありました。コードは別の状況のデータである可能性があり、データはコードである可能性があります。コンピューターが通常のマシンと異なる点、および人間の言語が動物が発するノイズと異なる点。次に進んで自己参照してください!
回答
あいまいさを避けるため。次のWebサイトを作成するとします。 HTML。 「リテラル<を書くには、& lt;と書く必要があります。」という行を書きます。さて、それをHTMLで書き留めるには:
<p>To write a literal < you have to write <.
…おっと。これを機能させるには、文字&
を&
で始まるHTML構文と区別する方法が必要です。そのため、次のように記述する必要があります。
<p>To write a literal < you have to write &lt;.
…正しくレンダリングされます。
コメント
- あいまいさを許可することだと思います。1つのコンテキストに2つのレベルの解釈を含めることができるようにすることです。
- @ user251748その'はあいまいさを許容せず、'それを明確にします。
回答
これは、1968年に発明されたSCRIPTにまでさかのぼるようです。
大まかに言えば、SCRIPTはSCRIPT / VSになり、GMLになりました。 HTMLになったSGMLguid
SCRIPTを紹介するオリジナルの論文は次のとおりです:
http://web.mit.edu/smadnick/www/papers/J002.pdf
なぜ&
を選択するのですか?ターミナルウィンドウにいると想像してみてください。マウスがありません。カーソルキーを使用してトラバースすることはできません。画面。コマンドラインでのみ入力できます。行を削除する場合は、、文字を削除するには、次のように入力します@
最後に向かって¢はエスケープ文字を示すために使用されます。セントは以前はキーボード(シフト6)にありましたが、削除されました。 (ASCIIと関係があります)ほとんどのキーボードはそれを^に置き換えましたが、一部は¬に置き換えました
したがって、突然SCRIPTでプログラムすると、新しいコンピューターでエスケープ文字を入力するのに非常に苦労します。置換文字を選択する必要があります。同じキーで1つの記号を使用すると、キーボードメーカーがまだ議論しているため、一部の人はそれを入力できません。
選択する必要があります。キー6にあったものの代わりのエスケープ文字。何を選択しますか?
コメント
- 私は'あなたの答えは思いません本当に質問に答えますが、私は本当にあなたの答えが好きです。
- @ChrisGこれが質問に対する唯一の答えです。なぜ&はエスケープ文字なのですか。 HTMLで?ただし、エスケープ文字を説明する回答が受け入れられたため、質問の表現が不十分である可能性があります。
- @DavidArnoしかし、質問は' t &がエスケープ文字である理由、&をエスケープする必要がある理由f。
- 確かに私は質問をもう少し深いレベルで解釈しなければなりませんでした。しかし、答えを調べるのは面白かったです
- @SebastianRedl、うん、今はそうだね。ただし、質問の言い方をすると、" iv id = =の場合、エスケープ文字として&が使用されるのはなぜですか。 “507985f1c9″>
自体をエスケープする必要がありますか?"幸いなことに、私よりも悪いフレーズの質問を読むのが得意な人もいるので、OPが知りたかったこと回答がありました:)
回答
どのデータ形式でも、エスケープメカニズム自体をエスケープする必要があります。エスケープ文字は特殊文字です。
たとえば、次のテキストを表示したい:
アンパーサンドは
&
このHTMLを次のように記述した場合
<p>Ampersands are escaped like <code>&</code>
表示されますas:
アンパーサンドは
&
実際には次のように記述する必要があります:
<p>Ampersands are escaped like <code>&amp;</code>
次のように正しく表示されます:
アンペアサンドは
&
のようにエスケープされます多くの言語では、バックスラッシュはエスケープですキャラクター。次に、リテラル文字列C:\projects
をC:\\projects
としてエスケープする必要があります。
データ形式が任意のデータを表すことができます。既知の長さまたは区切り文字が必要です。既知の長さの処理は、人間が編集可能な形式では扱いにくいです。ただし、区切り文字がある場合は、エスケープ可能である必要があります。したがって、エスケープメカニズムが必要であり、エスケープメカニズムはそれ自体をエスケープする必要があります。最小限の解決策の1つは、区切り文字をエスケープ文字として使用することです。例えば。区切り文字"
の場合、文字列don"t do that
は"don""t do that"
としてエンコードできます。
コメント
- ASCIIエスケープ文字は、もともとこの正確な目的のために設計されました。そのフルネームは Data Link Escape です。以前、モデム/マルチプレクサの状況で使用しました。
回答
“&”はエンティティを開始するため、それを単独で使用することは有効なHTMLではありません(一部のブラウザはそれを受け入れる場合がありますが、これは保証されません)。
コメント
- 単一のアンパーサンドは、あいまいなアンパーサンド、つまり' tはHTML標準で定義されています。それ以外の場合、アンペアサンドは明確に定義されています。
- @ amon-確かですが、'いつの定義が'許可されるものはHTMLバージョンによって異なります(たとえば、HTML2では、セミコロンが続くかどうかに関係なく、'の後に英数字が続く場合にのみ許可されます) 、そして最も厳密な定義でも、いくつかの状況でそれらをエスケープできる必要があります。また、HTMLはこれを許可しますが、SGMLもXMLも許可しないため、HTML DTDを使用するSGMLパーサーは失敗し、XHTMLパーサーは'どちらも受け入れません。したがって、'実際にこの機能を使用することはお勧めしません。
- 最初にHTMLがありました。その後、すべてのブラウザベンダーが好きなことをしたため、混乱が生じました。 SeriousEngineers™はその混乱にうんざりしてXHTMLを作成しました。しかし、XMLを手作業で書くのは面倒なので、混乱は続きました。最後に、混乱は成文化され、HTML5と呼ばれました。カオスをうまく解析しますが、明確に定義された方法で解析します。 HTML5をSGML方言として解釈することはもはや役に立ちません。そして、XHTMLを除いて、HTMLは決してXMLではありませんでした。しかし、リモートで最新のブラウザやHTMLパーサーはすべて、少なくとも構文レベルではHTML5を問題なく処理します。
- @amon:エラー回復の楽しみに関するHTML5仕様を読んでいない限り、HTMLを手作業で書くのは面倒です。 、'は、奇妙なレガシーが多すぎるため、HTMLテキストがDOMになる方法をパーサーがどのように解釈するかはわかりません。コーナーケースと同じものを書くためのさまざまな方法。とにかくHTMLをXHTML準拠のサブセットに制限しない限り、実際のXHTMLを記述してみませんか。
回答
すべてのプログラミング言語またはスクリプト言語には固有の識別子があります。または、開発者がコードで使用できない予約キーワードを言うこともできます。一部の文字はHTMLでも予約されています。アンパサンド(&)は、予約文字をHTMLで表示するためのエンティティとして使用されます。いくつかの例は次のとおりです。
< >