XHTML

**XHTML** (viết tắt của tiếng Anh *Extensible HyperText Markup Language*, "Ngôn ngữ Đánh dấu Siêu văn bản Mở rộng") là một ngôn ngữ đánh dấu có cùng các khả năng như HTML, nhưng có cú pháp chặt chẽ hơn. XHTML 1.0 là Khuyến cáo của World Wide Web Consortium (W3C) vào ngày 26 tháng 2 năm 2000.

## Tổng quan
Về phương diện kĩ thuật, XHTML là một họ các kiểu tài liệu hiện tại và tương lai cùng các mô đun nhằm tái tạo lại, mở rộng, thâu nạp HTML, tái cấu trúc lại dưới dạng XML. Các dạng tài liệu thuộc họ XHTML tất cả đều dựa trên XML, và được thiết kế để làm việc tuyệt đối với các trình đại diện người dùng hiểu XML. XHTML là thế hệ kế tiếp HTML, và đã có một loại các đặc tả được phát triển cho XHTML.

## Một số khác biệt giữa HTML và XHTML

### Các phần tử phải được lồng nhau đúng cách
Trong HTML một số phần tử có thể được lồng vào nhau không đúng cách như thế này.
```html
<b><i>This text is bold and italic</b></i>
```
Trong XHTML tất cả các phần tử phải được lồng vào nhau đúng cách như thế này:
```xml
<b><i>This text is bold and italic</i></b>
```
**Chú ý:** Một lỗi thường thấy ở các danh sách gạch đầu dòng lồng vào nhau mà quên mất rằng danh sách bên trong phải được đặt trong phần tử li. Ví dụ:
```html
<ul>
    <li>Coffee</li>
    <li>Tea
      <ul>
        <li>Black tea</li>
        <li>Green tea</li>
      </ul>
    <li>Milk</li>
</ul>
```
Đây mới là đúng:
```xml
<ul>
    <li>Coffee</li>
    <li>Tea
      <ul>
        <li>Black tea</li>
        <li>Green tea</li>
      </ul>
    </li>
    <li>Milk</li>
</ul>
```


### Phải có đặt ở dạng chuẩn (''well-formed'')
Tất cả các phần tử XHTML phải được đặt lồng bên trong phần tử gốc . Tất cả các phần tử khác có thể có các phần tử con. Các phần tử con phải đi theo cặp và phải được đặt lồng nhau đúng cách bên trong phần tử mẹ. Cấu trúc tài liệu cơ bản là:
```xml
<html>
    <head>... </head>
    <body>... </body>
</html>
```


### Tên gọi của thẻ đều phải viết thường
Do XHTML kế thừa cú pháp của XML và mỗi trang XHTML đều là các ứng dụng XML cho nên XHTML có phân biệt chữ hoa chữ thường, điều không có ở HTML. Với HTML thì các thẻ như `` và `` là hiểu là giống nhau nhưng một khi bạn đã xác định trang web của bạn là XHTML thì trình duyệt sẽ dịch hai thẻ này là khác nhau.

HTML chấp nhận cách viết dưới:
```html
<BODY>
  <P>This is a paragraph</P>
</BODY>
```
XHTML đòi hỏi phải viết lại phần trên thành:
```xml
<body>
  <p>This is a paragraph</p>
</body>
```


### Tất cả các phần tử XHTML phải được đóng lại
Phần tử không rỗng phải có một thẻ đóng. HTML chấp nhận cách viết dưới:
```html
<p>This is a paragraph
<p>This is another paragraph
```
XHTML đòi hỏi phải viết lại phần trên thành:
```xml
<p>This is a paragraph</p>
<p>This is another paragraph</p>
```


### Các phần tử rỗng cũng phải được đóng lại
Các phần tử rỗng hoặc là phải có thể đóng hoặc là thẻ khởi đầu phải được kết thúc bằng `/>`. HTML chấp nhận cách viết dưới:
```html
This is a break<br>
Here comes a horizontal rule:<hr>
Here's an image<img src="happy.gif" alt="Happy face">
```
XHTML đòi hỏi phải viết lại phần trên thành:
```xml
This is a break<br />
Here comes a horizontal rule:<hr />
Here's an image<img src="happy.gif" alt="Happy face" />
```


#### Chú ý quan trọng
Để làm cho trang XHTML tương thích với các trình duyệt hiện nay thì nên đặt một khoảng trắng thêm vào trước ký tự  kiểu như , và 

### Các giá trị của thuộc tính phải được đặt trong dấu nháy kép
HTML chấp nhận cách viết dưới:
```html
<table width="100%">
```
XHTML đòi hỏi phải viết lại phần trên thành:
```xml
<table width="100%" />
```


### Việc tối giản thuộc tính là bị nghiêm cấm
HTML chấp nhận cách viết dưới:

* 
* 
* 
* 
* 
* 

XHTML đòi hỏi phải viết lại phần trên thành:

* 
* 
* 
* 
* 
* 

## Xem thêm
* World Wide Web Consortium
* HTML
* XML

## Tham khảo

## Liên kết ngoài
* [XHTML – Ngôn ngữ đánh dấu của chuẩn web](http://www.tanphatcomputer.com/download/XHTML%20(www.tanphatcomputer.com).pdf) (PDF)
* W3C's HTML Home Page
* XHTML 1.0 Specification
* XHTML 1.1 Specification
* Working Draft of XHTML 2.0
* W3C MarkUp Validation Service (Including XHTML validation)
* XHTML validator on SourceForge
* Wikibooks XHTML tutorial — in progress
* Sending XHTML as text/html Considered Harmful