DTD - Phần tử
Các phần tử XML có thể được định nghĩa như các khối xây dựng của một tài liệu XML. Các phần tử có thể hoạt động như một vùng chứa để chứa văn bản, phần tử, thuộc tính, đối tượng phương tiện hoặc kết hợp tất cả.
Phần tử DTD được khai báo bằng khai báo ELEMENT. Khi một tệp XML được DTD xác thực, trình phân tích cú pháp ban đầu sẽ kiểm tra phần tử gốc và sau đó các phần tử con được xác thực.
Cú pháp
Tất cả các khai báo phần tử DTD đều có dạng chung này -
<!ELEMENT elementname (content)>
Khai báo ELEMENT được sử dụng để chỉ ra trình phân tích cú pháp mà bạn sắp xác định một phần tử.
ElementName là tên nguyên tố (còn gọi là nhận dạng generic ) mà bạn đang xác định.
nội dung xác định nội dung nào (nếu có) có thể đi trong phần tử.
Các loại nội dung yếu tố
Nội dung khai báo các phần tử trong DTD có thể được phân loại như sau:
Nội dung trống
Nội dung yếu tố
Nội dung hỗn hợp
Mọi nội dung
Nội dung trống
Đây là một trường hợp đặc biệt của khai báo phần tử. Khai báo phần tử này không chứa bất kỳ nội dung nào. Chúng được khai báo với từ khóaEMPTY.
Syntax
Sau đây là cú pháp khai báo phần tử rỗng:
<!ELEMENT elementname EMPTY >
Trong cú pháp trên -
ELEMENTlà phần tử khai báo của danh mục EMPTY
elementname là tên của phần tử trống.
Example
Sau đây là một ví dụ đơn giản minh họa khai báo phần tử rỗng:
<?xml version = "1.0"?>
<!DOCTYPE hr[
<!ELEMENT address EMPTY>
]>
<address />
Trong ví dụ này, địa chỉ được khai báo là một phần tử rỗng. Đánh dấu cho phần tử địa chỉ sẽ xuất hiện dưới dạng <address />.
Nội dung yếu tố
Trong khai báo phần tử với nội dung phần tử, nội dung sẽ là các phần tử được phép trong dấu ngoặc đơn. Chúng tôi cũng có thể bao gồm nhiều hơn một phần tử.
Syntax
Sau đây là cú pháp khai báo phần tử với nội dung phần tử:
<!ELEMENT elementname (child1, child2...)>
ELEMENT là thẻ khai báo phần tử
elementname là tên của phần tử.
child1, child2 .. là các phần tử và mỗi phần tử phải có định nghĩa riêng trong DTD.
Example
Ví dụ dưới đây minh họa một ví dụ đơn giản cho khai báo phần tử với nội dung phần tử:
<?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>
Trong ví dụ trên, địa chỉ là phần tử mẹ và tên , công ty và phone_no là phần tử con của nó.
Danh sách các toán tử và các quy tắc cú pháp
Bảng bên dưới hiển thị danh sách các toán tử và quy tắc cú pháp có thể được áp dụng để xác định các phần tử con -
Nhà điều hành | Cú pháp | Sự miêu tả | Thí dụ |
---|---|---|---|
+ | <! ELEMENT element-name (child1 +)> | Nó chỉ ra rằng phần tử con có thể xuất hiện một hoặc nhiều lần bên trong phần tử mẹ. | <! Địa chỉ ELEMENT (tên +)> Tên phần tử con có thể xuất hiện một hoặc nhiều lần bên trong địa chỉ tên phần tử . |
* | <! ELEMENT element-name (child1 *)> | Nó chỉ ra rằng phần tử con có thể xuất hiện không hoặc nhiều lần bên trong phần tử mẹ. | <! Địa chỉ ELEMENT (tên *)> Tên phần tử con có thể xuất hiện không hoặc nhiều lần bên trong địa chỉ tên phần tử . |
? | <! ELEMENT element-name (child1?)> | Nó chỉ ra rằng phần tử con có thể xuất hiện không hoặc một lần bên trong phần tử mẹ. | <! Địa chỉ ELEMENT (tên?)> Tên phần tử con có thể xuất hiện không hoặc một lần bên trong địa chỉ tên phần tử . |
, | <! ELEMENT element-name (child1, child2)> | Nó cung cấp chuỗi các phần tử con được phân tách bằng dấu phẩy phải được bao gồm trong tên phần tử. | <! Địa chỉ ELEMENT (tên, công ty)> Chuỗi tên phần tử con , công ty , phải diễn ra theo cùng một thứ tự bên trong địa chỉ tên phần tử . |
| | <! ELEMENT element-name (child1 | child2)> | Nó cho phép thực hiện các lựa chọn trong phần tử con. | <! ELEMENT address (name | company)> Nó cho phép bạn chọn một trong các phần tử con nghĩa là tên hoặc công ty , phải xuất hiện bên trong địa chỉ tên phần tử . |
Quy tắc
Chúng tôi cần tuân theo các quy tắc nhất định nếu có nhiều hơn một nội dung phần tử -
Sequences - Thường thì các phần tử bên trong tài liệu DTD phải xuất hiện theo một thứ tự riêng biệt. Nếu đúng như vậy, bạn xác định nội dung bằng trình tự.
Khai báo chỉ ra rằng phần tử <address> phải có chính xác ba phần tử - <name>, <company> và <phone> - và chúng phải xuất hiện theo thứ tự này. Ví dụ -
<!ELEMENT address (name,company,phone)>
Choices- Giả sử bạn cần cho phép phần tử này hay phần tử khác, nhưng không cho phép cả hai. Trong những trường hợp như vậy, bạn phải sử dụng ký tự pipe (|). Đường ống hoạt động như một OR độc quyền. Ví dụ -
<!ELEMENT address (mobile | landline)>
Nội dung yếu tố hỗn hợp
Đây là sự kết hợp của (#PCDATA) và các phần tử con. PCDATA là viết tắt của dữ liệu ký tự được phân tích cú pháp, nghĩa là văn bản không phải là đánh dấu. Trong các mô hình nội dung hỗn hợp, văn bản có thể tự xuất hiện hoặc có thể xen kẽ giữa các phần tử. Các quy tắc cho mô hình nội dung hỗn hợp tương tự như nội dung phần tử như đã thảo luận trong phần trước.
Syntax
Sau đây là cú pháp chung cho nội dung phần tử hỗn hợp:
<!ELEMENT elementname (#PCDATA|child1|child2)*>
ELEMENT là thẻ khai báo phần tử.
elementname là tên của phần tử.
PCDATAlà văn bản không phải là đánh dấu. #PCDATA phải đứng đầu trong khai báo nội dung hỗn hợp.
child1, child2 .. là các phần tử và mỗi phần tử phải có định nghĩa riêng trong DTD.
Toán tử (*) phải tuân theo khai báo nội dung hỗn hợp nếu các phần tử con được bao gồm
Khai báo phần tử (#PCDATA) và phần tử con phải được phân tách bằng toán tử (|).
Example
Sau đây là một ví dụ đơn giản minh họa khai báo phần tử nội dung hỗn hợp trong một DTD.
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address (#PCDATA|name)*>
<!ELEMENT name (#PCDATA)>
]>
<address>
Here's a bit of text mixed up with the child element.
<name>
Tanmay Patil
</name>
</address>
BẤT KỲ Nội dung yếu tố nào
Bạn có thể khai báo một phần tử bằng cách sử dụng từ khóa BẤT KỲ trong nội dung. Nó thường được gọi là yếu tố danh mục hỗn hợp. ANY hữu ích khi bạn vẫn chưa quyết định nội dung cho phép của phần tử.
Syntax
Sau đây là cú pháp để khai báo các phần tử có nội dung BẤT KỲ:
<!ELEMENT elementname ANY>
Ở đây, từ khóa ANY chỉ ra rằng văn bản (PCDATA) và / hoặc bất kỳ phần tử nào được khai báo trong DTD có thể được sử dụng trong nội dung của phần tử <elementname>. Chúng có thể được sử dụng theo thứ tự bất kỳ lúc nào. Tuy nhiên, từ khóa BẤT KỲ không cho phép bạn bao gồm các phần tử không được khai báo trong DTD.
Example
Sau đây là một ví dụ đơn giản minh họa khai báo phần tử với BẤT KỲ nội dung nào -
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address ANY>
]>
<address>
Here's a bit of sample text
</address>