Perché `& apos;` non dovrebbe essere usato per sfuggire alle virgolette singole?


158

Come affermato in, quando le virgolette singole in HTML sono diventate così popolari? e citazione incorporata di Jquery nell'attributo , la voce di Wikipedia su HTML dice quanto segue:

Il carattere a virgoletta singola ('), quando usato per citare un valore di attributo, deve anche essere evitato come 'o '(NON deve essere evitato come 'tranne nei documenti XHTML) quando appare all'interno del valore dell'attributo stesso.

Perché non dovrebbe 'essere usato? Inoltre, è "sicuro da usare al posto di "?



7
Si noti che IE8 non supporta '.
Paul D. Waite,

Risposte:


178

"è nell'elenco ufficiale delle entità HTML 4 valide , ma 'non lo è.

Dal C.16. The Named Character Reference ' :

Il riferimento al carattere denominato ' (l'apostrofo, U + 0027) è stato introdotto in XML 1.0 ma non appare in HTML. Gli autori dovrebbero quindi utilizzare 'invece di 'lavorare come previsto negli agenti utente HTML 4.


3
"è nell'elenco, quindi dovrebbe essere OK.
Bennett McElwee,

9
Oggi è successo che su una macchina IE8 & apos; non è stato analizzato, quindi l'utente vede il codice. Sostituendo con & # 39; problema risolto.
Michele Gargiulo,

9
& aquot; non sostituisce & apos; come uno singolo e l'altro un doppio.
RichardTheKiwi,

Cordiali saluti: HTML5 supporta entrambe le entità
Tarol


29

" è valido sia in HTML5 che HTML4.

'è valido in HTML5 , ma non in HTML4 . Tuttavia, la maggior parte dei browser supporta 'comunque HTML4.


10
Nota che IE 8 non supporta '.
Paul D. Waite,

17

Se avete bisogno di scrivere semanticamente corretto mark-up, anche in HTML5, è necessario non utilizzare 'per sfuggire virgolette singole. Anche se, posso immaginare che in realtà intendevi apostrofo piuttosto che singola citazione.

le virgolette singole e gli apostrofi non sono gli stessi, semanticamente, sebbene possano apparire uguali.

Ecco un apostrofo.

Utilizzare 'per inserirlo se è necessario il supporto HTML4. (modificato)

In inglese britannico, le virgolette singole vengono utilizzate in questo modo:

"Mi ha detto di 'provarlo'", dissi.

Le citazioni vengono fornite in coppia. Puoi usare:

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

avere le virgolette nidificate in modo semanticamente corretto, rinviando la sostituzione dei caratteri effettivi al motore di rendering. Questa sostituzione può quindi essere influenzata dalle regole CSS , come:

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

Un vecchio ma apparentemente ancora rilevante articolo sul markup semanticamente corretto: The Trouble With EM 'n EN (e altri personaggi loschi) .

(modificato) Questo era:

Usa 'per inserirlo se hai bisogno del supporto HTML4.

Ma, come ha sottolineato @James_pic, questa non è la semplice virgoletta singola, ma la "Virgoletta singola curva, a destra".


La domanda era chiaramente sull'uso degli apostrofi e non delle citazioni. Perché dovresti pubblicare questo?
Alex Skrypnyk,

9
Vedo chiaramente una singola citazione nel titolo. La domanda era perché sfuggirli non dovrebbe essere fatto con & apos; . Ho risposto perché il supporto per & apos; non è l'unica preoccupazione.
R. Schreurs,

3
Le virgolette singole vengono utilizzate in questo modo anche in inglese americano.
Rob_vH,

Questa dovrebbe essere la risposta accettata poiché chiarisce che l'apostrofo e le virgolette singole non sono la stessa cosa ed è per questo che non dovresti usare gli apostrofi per racchiudere un valore di attributo HTML.
delroh

In Unicode, il carattere apostrofo (& # 39;) è classificato tra virgolette ed è l'unica forma di virgolette "diritte" nelle specifiche. Il consiglio di usare & # 8217; nella migliore delle ipotesi è incompleto, perché quello è il carattere di "Virgoletta curva singola, giusto". Se stai davvero cercando la correttezza semantica, dovrebbe essere usato per le virgolette giuste, mentre & # 8216; ("Virgoletta curva singola, sinistra") dovrebbe essere usato per le virgolette di sinistra.
James_pic

2

Se hai davvero bisogno di virgolette singole, apostrofi, puoi usare

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

-2

Nel mio caso è stato un errore quando ho provato a usare la citazione nel testo Time's up!. C'è stato un avvertimento da parte di Eslint.

Per risolvere il problema ho sostituito la citazione con Time&apos;s up!. Il risultato è come previsto

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.