2008-11-02 26 views
51

Dường như HTML 5 sẽ được hỗ trợ (một phần) bởi Firefox 3.1 và các trình duyệt khác. Nó hỗ trợ thêm cho video và audio dưới dạng thẻ, nhưng đây là những thẻ mới mà XHTML 1.0 Transitional không nhận ra. Hành vi được cho là gì nếu tôi sử dụng một thẻ HTML 5 mới trong một phiên bản Firefox trong tương lai nhưng sử dụng DTD cho XHTML? Và nếu tôi kết hợp đánh dấu HTML 5 với XHTML 1.0 Trans thì sao?HTML 5 so với XHTML 1.0 Chuyển tiếp?

Điều này trở nên khó hiểu. Tại sao họ không chỉ thêm các thẻ này vào XHTML? Chúng tôi hỗ trợ cả XHTML và HTML 5 như thế nào?

Video trên HTML 5: http://www.youtube.com/watch?v=xIxDJof7xxQ

+2

Tôi thích XHTML. Nó chỉ có vẻ "sạch" hơn, đúng hơn. – mk12

Trả lời

8

Vâng, nói chung HTML là SGML và XHTML được thể hiện bằng XML. Do đó, việc tạo XHTML được kết nối với nhiều hạn chế hơn (dưới dạng đánh dấu) hơn HTML. (SGML-based versus XML-based HTML)

Như đã đề cập trên Wikipedia, HTML 5 cũng sẽ có biến thể XHTML (XHTML 5).

Quy tắc chung: Bạn phải luôn sử dụng đánh dấu hợp lệ. Điều đó cũng có nghĩa là bạn không nên sử dụng các thẻ <video> hoặc <audio> được đề cập trong XHTML 1.0 Chuyển tiếp, vì chúng không phải là thành phần của đặc điểm kỹ thuật đó. Nếu bạn thực sự cần để sử dụng những thẻ (mà tôi rất nghi ngờ), thì bạn nên đảm bảo rằng bạn sử dụng HTML 5/XHTML 5 DTD để chỉ định rằng tài liệu của bạn nằm trong DOCTYPE đó.

Sử dụng HTML 5 hoặc XHTML 5 trong trạng thái thực hiện (AFAIK, tiêu chuẩn chưa được giải quyết, đúng không?) Có thể phản tác dụng vì hầu như tất cả người dùng đều không thấy trang web được hiển thị .

Chỉnh sửa 2013: Do các downvotes gần đây và vì câu trả lời được chấp nhận này không thể xóa (bởi tôi), tôi muốn thêm rằng quá trình hỗ trợ và tiêu chuẩn hóa HTML5 ngày nay hoàn toàn khác với những gì tôi đã viết câu trả lời này cách đây năm năm. Vì hầu hết các trình duyệt chính đều hỗ trợ hầu hết các phần của bản nháp HTML5 và bởi vì rất nhiều thứ có thể được sửa với các polyfills trong các trình duyệt cũ hơn, tôi chủ yếu sử dụng HTML5 ngay bây giờ.

+9

Bình chọn vì câu trả lời nói về SGML và HTML 5/XHTML 5 DTD mặc dù (như được chỉ ra trong các câu trả lời khác) HTML5 không dựa trên SGML và không có DTD. – hsivonen

+0

Đã bỏ phiếu vì không cung cấp giải thích đủ chi tiết để đặc biệt hữu ích. –

+1

@pyrony: Chỉ cần tự hỏi ... bạn có bỏ phiếu câu trả lời này xuống vì đó là câu trả lời được chấp nhận và không cung cấp cho bạn tất cả thông tin bạn muốn hoặc vì nó sai/không đầy đủ? Trong trường hợp thứ hai, bạn cũng có thể muốn bỏ phiếu cho rất nhiều câu trả lời khác. :) Tôi chỉ muốn tránh nhận được danh tiếng tiêu cực cho câu trả lời cũ 1.5y này - và đưa nó vào bối cảnh hiện đại không thực sự phù hợp, vì trạng thái XHTML và HTML5 có thể đã thay đổi khá nhiều kể từ câu hỏi/câu trả lời gốc. – hangy

-2

bạn doctype sẽ cho trình duyệt cho dù bạn đang sử dụng HTML5 hoặc XHTML. Bạn không thể chỉ đẩy thẻ từ một loại tài liệu vào tài liệu của một loại tài liệu khác và mong muốn nó hoạt động. Không có tài liệu, tất cả chỉ là thẻ tag.

+0

Tại sao điều này lại bị bỏ phiếu? Đây có phải là một tuyên bố không chính xác? Dường như để jive với câu trả lời từ những người khác ... – Adam

+0

@Adam: Bởi vì ít nếu bất kỳ trình duyệt chú ý đến các loại tài liệu thực tế. Trong thực tế, bạn * có thể * chỉ cần đẩy thẻ từ một tài liệu HTML vào XHTML và nó sẽ thường chỉ hoạt động - trong nhiều trường hợp, các trình duyệt chỉ áp dụng một loại tài liệu nhất định bất kể. Chức năng thực sự lớn nhất của dòng doctype trong hầu hết mọi trình duyệt là thông báo cho trình duyệt rằng trang cố gắng tuân thủ tiêu chuẩn HTML * một số * (X), do đó trình duyệt sẽ cố gắng hiển thị trang ở chế độ "chuẩn", thay đổi mô hình hộp trong số những thứ khác. – cHao

+2

Internet Explorer 9 ít nhất yêu cầu bạn chỉ định loại tài liệu là để sử dụng các tính năng HTML5 mới của DOM và công cụ JS. – Adam

-2

Không sử dụng những thứ như thẻ video/âm thanh khi 99% người sẽ không thể xem chính xác trên trình duyệt của họ. Đối với một trong hai ví dụ tôi muốn đề nghị sử dụng FLV.

Theo như lý do tại sao họ không thêm nó vào XHTML ... trước hết 1.0 không phải là phiên bản mới nhất, 1.1 đã được phát hành cách đây không lâu.

Cuối cùng mọi thứ được chuẩn hóa và chúng tôi sẽ thấy các loại thẻ này ở cả hai tiêu chuẩn, nhưng bây giờ, hãy làm những gì bạn có thể để đảm bảo số lượng người xem nội dung của bạn nhiều nhất.

+4

Trên thực tế, thẻ video có cùng khả năng tương thích ngược với thẻ iframe - nếu trình duyệt không hỗ trợ thẻ, nó sẽ hiển thị nội dung bên trong của nó chưa được định dạng. Vì vậy, bạn có thể đính kèm mã nhúng flash của bạn trong băng video và nó sẽ vẫn tương thích với tất cả các trình duyệt. –

+2

"Video cho mọi người" giải thích cách sử dụng (X) video HTML5 với dự phòng flash và sau đó dự phòng tải xuống (một số người không có flash). Xem thêm "Đi sâu vào HTML5". Ngoài ra, Flash có thể phát video MP4 H.264, vì vậy bạn không cần FLV. – TRiG

+0

Ồ, này, cái này đã quá nhanh. – Ryan

3

hành vi là gì nghĩa vụ phải được nếu tôi sử dụng một thẻ HTML 5 mới trong một phiên bản tương lai của Firefox nhưng sử dụng DTD cho XHTML?

Và điều gì sẽ xảy ra nếu tôi kết hợp đánh dấu HTML 5 với XHTML 1.0 Trans?

Nếu đánh dấu của bạn không được triển khai như một phần của DTD đã chọn của bạn - sau đó về mặt logic, không nên theo dõi đánh dấu đó. Nhưng việc triển khai trình duyệt không phải lúc nào cũng hợp lý.

Tại sao họ không chỉ thêm các thẻ này vào XHTML? Làm thế nào để chúng tôi hỗ trợ cả XHTML và HTML 5?

xHTML không tốt hơn HTML, nhưng nó phù hợp hơn với một số ứng dụng. Một trong những lợi ích chính của xHTML là nó có thể được chuyển đổi thành các định dạng khác nhau bằng cách sử dụng XSLT. Ví dụ: bạn có thể sử dụng XSLT để tự động chuyển đổi xHTML thành nguồn cấp dữ liệu RSS hoặc định dạng XML khác.

Bạn không cần hỗ trợ cả hai định dạng - cân nhắc các lợi ích/nhược điểm của từng yêu cầu của dự án. HTML 5 có thể sẽ không đạt tiêu chuẩn trong một thời gian dài.

4

Hãy nhớ rằng các loại tài liệu chỉ phục vụ một mục đích trong trình duyệt: chuyển đổi giữa các chế độ quirks, gần như tiêu chuẩn và tiêu chuẩn. Do đó, việc sử dụng <video><audio> sẽ hoạt động với bất kỳ khai báo loại tài liệu nào. IMO, sử dụng loại tài liệu XHTML khá vô ích, vì mọi trang bạn gửi với text/html Loại MIME được phân tích cú pháp dưới dạng HTML (súp-súp). Tôi khuyên bạn nên sử dụng loại tài liệu HTML5 (<!doctype html>), vì nó dễ nhớ hơn và không ép buộc bạn trong cú pháp XML mà không có lý do.

Tại sao họ không chỉ thêm các thẻ này vào XHTML?

Họ thực sự đã làm, có một tuần tự hóa XML HTML 5 (XHTML5). Để sử dụng điều này, bạn phải gửi các trang của bạn với một loại MIME XML, chẳng hạn như application/xhtml+xml. Đây không phải là (chưa) được hỗ trợ bởi IE, mặc dù.

+0

Sẽ không một loại DOCTYPE cũng ra lệnh DTD mã của bạn được xác nhận đối với? – codeinthehole

+3

IE sẽ kéo tất cả chúng ta xuống cho đến khi chúng tôi bắt đầu bỏ qua nó và cảnh báo người dùng cho người dùng một trình duyệt được điều khiển bởi các tiêu chuẩn hiện đại. – Brennan

96

HTML5 dễ viết hơn nhiều so với XHTML 1.0.

  1. Bạn không phải tự khai báo không gian tên "http://www.w3.org/1999/xhtml".

  2. Bạn không phải thêm thuộc tính loại cho phần tử tập lệnh và kiểu (mặc định là văn bản/javascript và văn bản/css).

  3. Bạn không phải sử dụng loại tài liệu dài nơi trình duyệt chỉ bỏ qua hầu hết. Bạn phải sử dụng <! DOCTYPE html >, dễ nhớ.

  4. Bạn không có lựa chọn để bao gồm hoặc không bao gồm uri dtd trong loại tài liệu và bạn không có lựa chọn giữa chuyển tiếp và nghiêm ngặt. Bạn chỉ cần có một loại tài liệu nghiêm ngặt gọi chế độ tiêu chuẩn đầy đủ. Bằng cách đó, bạn không phải lo lắng về việc vô tình đang ở chế độ Hầu như chuẩn hoặc chế độ Quirks.

  5. Việc khai báo bộ ký tự đơn giản hơn rất nhiều. Nó chỉ là < meta charset = "utf-8" >.

  6. Nếu bạn cảm thấy khó hiểu khi viết các phần tử void là < tên >, bạn có thể sử dụng < tên/>, nếu bạn muốn.

  7. HTML5 có trình xác thực thực sự tốt tại http://validator.nu/. Trình xác thực không bị ràng buộc bởi một DTD crappy không thể diễn tả tất cả các quy tắc.

  8. Bạn không phải thêm // <! [CDATA v.v. trong tập lệnh nội tuyến hoặc bảng định kiểu (trong một số trường hợp nhất định) để xác thực.

  9. Bạn có thể sử dụng tính năng nhúng nếu cần.

Chỉ cần một cú pháp khôn ngoan, khi bạn sử dụng HTML5, bạn kết thúc bằng việc đánh dấu dễ dàng hơn, dễ đọc hơn luôn gọi chế độ tiêu chuẩn. Khi bạn sử dụng XHTML 1.0 (được phân phối dưới dạng văn bản/html), bạn đang chỉ định một loạt các crud (để xác thực chống lại một dtd crappy) mà trình duyệt sẽ tự động thực hiện.

+4

Câu trả lời hay. Bạn đã liệt kê chính xác những gì tôi quan tâm. –

+0

+1 Tôi đang nghĩ đến việc sử dụng HTML5 sau khi đọc câu trả lời của bạn nhưng về IE thì sao? –

+0

và đây là một số nhược điểm http://stackoverflow.com/questions/1298610/what-are-the-pros-and-cons-of-adopting-html-5-now-for-a-site-redesign/1298624# 1298624 điều chính là những gì sẽ xảy ra trên IE nếu javascript bị vô hiệu hóa. –

28

Huyền thoại và quan niệm sai lầm rất nhiều trong chuỗi này.

  1. XHTML 1.0 cũ hơn HTML 5. Nó không thể sử dụng bất kỳ từ vựng mới nào. Thật vậy, điểm bán hàng chính của nó là nó sử dụng chính xác cùng một từ vựng như HTML 4.01.

  2. Sẽ không có XHTML 1.2 - nhiều khả năng nhất. Và nó không cần thiết. XHTML 5 là tuần tự hóa XML của HTML 5. Từ vựng giống hệt nhau, các quy tắc phân tích cú pháp khác nhau.

  3. HTML chưa bao giờ được coi là SGML thực sự trong trình duyệt. Không có trình duyệt nào từng triển khai trình phân tích cú pháp tuân thủ SGML. HTML 5 sẽ làm cho thực tế này thành một quy tắc và tuần tự hóa HTML sẽ tuân theo tiêu chuẩn thực tế ngày nay. Người ta có thể nói rằng đó là "SGML-ish".

  4. Như đã nêu, DTD phục vụ chính xác một mục đích TRONG BROWSERS, và đó là để phân biệt giữa chế độ tuân thủ tiêu chuẩn và chế độ quirks. Vì vậy nó chỉ ảnh hưởng đến kiểu dáng và kịch bản. Nếu bạn đang sử dụng khung trên một trang có loại tài liệu khắt khe, chúng sẽ hiển thị tốt. Như sẽ < nhúng > và thậm chí <marquee> - mặc dù sau này là một abomination và trước đây không có trong bất kỳ tiêu chuẩn hiện hành. Tuy nhiên, nó là một phần của HTML 5.

  5. Video và âm thanh có thể được sử dụng bất kể serialization, XML hoặc HTML. chúng là một phần của cả HTML 5 và XHTML 5. Khi giai đoạn phân tích cú pháp vượt qua một trình duyệt sẽ xây dựng một DOM nội bộ của tài liệu. Điều đó DOM sẽ được cho tất cả các mục đích thực tế giống nhau bất kể serialization. Và có, XHTML được gửi với text/html vẫn là html bình thường, bất kể doctype.

+1

XHTML1.2, không, XHTML2.0, có – singpolyma

+11

XHTML 2.0: [không còn nữa] (http://www.w3.org/News/2009#entry-6601) –

7

Bạn có thể nhìn nhận vấn đề một cách sai lầm vì relationship to XHTML 1.x phần, HTML 5 trạng thái:

"đặc điểm kỹ thuật này được thiết kế để thay thế XHTML 1.0 như định nghĩa bản quy phạm của serialization XML của từ vựng HTML. "

Bây giờ ngôn ngữ đó đang gây tranh cãi (XHTML 2 WG đã tranh chấp nó và HTML WG đang cố gắng giải quyết sự khác biệt ...) nhưng đó là nơi chúng tôi đứng ngay bây giờ.

Một vài lưu ý:

+0

Xin lỗi, có một số vấn đề thực sự đây. Đầu tiên, rất khó có khả năng W3C sẽ cung cấp một DTD XHTML 5 vì chúng sẽ không tạo ra một DTD HTML 5 và "đặc tả" thực sự là một mô tả về hành vi của trình duyệt, không phải là một đặc tả cú pháp. –

+0

Thứ hai, * tất cả * các thông số HTML (do IETF, ISO và W3C cung cấp) luôn được định nghĩa là các ngôn ngữ đánh dấu SGML, với các DTD SGML và các khai báo SGML. Tất cả các trường hợp tài liệu HTML 2.0, 3.2 và 4.0 hợp lệ đều có thể được phân tích cú pháp thành SGML bằng cách sử dụng SP của James Clark. –

1

(X) HTML5 chỉ là phiên bản tiếp theo. Bạn nên sử dụng XHTML1.1 cho đến khi XHTML5 được hỗ trợ tốt.

Có thể bạn không nên sử dụng hồ sơ SGML tương thích ngược của HTML5. Nó làm cho mọi thứ trở nên khó khăn hơn đối với các trình gỡ rối và các trình phân tích cú pháp nhỏ.

+2

XHTML 1.1 thậm chí không được IE8 hỗ trợ. Thật không may, nhưng là một thực tế cho đến bây giờ. Tại sao tôi lại muốn sử dụng nó cho một trang web được sử dụng rộng rãi? – Brennan

+0

XHTML1.1 chỉ là XHTML1.0 với một số lần ngừng sử dụng và loại tài liệu chặt chẽ hơn. IE xử lý nó như là súp tag thay vì biết doctype, nhưng kể từ khi IE là khá kỳ quặc dù sao tôi đã không bao giờ có một vấn đề lớn với điều đó. – singpolyma

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