2009-08-26 4 views
6

Tôi đã nhìn thấy một số thông tin xung đột rằng một tài liệu XHTML cũng phải tự khai báo là XML.Tôi có cần khai báo XML trên một trang bằng cách sử dụng loại tài liệu XHTML không?

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

Tuy nhiên, ở những nơi khác tôi nhìn thấy (kể cả w3.org) rằng DOCTYPE phải là khai thẻ đầu tiên.

Vì W3 nói, điều đó phải đúng. Tuy nhiên, tôi có thể có một số trang/ứng dụng nói dối đang theo phương pháp đầu tiên. Rủi ro của tôi là gì?

Chỉnh sửa: Tôi vừa chạy một trang qua W3 Validator có và không có khai báo XML và thông qua cả hai cách. Tại thời điểm này, sau đó, tôi đoán nó chỉ là một "phong cách" điều.

Trả lời

9
<?xml version="1.0" encoding="utf-8"?> 

... là phiên bản và mã hóa mặc định cho XML, vì vậy bạn không cần nó chút nào. Nếu bạn đang phục vụ XHTML dưới dạng text/html, nó có lẽ không nên có ở đó cả.

Tuy nhiên, ở những nơi khác tôi thấy (bao gồm w3.org) DOCTYPE phải là thẻ đầu tiên.

Âm thanh như một số nhầm lẫn ... DOCTYPE không phải là thẻ và không phải là <? Xml?> (Được gọi là khai báo XML và trông giống như Hướng dẫn xử lý nhưng không phải là một trong số đó , hoặc).

Nếu bạn đang bao gồm cả hai, khai báo XML phải đến trước. Bí quyết là trình duyệt DOCTYPE của IE6 chỉ phát hiện DOCTYPEs Chế độ Chuẩn nếu chúng là thứ đầu tiên trên trang, có nghĩa là bạn không thể sử dụng một khai báo XML và bạn phải gắn với mã hóa XML 1.0 và UTF-8 (điều này không tuyệt vời mất).

+0

Tha thứ cho việc áp dụng sai từ "thẻ". Tôi đã trích dẫn một số tài liệu tôi đã đọc. – ale

2

Tôi chưa bao giờ bao gồm nó (luôn đi cùng với loại tài liệu) và w3c cho biết các dự án nghiêm ngặt của XHTML 1.0 của tôi là "hợp lệ".

4

Từ XHTML 1.1 specification:

Một khai báo XML như trên không bắt buộc ở tất cả các tài liệu XML. Tác giả tài liệu XHTML NÊN sử dụng khai báo XML trong tất cả tài liệu của họ. Tác giả tài liệu XHTML PHẢI sử dụng khai báo XML khi mã hóa ký tự của tài liệu khác với mặc định UTF-8 hoặc UTF-16 và không có mã hóa được chỉ định bởi giao thức cấp cao hơn .

http://www.w3.org/TR/xhtml11/conformance.html

4

http://validator.w3.org/ chỉ chấp nhận các <? Xml > thứ trước <! DOCTYPE >. Cách khác xung quanh (doctype trước? Xml) sẽ không được xác thực.