Doctype huruf besar atau kecil?

182

Saat menulis doctype HTML5 apa metode yang benar?

<!DOCTYPE html>

atau

<!doctype html>
Astaga
sumber
Ini akan menjadi yang pertama biasanya meskipun ada yang dapat digunakan <! DOCTYPE html>
Shadow
Berhasil menjawab pertanyaan saya sendiri tetapi berpikir saya akan meninggalkannya kalau-kalau orang lain memiliki pemikiran yang sama. Saya pribadi lebih suka huruf kecil; tidak ada yang lain dalam HTML5 adalah huruf besar.
joshnh
11
Google.com menggunakan huruf kecil<!doctype html>
Leo Galleguillos
3
@ Halo Dunia: Itu karena huruf kecil kompres lebih baik karena lebih umum. Untuk situs yang mendapat jutaan klik sehari, ini bisa membuat perbedaan.
Zaz
Bagaimana dengan file SVG?
William Entriken

Jawaban:

183

Dalam HTML, DOCTYPE tidak sensitif huruf. DOCTYPEs berikut semuanya valid:

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

Dalam serialisasi XML (yaitu XHTML), DOCTYPE tidak diperlukan, tetapi jika Anda menggunakannya, DOCTYPEharus huruf besar:

<!DOCTYPE html>

Lihat serialisasi XML dari HTML5, alias 'XHTML5' :

Perhatikan bahwa jika Anda tidak menggunakan huruf besar DOCTYPEdalam dokumen XHTML, parser XML akan mengembalikan kesalahan sintaksis.

Bagian kedua dapat ditulis dalam huruf kecil ( html), huruf besar ( HTML) atau bahkan huruf besar campuran ( hTmL) - masih akan berfungsi. Namun, untuk mematuhi Pedoman Markup Polyglot untuk Dokumen XHTML yang Kompatibel dengan HTML , harus ditulis dalam huruf kecil.

Mathias Bynens
sumber
9
Tidak, ini salah. Dalam SGML deklarasi tipe dokumen adalah produksi 110, dalam XML itu adalah produksi 28. Dalam kedua kasus itu dinyatakan sebagai string tetap "DOCTYPE" (yang bukan tag , itu adalah kata kunci ). Jadi dalam definisi kanonik dalam standar SGML dan XML masing-masing selalu huruf besar. Jika Anda menemukan perangkat lunak yang memungkinkan "dokumen kecil" huruf kecil, perangkat lunak tersebut tidak sesuai dengan standar. Browser dirancang untuk menjadi "liberal dalam apa yang mereka terima", tetapi prosesor XML yang sesuai harus menandai ini sebagai kesalahan validasi.
Ichiro Furusato
5
... dan saya harus menunjukkan bahwa X / HTML5 juga salah dalam hal ini. Seperti yang ditentukan, XHTML5 sama sekali tidak valid markup XML, juga tidak bisa. Ada banyak kesalahan dalam spesifikasi X / HTML5. Saya tidak menganggapnya serius. Fakta bahwa mereka harus membuat " marka polyglot " (konsep yang sama sekali baru) jelas mengatakan bahwa mereka telah menyadap.
Ichiro Furusato
20
@Ichiro saya berbicara tentang HTML, bukan SGML. Tidak ada browser yang menerapkan SGML. Jika mereka melakukannya, <title/foo/akan setara dengan <title>foo</title>. Hanya beberapa validator HTML yang menggunakan SGML. Spesifikasi HTML5 adalah yang pertama mengklarifikasi ini: whatwg.org/specs/web-apps/current-work/multipage/…
Mathias Bynens
2
@ TestSubject528491 Paragraf itu adalah tentang bagian kedua DOCTYPE ( html). Inilah kalimat lengkapnya: “Bagian kedua dapat ditulis dalam huruf kecil ( html), huruf besar ( HTML) atau bahkan huruf besar campuran ( hTmL) - masih akan berfungsi. Namun, agar sesuai dengan Pedoman Markup Polyglot untuk Dokumen XHTML yang Kompatibel dengan HTML, harus ditulis dalam huruf kecil. "
Mathias Bynens
15
@IchiroFurusato Anda mungkin ingin membaca tentang HTML5 . Kutipan: “Namun, tidak seperti versi HTML sebelumnya, serialisasi HTML [5] tidak lagi dianggap sebagai aplikasi SGML, tetapi mendefinisikan sintaksisnya sendiri. Sementara sintaks terinspirasi oleh SGML, itu didefinisikan dengan cara yang lebih mirip cara browser sebenarnya menangani HTML di dunia nyata, terutama dalam hal penanganan kesalahan. "
Mathias Bynens
40

Jika ada yang masih bertanya-tanya di tahun 2014, silakan berkonsultasi ini:

HTML5

W3 HTML5 Spec - DOCTYPE

DOCTYPE harus terdiri dari komponen berikut, dalam urutan ini:

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

Catatan: meskipun ditampilkan dalam semua batas, spesifikasi menyatakan tidak sensitif

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

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.

Melihat spesifikasi XML, ia mencantumkan DOCTYPE dalam huruf besar, tetapi saya tidak dapat menemukan apa pun yang menyatakan bahwa 'semua huruf besar' diperlukan (untuk perbandingan, dalam spesifikasi HTML5 yang tercantum di atas, ditampilkan dalam contoh di semua huruf besar, tetapi spec secara eksplisit menyatakan bahwa case- insensitive ).

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

Markup Poliglot

W3 Polyglot Markup - Intro

Terkadang berharga untuk dapat menyajikan dokumen HTML5 yang juga merupakan dokumen XML yang baik.

W3 Polyglot Markup - Doctype

Markup Polyglot menggunakan deklarasi tipe dokumen (DOCTYPE) yang ditentukan oleh bagian 8.1.1 dari [HTML5]. Selain itu, DOCTYPE sesuai dengan aturan berikut:

* The string DOCTYPE is in uppercase letters.

Jadi, perhatikan bahwa Ployglot Markup menggunakan doctype HTML5 biasa, tetapi dengan penambahan / perubahan. Untuk diskusi kami, terutama DOCTYPE dinyatakan dalam semua huruf besar .

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

Penjumlahan

Lihat bagian HTML vs XHTML W3

[Pendapat] Saya tidak akan terlalu khawatir tentang pemenuhan kepatuhan XML kecuali Anda secara khusus mencoba membuat pertimbangan untuk itu. Untuk sebagian besar pengembangan server berbasis klien dan JS, JSON telah menggantikan XML.

Oleh karena itu, saya hanya dapat melihat ini benar-benar berlaku jika Anda mencoba untuk memperbarui sistem warisan berbasis xhtml / xml yang sudah ada untuk hidup berdampingan dengan fungsionalitas HTML5 yang baru. Jika demikian, lihat spesifikasi marka polyglot.

ucsarge
sumber
18

Menurut spesifikasi terbaru , Anda harus menggunakan sesuatu yang cocok dengan huruf besar-kecil <!DOCTYPE html>. Jadi, sementara browser diperlukan untuk mendukung kasus apa pun yang Anda inginkan, masuk akal untuk menyimpulkan dari ini bahwa ini <!DOCTYPE html>adalah kasus kanonik.

John Mellor
sumber
3
Spesifikasi ini dengan jelas menyatakan bahwa doctype harus mengandung string yang setara dengan case-insensitive dari '<! DOCTYPE', oleh karena itu menyiratkan bahwa '<! DOcTyPe' sama benarnya.
joshnh
6
Seperti yang saya katakan, spesifikasi ini membutuhkan browser untuk mendukung casing apa pun, sehingga casing apa pun akan berfungsi. Tetapi penanya-pertanyaan jelas mencari standar, bentuk kanonik, jadi tanpa adanya alasan kuat untuk memilih satu dari yang lain, Anda juga dapat menggunakan contoh case dari spec ...
John Mellor
9
Spec secara konsisten menuliskannya sebagai <!DOCTYPE html>, oleh karena itu akan masuk akal untuk menyimpulkan bahwa pembuat spec memiliki sedikit preferensi untuk kapitalisasi tertentu. Saya akan menggunakan huruf besar yang sama dengan spec, karena ini bagus untuk hal-hal ini konsisten, tetapi jika Anda lebih suka <!dOcTyPemaka menjadi tamu saya :)
John Mellor
3
@ joshnh Saya tidak mengerti kebingungan Anda. 1) Deklarasi DOCTYPE harus peka terhadap huruf besar-kecil. 2) Spesifikasi HTML5 menggunakan huruf besar "DOCTYPE html" dalam contohnya. Tampaknya semua jawaban ini mengatakan bahwa satu huruf besar konsisten dengan literatur, bahkan jika semuanya valid. Kenapa begitu keterlaluan?
2
Saya pikir @joshnh salah mengerti apa yang coba dikatakan John. FWIW, saya setuju dengan sentimen John bahwa tanpa adanya alasan khusus untuk memformat dengan cara tertentu, mengikuti apa yang diminta spesifikasi yang diperiksa browser lebih disukai. John tidak pernah mencoba untuk menyiratkan bahwa itu lebih benar, hanya saja itu sesuatu yang menjadi dasar preferensi Anda - jika tidak, itu adalah pilihan yang sepenuhnya sewenang-wenang, bukan?
Ryan Williams
7

Baik huruf besar atau kecil adalah "benar". Namun jika Anda menggunakan font web dan peduli tentang IE7, saya akan merekomendasikan menggunakan<!DOCTYPE html> karena bug di IE7 di mana font web terkadang gagal jika menggunakan <!doctype html>(misalnya dalam jawaban ini ).

Inilah sebabnya mengapa saya selalu menggunakan huruf besar pada doctype.

jpw
sumber
6

Standar untuk HTML5 adalah tag tidak peka huruf besar-kecil.

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

Lebih Teknis: ( http://www.w3.org/TR/html5/syntax.html )

DOCTYPE harus terdiri dari komponen berikut, dalam urutan ini:

  1. String yang cocok dengan huruf ASCII untuk string <!DOCTYPE.
Stephen
sumber
35
Saya tidak percaya 100% W3Schools mereka tidak berafiliasi dengan W3C dan meskipun sebagian besar informasinya bagus, sebagian tidak.
joshnh
Ini cukup dikenal luas - inilah tautan w3.org: w3.org/TR/html5/syntax.html
Stephen
4
W3Schools tidak memiliki lebih banyak atau lebih sedikit kesalahan daripada situs web lain. ( Contoh yang sepenuhnya acak ) Ambil informasi dengan sebutir garam, lihat halaman w3.org jika ragu, dan Anda akan baik-baik saja. Orang bodoh sebenarnya adalah mereka yang percaya bahwa W3Schools adalah badan resmi atau bahwa sertifikat mereka berarti apa-apa.
Tn. Lister
8
@ Mr.Lister: Saya rasa tidak adil menyebut orang bodoh karena mereka pikir ada hubungan antara sesuatu bernama "W3Schools" dan sesuatu yang bernama "W3C". Keduanya cukup mirip dalam nama dan domain untuk menyebabkan kebingungan, dan asumsi bahwa yang pertama didukung oleh, atau terkait dengan, yang terakhir. Itulah niat W3Schools, yang merupakan salah satu alasan mereka membuat marah banyak orang yang memahami masalah ini. Fakta bahwa banyak informasi mereka tidak akurat menambah masalah (yaitu mungkin sedikit dimaafkan jika mereka benar-benar memberikan layanan yang masuk akal)
Bobby Jack
Tautan ke tag_doctype.asptidak valid (404) dan pertanyaan ini tentang doctypedeklarasi, yang bukan tag ... Pokoknya, kesimpulannya benar: di HTML5, kata kunci doctypedapat dalam huruf besar, kecil atau campuran.
Abel
3

Semacam pertanyaan menyiratkan hanya ada satu jawaban yang benar, menyediakan dua pilihan ganda, dan meminta kami untuk memilih satu. Saya akan menyarankan itu untuk HTML5 baik <!DOCTYPE html>dan <!doctype html>valid.

Jadi browser berkemampuan HTML5 akan menerima yang huruf kecil dan memproses html dengan benar.

Browser sebelumnya dan tidak menyadari HTML5, saya pernah mendengar, bahkan tanpa DOCTYPE, akan berusaha untuk memproses html sebaik mungkin. Dan jika mereka tidak mengenali doctype huruf kecil akan melakukan hal yang sama. Jadi tidak ada gunanya membuatnya menjadi huruf besar karena browser tersebut tidak akan dapat sepenuhnya mengimplementasikan deklarasi HTML5.

Clive
sumber
0

Deklarasi doctype tidak peka huruf besar kecil, dan string ASCII apa pun yang cocok

Standar HTML5

Ichoku Chinonso
sumber