XHTML so với HTML
Do XHTML là một ứng dụng XML, một số thực hành hoàn toàn hợp pháp trong HTML 4 dựa trên SGML phải được thay đổi. Bạn đã thấy cú pháp XHTML trong chương trước, vì vậy sự khác biệt giữa XHTML và HTML là rất rõ ràng. Sau đây là so sánh giữa XHTML và HTML.
Tài liệu XHTML phải được định dạng tốt
Định dạng tốt là một khái niệm mới được giới thiệu bởi XML. Về cơ bản, điều này có nghĩa là tất cả các phần tử phải có thẻ đóng và bạn phải lồng chúng đúng cách.
CORRECT: Nested Elements
<p>Here is an emphasized <em>paragraph</em>.</p>
INCORRECT: Overlapping Elements
<p>Here is an emphasized <em>paragraph.</p></em>
Các phần tử và thuộc tính phải ở dạng chữ thường
Tài liệu XHTML phải sử dụng chữ thường cho tất cả các phần tử HTML và tên thuộc tính. Sự khác biệt này là cần thiết vì tài liệu XHTML được giả định là tài liệu XML và XML phân biệt chữ hoa chữ thường. Ví dụ: <li> và <LI> là các thẻ khác nhau.
Thẻ kết thúc là bắt buộc cho tất cả các phần tử
Trong HTML, các phần tử nhất định được phép bỏ qua thẻ kết thúc. Nhưng XML không cho phép bỏ qua thẻ kết thúc.
CORRECT: Terminated Elements
<p>Here is a paragraph.</p><p>here is another paragraph.</p>
<br><hr/>
INCORRECT: Unterminated Elements
<p>Here is a paragraph.<p>here is another paragraph.
<br><hr>
Giá trị thuộc tính phải luôn được trích dẫn
Tất cả các giá trị thuộc tính bao gồm cả giá trị số, phải được trích dẫn.
CORRECT: Quoted Attribute Values
<td rowspan="3">
INCORRECT: Unquoted Attribute Values
<td rowspan=3>
Giảm thiểu thuộc tính
XML không hỗ trợ giảm thiểu thuộc tính. Các cặp thuộc tính-giá trị phải được viết đầy đủ. Các tên thuộc tính như compact và check không thể xuất hiện trong các phần tử mà giá trị của chúng không được chỉ định.
CORRECT: Non Minimized Attributes
<dl compact="compact">
INCORRECT: Minimized Attributes
<dl compact>
Xử lý khoảng trắng trong các giá trị thuộc tính
Khi một trình duyệt xử lý các thuộc tính, nó sẽ làm như sau:
Tách khoảng trắng ở đầu và cuối.
Lập bản đồ chuỗi gồm một hoặc nhiều ký tự khoảng trắng (bao gồm cả ngắt dòng) vào một khoảng trắng giữa các từ.
Phần tử Script và Style
Trong XHTML, các phần tử script và style không được có các ký tự “<” và “&” trực tiếp, nếu chúng tồn tại; thì chúng được coi là điểm bắt đầu đánh dấu. Các thực thể như “<” và “&” được bộ xử lý XML công nhận là các tham chiếu thực thể để hiển thị các ký tự “<” và “&” tương ứng.
Việc bao bọc nội dung của phần tử script hoặc style trong phần được đánh dấu CDATA sẽ tránh được việc mở rộng các thực thể này.
<script type="text/JavaScript">
<![CDATA[
... unescaped VB or Java Script here... ...
]]>
</script>
Một giải pháp thay thế là sử dụng các tài liệu kiểu và script bên ngoài.
Các phần tử có thuộc tính id và tên
XHTML khuyến nghị thay thế thuộc tính name bằng thuộc tính id . Lưu ý rằng trong XHTML 1.0, thuộc tính name của các phần tử này chính thức không được dùng nữa và nó sẽ bị xóa trong các phiên bản XHTML tiếp theo.
Các thuộc tính có Bộ giá trị được xác định trước
Cả HTML và XHTML đều có một số thuộc tính có các bộ giá trị được xác định trước và giới hạn. Ví dụ,type thuộc tính của inputthành phần. Trong HTML và XML, chúng được gọi làenumerated attributes. Trong HTML 4, việc diễn giải các giá trị này không phân biệt chữ hoa chữ thường, vì vậy giá trị củaTEXT tương đương với giá trị của text.
Trong XHTML, việc giải thích các giá trị này là phân biệt chữ hoa chữ thường, vì vậy tất cả các giá trị này được xác định bằng chữ thường.
Tham chiếu thực thể dưới dạng giá trị Hex
Cả HTML và XML đều cho phép tham chiếu đến các ký tự bằng cách sử dụng giá trị thập lục phân. Trong HTML, các tham chiếu này có thể được tạo bằng cách sử dụng&#Xnn; hoặc là &#xnn; và chúng hợp lệ nhưng trong tài liệu XHTML, bạn chỉ phải sử dụng phiên bản chữ thường, chẳng hạn như &#xnn;.
Phần tử <html> là Phải
Tất cả các phần tử XHTML phải được lồng trong phần tử gốc <html>. Tất cả các phần tử khác có thể có các phần tử con phải theo cặp và được lồng chính xác trong phần tử mẹ của chúng. Cấu trúc tài liệu cơ bản là -
<!DOCTYPE html....>
<html>
<head> ... </head>
<body> ... </body>
</html>