Eu entendo a razão por trás da criação da maioria das Entidades de caracteres HTML, mas não entendo a finalidade por trás da entidade HTML e comercial. &
contém mais bits do que um símbolo &
e ainda tem o &
dentro dele!
Por que foi decidido que o e comercial deve ser codificado no formato que requer mais dados, em vez de apenas usar o símbolo?
Comentários
- É como se tivéssemos uma maneira de incluir uma citação dentro de outra citação. Há muito tempo os computadores têm este problema : o código pode ser dado em uma situação diferente e os dados podem ser código. o que torna os computadores diferentes das máquinas comuns e o que torna a linguagem humana diferente dos ruídos que os animais fazem. Agora vá em frente e autorreferência!
Resposta
Para evitar ambigüidade. Suponha que você queira escrever um site sobre HTML. Você escreve a linha: “Para escrever um < literal, você deve escrever & lt ;.” Agora, para escrever isso em HTML:
<p>To write a literal < you have to write <.
… oops. Para fazer isso funcionar, você deve ter uma maneira de distinguir o caractere &
da sintaxe HTML começando com &
. É por isso que você deve escrever:
<p>To write a literal < you have to write &lt;.
… que renderiza corretamente.
Comentários
- Eu diria que é para permitir ambiguidade. Ser capaz de incluir dois níveis de interpretação em um contexto.
- @ user251748 Isso ‘ s não permitindo ambigüidade, ‘ s esclarecendo isso.
Resposta
Parece que isso remonta ao SCRIPT, que foi inventado em 1968.
Falando de maneira geral, o SCRIPT se tornou SCRIPT / VS que se tornou GML, que se tornou SGMLguid que se tornou HTML
Aqui está o artigo original que apresenta o SCRIPT:
http://web.mit.edu/smadnick/www/papers/J002.pdf
Por que escolher &
? bem, imagine que você está em uma janela de terminal. você não tem o mouse. você não pode usar as teclas do cursor para percorrer o tela. Você só pode digitar na linha de comando. se quiser excluir uma linha, digite , para excluir um caractere, digite @
Você pode ver no final ¢ é usado para denotar um caractere de escape. centavos costumava estar em teclados (turno 6), mas foi descartado. (algo a ver com ascii) a maioria dos teclados substituiu-o por ^ mas alguns por ¬
Então, de repente, para programar em SCRIPT, você tem muita dificuldade em digitar o caractere de escape em novos computadores. Você precisa escolher um caractere substituto. Se usar um dos símbolos na mesma tecla, algumas pessoas não conseguirão digitá-lo, porque os fabricantes de teclado ainda estão discutindo.
Você precisa escolher um caractere de escape substituto para o que costumava estar na chave 6. O que você escolhe?
Comentários
- Não ‘ acho sua resposta realmente responde à pergunta, mas eu realmente gosto da sua resposta.
- @ChrisG Esta é a única resposta para a pergunta feita: por que & é o caractere de escape em HTML? No entanto, como uma resposta explicando qual caractere de escape foi aceita, a pergunta provavelmente foi mal expressa.
- @DavidArno Mas a pergunta feita não foi ‘ t por que & é o caractere de escape, é por isso que & deve ter seu próprio escape f.
- É verdade que tive que interpretar a questão em um nível um pouco mais profundo. Mas foi interessante pesquisar a resposta
- @SebastianRedl, sim, vejo isso agora. No entanto, da forma como a pergunta é formulada, eu li como ” por que & é usado como o caractere de escape, quando & em si, então, deve ser escapado? ” Felizmente, alguns de vocês são melhores em ler perguntas mal formuladas do que eu, então o que o OP queria saber foi respondida 🙂
Resposta
Em qualquer formato de dados, o próprio mecanismo de escape deve ser escapado. O caractere de escape é um caractere especial.
Por exemplo, desejo exibir este texto:
E comercial são escapados como
&
Se eu escrever este HTML como
<p>Ampersands are escaped like <code>&</code>
, ele será exibido como:
E comercial são escapados como
&
Então, eu realmente preciso escrever:
<p>Ampersands are escaped like <code>&amp;</code>
que é exibido corretamente como:
E comercial são escapados como
&
Em muitos idiomas, a barra invertida é um escape personagem. Então, a string literal C:\projects
terá que ser escapada como C:\\projects
.
Se um formato de dados deve ser capaz de representar dados arbitrários, ele precisa de um comprimento conhecido ou de um delimitador. O manuseio de comprimentos conhecidos é difícil em formatos editáveis por humanos. Mas se tivermos um delimitador, ele deve ser escapável. Portanto, precisamos de um mecanismo de escape, e o mecanismo de escape precisa escapar sozinho. Uma solução mínima é usar o delimitador como caractere de escape. Por exemplo. para um delimitador "
, a string don"t do that
poderia ser codificada como "don""t do that"
.
Comentários
- O caractere ASCII Escape foi originalmente projetado para esse propósito exato. Seu nome completo é Data Link Escape . Eu usei em uma situação de modem / mux antes.
Resposta
Porque “&” inicia uma entidade, portanto, usá-la sozinha não é HTML válido (embora alguns navegadores possam aceitá-la, isso não é garantido).
Comentários
- E comercial solitário está OK em HTML, a menos que formem um e comercial ambíguo , ou seja, uma referência de caractere nomeado que é n ‘ t definido no padrão HTML. Caso contrário, os e comerciais são bem definidos.
- @amon – claro, mas ‘ é importante notar que a definição de quando eles ‘ re permitido variou entre diferentes versões de HTML (HTML2, por exemplo, só os permitiu se não fossem ‘ t seguidos por um caractere alfanumérico, independentemente se um ponto e vírgula seguido) , e que mesmo com a definição mais estrita você ainda precisa ser capaz de escapar deles em algumas circunstâncias. Além disso, embora o HTML permita isso, nem SGML nem XML permitem, então os analisadores SGML com um DTD HTML irão falhar e os analisadores XHTML não ‘ aceitarão. Portanto, eu não ‘ não recomendaria usar esse recurso.
- Primeiro, havia o HTML. Em seguida, houve o caos, pois cada fornecedor de navegador fazia o que bem entendia. Serious Engineers ™ estavam fartos daquele caos e criaram o XHTML. Mas escrever XML manualmente é uma droga, então o caos continuou. Finalmente, o caos foi codificado e denominado HTML5. Ele analisa o caos muito bem, mas de uma maneira bem definida. Não é mais útil interpretar HTML5 como um dialeto SGML. E, exceto para XHTML, HTML nunca foi XML. Mas todo navegador ou analisador de HTML atualizado remotamente lidará com HTML5 muito bem, pelo menos em um nível sintático.
- @amon: Escrever HTML manualmente é uma droga, a menos que você ache divertido ler as especificações do HTML5 sobre recuperação de erros , ‘ não há como dizer como o analisador interpretará como o texto HTML se torna DOM, já que ‘ são muitos estranhos, legados casos esquivos e diferentes maneiras de escrever a mesma coisa. A menos que você restrinja seu HTML a um subconjunto compatível com XHTML, nesse caso, por que não apenas escrever XHTML real.
Resposta
Cada linguagem de programação ou linguagem de script tem seus identificadores exclusivos ou você pode dizer palavras-chave reservadas que não podem ser usadas pelos desenvolvedores no código. Alguns caracteres também são reservados no HTML. Um e comercial (&) é usado como uma entidade para exibir caracteres reservados em HTML. Alguns dos exemplos são os seguintes.
< >