HTML5: !DOCTYPE


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Tổng quan

DOCTYPE (document type declaration) là một chỉ dẫn liên quan đến một SGML (Standard Generalized Markup Language) cụ thể hoặc một tài liệu XML (ví dụ như một trang web) với một định nghĩa kiểu tài liệu (document type definition - DTD) (ví dụ, định nghĩa chính thức phiên bản cụ thể của HTML). Tuân theo cú pháp của trang web, DOCTYPE thể hiện là phần viết ngắn gọn như sau: <!DOCTYPE>.

Vì vậy, <!DOCTYPE> không phải là một thẻ HTML, nó là một lệnh khai báo, dùng để khai báo kiểu của tài liệu HTML.

Trong tài liệu HTML, <!DOCTYPE> phải được đặt trước thẻ <HTML>.

Theo cách thức bố cục các trang HTML mà không theo chuẩn HTML5 của các trình duyệt hiện nay thì DOCTYPE sẽ có nhiệm vụ "đánh hơi" hoặc "chuyển đổi", cụ thể DOCTYPE sẽ xác định cách thức bố trí các trang tài liệu dạng text/html theo cách thức nào, chẳng hạn như cách thức "quirks mode" hay "standards mode". Còn đối với HTML5 là chuẩn HTML không dựa trên SGML thì việc sử dụng DOCTYPE chỉ mang tính hình thức.

Vì nhiệm vụ chủ yếu của các trình duyệt là thực thi các trang web dựa trên phân tích cú pháp HTML chứ không phải là phân tích cú pháp DTD nên các trình duyệt không sử dụng đến các DTD và cũng không bao giờ truy cập đến chúng. Hơn nữa, các trình duyệt hiện đại đang cạnh tranh nhau rất quyết liệt trong vấn đề hỗ trợ tốt nhất theo chuẩn HTML5, vậy nên DOCTYPE trong các trình duyệt này có thể coi là dư thừa.

Cú pháp

Cú pháp tổng quát của DOCTYPE là như sau:

<!DOCTYPE Phần_tử_gốc PUBLIC "FPI" ["URI"] [<!-- khai báo tập con trong -->] >
Hoặc:
<!DOCTYPE Phần_tử_gốc SYSTEM "URI" [<!-- khai báo tập con trong -->] >

Giải thích cú pháp:

Trong XML, Phần_tử_gốc là phần tử đầu tiên trong tài liệu, ví dụ trong XHTML phần tử gốc là <html>, các từ khóa PUBLIC hay SYSTEM thể hiện loại DTD (lựa chọn PUBLIC tức là tài liệu cho phép được phổ biến, SYSTEM tức là tài liệu không được phổ biến). Nếu lựa chọn là PUBLIC thì theo sau nó là một Định danh công cộng chính quy (Formal Public Identifier - FPI) được đặt trong cặp nháy kép, và sau đó phải là một định danh hệ thống (system identifier) và cũng được đặt trong cặp nháy kép. Ví dụ,  FPI của XHTML 1.1 là "-//W3C//DTD XHTML 1.1//EN" và có thể có 3 định danh hệ thống cho phép đối với XHTML 1.1 tùy thuộc vào nhu cầu, một trong số đó là tham chiếu URI "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd". Còn nếu lựa chọn là SYSTEM thì chỉ cho phép có một định danh hệ thống, tức là bộ phân tích cú pháp XML sẽ phải tìm đến các DTD trong hệ thống, tham chiếu URI sẽ được đặt trong cặp nháy kép. Phần cuối cùng (đặt trong cặp ngoặc vuông []) được gọi là tập con trong (đây là một tùy chọn) được dùng để sửa hoặc thêm các thực thể hoặc được dùng để sửa hoặc thêm các hành vi ứng với lựa chọn PUBLIC.

Một điều nữa cần nói tới, đó là DOCTYPE có điểm khác so với các tài liệu dựa trên SGML như HTML chẳng hạn, đó là bộ định danh công cộng có thể kết hợp với bộ định danh hệ thống, sự kết hợp này có thể được thực hiện bằng cách chuyển FPI tới bộ định danh hệ thống.

Ví dụ

Dòng đầu tiên của các trang World Wide Web thường là như sau:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="ar" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">

Giải thích:

Khai báo kiểu tài liệu này là cho XHTML được tích hợp bằng cách tham chiếu tới một DTD, sử dụng bộ định danh public là -//W3C//DTD XHTML 1.0 Transitional//EN và bộ định danh hệ thống là http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd; không có tập con trong; phần tử gốc là html.

Khai báo DOCTYPE với phiên bản HTML 4.01 DTD

Strict DTD

Ví dụ:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

Transitional DTD

Ví dụ:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Frameset DTD

Ví dụ:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

Khai báo DOCTYPE với phiên bản XHTML 1.0 DTD

XHTML Strict DTD

Ví dụ:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

XHTML Transitional DTD

Ví dụ:

<?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">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

XHTML Frameset DTD

Ví dụ:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

Khai báo DOCTYPE với phiên bản XHTML 1.1 DTD

XHTML 1.1 là phiên bản XHTML cuối cùng, phiên bản này hỗ trợ cho việc modul hoá XHTML. XHTML 1.1 thừa hưởng tính nghiêm ngặt của XHTML 1.0 Strict.

Ví dụ:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

Khai báo DOCTYPE với phiên bản XHTML Basic DTD

XHTML Basic 1.0

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">

XHTML Basic 1.1

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">

Khai báo DOCTYPE với phiên bản XHTML Mobile Profile DTD

XHTML Mobile Profile 1.0

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">

XHTML Mobile Profile 1.1

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.1//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile11.dtd">

XHTML Mobile Profile 1.2

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">

Khai báo DOCTYPE với phiên bản HTML5

HTML5 là phiên bản không dựa trên SGML nên khai báo <!DOCTYPE> không cần tham chiếu tới DTD nào cả. Và vì vậy khai báo <!DOCTYPE> trong HTML5 đơn giản như sau:

<!DOCTYPE html>
» Tiếp: Thẻ <meta>
« Trước: URL là gì?
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!