ตัวพิมพ์ใหญ่หรือเล็กพิมพ์?


182

เมื่อเขียนรูปแบบ HTML5 วิธีการที่ถูกต้องคืออะไร?

<!DOCTYPE html>

หรือ

<!doctype html>

มันจะเป็นตัวแรกที่มักจะสามารถใช้ได้ <! DOCTYPE html>
Shadow

จัดการเพื่อตอบคำถามของฉันเอง แต่คิดว่าฉันจะทิ้งไว้ในกรณีที่คนอื่นมีความคิดคล้ายกัน โดยส่วนตัวฉันชอบตัวพิมพ์เล็ก ไม่มีอะไรใน HTML5 ที่เป็นตัวพิมพ์ใหญ่
joshnh

11
Google.com ใช้ตัวพิมพ์เล็ก<!doctype html>
Leo Galleguillos

3
@HelloWorld: นั่นเป็นเพราะตัวอักษรตัวพิมพ์เล็กบีบอัดได้ดีกว่าเพราะมันเป็นเรื่องธรรมดา สำหรับเว็บไซต์ที่มีผู้เข้าชมหลายล้านครั้งต่อวันสิ่งนี้สามารถสร้างความแตกต่างได้
Zaz

แล้วไฟล์ SVG ล่ะ?
William Entriken

คำตอบ:


183

ใน HTML DOCTYPE ไม่คำนึงถึงขนาดตัวพิมพ์ DOCTYPE ต่อไปนี้ถูกต้องทั้งหมด:

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

ใน XML การทำให้เป็นอนุกรม (เช่น XHTML) ไม่จำเป็นต้องใช้ DOCTYPE แต่ถ้าคุณใช้DOCTYPEควรเป็นตัวพิมพ์ใหญ่:

<!DOCTYPE html>

ดูการทำให้เป็นอันดับ XML ของ HTML5 หรือที่เรียกว่า 'XHTML5' :

โปรดทราบว่าหากคุณไม่พิมพ์ใหญ่DOCTYPEในเอกสาร XHTML ตัวแยกวิเคราะห์ XML จะส่งคืนข้อผิดพลาดทางไวยากรณ์

ส่วนที่สองสามารถเขียนเป็นตัวพิมพ์เล็ก ( html) ตัวพิมพ์ใหญ่ ( HTML) หรือแม้แต่ตัวพิมพ์เล็ก( hTmL) - มันจะยังคงทำงานได้ อย่างไรก็ตามเพื่อให้เป็นไปตามคำแนะนำของมาร์กอัป Polyglot สำหรับเอกสาร XHTML ที่เข้ากันได้กับ HTMLควรเขียนด้วยตัวพิมพ์เล็ก


9
ไม่ถูกต้อง ใน SGML การประกาศประเภทเอกสารคือการผลิต 110 ใน XML เป็นการผลิต 28 ในทั้งสองกรณีจะมีการประกาศเป็นสตริงคงที่ "DOCTYPE" (ซึ่งไม่ใช่แท็กเป็นคำหลัก ) ดังนั้นในคำจำกัดความมาตรฐานในมาตรฐาน SGML และ XML ที่เกี่ยวข้องจึงเป็นตัวพิมพ์ใหญ่เสมอ หากคุณพบซอฟต์แวร์ที่อนุญาตให้ตัวพิมพ์เล็ก "ซอฟต์แวร์" นั้นไม่สอดคล้องกับมาตรฐาน เบราว์เซอร์ได้รับการออกแบบให้ "มีอิสระในสิ่งที่พวกเขายอมรับ" แต่ตัวประมวลผล XML ที่เข้ากันได้ควรตั้งค่าสถานะนี้ว่าเป็นข้อผิดพลาดในการตรวจสอบความถูกต้อง
Ichiro Furusato

5
... และฉันควรจะชี้ให้เห็นว่า X / HTML5 นั้นไม่ถูกต้องเช่นกัน ตามที่ระบุไว้ XHTML5 นั้นไม่ใช่มาร์กอัป XML ที่ถูกต้องและไม่สามารถทำได้ มีข้อผิดพลาดมากมายในข้อกำหนด X / HTML5 ฉันไม่ได้จริงจังมาก ความจริงที่ว่าพวกเขาต้องสร้าง " มาร์กอัปพูดได้หลายภาษา " (แนวคิดใหม่ที่สมบูรณ์) ชัดเจนว่าพวกเขาได้เขวี้ยง
Ichiro Furusato

20
@ อิชิโรฉันกำลังพูดถึง HTML ไม่ใช่ SGML ไม่เคยใช้เบราว์เซอร์ SGML ถ้าพวกเขาจะเทียบเท่ากับ<title/foo/ <title>foo</title>เพียงไม่กี่ HTML validatorsใช้ SGML สเป็ค HTML5 เป็นคนแรกที่อธิบายสิ่งนี้: whatwg.org/specs/web-apps/current-work/multipage/ …
Mathias Bynens

2
@ TestSubject528491 ย่อหน้านั้นเป็นเรื่องเกี่ยวกับส่วนที่สองของ DOCTYPE ( html) นี่คือประโยคเต็ม:“ ส่วนที่สองสามารถเขียนเป็นตัวพิมพ์เล็ก ( html) ตัวพิมพ์ใหญ่ ( HTML) หรือแม้แต่ตัวพิมพ์เล็ก( hTmL) - มันยังคงใช้ได้ อย่างไรก็ตามเพื่อให้เป็นไปตามแนวทางการมาร์กอัปโพลีกลอตสำหรับเอกสาร XHTML ที่ใช้กับ HTML ได้ควรเขียนด้วยตัวพิมพ์เล็ก "
งัด Bynens

15
@IchiroFurusato คุณอาจต้องการที่จะอ่านข้อมูลเกี่ยวกับ HTML5 ข้อความอ้างอิง:“ อย่างไรก็ตามไม่เหมือน HTML เวอร์ชันก่อนหน้านี้ HTML [5] การทำให้เป็นอนุกรมไม่ถือว่าเป็นแอปพลิเคชันของ SGML อีกต่อไป แต่จะกำหนดไวยากรณ์ของตัวเองแทน ในขณะที่ไวยากรณ์ได้รับแรงบันดาลใจจาก SGML มันถูกกำหนดในลักษณะที่คล้ายกับวิธีที่เบราว์เซอร์จัดการกับ HTML ในโลกแห่งความเป็นจริงโดยเฉพาะอย่างยิ่งในเรื่องการจัดการข้อผิดพลาด "
งัด Bynens

40

หากใครยังคงสงสัยในปี 2014 โปรดอ่าน:

HTML5

W3 HTML5 Spec - Doctype

DOCTYPE ต้องประกอบด้วยส่วนประกอบต่อไปนี้ตามลำดับนี้:

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

หมายเหตุ:แม้จะถูกแสดงในตัวพิมพ์ใหญ่ทั้งหมดข้อมูลจำเพาะระบุว่าไม่รู้สึกตัว

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

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.

ดูข้อมูลจำเพาะ XML มันแสดงรายการ DOCTYPE ในตัวพิมพ์ใหญ่ แต่ฉันไม่พบสิ่งใดที่ระบุว่าจำเป็นต้องใช้ "ตัวพิมพ์ใหญ่ทั้งหมด" (สำหรับการเปรียบเทียบในข้อกำหนด HTML5 ที่ระบุไว้ข้างต้นจะปรากฏในตัวอย่างในตัวพิมพ์ใหญ่ทั้งหมด แต่ ข้อมูลจำเพาะระบุไว้อย่างชัดเจนว่าไม่ตรงตามตัวพิมพ์ใหญ่ - เล็ก )

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

Polyglot Markup

W3 Polyglot Markup - คำนำ

บางครั้งมีประโยชน์ที่จะสามารถให้บริการเอกสาร HTML5 ที่มีเอกสาร XML ที่มีรูปแบบที่ดีเช่นกัน

W3 Polyglot Markup - Doctype

Polyglot มาร์กอัปใช้การประกาศประเภทเอกสาร (DOCTYPE) ที่ระบุโดยส่วน 8.1.1 ของ [HTML5] นอกจากนี้ DOCTYPE เป็นไปตามกฎต่อไปนี้:

* The string DOCTYPE is in uppercase letters.

ดังนั้นโปรดทราบว่า Ployglot Markup ใช้ประเภท HTML5 ปกติ แต่มีการเพิ่ม / เปลี่ยนแปลง สำหรับการสนทนาของเราสะดุดตาที่สุดที่ DOCTYPE มีการประกาศตัวพิมพ์ใหญ่ทั้งหมด

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

ผลบวก

ดูส่วน HTML กับ XHTML ของ W3

[ความคิดเห็น]ฉันจะไม่กังวลมากเกินไปเกี่ยวกับความสอดคล้องของ XML เว้นแต่คุณจะพยายามพิจารณาเป็นพิเศษ สำหรับลูกค้าส่วนใหญ่และการพัฒนาเซิร์ฟเวอร์ที่ใช้ JS, JSON ได้แทนที่ XML

ดังนั้นฉันสามารถเห็นการใช้งานนี้ได้จริง ๆ หากคุณพยายามอัปเดตระบบดั้งเดิมที่ใช้ xhtml / xml ให้มีอยู่ร่วมกับฟังก์ชัน HTML5 ใหม่ หากเป็นกรณีนี้ให้ดูที่ข้อมูลจำเพาะมาร์กอัปแบบหลายภาษา


18

ตามที่สเปคล่าสุดของ<!DOCTYPE html>คุณควรใช้สิ่งที่เป็นคู่กรณีตายสำหรับ ดังนั้นในขณะที่เบราว์เซอร์จะต้องรองรับกรณีใดก็ตามที่คุณต้องการ แต่ก็มีเหตุผลที่จะอนุมานได้ว่านี่<!DOCTYPE html>เป็นกรณีที่ยอมรับได้


3
สเปคค่อนข้างชัดเจนระบุว่าประเภท Doctype ต้องมีสตริงที่เทียบเท่ากับตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ของ '<! DOCTYPE' ดังนั้นจึงหมายความว่า '<! dOcTyPe' นั้นถูกต้อง
joshnh

6
ดังที่ฉันกล่าวไปแล้วสเปคนั้นต้องการเบราว์เซอร์เพื่อรองรับกรณีใด ๆ ดังนั้นกรณีใด ๆ ก็จะใช้งานได้ แต่ผู้ถามคำถามนั้นกำลังมองหารูปแบบมาตรฐานที่เป็นที่ยอมรับอย่างชัดเจนดังนั้นหากไม่มีเหตุผลที่ดีพอที่จะเลือกข้อใดข้อหนึ่งคุณอาจใช้ตัวอย่างกรณีจากสเป็ค ...
John Mellor

9
ข้อมูลจำเพาะเขียนเป็นมันอย่างสม่ำเสมอ<!DOCTYPE html>ดังนั้นจึงมีเหตุผลที่จะอนุมานว่าผู้เขียนข้อมูลจำเพาะนั้นมีความพึงพอใจเล็กน้อยสำหรับการใช้ตัวพิมพ์ใหญ่นั้น ฉันจะใช้เงินทุนของ บริษัท เช่นเดียวกับสเปคเพราะมันเป็นเรื่องดีที่สิ่งเหล่านี้เพื่อให้สอดคล้อง แต่ถ้าคุณต้องการ<!dOcTyPeแล้วเป็นแขกของฉัน :)
จอห์นเมลเลอร์

3
@joshnh ฉันไม่เข้าใจความสับสนของคุณ 1) การประกาศ DOCTYPE นั้นจำเป็นต้องคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ 2) ข้อมูลจำเพาะ HTML5 ใช้การใช้อักษรตัวพิมพ์ใหญ่ "DOCTYPE html" ในตัวอย่าง คำตอบทั้งหมดนี้ดูเหมือนจะบอกว่าเป็นตัวพิมพ์ใหญ่หนึ่งตัวที่สอดคล้องกับวรรณกรรม ทำไมถึงอุกอาจ?

2
ฉันคิดว่า @joshnh เข้าใจผิดในสิ่งที่จอห์นพยายามพูด FWIW ฉันเห็นด้วยกับความเชื่อมั่นของจอห์นว่าหากไม่มีเหตุผลเฉพาะใด ๆ ในการจัดรูปแบบบางอย่างไปตามข้อกำหนดที่ขอให้เบราว์เซอร์ตรวจสอบเป็นที่ต้องการ จอห์นไม่เคยพยายามที่จะบอกว่ามันถูกต้องมากกว่านี้เพียง แต่มันเป็นสิ่งที่จะทำให้คุณพึงพอใจ - ไม่อย่างนั้นมันเป็นทางเลือกที่สมบูรณ์แบบใช่ไหม?
Ryan Williams

7

ตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก "ถูกต้อง" อย่างไรก็ตามหากคุณใช้เว็บฟอนต์และใส่ใจเกี่ยวกับ IE7 ฉันขอแนะนำให้ใช้<!DOCTYPE html>เพราะข้อผิดพลาดใน IE7 ซึ่งบางครั้งเว็บฟอนต์ล้มเหลวหากใช้<!doctype html>(เช่นในคำตอบนี้ )

นี่คือเหตุผลที่ฉันมักจะเป็นประเภทตัวพิมพ์ใหญ่


6

มาตรฐานสำหรับ HTML5 คือแท็กนั้นไม่คำนึงถึงขนาดตัวพิมพ์

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

เทคนิคเพิ่มเติม: ( http://www.w3.org/TR/html5/syntax.html )

DOCTYPE ต้องประกอบด้วยส่วนประกอบต่อไปนี้ตามลำดับนี้:

  1. สตริงที่มีการแข่งขันกรณีตาย ASCII <!DOCTYPEสำหรับสตริง

35
ฉันไม่เชื่อถือ W3Schools 100% พวกเขาไม่ได้มีส่วนเกี่ยวข้องกับ W3C และถึงแม้ว่าข้อมูลส่วนใหญ่ของพวกเขาจะดี แต่บางส่วนก็ไม่ได้
joshnh

สิ่งนี้เป็นที่รู้จักอย่างกว้างขวาง - นี่คือลิงค์ w3.org: w3.org/TR/html5/syntax.html
Stephen

4
W3Schools ไม่มีข้อผิดพลาดมากกว่าหรือน้อยกว่าเว็บไซต์อื่น ๆ ( ตัวอย่างแบบสุ่มสมบูรณ์ ) นำข้อมูลมาด้วยเม็ดเกลือศึกษาหน้า w3.org เมื่อมีข้อสงสัยและคุณจะไม่เป็นไร คนเขลาที่แท้จริงคือผู้ที่เชื่อว่า W3Schools เป็นองค์กรที่เป็นทางการหรือใบรับรองของพวกเขามีความหมายอะไร
Mr Lister

8
@MrLister: ฉันไม่คิดว่ามันยุติธรรมที่จะเรียกคนโง่เพราะพวกเขาคิดว่ามีการเชื่อมโยงระหว่างสิ่งที่ชื่อว่า "W3Schools" และสิ่งที่ชื่อว่า "W3C" ทั้งสองมีความคล้ายคลึงกันมากพอในชื่อและโดเมนที่จะทำให้เกิดความสับสนและข้อสันนิษฐานที่ว่าอดีตนั้นได้รับการรับรองโดยอย่างใดอย่างหนึ่งหรือเกี่ยวข้องกับสิ่งหลัง นั่นคือความตั้งใจของ W3Schools ซึ่งเป็นหนึ่งในเหตุผลที่พวกเขาโกรธผู้คนจำนวนมากที่เข้าใจปัญหานี้ ความจริงที่ว่าข้อมูลจำนวนมากของพวกเขาไม่ถูกต้องประกอบกับปัญหา (เช่นมันอาจจะอภัยเล็กน้อยหากพวกเขาให้บริการที่เหมาะสมจริง ๆ )
บ๊อบบี้แจ็ค

ลิงก์ไปยังtag_doctype.aspไม่ถูกต้อง (404) และคำถามนี้เกี่ยวกับการdoctypeประกาศซึ่งไม่ใช่แท็ก ... อย่างไรก็ตามข้อสรุปนั้นถูกต้อง: ใน HTML5 คำหลักdoctypeสามารถเป็นตัวพิมพ์ใหญ่ตัวพิมพ์เล็กหรือผสม
อาเบล

3

การเรียงลำดับคำถามหมายถึงมีคำตอบที่ถูกต้องเพียงข้อเดียวจัดให้มีตัวเลือกสองตัวเลือกและขอให้เราเลือก ฉันขอแนะนำว่าสำหรับ HTML5 ทั้งคู่<!DOCTYPE html>และ<!doctype html>ถูกต้อง

ดังนั้นเบราว์เซอร์ที่สามารถใช้ HTML5 จะยอมรับตัวพิมพ์เล็กและประมวลผล html อย่างถูกต้อง

เบราว์เซอร์รุ่นก่อนหน้าและไม่สนใจ HTML5 ที่ฉันเคยได้ยินแม้จะไม่มี doctype ก็จะพยายามประมวลผล html ให้ดีที่สุดเท่าที่จะทำได้ และหากพวกเขาไม่รู้จักประเภทตัวพิมพ์เล็กจะทำเช่นเดียวกัน ดังนั้นจึงไม่มีประเด็นที่ทำให้ตัวพิมพ์ใหญ่เป็นเพราะเบราว์เซอร์เหล่านั้นจะไม่สามารถใช้การประกาศ HTML5 ใด ๆ ได้อย่างเต็มที่


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.