2011-07-08 28 views
5

Tôi nhận thấy rằng nhiều trang web đang được thiết kế theo XHTML Transitional mặc dù tôn trọng hầu hết các phương pháp thiết kế web hiện đại. Tôi nghĩ rằng chuyển tiếp có nghĩa là một giải pháp tạm thời để chuyển qua đánh dấu cũ có thể đòi hỏi quá nhiều nỗ lực để thiết kế lại.Việc viết đánh dấu XHTML Strict có đáng giá không?

Và nhiều trang web thậm chí không xác thực chính xác trong Chuyển tiếp. Tôi cố gắng hết sức để tuân thủ các tiêu chuẩn nghiêm ngặt theo niềm tin rằng đánh dấu không đúng dẫn đến nhiều khó khăn khi gỡ lỗi khi một cái gì đó không hoạt động. Tuy nhiên, có rất nhiều công việc viết 100% mã hợp lệ.

Tôi tò mò muốn biết có nên nỗ lực tìm hiểu và viết đánh dấu tuân thủ nghiêm ngặt XHTML hay không.

EDIT: Và nếu có, tại sao không nhiều người làm điều đó? Có vẻ như hiếm khi tôi gặp phải một trang web nghiêm ngặt về XHTML.

Trả lời

4

Câu trả lời ngắn gọn: không.

Tôi chưa bao giờ thấy XHTML nghiêm ngặt đáng để nỗ lực.

Vấn đề đầu tiên với nó là nó không dùng nhiều tính năng HTML thực sự hữu ích và không có giải pháp thay thế tốt. Đây là một vấn đề cụ thể nếu bạn cần tương thích ngược với các trình duyệt cũ hơn (tất nhiên mọi người đều làm). Thông số kỹ thuật của Transisional không phản đối các tính năng này, đó là lý do tại sao mọi người sử dụng nó thay vì Nghiêm ngặt.

Các tính năng đã được phản đối bao gồm thẻ <center> (lựa chọn thay thế CSS không qua trình duyệt tương thích vào thời điểm đó) và target thuộc tính cho <a> thẻ (mà cho phép bạn mở một liên kết trong một cửa sổ mới, tab hoặc khung; vẫn không có cách nào khác để làm điều này, không ai ngừng sử dụng nó và HTML5 đã giới thiệu lại nó). Có khá nhiều tính năng khác trên cùng một dòng, nhưng đã lâu rồi, và tôi không thể nhớ hết.

Thứ hai, nó được thiết kế để làm cho trình duyệt thất bại nếu đánh dấu của bạn thậm chí có lỗi nhỏ nhất. Điều này nghe có vẻ tuyệt vời về mặt lý thuyết, nhưng luôn luôn bị thất bại. Về cơ bản, nó là một bước phản động được thực hiện bởi các nhà văn đặc tả chống lại sự gia tăng của mã HTML chất lượng kém (và ở một mức độ nào đó vẫn là) một vấn đề lớn đối với web. Nhưng họ đã quên một quy tắc quan trọng để thiết kế giao thức máy khách-máy chủ, đó là máy chủ phải nghiêm ngặt về những gì nó gửi, nhưng khách hàng nên được khoan dung. Tất cả các giao thức client-server thành công đều tuân theo quy tắc này. Bạn cần phải kiểm tra xem trong giai đoạn phát triển, không phải là điều quan trọng, bất kể phương ngữ HTML nào bạn đang viết - nhưng bạn nên kiểm tra xem trong giai đoạn phát triển có phải là hay không cho phép trình duyệt của người dùng cuối thực hiện xác thực của bạn cho bạn. Nếu bạn là một nhà phát triển tốt, bạn nên biết rằng mã của bạn là tốt trước khi nó được bất cứ nơi nào gần người dùng. Và trên thực tế, nếu điều đó khiến trang web của bạn hoàn toàn bị phá vỡ trước người dùng cuối thì đó là thảm họa. Với HTML bị hỏng, ngay cả khi nó bị hỏng nặng, người dùng thường có thể điều hướng và đọc trang web đầy đủ để có thể tìm thấy chi tiết liên hệ để bạn báo cáo lỗi. Với trình duyệt tôn trọng loại tài liệu XHTML nghiêm ngặt, lỗi đánh dấu nhỏ có thể khiến trang web của bạn hiển thị không có gì khác ngoài thông báo lỗi trình duyệt chuẩn. Đây là trải nghiệm người dùng rất kém.

Cuối cùng, nó không cung cấp bất kỳ tính năng mới nào. Một điều nó đã làm mà các phiên bản HTML cũ hơn không làm là cho phép tài liệu được phân tích cú pháp như một tài liệu XML. Điều này là tốt cho việc xác nhận rằng tài liệu của bạn không có bất kỳ lỗi nào, nhưng không thực sự đạt được nhiều thứ khác. Bạn cũng có thể nhúng các định dạng XML khác vào tài liệu của mình, sử dụng các không gian tên, nhưng điều này phức tạp và cũng không thực sự đạt được nhiều mới.

XHTML luôn là một giấc mơ lý tưởng, và thật may mắn là mờ dần đi khi HTML5 trở thành một điều mới mẻ và thú vị.

+0

Bạn có thể đưa ra một vài ví dụ về các tính năng không dùng nữa không? Dường như với tôi rằng tất cả các tính năng đều có một giải pháp tuân thủ XHTML tốt. – tskuzzy

+1

@tskuzzy - okay, tôi đã chỉnh sửa câu trả lời để bao gồm hai tính năng ngăn tôi chuyển sang XHTML Nghiêm ngặt trở lại trong ngày. – Spudley

1

No.

Tôi đã viết đánh dấu nghiêm ngặt trong một vài năm và không có lợi ích đáng chú ý mà tôi có thể thấy.

Tôi sẽ sử dụng HTML5 <!DOCTYPE html> đơn giản vì nó sạch hơn và giảm sút tốt trong IE.

4

Tôi đã từng viết tất cả XHTML nghiêm ngặt, nhưng đó là vì tôi quan tâm đến việc đánh dấu của mình là đúng ngữ nghĩa. Thật không may, hầu hết các nhà phát triển web hoặc (a) không quan tâm về mã đúng ngữ nghĩa hoặc (b) không biết rằng thậm chí có một vấn đề.

Thực sự, nếu bạn muốn viết trong Nghiêm ngặt, chỉ cần viết trang của bạn và sau đó chạy nó thông qua trình xác thực. Nó sẽ cho bạn biết những gì sai và những gì bạn cần phải sửa chữa. Bạn sẽ học như bạn đi theo những gì bạn nên hoặc không nên làm. Nhìn vào official spec có thể giúp đỡ rất nhiều.

Lưu ý khác, tôi cũng khuyên bạn nên chuyển sang HTML5. HTML5 không có các loại như "nghiêm ngặt" và "chuyển tiếp". Nếu bạn muốn viết bằng các quy tắc chặt chẽ hơn, bạn có thể. Nếu bạn muốn viết bởi các quy tắc thua, bạn có thể. Tôi cũng cảm thấy nó sạch hơn và tôi thích viết HTML5 nhiều hơn XHTML. Một lần nữa, việc chạy trang web của bạn thông qua trình xác thực sẽ cung cấp cho bạn thông tin chi tiết về những thứ bạn đang làm không chính xác.

Đối với những gì mọi người đang bắt đầu làm, tôi sẽ nói có một sự thúc đẩy lớn đối với HTML5. Và không chỉ vì đó là điều mới mẻ và thú vị để làm, mà bởi vì nó khắc phục rất nhiều phiền toái và phiền toái đã tồn tại trong XHTML và HTML4.

Vì vậy, đề xuất của tôi sẽ hướng về hướng đó.

+0

Tôi hoàn toàn đồng ý rằng điều quan trọng là viết đánh dấu hợp lệ, nhưng XHTML Strict không bao giờ là giải pháp cho điều đó bởi vì nó đặt xác thực trước người dùng, với thông báo lỗi khủng khiếp nếu nó thậm chí hơi sai: được thực hiện lâu trước khi nó đến bất kỳ nơi nào gần người dùng. – Spudley

0

Tôi muốn nói Có (ish).

Thông thường việc chọn phiên bản nghiêm ngặt sẽ cho biết bạn nên tôn trọng những tiêu chuẩn nào trong tương lai. tức là các thuộc tính không được chấp nhận trong xhtml nghiêm ngặt (nhưng được cho phép trong chuyển tiếp), sẽ không xuất hiện trong phiên bản sau của tiêu chuẩn.

Bây giờ quy tắc chung của tôi đã bị hỏng, với chuyển động từ xhmtl sang html5. Như html5 không có một phiên bản nghiêm ngặt, nhưng tôi muốn nói đi cho html5 (hoặc thậm chí xhtml5) chứ không phải là xhtml nghiêm ngặt. Nhưng tôi muốn nói chung là cố gắng bám sát vào phiên bản nghiêm ngặt nhất của bất cứ điều gì giúp bạn tập trung vào thực hành tốt nhất đã sẵn sàng cho phiên bản tiếp theo tức là mọi thứ không đi ngược (theo lý thuyết).

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