Document Type Declaration trong XML, gọi tắt là DTD, là một cách để miêu tả ngôn ngữ XML. DTD kiểm tra từ vựng và tính hợp lệ của cấu trúc tài liệu XML theo các qui tắc ngữ pháp của ngôn ngữ XML thích hợp.
Một DTD trong XML có thể hoặc được xác định bên trong tài liệu, hoặc có thể được giữ trong một tài liệu riêng biệt.
<!DOCTYPE element DTD identifier
[
declaration1
declaration2
........
]>
Trong cú pháp trên:
Một DTD được xem như là một DTD nội tại nếu các phần tử được khai báo bên trong XML file. Để xem nó như là DTD nội tại, thuộc tính standalone trong khai báo XML phải được thiết lập là yes. Nghĩa là, khai báo làm việc độc lập với nguồn ngoại vi.
Cú pháp của DTD nội tại trong XML như sau:
<!DOCTYPE root-element [element-declarations]>
Ở đây, root-element là tên của phần tử gốc và element-declarations là nơi bạn khai báo các phần tử.
Sau đây là ví dụ đơn giản của DTD nội tại.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
]>
<address>
<name>Tanmay Patil</name>
<company>TutorialsPoint</company>
<phone>(011) 123-4567</phone>
</address>
Chúng ta cùng phân tích đoạn code trên:
Phần đầu khai báo - Bắt đầu khai báo XML với lệnh sau:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
DTD
Ngay sau phần đầu khai báo là phần khai báo kiểu tài liệu, thường là DOCTYPE:
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone_no (#PCDATA)>
Một số phần tử được khai báo ở đây mà cấu tạo nên từ vựng của tài liệu <name>
document. <!ELEMENT name (#PCDATA)>
định nghĩa phần tử name là kiểu "#PCDATA". Ở đây #PCDATA nghĩa là parse-able text data (dữ liệu text có thể phân tích cú pháp).
Phần cuối khai báo - Cuối cùng, khu vực khai báo DTD được kết thúc bởi sử dụng một dấu ngoặc móc vuông đóng và một dấu lớn hơn (]>). Nó kết thúc khai báo DTD và theo sau là tài liệu XML.
Một External DTD (DTD ngoại vi) được khai báo bên ngoài XML file. Chúng được truy cập bằng việc xác định các thuộc tính hệ thống mà có thể là .dtd file hoặc một URL hợp lệ. Để xem nó như là DTD ngoại vi, thuộc tính standalone trong khai báo XML phải được thiết lập là no. Nghĩa là, khai báo bao thông tin từ nguồn bên ngoài.
Sau đây là cú pháp cho DTD ngoại vi:
<!DOCTYPE root-element SYSTEM "file-name">
Ở đây, file-name là file với đuôi .dtd.
Ví dụ sau minh họa sự sử dụng của DTD ngoại vi:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<address>
<name>Tanmay Patil</name>
<company>TutorialsPoint</company>
<phone>(011) 123-4567</phone>
</address>
Nội dung của DTD file là address.dtd như sau:
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
Bạn có thể tham chiếu một DTD ngoại vi bởi sử dụng các định danh hệ thống (System Identifier) hoặc định danh chung (Public Identifier).
Một định danh hệ thống cho bạn khả năng xác định vị trí của một file ngoại vi chứa các khai báo DTD. Cú pháp là như sau:
<!DOCTYPE name SYSTEM "address.dtd" [...]>
Bạn có thể thấy rằng, nó chứa từ khóa SYSTEM và một tham chiếu URI trỏ tới vị trí của tài liệu.
Định danh chung cung cấp một kỹ thuật để xác định vị trí DTD resource và được viết như sau:
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">
Nó bắt đầu với từ khóa PUBLIC, được theo sau bởi một định danh cụ thể. Định danh chung được sử dụng để nhận diện một entry trong một catalog. Định danh chung có thể theo sau bất kỳ định dạng nào, tuy nhiên một định dạng thường được sử dụng nhất là Formal Public Identifiers, hoặc FPIs.
Unpublished comment
Viết câu trả lời