DTD - Elements
Trong DTD, các phần tử được khai báo bằng khai báo ELEMENT.
Khai báo phần tử
Trong DTD, các phần tử XML được khai báo theo cú pháp sau:
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
Phần tử trống
Các phần tử trống được khai báo bằng từ khóa danh mục EMPTY:
<!ELEMENT element-name EMPTY>
Example:
<!ELEMENT br EMPTY>
XML example:
<br />
Các phần tử có dữ liệu ký tự được phân tích cú pháp
Các phần tử chỉ có dữ liệu ký tự được phân tích cú pháp được khai báo bằng #PCDATA bên trong dấu ngoặc đơn:
<!ELEMENT element-name (#PCDATA)>
Example:
<!ELEMENT from (#PCDATA)>
Các phần tử có nội dung bất kỳ
Các phần tử được khai báo bằng từ khóa danh mục BẤT CỨ, có thể chứa bất kỳ kết hợp dữ liệu có thể phân tích cú pháp nào:
<!ELEMENT element-name ANY>
Example:
<!ELEMENT note ANY>
Các phần tử có con (trình tự)
Các phần tử có một hoặc nhiều phần tử con được khai báo bằng tên của các phần tử con bên trong dấu ngoặc đơn:
<!ELEMENT element-name (child1)>
or
<!ELEMENT element-name (child1,child2,...)>
Example:
<!ELEMENT note (to,from,heading,body)>
Khi các phần tử con được khai báo theo một dãy cách nhau bằng dấu phẩy thì các phần tử con đó phải xuất hiện theo đúng trình tự đó trong tài liệu. Trong tờ khai đầy đủ thì con cái cũng phải được khai báo, con cái cũng có thể có con. Tuyên bố đầy đủ của phần tử "ghi chú" là:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
Chỉ khai báo một lần xuất hiện của một phần tử
<!ELEMENT element-name (child-name)>
Example:
<!ELEMENT note (message)>
Ví dụ trên khai báo rằng phần tử con "message" phải xuất hiện một lần và chỉ một lần bên trong phần tử "ghi chú".
Khai báo một lần xuất hiện tối thiểu của một phần tử
<!ELEMENT element-name (child-name+)>
Example:
<!ELEMENT note (message+)>
Dấu + trong ví dụ trên khai báo rằng phần tử con "thông báo" phải xuất hiện một hoặc nhiều lần bên trong phần tử "ghi chú".
Khai báo 0 hoặc nhiều lần xuất hiện của một phần tử
<!ELEMENT element-name (child-name*)>
Example:
<!ELEMENT note (message*)>
Dấu * trong ví dụ trên khai báo rằng phần tử con "thông báo" có thể xuất hiện 0 hoặc nhiều lần bên trong phần tử "ghi chú".
Khai báo 0 hoặc 1 lần xuất hiện của một phần tử
<!ELEMENT element-name (child-name?)>
Example:
<!ELEMENT note (message?)>
Các ? dấu vào ví dụ trên khai báo rằng phần tử con "thông báo" có thể xuất hiện 0 hoặc một lần bên trong phần tử "ghi chú".
Khai báo một trong hai/hoặc Nội dung
<!ELEMENT note (to,from,header,(message|body))>
Ví dụ trên khai báo rằng phần tử "ghi chú" phải chứa phần tử "đến", phần tử "từ", phần tử "tiêu đề" và phần tử "thông báo" hoặc phần tử "nội dung".
Khai báo nội dung hỗn hợp
<!ELEMENT note (#PCDATA|to|from|header|message)*>
Ví dụ trên khai báo rằng phần tử "ghi chú" có thể chứa 0 hoặc nhiều lần xuất hiện của dữ liệu ký tự được phân tích cú pháp, các phần tử "đến", "từ", "tiêu đề" hoặc "thông báo".