Chữ hoa hoặc chữ thường viết hoa?


182

Khi viết tài liệu HTML5 phương pháp đúng là gì?

<!DOCTYPE html>

hoặc là

<!doctype html>

Nó sẽ là cái đầu tiên thường mặc dù có thể được sử dụng <! DOCTYPE html>
Shadow

Quản lý để trả lời câu hỏi của riêng tôi nhưng nghĩ rằng tôi sẽ để nó trong trường hợp những người khác có suy nghĩ tương tự. Cá nhân tôi thích chữ thường; không có gì khác trong HTML5 là chữ hoa.
joshnh

11
Google.com sử dụng chữ thường<!doctype html>
Leo Galleguillos

3
@HelloWorld: Đó là vì chữ in thường nén tốt hơn vì chúng phổ biến hơn. Đối với các trang web nhận được hàng triệu lượt truy cập mỗi ngày, điều này có thể tạo ra sự khác biệt.
Zaz

Còn đối với các tệp SVG thì sao?
William Entriken

Câu trả lời:


183

Trong HTML, DOCTYPE không phân biệt chữ hoa chữ thường. Các DOCTYPE sau đây đều hợp lệ:

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

Trong các tuần tự hóa XML (tức là XHTML), DOCTYPE không bắt buộc, nhưng nếu bạn sử dụng nó, DOCTYPEnên viết hoa:

<!DOCTYPE html>

Xem phần tuần tự hóa XML của HTML5, còn gọi là 'XHTML5' :

Lưu ý rằng nếu bạn không viết hoa DOCTYPEtrong tài liệu XHTML, trình phân tích cú pháp XML sẽ trả về lỗi cú pháp.

Phần thứ hai có thể được viết bằng chữ thường ( html), chữ hoa ( HTML) hoặc thậm chí trường hợp hỗn hợp ( hTmL) - nó vẫn sẽ hoạt động. Tuy nhiên, để tuân thủ Nguyên tắc đánh dấu Polyglot cho Tài liệu XHTML tương thích HTML , nó phải được viết bằng chữ thường.


9
Không, điều này không chính xác. Trong SGML, khai báo loại tài liệu là sản xuất 110, trong XML nó là sản xuất 28. Trong cả hai trường hợp, nó được khai báo là chuỗi cố định "DOCTYPE" (không phải là thẻ , nó là một từ khóa ). Vì vậy, trong các định nghĩa chính tắc trong các tiêu chuẩn SGML và XML tương ứng, nó luôn luôn là chữ hoa. Nếu bạn tìm thấy phần mềm cho phép viết thường "doctype" thì phần mềm đó không tuân thủ các tiêu chuẩn. Các trình duyệt được thiết kế để "tự do trong những gì họ chấp nhận", nhưng bộ xử lý XML tuân thủ sẽ đánh dấu đây là lỗi xác thực.
Ichiro Furusato

5
... Và tôi cũng nên chỉ ra rằng X / HTML5 cũng không chính xác. Như đã chỉ định, XHTML5 đơn giản là không đánh dấu XML hợp lệ, cũng không thể. Có rất nhiều lỗi trong đặc tả X / HTML5. Tôi không nghiêm túc lắm. Việc họ phải tạo ra một " đánh dấu polyglot " (một khái niệm hoàn toàn mới) nói rõ rằng họ đã bị mắc kẹt.
Ichiro Furusato

20
@Ichiro Tôi đang nói về HTML, không phải SGML. Không có trình duyệt nào từng thực hiện SGML. Nếu họ đã làm, <title/foo/sẽ tương đương với <title>foo</title>. Chỉ có một vài trình xác nhận HTML sử dụng SGML. Thông số HTML5 là cái đầu tiên làm rõ điều này: whatwg.org/specs/web-apps/civerse-work/multipage/ Kẻ
Mathias Bynens

2
@ TestSubject528491 Đoạn đó nói về phần thứ hai của DOCTYPE ( html). Dưới đây là toàn bộ câu: Phần thứ hai có thể được viết bằng chữ thường ( html), chữ hoa ( HTML) hoặc thậm chí trường hợp hỗn hợp ( hTmL) - nó vẫn sẽ hoạt động. Tuy nhiên, để tuân thủ Nguyên tắc đánh dấu Polyglot cho Tài liệu XHTML tương thích với HTML, nó phải được viết bằng chữ thường.
Mathias Bynens

15
@IchiroFurusato Bạn có thể muốn đọc lên HTML5 . Trích dẫn: Tuy nhiên, không giống như các phiên bản trước của HTML, việc tuần tự hóa HTML [5] không còn được coi là một ứng dụng của SGML, mà thay vào đó xác định cú pháp của chính nó. Mặc dù cú pháp được lấy cảm hứng từ SGML, nhưng nó được định nghĩa theo cách gần giống với cách các trình duyệt thực sự xử lý HTML trong thế giới thực, đặc biệt là về xử lý lỗi.
Mathias Bynens

40

Nếu bất cứ ai vẫn còn thắc mắc trong năm 2014, xin vui lòng tham khảo ý kiến ​​này:

HTML5

Thông số HTML5 của W3 - Tài liệu

Một DOCTYPE phải bao gồm các thành phần sau, theo thứ tự sau:

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

Lưu ý: mặc dù được hiển thị trong tất cả các mũ, thông số kỹ thuật cho biết nó không nhạy cảm

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

XHTML5

HTML5 W3 - 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.

Nhìn vào thông số XML, nó liệt kê DOCTYPE theo mũ, nhưng tôi không thể tìm thấy bất cứ điều gì nói rằng 'tất cả các mũ' là bắt buộc (để so sánh, trong thông số HTML5 được liệt kê ở trên, nó được hiển thị trong ví dụ trong tất cả các mũ, nhưng thông số kỹ thuật nói rõ ràng là không phân biệt chữ hoa chữ thường ).

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

Đánh dấu Polyglot

W3 Polyglot Markup - Giới thiệu

Đôi khi nó có giá trị để có thể phục vụ các tài liệu HTML5 cũng là các tài liệu XML được hình thành tốt.

W3 Polyglot Markup - Tài liệu

Đánh dấu polyglot sử dụng khai báo loại tài liệu (DOCTYPE) được chỉ định bởi mục 8.1.1 của [HTML5]. Ngoài ra, DOCTYPE tuân thủ các quy tắc sau:

* The string DOCTYPE is in uppercase letters.

Vì vậy, lưu ý rằng Đánh dấu Ployglot sử dụng loại tài liệu HTML5 thông thường, nhưng có bổ sung / thay đổi. Đối với cuộc thảo luận của chúng tôi, đáng chú ý nhất là DOCTYPE được khai báo trong tất cả các mũ .

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

Tổng kết

Xem phần HTML của W3 so với XHTML

[Ý kiến] Tôi sẽ không lo lắng quá nhiều về việc đáp ứng tuân thủ XML trừ khi bạn đặc biệt cố gắng cân nhắc về nó. Đối với hầu hết sự phát triển của máy khách và máy chủ dựa trên JS, JSON đã thay thế XML.

Do đó, tôi chỉ có thể thấy điều này thực sự áp dụng nếu bạn đang cố cập nhật hệ thống kế thừa dựa trên xhtml / xml hiện có để cùng tồn tại với chức năng HTML5 mới. Nếu đây là trường hợp sau đó nhìn vào thông số đánh dấu polyglot.


18

Theo thông số kỹ thuật mới nhất , bạn nên sử dụng một cái gì đó phù hợp với trường hợp không nhạy cảm <!DOCTYPE html>. Vì vậy, trong khi các trình duyệt được yêu cầu hỗ trợ bất kỳ trường hợp nào bạn thích, thật hợp lý để suy ra đây <!DOCTYPE html>là trường hợp chính tắc.


3
Thông số kỹ thuật khá rõ ràng rằng doctype phải chứa một chuỗi tương đương không phân biệt chữ hoa chữ thường của '<! DOCTYPE', do đó ngụ ý rằng '<! DOcTyPe' là chính xác.
joshnh

6
Như tôi đã nói, thông số kỹ thuật yêu cầu các trình duyệt hỗ trợ mọi trường hợp, vì vậy mọi trường hợp sẽ hoạt động. Nhưng người đặt câu hỏi rõ ràng đang tìm kiếm một hình thức chuẩn, chính tắc, vì vậy trong trường hợp không có lý do chính đáng để chọn cái này, bạn cũng có thể sử dụng trường hợp ví dụ từ thông số ...
John Mellor

9
Thông số kỹ thuật liên tục viết nó như là <!DOCTYPE html>, do đó sẽ hợp lý khi suy ra rằng tác giả của thông số kỹ thuật có một ưu tiên nhỏ cho cách viết hoa cụ thể đó. Tôi sẽ sử dụng cùng cách viết hoa như thông số kỹ thuật, vì thật tuyệt khi những thứ này phù hợp, nhưng nếu bạn thích <!dOcTyPethì hãy là khách của tôi :)
John Mellor

3
@joshnh Tôi không hiểu sự nhầm lẫn của bạn. 1) Tuyên bố DOCTYPE được yêu cầu không phân biệt chữ hoa chữ thường. 2) Thông số HTML5 sử dụng chữ viết hoa "DOCTYPE html" trong các ví dụ của nó. Tất cả câu trả lời này dường như đang nói là một cách viết hoa phù hợp với tài liệu, ngay cả khi tất cả đều hợp lệ. Tại sao điều đó thái quá?

2
Tôi nghĩ rằng @joshnh đã hiểu sai những gì John đang cố nói. FWIW, tôi đồng ý với tình cảm của John rằng trong trường hợp không có bất kỳ lý do cụ thể nào để định dạng một cách nhất định, đi với những gì đặc điểm kỹ thuật yêu cầu trình duyệt kiểm tra là thích hợp hơn. John không bao giờ cố gắng ám chỉ rằng điều đó đúng hơn, chỉ có điều đó là thứ gì đó dựa trên sở thích của bạn - nếu không thì đó là một sự lựa chọn hoàn toàn tùy ý, phải không?
Ryan Williams

7

Chữ hoa hoặc chữ thường là "chính xác". Tuy nhiên, nếu bạn sử dụng phông chữ web và quan tâm đến IE7, tôi khuyên bạn nên sử dụng <!DOCTYPE html>do lỗi trong IE7 khi phông chữ web đôi khi không thành công nếu sử dụng <!doctype html>(ví dụ: trong câu trả lời này ).

Đây là lý do tại sao tôi luôn viết hoa văn học.


6

Tiêu chuẩn cho HTML5 là các thẻ không phân biệt chữ hoa chữ thường.

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

Kỹ thuật khác: ( http://www.w3.org/TR/html5/syntax.html )

Một DOCTYPE phải bao gồm các thành phần sau, theo thứ tự sau:

  1. Một chuỗi là một kết hợp không nhạy cảm trường hợp ASCII cho chuỗi <!DOCTYPE.

35
Tôi không tin tưởng W3Schools 100% họ không liên kết với W3C và mặc dù hầu hết thông tin của họ đều tốt, nhưng một số thông tin thì không.
joshnh

Điều này được biết đến rộng rãi - đây là liên kết w3.org: w3.org/TR/html5/syntax.html
Stephen

4
W3Schools không có nhiều hoặc ít lỗi hơn các trang web khác. ( Ví dụ hoàn toàn ngẫu nhiên ) Lấy thông tin bằng một hạt muối, tham khảo các trang w3.org khi nghi ngờ và bạn sẽ ổn. Những kẻ ngốc thực sự là những người tin rằng W3Schools là một cơ quan chính thức hoặc chứng chỉ của họ có ý nghĩa gì.
Ông Lister

8
@MrLister: Tôi không nghĩ thật công bằng khi gọi mọi người là kẻ ngốc bởi vì họ nghĩ rằng có một liên kết giữa một cái gì đó có tên "W3Schools" và một cái gì đó có tên "W3C". Cả hai đều tương tự nhau về tên và tên miền để gây nhầm lẫn và giả định rằng cái trước bằng cách nào đó được chứng thực bởi, hoặc liên quan đến cái sau. Đó là ý định rõ ràng của W3Schools, đó là một trong những lý do khiến họ tức giận rất nhiều người hiểu vấn đề này. Thực tế là rất nhiều thông tin của họ là không chính xác gây ra vấn đề (nghĩa là có thể tha thứ một chút nếu họ thực sự cung cấp một dịch vụ hợp lý)
Bobby Jack

Liên kết đến tag_doctype.aspkhông hợp lệ (404) và câu hỏi này là về doctypekhai báo, không phải là thẻ ... Dù sao, kết luận là chính xác: trong HTML5, từ khóa doctypecó thể ở dạng chữ hoa, chữ thường hoặc chữ thường.
Abel

3

Loại câu hỏi ngụ ý chỉ có một câu trả lời đúng, cung cấp nhiều lựa chọn trong số hai câu hỏi và yêu cầu chúng tôi chọn một câu trả lời. Tôi sẽ đề nghị rằng đối với HTML5 cả <!DOCTYPE html><!doctype html>đều hợp lệ.

Vì vậy, một trình duyệt có khả năng HTML5 sẽ chấp nhận chữ thường và xử lý html đúng cách.

Các trình duyệt trước đây và không biết về HTML5, tôi đã nghe nói, ngay cả khi không có tài liệu, sẽ cố gắng xử lý html tốt nhất có thể. Và nếu họ không nhận ra loại chữ thường sẽ làm tương tự. Vì vậy, không có lý do gì để biến nó thành chữ hoa vì các trình duyệt đó sẽ không thể thực hiện đầy đủ bất kỳ khai báo HTML5 nào.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.