2012-01-15 23 views
7

Tôi tự hỏi về số trang web mà tôi gặp phải là các tệp HTML, nhưng điều đó mặc một tuyên bố XHTML DOCTYPE.
Tại sao mọi người làm điều này? Họ hy vọng đạt được điều gì? Tại sao không đặt trước việc khai báo tài liệu XHTML cho các tệp XHTML thực tế?Tại sao đặt một khai báo tài liệu XHTML trên các tệp HTML? Cái đó làm cái gì?

Hoặc tôi có thiếu gì đó không?

Chỉnh sửa: có một số nhầm lẫn về "tệp XHTML thực tế" là gì; để chứng minh rằng sự khác biệt không phải do khai báo DOCTYPE, so sánh this file với this one. Đầu tiên là HTML, thứ hai là XHTML, mặc dù nội dung giống hệt nhau; chỉ có các loại tệp khác nhau. Cả hai đều hiển thị tốt trong các trình duyệt tuân thủ, nhưng cái đầu tiên được phân tích bằng trình phân tích cú pháp HTML và phần thứ hai với trình phân tích cú pháp XML.

+0

Bạn có ý nghĩa gì với "tệp XHTML thực tế"? Những người có nội dung XHTML hợp lệ? –

+0

Không, tệp có loại tệp XHTML; hậu tố .xhtml; application./xhtml+xml MIME type ... –

+0

Mặc dù bây giờ chúng đã được chuyển đổi sang HTML5, trong nhiều năm W3Schools đã làm như vậy và ủng hộ cách tiếp cận này. Trong khi họ không phải là nguyên nhân duy nhất, và tôi không thể bình luận về quyết định cá nhân, trực tiếp hoặc gián tiếp họ phải có ảnh hưởng rất nhiều trang web. – Alohci

Trả lời

10

Tại sao đặt tuyên bố loại tài liệu XHTML trên tệp HTML? Cái đó làm cái gì?

Tất cả những gì cần làm là thông báo cho người xác thực đánh dấu rằng họ sắp xác thực tài liệu XHTML, trái với tài liệu HTML gốc, SGML gốc. Nó mô tả nội dung hoặc cụ thể hơn là đánh dấu sau, nhưng không có gì khác.

Tại sao mọi người làm việc này? Họ hy vọng đạt được điều gì? Tại sao không đặt trước việc khai báo tài liệu XHTML cho các tệp XHTML thực tế?

Hoặc tôi có thiếu gì đó không?

Loại. Điều thực sự xảy ra là mọi người thực sự đã xảy ra là không nhận thức được rằng việc đặt một tờ khai tài liệu XHTML ở đầu tài liệu HTML không tự động chuyển đổi nó thành tài liệu XHTML, mặc dù phải thừa nhận đó là những gì mọi người đang hy vọng.

Bạn thấy, hầu hết các máy chủ web và/hoặc ứng dụng web không được định cấu hình để tuần tự hóa các tài liệu XHTML dưới dạng application/xhtml+xml đúng cách, thay vào đó chọn phân phát các trang web như chỉ text/html. Điều này khiến các trình duyệt quyết định rằng họ đã nhận được một tài liệu HTML thông thường và do đó, việc phân tích cú pháp phân tích súp vô nghĩa mà tất cả chúng ta đều biết và yêu thích không thể tránh khỏi sau đó.

Lưu ý rằng nó không quan trọng ngay cả khi bạn có một thẻ meta như thế này trên tài liệu XHTML của bạn:

<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> 

trình duyệt sẽ bỏ qua đó, và chỉ nhìn vào thực tế HTTP Content-Type tiêu đề đó được gửi cùng với tài liệu XHTML. Để làm cho vấn đề tồi tệ hơn, Internet Explorer, là trình duyệt được sử dụng nhiều nhất trong vài năm qua trong thời hoàng kim của XHTML, chưa bao giờ hỗ trợ kiểu application/xhtml+xml MIME trước khi phiên bản 9 cuối cùng được phát hành: thay vì phân tích đánh dấu, xây dựng DOM và hiển thị trang, tất cả những gì nó làm là yêu cầu tải xuống tệp. Điều đó không tạo ra một trang XHTML rất hữu dụng!

Vì vậy, hãy đoán những gì chúng ta phải sống cho đến khi HTML5 trở nên tuyệt vời? Điều này, cùng với những thứ như IE6 đi quirky trên các trang có khai báo XML trước khi khai báo DOCTYPE, cũng là một trong những yếu tố lớn nhất dẫn đến sự sụp đổ của XHTML (cùng với XHTML 1.1 không bao giờ được sử dụng rộng rãi, và XHTML 2.0 bị hủy bỏ ủng hộ HTML5).

+0

Thực ra, tôi thích XHTML. Nếu tôi muốn chắc chắn rằng các trang của tôi là chính xác, tôi không phải tải chúng lên và sau đó mở trình duyệt tính hợp lệ trên chúng, tất cả những gì tôi phải làm là thử tải chúng vào trình duyệt của tôi. Chắc chắn, tôi có thể phục vụ các tài liệu HTML5 với tài liệu XHTML, nhưng điều đó không giống nhau. Đối với một điều, tôi sẽ không biết nếu các trình duyệt sẽ sử dụng XML hoặc phân tích cú pháp HTML. –

+0

@Mr Lister: Tôi cũng thích nó. Bạn chỉ có thể phục vụ đúng loại MIME, và các trình duyệt hiện đại (bao gồm IE9 +) sẽ xử lý các tài liệu của bạn dưới dạng XHTML. (Trên một lưu ý phụ, "tài liệu HTML5 với tài liệu XHTML" không thực sự có ý nghĩa :) – BoltClock

+0

Darn, quá muộn để chỉnh sửa. Ý tôi là HTML5 với kiểu nội dung XHTML! –

2

Tôi giả sử bạn đang hỏi lý do mọi người đang phân phối tài liệu XHTML dưới dạng HTML, bằng cách sử dụng loại text/html MIME thay vì application/xhtml+xml.

Phần lớn, đó là do hiểu biết sai về tính tương thích: Rất nhiều trình duyệt không hiểu loại XHTML + XML MIME, điều này đã khiến người dùng chỉ đơn giản là phân phát HTML để khắc phục điều này. Vì trình duyệt thường không phàn nàn về những gì họ nhận được và mọi người không có xu hướng nghiên cứu nhiều, hầu hết mọi người cho rằng các trình duyệt chỉ xử lý tài liệu XHTML-doctyped dưới dạng XHTML, mặc dù nó được phân phát dưới dạng HTML. Nhưng họ không thry phục vụ họ như HTML. Vì hai ngôn ngữ rất giống nhau nên mọi người hiếm khi nhận thấy sự khác biệt.

Vì vậy, không, bạn không bỏ sót bất cứ điều gì; thực hành rất tệ. Ngày nay, sau HTML5, may mắn thay, nó dường như trở nên ít phổ biến hơn.

+1

Hầu hết mọi người viết XHTML đều dùng nó như là 'text/html', lúc này bạn sẽ mất hầu hết các ưu điểm. Tất cả các trình duyệt, ví dụ, coi nó là HTML trong trường hợp đó. Hãy đọc [Gửi XHTML dưới dạng văn bản/html Được coi là có hại] (http://hixie.ch/advocacy/xhtml) – robertc

+0

"tại sao mọi người đang phân phát tài liệu XHTML dưới dạng HTML, bằng cách sử dụng loại văn bản/html MIME thay vì ứng dụng/xhtml + xml. " là một cách khác để nói nó, vâng. Vì vậy, OK. Tôi không chắc bạn đã nhận được từ chối từ đâu; có lẽ một người không hoàn toàn hiểu. –

+0

@Mr Lister: Câu trả lời đã được chỉnh sửa thành một cái gì đó hoàn toàn khác sau khi downvote. Hoặc downvoter không bao giờ theo dõi, hoặc ... họ không hiểu :) – BoltClock

1

Điều thú vị về XHTML là vì IE không hiểu XML mimetype (application/xhtml+xml) ở đỉnh cao của sự phổ biến của XHTML, hầu hết mọi người không bao giờ thực sự sử dụng phần XML của IE8 và từ chối để hiển thị nội dung.

Điều này có nghĩa là hàng triệu trang web cho rằng họ đang sử dụng XHTML tuân thủ tiêu chuẩn, khi thực tế chúng được phân tích cú pháp là HTML4 không đúng định dạng/lạ.

May mắn là HTML5 đã đi cùng và xác định đúng cách phân tích cú pháp tài liệu, loại bỏ phần lớn sự mơ hồ bao quanh XHTML (tất cả là rác chuyển tiếp và nghiêm ngặt).

Những người thêm prolog XML trước khi loại tài liệu tự làm thêm, vì nhận xét trước DOCTYPE sẽ khiến IE cũ sử dụng chế độ quirks, trong số những thứ khác mang lại mô hình hộp cũ trong IE6 trở xuống . Điều này chắc chắn đã góp phần vào sự ghét hàng loạt của IE6, như trong chế độ quirks nó có lỗi đáng kể gây ra bố trí hiện đại để được hoàn toàn bị hỏng, thay vì chỉ thiếu trong các tính năng mới hơn.

Câu trả lời ngắn gọn là trong ngành này nhiều người chỉ cần sao chép và dán mã mà không cần hiểu.

+3

IE hiểu XML tốt. Đó là phần XHTML mà nó không hỗ trợ. – Rob

+3

Và nó không phải là một "điều thú vị về XHTML". Thật đáng buồn và là một ví dụ hoàn hảo về cách IE luôn giữ lại web. – Rob

+0

@Rob, đúng vậy. Tôi cũng không chắc tại sao họ không nói chuyện này quá lâu. Tôi gần như nghi ngờ rằng họ không thực sự muốn web hướng tới XML vì bất kỳ lý do gì. –

4

Hầu hết mọi người sử dụng loại tài liệu XHTML vì họ đọc tài liệu đó ở một cuốn sách cũ ở đâu đó hoặc đọc trên diễn đàn nhưng nếu không thì sẽ sử dụng nó không có lý do kỹ thuật mà họ biết. Hầu như không ai sử dụng nó đúng cách bằng cách phục vụ nó như application/xml + xhtml. Cung cấp các trang XHTML dưới dạng văn bản/html có nghĩa là "súp thẻ" hoặc "html bị hỏng". Nó không nên được thực hiện nhưng các trình duyệt thường xử lý nó tốt.

Bạn đúng khi tự hỏi về điều này. Nó làm tôi điên.

Các vấn đề liên quan