Giới thiệu DTD

Định nghĩa loại tài liệu (DTD) có thể định nghĩa các module xây dựng tài liệu XML hợp lệ. Nó sử dụng một loạt các phần tử hợp lệ để định nghĩa cấu trúc tài liệu.

DTD có thể được khai báo theo dòng trong tài liệu XML hoặc như một tham chiếu bên ngoài.

Định nghĩa DOCTYPE bên trong

Nếu DTD được chứa trong tệp nguồn XML của bạn, nó nên được bao bọc trong một xác định DOCTYPE bằng cách sử dụng ngữ pháp sau:

<!DOCTYPE phần tử gốc [xác định phần tử]>

Mô hình tài liệu XML có DTD (mở bằng IE5 hoặc phiên bản cao hơn và chọn Xem mã nguồn):

<?xml version="1.0"?>
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body) >
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA) >
  <!ELEMENT body    (#PCDATA)>
]]>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>Don't forget the meeting!</body>
</note>

Mở tệp XML này trong trình duyệt của bạn và chọn lệnh "Xem mã nguồn".

Giải thích DTD trên đây như sau:

!DOCTYPE note [ (Dòng thứ hai) Định nghĩa tài liệu này là note Loại tài liệu.

!ELEMENT note (Dòng thứ ba) Định nghĩa note Phần tử có bốn phần tử: "to, from, heading, body"

!ELEMENT to (Dòng thứ tư) Định nghĩa to Loại của phần tử là "#PCDATA"

!ELEMENT from (Dòng thứ năm) Định nghĩa from Loại của phần tử là "#PCDATA"

!ELEMENT heading (Dòng thứ sáu) Định nghĩa heading Loại của phần tử là "#PCDATA"

!ELEMENT body (Dòng thứ bảy) Định nghĩa body Loại của phần tử là "#PCDATA"

Định nghĩa văn bản bên ngoài

Nếu DTD nằm ngoài tệp nguồn XML, thì nó nên được bao bọc trong một định nghĩa DOCTYPE bằng cách sử dụng ngữ pháp sau:

<!DOCTYPE phần gốc SYSTEM "tên_tệp">

Tệp XML này và tệp XML trên này giống nhau, nhưng có một DTD外部: (Mở trong IE5và chọn lệnh "Xem mã nguồn"。)

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

Đây là tệp "note.dtd" chứa DTD:

<!ELEMENT note (to,from,heading,body) >
<!ELEMENT to (#PCDATA) >
<!ELEMENT from (#PCDATA) >
<!ELEMENT heading (#PCDATA) >
<!ELEMENT body (#PCDATA) >

Tại sao lại sử dụng DTD?

Bằng cách sử dụng DTD, mỗi tệp XML của bạn đều có thể mang theo một mô tả về định dạng của nó.

Bằng cách sử dụng DTD, các nhóm độc lập có thể sử dụng một DTD tiêu chuẩn để trao đổi dữ liệu một cách nhất quán.

Còn ứng dụng của bạn cũng có thể sử dụng một DTD tiêu chuẩn để kiểm tra dữ liệu nhận được từ bên ngoài.

Bạn cũng có thể sử dụng DTD để kiểm tra dữ liệu của mình.