DTD - Thực thể
Các thực thể được sử dụng để xác định các phím tắt cho các ký tự đặc biệt trong tài liệu XML. Các thực thể chủ yếu có thể có bốn loại -
Các thực thể cài sẵn
Thực thể nhân vật
Thực thể chung
Thực thể tham số
Cú pháp khai báo thực thể
Nói chung, các thực thể có thể được khai báo internally hoặc là externally. Hãy để chúng tôi hiểu từng điều này và cú pháp của chúng như sau:
Thực thể nội bộ
Nếu một thực thể được khai báo trong DTD thì nó được gọi là thực thể bên trong.
Syntax
Sau đây là cú pháp để khai báo thực thể nội bộ:
<!ENTITY entity_name "entity_value">
Trong cú pháp trên -
entity_name là tên của thực thể theo sau là giá trị của nó trong dấu ngoặc kép hoặc dấu nháy đơn.
entity_value giữ giá trị cho tên thực thể.
Giá trị thực thể của Đối tượng nội bộ được hủy tham chiếu bằng cách thêm tiền tố & sang tên thực thể tức là & entity_name.
Example
Sau đây là một ví dụ đơn giản về khai báo thực thể nội bộ:
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE address [
<!ELEMENT address (#PCDATA)>
<!ENTITY name "Tanmay patil">
<!ENTITY company "TutorialsPoint">
<!ENTITY phone_no "(011) 123-4567">
]>
<address>
&name;
&company;
&phone_no;
</address>
Trong ví dụ trên, tên thực thể tương ứng tên , công ty và phone_no được thay thế bằng giá trị của họ trong tài liệu XML. Các giá trị thực thể được hủy tham chiếu bằng cách thêm tiền tố & đến tên thực thể.
Lưu tệp này thành sample.xmlvà mở nó trong bất kỳ trình duyệt nào, bạn sẽ nhận thấy rằng các giá trị thực thể cho name , company , phone_no được thay thế tương ứng.
Thực thể bên ngoài
Nếu một thực thể được khai báo bên ngoài DTD thì nó được gọi là thực thể bên ngoài. Bạn có thể tham chiếu đến Đối tượng bên ngoài bằng cách sử dụng số nhận dạng hệ thống hoặc số nhận dạng công khai.
Syntax
Sau đây là cú pháp để khai báo Đối tượng Bên ngoài:
<!ENTITY name SYSTEM "URI/URL">
Trong cú pháp trên -
name là tên của thực thể.
SYSTEM là từ khóa.
URI/URL là địa chỉ của nguồn bên ngoài được đặt trong dấu ngoặc kép hoặc đơn.
Types
Bạn có thể tham khảo một DTD bên ngoài bằng cách sử dụng:
System Identifiers - Mã đị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.
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. Cú pháp như sau:
<!DOCTYPE name SYSTEM "address.dtd" [...]>
Public Identifiers - Các mã định danh công khai cung cấp một cơ chế để định vị các tài nguyên DTD và được viết như sau:
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ể 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.
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">
Example
Hãy để chúng tôi hiểu về thực thể bên ngoài với ví dụ sau:
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE address SYSTEM "address.dtd">
<address>
<name>
Tanmay Patil
</name>
<company>
TutorialsPoint
</company>
<phone>
(011) 123-4567
</phone>
</address>
Dưới đây là nội dung của tệp DTD address.dtd -
<!ELEMENT address (name, company, phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
Các thực thể cài sẵn
Tất cả các trình phân tích cú pháp XML phải hỗ trợ các thực thể dựng sẵn. Nói chung, bạn có thể sử dụng các tham chiếu thực thể này ở bất cứ đâu. Bạn cũng có thể sử dụng văn bản bình thường trong tài liệu XML, chẳng hạn như trong nội dung phần tử và giá trị thuộc tính.
Có năm thực thể tích hợp đóng vai trò của chúng trong XML được định dạng tốt, chúng là:
dấu và: & amp;
Trích dẫn duy nhất: & apos;
Lớn hơn: & gt;
Nhỏ hơn: & lt;
Dấu ngoặc kép: & quot;
Thí dụ
Ví dụ sau minh họa khai báo thực thể tích hợp:
<?xml version = "1.0"?>
<note>
<description>I'm a technical writer & programmer</description>
<note>
Như bạn có thể thấy ở đây, & amp; ký tự được thay thế bằng & bất cứ khi nào bộ xử lý gặp phải điều này.
Thực thể nhân vật
Thực thể ký tự được sử dụng để đặt tên cho một số thực thể biểu thị thông tin, tức là các ký tự khó hoặc không thể nhập có thể được thay thế bằng Thực thể ký tự.
Thí dụ
Ví dụ sau minh họa khai báo thực thể ký tự:
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE author[
<!ELEMENT author (#PCDATA)>
<!ENTITY writer "Tanmay patil">
<!ENTITY copyright "©">
]>
<author>&writer;©right;</author>
Bạn sẽ nhận thấy ở đây chúng tôi đã sử dụng ©như giá trị cho nhân vật bản quyền. Lưu tệp này dưới dạng sample.xml và mở nó trong trình duyệt của bạn và bạn sẽ thấy bản quyền được thay thế bằng ký tự ©.
Thực thể chung
Các thực thể chung phải được khai báo trong DTD trước khi chúng có thể được sử dụng trong tài liệu XML. Thay vì chỉ đại diện cho một ký tự đơn lẻ, các thực thể chung có thể đại diện cho các ký tự, đoạn văn và thậm chí toàn bộ tài liệu.
Cú pháp
Để khai báo một thực thể chung, hãy sử dụng một khai báo của biểu mẫu chung này trong DTD của bạn -
<!ENTITY ename "text">
Thí dụ
Ví dụ sau minh họa khai báo thực thể chung:
<?xml version = "1.0"?>
<!DOCTYPE note [
<!ENTITY source-text "tutorialspoint">
]>
<note>
&source-text;
</note>
Bất cứ khi nào trình phân tích cú pháp XML gặp một tham chiếu đến thực thể văn bản nguồn , nó sẽ cung cấp văn bản thay thế cho ứng dụng tại điểm tham chiếu.
Thực thể tham số
Mục đích của thực thể tham số là cho phép bạn tạo các phần có thể sử dụng lại của văn bản thay thế.
Cú pháp
Sau đây là cú pháp để khai báo thực thể tham số:
<!ENTITY % ename "entity_value">
entity_value là bất kỳ ký tự nào không phải là '&', '%' hoặc '"'.
Thí dụ
Ví dụ sau minh họa khai báo thực thể tham số. Giả sử bạn có các khai báo phần tử như bên dưới:
<!ELEMENT residence (name, street, pincode, city, phone)>
<!ELEMENT apartment (name, street, pincode, city, phone)>
<!ELEMENT office (name, street, pincode, city, phone)>
<!ELEMENT shop (name, street, pincode, city, phone)>
Bây giờ, giả sử bạn muốn thêm quốc gia bầu cử bổ sung , sau đó bạn cần thêm quốc gia đó vào cả bốn khai báo. Do đó, chúng ta có thể tìm tham chiếu thực thể tham số. Bây giờ sử dụng tham chiếu thực thể tham số, ví dụ trên sẽ là:
<!ENTITY % area "name, street, pincode, city">
<!ENTITY % contact "phone">
Các thực thể tham số được tham chiếu giống như một tham chiếu thực thể chung, chỉ bằng dấu phần trăm thay vì dấu và -
<!ELEMENT residence (%area;, %contact;)>
<!ELEMENT apartment (%area;, %contact;)>
<!ELEMENT office (%area;, %contact;)>
<!ELEMENT shop (%area;, %contact;)>
Khi trình phân tích cú pháp đọc các khai báo này, nó sẽ thay thế văn bản thay thế của thực thể cho tham chiếu thực thể.