Ở phần 1 mình đã giới thiệu sơ lược về XML là gì. Và ở phần này mình sẽ giới tiếp về Document Type Definition (DTD) cho mọi người nhé! Bắt đầu nào

*

DTD (Document Type Definition) là gì?

Là tài liệu dùng để định nghĩa kiểu dữ liệu cho các phần tử của tài liệu XML.Khi đọc tài liệu XML, chỉ cần đọc phần DTD là sẽ biết được cấu trúc XML.

Bạn đang xem: Dtd là gì

Vậy tại sao lại sử dụng DTD?

Với một DTD, mỗi file XML có thể mang một mô tả định dạng của nó.Các nhóm độc lập có thể chấp nhận một chuẩn DTD ñể trao đổi dữ liệu.Một ứng dụng có thể sử dụng một DTD chuẩn thể kiểm tra dữ liệu nhận về từ bên ngoài xem có hợp lệ hay không.

Các kiểu khai báo

1. Khai báo DTD nội

Nếu DTD được khai báo bên trong file XML được nằm trong định nghĩa DOCTYPE

Ví dụ:

xml version=”1.0″?>// Khai báo DTD nội >>note> to>Toveto> from>Janifrom> heading>Reminderheading> body>Don”t forgetnote>Mình sẽ giải thích 1 chút về nội dung bên trong nhé :

!DOCTYPE note: định nghĩa phần tử gốc của tài liệu là note!ELEMENT note: định nghĩa phần tử note chứa 4 phần tử: to, from, heading, body!ELEMENT to: định nghĩa phần tử to thuộc kiểu #PCDATA!ELEMENT from: định nghĩa phần tử from thuộc kiểu #PCDATA!ELEMENT heading: định nghĩa phần tử heading thuộc kiểu #PCDATA!ELEMENT body: định nghĩa phần tử body thuộc kiểu #PCDATA

2. Khai báo DTD ngoại

Nếu DTD ñược khai báo bên trong file bên ngoài được nằm trong định nghĩa DOCTYPE:

Ví dụ:

xml version=”1.0″?>note> to>Toveto> from>Janifrom> heading>Reminderheading> body>Don”t forget me this weekend!body>note>// File note.dtd:!ELEMENT note (to,from,heading,body)>!ELEMENT to (#PCDATA)>!ELEMENT from (#PCDATA)>!ELEMENT heading (#PCDATA)>!ELEMENT body (#PCDATA)>3. Khai báo phần tử

Phần tử dùng để định nghĩa kiểu dữ liệu cho một phần tử của một tài liệu XML.

Xem thêm: Tiếng Việt Là Gì – Thể Loại:Tiếng Việt

!ELEMENT element-name category>hoặc!ELEMENT element-name (element-content)>Phần tử với kiểu rỗng: .

Xem thêm: Freemium Là Gì – Tìm Hiểu Về Mô Hình Freemium

Ví dụ thẻ Phần tử có kiểu văn bản: . Ví dụ:!ELEMENT from (#PCDATA)>Phần tử với kiểu dữ liệu bất kỳ: . Ví dụ:!ELEMENT note ANY>Định nghĩa phần tử có chứa một phần tử con: . Ví dụ:!ELEMENT note (message)>Phần tử có 0 hoặc 1 con: . Ví dụ!ELEMENT note (message?)>Phần tử có một trong các phần tử con:

Phần tử chứa phần tử con hoặc dữ liệu:

4. Khai báo thuộc tính với

Phần tử dùng để định nghĩa kiểu tư liệu của các thuộc tính cho một phần tử trong tài liệu XML

// DTD:!ATTLIST payment type CDATA “check”>// XML:payment type=”check” />Các kiểu thuộc tính:

KiểuMô tả
CDATAThuộc tính này chỉ có thể chứa kiểu dữ liệu kí tự
(en1, en2,..)Thuộc tính chỉ nhận giá trị từ danh sách này
IDGiá trị của thuộc tính này không được trùng nhau và bắt đầu bởi 1 chữ cái
IDREFGiá trị của thuộc tính này phải là một trong các giá trị của thuộc tính ID của các phần tử khác
IDREFSGiá trị của thuộc tính này phải là các giá trị của các thuộc tính có kiểu ID
NMTOKENGiá trị là một tên XML hợp lệ
NMTOKENSGiá trị là một danh sách các tên XML hợp lệ
ENTITYGiá trị là một thực thể
ENTITIESGiá trị là một danh sách các thực thể
NOTATIONGiá trị là tên của một kí hiệu
xml:Giá trị là một giá trị xml ñã ñịnh sẵn

Tránh sử dụng thuộc tính?Có một số vấn đề với thuộc tính, đó là:Không thể chứa nhiều giá trị (trong khi phần tử con có thể)Không dễ dàng mở rộng trong tương laiKhông mô tả các cấu trúcKhó ñể thao tác bởi đoạn mã lập trìnhCác giá trị thuộc tính là không dễ dàng để kiểm tra một DTD

Thực thể

Các thực thể là các biến được sử dụng để định nghĩa shortcuts tới đoạn text chuẩn hoặc các kí tự đặc biệt.Các tham chiếu thực thể là các tham chiếu tới các thực thểCác thực thể có thể được khai báo bên trong hoặc bên ngoàiKhai báo bên trong: .Khai báo bên ngoài: Ví dụ:
Chuyên mục: Hỏi Đáp