XML - DTD

Khai báo kiểu tài liệu XML, thường được gọi là DTD, là một cách để mô tả ngôn ngữ XML một cách chính xác. Các DTD kiểm tra từ vựng và tính hợp lệ của cấu trúc tài liệu XML dựa trên các quy tắc ngữ pháp của ngôn ngữ XML thích hợp.

Một DTD XML có thể được chỉ định bên trong tài liệu, hoặc nó có thể được giữ trong một tài liệu riêng và sau đó được thích riêng.

Cú pháp

Cú pháp cơ bản của một DTD như sau:

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

Trong cú pháp trên,

  • Các DTD bắt đầu bằng dấu phân cách <! DOCTYPE.

  • An element yêu cầu trình phân tích cú pháp phân tích cú pháp tài liệu từ phần tử gốc được chỉ định.

  • DTD identifierlà mã định danh cho định nghĩa loại tài liệu, có thể là đường dẫn đến tệp trên hệ thống hoặc URL dẫn đến tệp trên internet. Nếu DTD trỏ đến đường dẫn bên ngoài, nó được gọi làExternal Subset.

  • The square brackets [ ]đính kèm một danh sách tùy chọn khai báo thực thể được gọi là Tập hợp con bên trong .

DTD nội bộ

DTD được gọi là DTD nội bộ nếu các phần tử được khai báo trong tệp XML. Để gọi nó là DTD nội bộ, thuộc tính độc lập trong khai báo XML phải được đặt thànhyes. Điều này có nghĩa là, khai báo hoạt động độc lập với nguồn bên ngoài.

Cú pháp

Sau đây là cú pháp của DTD nội bộ -

<!DOCTYPE root-element [element-declarations]>

trong đó phần tử gốc là tên của phần tử gốc và phần khai báo phần tử là nơi bạn khai báo các phần tử.

Thí dụ

Sau đây là một ví dụ đơn giản về DTD nội bộ -

<?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>

Hãy để chúng tôi xem qua đoạn mã trên -

Start Declaration - Bắt đầu khai báo XML bằng câu lệnh sau.

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

DTD- Ngay sau tiêu đề XML, khai báo kiểu tài liệu theo sau, thường được gọi là LOẠI TÀI LIỆU -

<!DOCTYPE address [

Khai báo DOCTYPE có dấu chấm than (!) Ở đầu tên phần tử. DOCTYPE thông báo cho trình phân tích cú pháp rằng một DTD được liên kết với tài liệu XML này.

DTD Body - Khai báo DOCTYPE được theo sau bởi phần thân của DTD, nơi bạn khai báo các phần tử, thuộc tính, thực thể và ký hiệu.

<!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 tạo nên từ vựng của tài liệu <name>. <! Tên phần tử (#PCDATA)> xác định tên phần tử thuộc loại "#PCDATA". Ở đây #PCDATA có nghĩa là dữ liệu văn bản có thể phân tích cú pháp.

End Declaration - Cuối cùng, phần khai báo của DTD được đóng bằng cách sử dụng dấu ngoặc đóng và dấu ngoặc nhọn đóng (]>). Điều này thực sự kết thúc định nghĩa, và sau đó, tài liệu XML tiếp theo ngay lập tức.

Quy tắc

  • Khai báo kiểu tài liệu phải xuất hiện ở đầu tài liệu (chỉ đứng trước tiêu đề XML) - nó không được phép ở bất kỳ nơi nào khác trong tài liệu.

  • Tương tự như khai báo DOCTYPE, khai báo phần tử phải bắt đầu bằng dấu chấm than.

  • Tên trong khai báo kiểu tài liệu phải khớp với kiểu phần tử của phần tử gốc.

DTD bên ngoài

Trong các phần tử DTD bên ngoài được khai báo bên ngoài tệp XML. Chúng được truy cập bằng cách chỉ định các thuộc tính hệ thống có thể là tệp .dtd hợp pháp hoặc URL hợp lệ. Để gọi nó là DTD bên ngoài, thuộc tính độc lập trong khai báo XML phải được đặt làno. Điều này có nghĩa là, khai báo bao gồm thông tin từ nguồn bên ngoài.

Cú pháp

Sau đây là cú pháp cho DTD bên ngoài -

<!DOCTYPE root-element SYSTEM "file-name">

trong đó tên-tệp là tệp có phần mở rộng .dtd .

Thí dụ

Ví dụ sau đây cho thấy việc sử dụng DTD bên ngoài:

<?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 tệp DTD address.dtd như được hiển thị -

<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>

Các loại

Bạn có thể tham khảo một DTD bên ngoài bằng cách sử dụng system identifiers hoặc là public identifiers.

Số nhận dạng hệ thống

Định danh hệ thống cho phép bạn chỉ định vị trí của tệp bên ngoài chứa các khai báo DTD. Cú pháp như sau:

<!DOCTYPE name SYSTEM "address.dtd" [...]>

Như bạn có thể thấy, nó chứa từ khóa SYSTEM và một tham chiếu URI trỏ đến vị trí của tài liệu.

Số nhận dạng công khai

Mã định danh công khai cung cấp một cơ chế để định vị tài nguyên DTD và được viết như sau:

<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">

Như bạn có thể thấy, nó bắt đầu với từ khóa PUBLIC, theo sau là một số nhận dạng chuyên biệt. Mã định danh công khai được sử dụng để xác định mục nhập trong danh mục. Định danh công khai có thể tuân theo bất kỳ định dạng nào, tuy nhiên, một định dạng thường được sử dụng được gọi làFormal Public Identifiers, or FPIs.