DTD - Cú phá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 biệt và sau đó tài liệu có thể được liên kết với tài liệu DTD để sử dụng nó.
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 -
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.
Các square brackets [ ] đính kèm một danh sách tùy chọn khai báo thực thể được gọi là internal subset.
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. Để tham chiếu 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
Cú pháp của DTD nội bộ như được hiển thị:
<!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 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 một URL hợp lệ. Để tham chiếu 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.
System Identifiers
Đị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.
Public Identifiers
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. Số nhận dạng 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à Số nhận dạng công cộng chính thức, hoặc FPI.