HTML và XHTML

XHTML là HTML được viết bằng ngôn ngữ XML.

XHTML là gì?

  • XHTML là viết tắt của Extensible HyperText Markup Language (Ngôn ngữ đánh dấu siêu văn bản mở rộng)
  • XHTML gần giống với HTML
  • XHTML có quy định nghiêm khắc hơn HTML
  • XHTML là HTML được định nghĩa như một ứng dụng XML
  • XHTML được hỗ trợ bởi hầu hết các trình duyệt phổ biến

Tại sao lại dùng XHTML?

Nhiều trang trên Internet chứa HTML “rất tệ”, dù không tuân theo quy định của HTML nhưng vẫn chạy được trên nhiều trình duyệt. Dưới đây là ví dụ về đoạn HTML không hợp quy định nhưng vẫn chạy được.

<html>
<head>
 <title>HTML không đúng quy định</title>

<body>
 <h1>HTML “xấu”
 <p>Quản trị mạng.
</body>

Ngày nay có nhiều công nghệ trình duyệt, có thể chạy trên máy tính, điện thoại hoặc các thiết bị nhỏ khác. Các bị thiết bị nhỏ này thường thiếu phần tài nguyên hay sức mạnh để dịch những markup “xấu”.

XHTML là ngôn ngữ đánh dấu mà theo đó tài liệu phải được đánh dấu đúng quy cách, được phát triển bằng cách kết hợp sức mạnh của cả HTML và XML.

Điểm khác biệt quan trọng giữa HTML và XHTML

Cấu trúc văn bản

  • XHTML DOCTYPE là bắt buộc
  • Thuộc tính xmlns trong thẻ <html> là bắt buộc.
  • Các thẻ <html>, <head>, <title> và <body> là bắt buộc.

Các phần tử trong XHTML

  • Các phần tử trong XHTML phải được lồng đúng quy cách.
  • Các phần tử trong XHTML phải luôn luôn được đóng.
  • Các phần tử trong XHTML phải viết dạng chữ thường.
  • Các phần tử trong XHTML phải có một phần tử gốc.

Các thuộc tính trong XHTML

  • Tên thuộc tính phải viết dạng chữ thường.
  • Giá trị thuộc tính phải nằm trong dấu trích dẫn.
  • Cấm không được đơn giản hóa thuộc tính.

<!DOCTYPE…> là bắt buộc

Văn bản XHTML phải có phần khai báo XHTML DOCTYPE.

Phải có các phần tử <html>, <head>, <title> và <body>, thuộc tính xmlns trong thẻ <html> phải xác định không gian xml cho văn bản. Ví dụ dưới đây cho thấy văn bản XHTML với các thẻ bắt buộc tối thiểu.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"https://quantrimang.com/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="https://quantrimang.com/1999/xhtml">

<head>
 <title>Tiêu đề văn bản</title>
</head>

<body>
 nội dung
</body>

</html>

Phần tử XHTML phải được lồng đúng quy cách

Trong HTML, một số phần tử có thể lồng với nhau không theo đúng quy cách như ví dụ dưới đây.

<b><i>Văn bản in đậm và in nghiêng</b></i>

Nhưng trong XHTML, tất cả các phần tử phải được lồng đúng quy cách, như ví dụ dưới.

<b><i>Văn bản in đậm và in nghiêng</i></b>

Phần tử XHTML phải luôn được đóng

Viết như dưới đây là sai

<p>Đoạn văn 1
<p>Đoạn văn 2

Đúng là phải là thế này:

<p>Đoạn văn 1</p>
<p>Đoạn văn 2</p>

Phần tử rỗng cũng phải được đóng

Như ví dụ dưới đây là không hợp lệ.

Ngt dòng: <br>
Đường nm ngang: <hr>
Hình nh: <img src="vuive.gif" alt="Vui vẻ">

Mà phải viết như dưới đây.

Ngt dòng: <br />
Đường nm ngang: <hr />
Hình nh: <img src="vuive.gif" alt="Vui vẻ" />

Phần tử trong XHTML phải viết bằng chữ thường

Viết như dưới đây là sai.

<BODY>
 <P>Đoạn văn</P>
</BODY>

Mà phải viết chữ thường như dưới đây.

<body>
 <p>Đoạn văn</p>
</body>

Tên thuộc tính trong XHTML phải viết bằng chữ thường

Không viết <table WIDTH="100%"> mà phải viết <table width="100%">

Giá trị thuộc tính phải nằm trong dấu trích dẫn

Không viết <table width=100%> mà phải viết <table width="100%">

Không được đơn giản hóa thuộc tính

Sai <input type="checkbox" name="vehicle" value="car" checked />

Đúng <input type="checkbox" name="vehicle" value="car" checked="checked" />

Sai <input type="text" name="lastname" disabled />

Đúng <input type="text" name="lastname" disabled="disabled" />

Cách chuyển đổi từ HTML sang XHTML

  • Thêm XHTML <!DOCTYPE> vào dòng đầu tiên của mỗi trang
  • Thêm thuộc tính xmlns vào phần tử html của mỗi trang
  • Đổi tất cả các tên phần tử sang dạng chữ thường
  • Đóng tất cả các phần tử rỗng
  • Đổi tất cả tên thuộc tính sang dạng chữ thường
  • Đặt vào dấu trích dẫn tất cả các giá trị thuộc tính