Doctype maiuscolo o minuscolo?


182

Quando si scrive il doctype HTML5 qual è il metodo corretto?

<!DOCTYPE html>

o

<!doctype html>

Sarà di solito il primo sebbene si possa usare qualsiasi <! DOCTYPE html>
Ombra

Riuscito a rispondere alla mia domanda, ma pensavo che l'avrei lasciato nel caso in cui altri avessero avuto un pensiero simile. Personalmente preferisco le lettere minuscole; nient'altro in HTML5 è maiuscolo.
joshnh l'

11
Google.com utilizza una lettera minuscola<!doctype html>
Leo Galleguillos il

3
@HelloWorld: Questo perché le lettere minuscole si comprimono meglio perché sono più comuni. Per i siti che ottengono milioni di visite al giorno, questo può fare la differenza.
Zaz,

Che dire dei file SVG?
William Entriken,

Risposte:


183

In HTML, DOCTYPE non distingue tra maiuscole e minuscole. I seguenti DOCTYPE sono tutti validi:

<!doctype html>
<!DOCTYPE html>
<!DOCTYPE HTML>
<!DoCtYpE hTmL>

Nelle serializzazioni XML (ovvero XHTML) il DOCTYPE non è richiesto, ma se lo si utilizza, DOCTYPEdeve essere in maiuscolo:

<!DOCTYPE html>

Vedi la serializzazione XML di HTML5, alias 'XHTML5' :

Si noti che se non si fa maiuscolo DOCTYPEin un documento XHTML, il parser XML restituirà un errore di sintassi.

La seconda parte può essere scritta in lettere minuscole ( html), maiuscole ( HTML) o anche maiuscole ( hTmL) - funzionerà comunque. Tuttavia, per conformarsi alle Linee guida per il markup di Polyglot per i documenti XHTML compatibili con HTML , dovrebbe essere scritto in minuscolo.


9
No, questo non è corretto. In SGML la dichiarazione del tipo di documento è produzione 110, in XML è produzione 28. In entrambi i casi è dichiarata come stringa fissa "DOCTYPE" (che non è un tag , è una parola chiave ). Quindi, nelle definizioni canoniche nei rispettivi standard SGML e XML è sempre in maiuscolo. Se trovi un software che consente un "doctype" minuscolo, il software non è conforme agli standard. I browser sono progettati per essere "liberali in ciò che accettano", ma un processore XML conforme dovrebbe contrassegnarlo come un errore di convalida.
Ichiro Furusato,

5
... e dovrei sottolineare che X / HTML5 non è corretto anche su questo. Come specificato, XHTML5 non è semplicemente un markup XML valido, né può esserlo. Esistono numerosi errori nella specifica X / HTML5. Non lo prendo molto sul serio. Il fatto che abbiano dovuto creare un " markup poliglotta " (un concetto completamente nuovo) dice chiaramente che hanno puntato.
Ichiro Furusato,

20
@Ichiro Sto parlando di HTML, non di SGML. Nessun browser ha mai implementato SGML. Se lo facessero, <title/foo/sarebbe equivalente a <title>foo</title>. Solo alcuni validatori HTML usano SGML. La specifica HTML5 è la prima a chiarire questo: whatwg.org/specs/web-apps/current-work/multipage/…
Mathias Bynens

2
@ TestSubject528491 Quel paragrafo riguarda la seconda parte del DOCTYPE ( html). Ecco la frase completa: “La seconda parte può essere scritta in minuscolo ( html), maiuscolo ( HTML) o anche in maiuscolo ( hTmL) - funzionerà comunque. Tuttavia, per conformarsi alle Linee guida per il markup di Polyglot per i documenti XHTML compatibili con HTML, dovrebbe essere scritto in minuscolo. "
Mathias Bynens,

15
@IchiroFurusato Potresti voler leggere su HTML5 . Citazione: “Tuttavia, a differenza delle versioni precedenti di HTML, la serializzazione HTML [5] non è più considerata un'applicazione di SGML, ma definisce invece la propria sintassi. Mentre la sintassi è ispirata da SGML, viene definita in un modo che ricorda più da vicino il modo in cui i browser gestiscono effettivamente l'HTML nel mondo reale, in particolare per quanto riguarda la gestione degli errori. "
Mathias Bynens,

40

Se qualcuno si sta ancora chiedendo nel 2014, si prega di consultare questo:

HTML5

W3 HTML5 Spec - Doctype

Un DOCTYPE deve essere composto dai seguenti componenti, in questo ordine:

1. A string that is an ASCII case-insensitive match for the string "<!DOCTYPE".
...

Nota: nonostante sia visualizzato in maiuscolo, la specifica indica che è insensibile

-------------------------------------------------- --------------------

XHTML5

W3 HTML5 - XHTML

This specification does not define any syntax-level requirements 
beyond those defined for XML proper.

XML documents may contain a DOCTYPE if desired, but this is not required 
to conform to this specification. This specification does not define 
a public or system identifier, nor provide a formal DTD.

Guardando le specifiche XML, elenca DOCTYPE in maiuscolo, ma non riesco a trovare nulla che affermi che è richiesto "tutto maiuscolo" (per il confronto, nelle specifiche HTML5 sopra elencate, viene visualizzato nell'esempio in maiuscolo, ma la specifica afferma esplicitamente che non fa distinzione tra maiuscole e minuscole ).

-------------------------------------------------- --------------------

Markup Polyglot

W3 Polyglot Markup - Introduzione

A volte è utile essere in grado di servire documenti HTML5 che sono anche documenti XML ben formati.

W3 Polyglot Markup - Doctype

Il markup Polyglot utilizza una dichiarazione del tipo di documento (DOCTYPE) specificata dalla sezione 8.1.1 di [HTML5]. Inoltre, il DOCTYPE è conforme alle seguenti regole:

* The string DOCTYPE is in uppercase letters.

Quindi, nota che Ployglot Markup utilizza un normale doctype HTML5, ma con aggiunte / modifiche. Per la nostra discussione, in particolare che DOCTYPE è dichiarato in maiuscolo .

-------------------------------------------------- --------------------

Somma

Visualizza la sezione HTML vs. XHTML del W3

[Opinione] Non mi preoccuperei troppo di soddisfare la conformità XML a meno che tu non stia specificatamente cercando di fare delle considerazioni al riguardo. Per la maggior parte dello sviluppo di client e server basati su JS, JSON ha sostituito XML.

Pertanto, posso vederlo davvero applicabile solo se stai cercando di aggiornare un sistema legacy esistente basato su xhtml / xml per coesistere con la nuova funzionalità HTML5. In tal caso, esaminare le specifiche di markup poliglotta.


18

Secondo le ultime specifiche , dovresti usare qualcosa che non fa distinzione tra maiuscole e minuscole <!DOCTYPE html>. Quindi, mentre i browser sono tenuti a supportare qualsiasi caso tu preferisca, è ragionevole dedurre da ciò che <!DOCTYPE html>è il caso canonico.


3
La specifica afferma chiaramente che doctype deve contenere una stringa che è l'equivalente senza distinzione tra maiuscole e minuscole di '<! DOCTYPE', quindi implica che '<! DOcTyPe' sia altrettanto corretto.
joshnh,

6
Come ho detto, le specifiche richiedono che i browser supportino qualsiasi caso, quindi qualsiasi caso funzionerà. Ma chi pone la domanda è chiaramente alla ricerca di una forma canonica standard, quindi in assenza di validi motivi per scegliere l'uno rispetto all'altro, puoi anche usare il caso di esempio dalla specifica ...
John Mellor

9
La specifica la scrive costantemente come <!DOCTYPE html>, quindi sarebbe ragionevole dedurre che l'autore della specifica abbia una leggera preferenza per quella particolare capitalizzazione. Userò la stessa maiuscola delle specifiche, poiché è bello che queste cose siano coerenti, ma se preferisci, <!dOcTyPeallora essere mio ospite :)
John Mellor,

3
@joshnh Non capisco la tua confusione. 1) La dichiarazione DOCTYPE non è sensibile al maiuscolo / minuscolo. 2) La specifica HTML5 utilizza la maiuscola "DOCTYPE html" nei suoi esempi. Tutta questa risposta sembra dire sia che una maiuscola è coerente con la letteratura, anche se tutte sono valide. Perché è così scandaloso?

2
Penso che @joshnh abbia frainteso quello che John stava cercando di dire. FWIW, sono d'accordo con il sentimento di John che in assenza di un motivo particolare per formattare in un certo modo, andando con ciò che la specifica richiede che i browser facciano un confronto, è preferibile. John non ha mai cercato di insinuare che è più corretto, solo che è qualcosa su cui basare le tue preferenze - altrimenti è una scelta completamente arbitraria, giusto?
Ryan Williams,

7

Le lettere maiuscole o minuscole sono "corrette". Tuttavia, se usi i caratteri web e ti preoccupi di IE7, ti consiglio di usarli a <!DOCTYPE html>causa di un bug in IE7 in cui i caratteri web a volte falliscono se si usa <!doctype html>(ad esempio in questa risposta ).

Questo è il motivo per cui ho sempre il carattere maiuscolo.


6

Lo standard per HTML5 è che i tag non fanno distinzione tra maiuscole e minuscole.

http://www.w3schools.com/html5/tag_doctype.asp

Più tecnicamente: ( http://www.w3.org/TR/html5/syntax.html )

Un DOCTYPE deve essere composto dai seguenti componenti, in questo ordine:

  1. Una stringa che corrisponde a una corrispondenza ASCII senza distinzione tra maiuscole e minuscole per la stringa <!DOCTYPE.

35
Non mi fido di W3Schools al 100% che non sono affiliati al W3C e sebbene la maggior parte delle loro informazioni siano buone, alcune non lo sono.
joshnh l'

Questo è abbastanza noto - ecco il link w3.org
Stephen

4
W3Schools non ha più o meno errori di altri siti web. ( Esempio completamente casuale ) Prendi le informazioni con un pizzico di sale, consulta le pagine di w3.org in caso di dubbio, e starai bene. I veri sciocchi sono quelli che credono che W3Schools sia un ente ufficiale o che i loro certificati significino qualcosa.
Mr Lister

8
@MrLister: Non penso sia giusto chiamare gli sciocchi perché pensano che ci sia un legame tra qualcosa chiamato "W3Schools" e qualcosa chiamato "W3C". I due sono abbastanza simili nel nome e nel dominio da causare confusione e il presupposto che il primo è in qualche modo approvato o correlato al secondo. Questa è chiaramente l'intenzione di W3Schools, che è uno dei motivi per cui fanno arrabbiare così tante persone che capiscono il problema. Il fatto che molte delle loro informazioni siano imprecise aggrava il problema (vale a dire che potrebbe essere leggermente perdonabile se effettivamente fornissero un servizio ragionevole)
Bobby Jack

Il collegamento a tag_doctype.aspnon è valido (404) e questa domanda riguarda la doctypedichiarazione, che non è un tag ... Comunque, la conclusione è corretta: in HTML5, la parola chiave doctypepuò essere in maiuscolo, minuscolo o misto.
Abele,

3

La domanda implica che esiste solo una risposta corretta, fornisce una scelta multipla tra due e ci chiede di sceglierne una. Vorrei suggerire che per HTML5 entrambi <!DOCTYPE html>e <!doctype html>sono validi.

Quindi un browser compatibile con HTML5 accetterebbe quello minuscolo ed elaborerà correttamente l'html.

I browser precedenti e ignari di HTML5, ho sentito, anche senza un doctype, tenteranno di elaborare l'html nel miglior modo possibile. E se non riconoscono il doctype minuscolo farà lo stesso. Quindi non ha senso renderlo maiuscolo poiché quei browser non saranno comunque in grado di implementare completamente le dichiarazioni HTML5.


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.