14/08/2018, 11:58

DTD trong XML

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ữ ...

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.

Cú pháp

Cú pháp cơ bản của DTD trong XML là:

<!DOCTYPE element DTD identifier
[
   declaration1
   declaration2
   ........
]>

Trong cú pháp trên:

Internal DTD trong XML

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ú 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ử.

Ví dụ

Sau đây là ví dụ đơn giản của DTD nội tại.

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE address [
   <!ELEMENT address (name,company,phone)>
   <!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:

<!DOCTYPE address [

Khai báo DOCTYPE có một dấu chấm than (!) tại phần đầu của tên phần tử. DOCTYPE thông báo cho Parser rằng một DTD được liên kết với tài liệu XML này.

Phần thân DTD - Khai báo DOCTYPE được theo sau bởi phần thân của DTD đó, ở đó bạn khai báo các phần tử, thuộc tính, thực thể.

<!ELEMENT address (name,company,phone)>
<!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.

Qui tắc cho DTD trong XML

External DTD trong 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.

Cú pháp

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ụ

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" ?>
<!DOCTYPE address SYSTEM "address.dtd">
<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)>

Kiểu tham chiếu trong XML

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).

Định danh hệ thống (System 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 (Public Identifier)

Đị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.

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

0