Por que não `` `deve ser usado para escapar de aspas simples?

158

Conforme declarado em, quando as aspas simples em HTML se tornaram tão populares? e aspas incorporadas Jquery no atributo , a entrada da Wikipedia em HTML diz o seguinte:

O caractere de aspas simples ('), quando usado para citar um valor de atributo, também deve ser escapado como 'ou '(NÃO deve ser escapado, 'exceto nos documentos XHTML) quando aparecer dentro do próprio valor do atributo.

Por que não deve 'ser usado? Além disso, é "seguro ser usado em vez de "?

Brad
fonte
7
Observe que o IE8 não suporta '.
Paul D. Waite

Respostas:

178

"está na lista oficial de entidades HTML 4 válidas , mas 'não está.

De C.16. A referência de personagem nomeado ' :

A referência de caractere nomeado ' (o apóstrofo, U + 0027) foi introduzida no XML 1.0, mas não aparece no HTML. Portanto, os autores devem usar em 'vez de 'trabalhar como esperado nos agentes de usuário HTML 4.

cleto
fonte
3
"está na lista, então deve estar OK.
Bennett McElwee
9
Hoje aconteceu que em uma máquina IE8 '; não foi analisado, então o usuário vê o código. Substituindo por & # 39; resolveu o problema.
Michele Gargiulo 12/06
9
& aquot; NÃO é substituto para? como um é solteiro e o outro um duplo.
RichardTheKiwi
FYI: HTML5 suporta ambas as entidades
Tarol 09/06
30

' não faz parte do padrão HTML 4.

" é, no entanto, bom para usar.

Anon.
fonte
8
Como isso pode ser uma resposta quando o & aquot; ? = "Não' É como sugerindo uma vírgula para um ponto e vírgula ...
RichardTheKiwi
12
@Richardakacyberkiwi Leia a pergunta até o fim.
ColBeseder
3
@Anon .: 'agora faz parte do padrão HTML .
Paul D. Waite
29

" é válido no HTML5 e no HTML4.

'é válido em HTML5 , mas não em HTML4 . No entanto, a maioria dos navegadores suporta 'HTML4 de qualquer maneira.

Zaz
fonte
10
Observe que o IE 8 não suporta '.
Paul D. Waite
17

Se você precisar escrever uma marcação semanticamente correta, mesmo em HTML5, não use 'para escapar aspas simples. Embora, eu posso imaginar que você realmente quis dizer apóstrofo e não aspas simples.

aspas simples e apóstrofos não são os mesmos, semanticamente, embora possam parecer iguais.

Aqui está um apóstrofo.

Use 'para inseri-lo se precisar de suporte HTML4. (editado)

No inglês britânico, aspas simples são usadas assim:

"Ele me disse para 'tentar'", eu disse.

As cotações vêm em pares. Você pode usar:

<p><q>He told me to <q>give it a try</q></q>, I said.<p>

ter aspas aninhadas de maneira semanticamente correta, adiando a substituição dos caracteres reais para o mecanismo de renderização. Essa substituição pode ser afetada pelas regras de CSS , como:

q {
  quotes: '"' '"' '<' '>';
} 

Um artigo antigo, mas aparentemente ainda relevante, sobre a marcação semanticamente correta: The Trouble With EM 'n EN (e outros personagens obscuros) .

(editado) Costumava ser:

Use 'para inseri-lo se precisar de suporte HTML4.

Mas, como @James_pic apontou, essa não é a aspas simples, mas a "Cotação curvada única, à direita".

R. Schreurs
fonte
A questão era claramente sobre o uso de apóstrofos e não de aspas. Por que você postaria isso?
precisa saber é o seguinte
9
Eu claramente vejo aspas simples no título. A questão era por que escapar deles não deve ser feito com & apos; . Eu respondi isso porque o apoio ao & apos; não é a única preocupação.
R. Schreurs
3
As aspas simples também são usadas dessa maneira no inglês americano.
22416 Rob_vH
Essa deve ser a resposta aceita, pois esclarece que apóstrofo e aspas simples não são a mesma coisa e é por isso que você não deve usar apóstrofos para incluir um valor de atributo HTML.
Delroh 04/07/19
No Unicode, o caractere de apóstrofo (& # 39;) é classificado como aspas e é a única forma de aspas "retas" na especificação. O conselho para usar o & # 8217; é, na melhor das hipóteses, incompleto, porque esse é o caractere de "Aspa simples, certo". Se você realmente está buscando correção semântica, ela deve ser usada entre aspas corretas, enquanto o & # 8216; ("Aspas curvadas simples, esquerda") devem ser usadas para aspas esquerdas.
James_pic
2

Se você realmente precisa de aspas simples, apóstrofos, pode usar

html    | numeric | hex
&lsquo; | &#145;  | &#x91; // for the left/beginning single-quote and
&rsquo; | &#146;  | &#x92; // for the right/ending single-quote
Jeff
fonte
-2

No meu caso, foi um erro quando tentei usar aspas no texto Time's up!. Houve um aviso de Eslint.

Para corrigi-lo, substituí a citação por Time&apos;s up!. O resultado é o esperado

Sabit Rakhim
fonte