Die wesentlichen Bestandteile einer DTD sind Elementtypen. Instanzen der Elementtypen, die in der Hierarchie von DTD-Modellen vorkommen, dürfen in einem gültigen XML-Dokument vorkommen und werden Elemente genannt.
Jeder Elementtyp wird durch seinen Inhalt und durch seine Attributtypen beschrieben.
Aufgrund des Inhalts kann man drei Arten von Elementtypen unterscheiden:
Um einen Elementtyp zu beschreiben, der nur Text als Inhalt besitzt, platzieren Sie ein Objekt des Typs Elementtyp mit dem gewünschten Namen und ein Element des Typs Inhalt mit dem Symbol #PCDATA. Anschließend ziehen Sie eine Kante des Typs beinhaltet zwischen dem Elementtyp und dem Inhalt.
Um einen Elementtyp ohne Inhalt zu beschreiben, platzieren Sie ein Objekt des Typs Elementtyp mit dem gewünschten Namen und ein Element des Typs Inhalt mit dem Symbol EMPTY. Anschließend ziehen Sie eine Kante des Typs beinhaltet zwischen dem Elementtyp und dem Inhalt. Typisches Beispiel für einen Elementtyp ohne Inhalt ist der Tag <img> in HTML. Der Nutzen von leeren Elementtypen liegt im Wesentlichen darin, dass sie nützliche Attribute besitzen können, z. B. die Attribute SRC, ALIGN, ALT und ISMAP des img-Tag.
Die komplexeste Form eines Elementtyps ist ein Elementtyp mit gemischtem Inhalt. In diesem Fall können einem Objekt des Typs Elementtyp Text oder Elementtypen zugeordnet werden. Um zu beschreiben, in welcher Form die Zuordnungen miteinander verbunden werden, können Regeln verwendet werden. Die möglichen Kanten zwischen dem Elementtyp und den Zuordnungen beschreiben, wie häufig eine Zuordnung im Inhalt des Elementtyps vorkommen darf.
Zum Verknüpfen der Zuordnungen stehen Ihnen der Sequence-Operator und die XOR-Regel zur Verfügung.
Wenn im Inhalt des beschriebenen Elementtyps aus einer angegebenen Menge von Zuordnungen nur eine erlaubt ist, müssen die Zuordnungen über eine XOR-Regel miteinander verknüpft werden.
Wenn im Inhalt des beschriebenen Elementtyps mehrere Zuordnungen nur in einer gewissen Reihenfolge erlaubt sind, müssen sie über einen Sequence-Operator miteinander verknüpft werden. Um die gewünschte Reihenfolge eindeutig festzulegen, geben Sie an der Kante zwischen dem Operator und der Zuordnung die gewünschte Position für die Zuordnung an.
Zuordnungen können auch ohne Verknüpfungsoperator mit dem beschriebenen Element verbunden werden. In diesem Fall wird standardmäßig von einer Sequence-Verknüpfung mit beliebiger Reihenfolge ausgegangen.