Pourquoi «& apos;» ne devrait-il pas être utilisé pour échapper des guillemets simples?

158

Comme indiqué dans, Quand les guillemets simples en HTML sont-ils devenus si populaires? et Jquery citation intégrée dans l'attribut , l'entrée Wikipedia sur HTML dit ce qui suit:

Le caractère guillemet simple ('), lorsqu'il est utilisé pour citer une valeur d'attribut, doit également être échappé comme 'ou '(ne doit PAS être échappé comme 'sauf dans les documents XHTML) lorsqu'il apparaît dans la valeur d'attribut elle-même.

Pourquoi ne devrait pas 'être utilisé? En outre, est-il "sûr d'être utilisé à la place de "?

Brad
la source
7
Notez que IE8 ne prend pas en charge '.
Paul D.Waite

Réponses:

178

"est sur la liste officielle des entités HTML 4 valides , mais 'ne l'est pas.

À partir de C.16. La référence du personnage nommé ' :

La référence de caractère nommé ' (l'apostrophe, U + 0027) a été introduite dans XML 1.0 mais n'apparaît pas dans HTML. Les auteurs doivent donc utiliser 'au lieu de 'pour travailler comme prévu dans les agents utilisateurs HTML 4.

cletus
la source
3
"est sur la liste, donc devrait être OK.
Bennett McElwee
9
Aujourd'hui est arrivé que sur une machine IE8 & apos; n'a pas été analysé, donc l'utilisateur voit le code. Remplacer par & # 39; résolu le problème.
Michele Gargiulo
9
& aquot; NE remplace PAS & apos; comme l'un est un simple et l'autre un double.
RichardTheKiwi
FYI: HTML5 prend en charge les deux entités
Tarol
30

' ne fait pas partie de la norme HTML 4.

" est, cependant, est très bien à utiliser.

Anon.
la source
8
Comment cela peut-il être une réponse quand & aquot; = "not '? C'est comme suggérer un deux-points pour un point-virgule ...
RichardTheKiwi
12
@Richardakacyberkiwi Lisez la question jusqu'au bout.
ColBeseder
29

" est valide en HTML5 et HTML4.

'est valide en HTML5 , mais pas en HTML4 . Cependant, la plupart des navigateurs prennent 'de toute façon en charge HTML4.

Zaz
la source
10
Notez que IE 8 ne prend pas en charge '.
Paul D.Waite
17

Si vous devez écrire un balisage sémantiquement correct, même en HTML5, vous ne devez pas utiliser 'pour échapper les guillemets simples. Bien que, je peux imaginer que vous vouliez en fait dire apostrophe plutôt que guillemet simple.

les guillemets simples et les apostrophes ne sont pas les mêmes, sémantiquement, bien qu'ils puissent se ressembler.

Voici une apostrophe.

Utilisez 'pour l'insérer si vous avez besoin du support HTML4. (édité)

En anglais britannique, les guillemets simples sont utilisés comme ceci:

«Il m'a dit de« faire un essai »», ai-je dit.

Les citations viennent par paires. Vous pouvez utiliser:

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

pour avoir des guillemets imbriqués d'une manière sémantiquement correcte, en différant la substitution des caractères réels au moteur de rendu. Cette substitution peut alors être affectée par les règles CSS , comme:

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

Un article ancien mais apparemment toujours pertinent sur le balisage sémantiquement correct: The Trouble With EM 'n EN (and Other Shady Characters) .

(modifié) C'était:

Utilisez 'pour l'insérer si vous avez besoin du support HTML4.

Mais, comme @James_pic l'a souligné, ce n'est pas le guillemet simple, mais le "guillemet simple incurvé, à droite".

R. Schreurs
la source
La question portait clairement sur l'utilisation d'apostrophes et non de citations. Pourquoi publierais-tu ça?
Alex Skrypnyk
9
Je vois clairement une citation simple dans le titre. La question était de savoir pourquoi leur échapper ne devrait pas se faire avec & apos; . J'ai répondu à cela parce que le support de & apos; n'est pas la seule préoccupation.
R. Schreurs
3
Les guillemets simples sont également utilisés de cette façon en anglais américain.
Rob_vH
Cela devrait être la réponse acceptée car elle clarifie que l'apostrophe et les guillemets simples ne sont pas la même chose et c'est pourquoi vous ne devriez pas utiliser d'apostrophes pour entourer une valeur d'attribut HTML.
delroh le
En Unicode, le caractère d'apostrophe (& # 39;) est classé comme guillemet, et est la seule forme du guillemet "droit" dans la spécification. Les conseils d'utilisation & # 8217; est au mieux incomplet, car c'est le caractère de "Simple guillemet courbe, à droite". Si vous recherchez vraiment l'exactitude sémantique, elle doit être utilisée pour les guillemets droits, tandis que & # 8216; ("Guillemets courbes simples à gauche") doit être utilisé pour les guillemets à gauche.
James_pic
2

Si vous avez vraiment besoin de guillemets simples, d'apostrophes, vous pouvez utiliser

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

Dans mon cas, c'était une erreur lorsque j'ai essayé d'utiliser une citation dans le texte Time's up! . Il y a eu un avertissement d'Eslint.

Pour résoudre ce problème, j'ai remplacé quote par Time&apos;s up!. Le résultat est comme prévu

Sabit Rakhim
la source