DTD - Elementy
W DTD elementy są deklarowane za pomocą deklaracji ELEMENT.
Deklarowanie elementów
W DTD elementy XML są deklarowane z następującą składnią:
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
Puste elementy
Puste elementy są deklarowane za pomocą słowa kluczowego kategorii EMPTY:
<!ELEMENT element-name EMPTY>
Example:
<!ELEMENT br EMPTY>
XML example:
<br />
Elementy z przeanalizowanymi danymi znakowymi
Elementy zawierające tylko przeanalizowane dane znakowe są deklarowane z #PCDATA w nawiasach:
<!ELEMENT element-name (#PCDATA)>
Example:
<!ELEMENT from (#PCDATA)>
Elementy z dowolną zawartością
Elementy zadeklarowane słowem kluczowym kategorii ANY mogą zawierać dowolną kombinację danych parsowalnych:
<!ELEMENT element-name ANY>
Example:
<!ELEMENT note ANY>
Elementy z dziećmi (sekwencje)
Elementy z jednym lub większą liczbą elementów podrzędnych są deklarowane z nazwami elementów podrzędnych w nawiasach:
<!ELEMENT element-name (child1)>
or
<!ELEMENT element-name (child1,child2,...)>
Example:
<!ELEMENT note (to,from,heading,body)>
Kiedy dzieci są deklarowane w kolejności oddzielonej przecinkami, dzieci muszą pojawiać się w tej samej kolejności w dokumencie. W pełnym oświadczeniu należy również zadeklarować dzieci, a dzieci również mogą mieć dzieci. Pełna deklaracja elementu „note” to:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
Deklarowanie tylko jednego wystąpienia elementu
<!ELEMENT element-name (child-name)>
Example:
<!ELEMENT note (message)>
Powyższy przykład deklaruje, że element potomny „message” musi wystąpić raz i tylko raz wewnątrz elementu „note”.
Deklarowanie minimum jednego wystąpienia elementu
<!ELEMENT element-name (child-name+)>
Example:
<!ELEMENT note (message+)>
Znak + w powyższym przykładzie deklaruje, że element potomny „message” musi wystąpić raz lub więcej razy wewnątrz elementu „note”.
Deklarowanie zera lub więcej wystąpień elementu
<!ELEMENT element-name (child-name*)>
Example:
<!ELEMENT note (message*)>
Znak * w powyższym przykładzie deklaruje, że element potomny „message” może wystąpić zero lub więcej razy wewnątrz elementu „note”.
Deklarowanie zerowego lub jednego wystąpienia elementu
<!ELEMENT element-name (child-name?)>
Example:
<!ELEMENT note (message?)>
Ten ? znak w powyższym przykładzie deklaruje, że element potomny "message" może wystąpić zero lub jeden raz wewnątrz elementu "note".
Deklarowanie albo/lub Treści
<!ELEMENT note (to,from,header,(message|body))>
Powyższy przykład deklaruje, że element „note” musi zawierać element „to”, element „from”, element „header” oraz element „message” lub „body”.
Deklarowanie zawartości mieszanej
<!ELEMENT note (#PCDATA|to|from|header|message)*>
Powyższy przykład deklaruje, że element „note” może zawierać zero lub więcej wystąpień przeanalizowanych danych znakowych, „to”, „from”, „header” lub „message”.