DTD Elements

From http://www.w3schools.com (Copyright Refsnes Data)

# DTD - Elements

In a DTD, elements are declared with an ELEMENT declaration.

## Declaring Elements

In a DTD, XML elements are declared with an element declaration with the following syntax:

    <!ELEMENT element-name category>
    or
    <!ELEMENT element-name (element-content)>

## Empty Elements

Empty elements are declared with the category keyword EMPTY:

    <!ELEMENT element-name EMPTY>

    Example:

    <!ELEMENT br EMPTY>

    XML example:

    <br />

## Elements with Parsed Character Data

Elements with only parsed character data are declared with #PCDATA inside parentheses:

    <!ELEMENT element-name (#PCDATA)>

    Example:

    <!ELEMENT from (#PCDATA)>

## Elements with any Contents

Elements declared with the category keyword ANY, can contain any combination of parsable data:

    <!ELEMENT element-name ANY>

    Example:

    <!ELEMENT note ANY>

## Elements with Children (sequences)

Elements with one or more children are declared with the name of the children elements inside parentheses:

    <!ELEMENT element-name (child1)>
    or
    <!ELEMENT element-name (child1,child2,...)>

    Example:

    <!ELEMENT note (to,from,heading,body)>

When children are declared in a sequence separated by commas, the children must appear in the same sequence in the document. In a full declaration, the children must also be declared, and the children can also have children. The full declaration of the "note" element is:

    <!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

    <!ELEMENT element-name (child-name)>

    Example:

    <!ELEMENT note (message)>

The example above declares that the child element "message" must occur once, and only once inside the "note" element.

## Declaring Minimum One Occurrence of an Element

    <!ELEMENT element-name (child-name+)>

    Example:

    <!ELEMENT note (message+)>

The + sign in the example above declares that the child element "message" must occur one or more times inside the "note" element.

## Declaring Zero or More Occurrences of an Element

    <!ELEMENT element-name (child-name*)>

    Example:

    <!ELEMENT note (message*)>

The * sign in the example above declares that the child element "message" can occur zero or more times inside the "note" element.

## Declaring Zero or One Occurrences of an Element

    <!ELEMENT element-name (child-name?)>

    Example:

    <!ELEMENT note (message?)>

The ? sign in the example above declares 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))>

The example above declares 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)*>

The example above declares that the "note" element can contain zero or more occurrences of parsed character data, "to", "from", "header", or "message" elements.

From http://www.w3schools.com (Copyright Refsnes Data)