An ELEMENT declaration is used to declare the elements in a DTD.
Declaring Elements:
Syntax:
<!ELEMENT element-name category> |
OR
<!ELEMENT element-name (element-content)> |
Empty Elements:
The category keyword EMPTY is used to declare the Empty elements.
Syntax:
<!ELEMENT element-name EMPTY> |
Example:
<!ELEMENT br EMPTY> |
XML example:
<br /> |
Elements with Parsed Character Data:
To declare the elements with only parsed character data, the #PCDATA is used inside parentheses.
Syntax:
<!ELEMENT element-name (#PCDATA)> |
Example:
<!ELEMENT from (#PCDATA)> |
Elements with any Contents:
For an element to contain any combination of parsable data, it should be declared with the category keyword ANY.
Syntax:
<!ELEMENT element-name ANY> |
Example:
<!ELEMENT note ANY> |
Elements with Children (sequences):
To declare the elements with one or more children, the name of the children elements are used inside parentheses.
Syntax:
<!ELEMENT element-name (child1)> |
OR
<!ELEMENT element-name (child1,child2,...)> |
Example:
<!ELEMENT note (to,from,heading,body)> |
The children must appear in the same sequence in the document as declared in a sequence separated by commas. The children must also be declared in a full declaration. The children can also have children in a full declaration.
Example: Full declaration of the “note” element:
<!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> |
Declaring Only One Occurrence of an Element:
Syntax:
<!ELEMENT element-name (child-name)> |
Example:
<!ELEMENT note (message)> |
Explanation:
In the above example, we are declaring that the child element “message” must occur once, and only once inside the “note” element.
Declaring Minimum One Occurrence of an Element:
Syntax:
<!ELEMENT element-name (child-name+)> |
Example:
<!ELEMENT note (message+)> |
Explanation:
In the above example, we are using the + sign to declare that the child element “message” must occur one or more times inside the “note” element.
Declaring Zero or More Occurrences of an Element:
Syntax:
<!ELEMENT element-name (child-name*)> |
Example:
<!ELEMENT note (message*)> |
Explanation:
In the above example, we are using the * sign to declare that the child element “message” can occur zero or more times inside the “note” element.
Declaring Zero or One Occurrence of an Element :
Syntax:
<!ELEMENT element-name (child-name?)> |
Example:
<!ELEMENT note (message?)> |
Explanation:
In the above example, we are using the “?” sign to declare that the child element “message” can occur zero or one time inside the “note” element.
Declaring either/or Content:
Example:
<!ELEMENT note (to,from,header,(message|body))> |
Explanation:
In the above example, we are declaring that the “note” element must contain a “to” element, a “from” element, a “header” element, and either a “message” or a “body” element.
Declaring Mixed Content:
Example:
<!ELEMENT note (#PCDATA|to|from|header|message)*> |
Explanation:
In the above example, we are declaring that the “note” element can contain zero or more occurrences of parsed character data, “to”, “from”, “header”, or “message” elements.