DTD - Elemente

XML-Elemente können als Bausteine ​​eines XML-Dokuments definiert werden. Elemente können sich wie ein Container verhalten, der Text, Elemente, Attribute, Medienobjekte oder eine Mischung aus allen enthält.

Ein DTD-Element wird mit einer ELEMENT-Deklaration deklariert. Wenn eine XML-Datei von der DTD validiert wird, sucht der Parser zunächst nach dem Stammelement, und dann werden die untergeordneten Elemente validiert.

Syntax

Alle DTD-Elementdeklarationen haben diese allgemeine Form -

<!ELEMENT elementname (content)>
  • Die ELEMENT- Deklaration gibt den Parser an, mit dem Sie ein Element definieren möchten .

  • Elementname ist der Elementname (auch als generischer Bezeichner bezeichnet ), den Sie definieren.

  • Inhalt definiert, welcher Inhalt (falls vorhanden) in das Element aufgenommen werden kann.

Elementinhaltstypen

Der Inhalt der Elementdeklaration in einer DTD kann wie folgt kategorisiert werden:

  • Inhalt leeren

  • Elementinhalt

  • Gemischter Inhalt

  • Beliebiger Inhalt

Inhalt leeren

Dies ist ein Sonderfall der Elementdeklaration. Diese Elementdeklaration enthält keinen Inhalt. Diese werden mit dem Schlüsselwort deklariertEMPTY.

Syntax

Es folgt die Syntax für die Deklaration leerer Elemente -

<!ELEMENT elementname EMPTY >

In der obigen Syntax -

  • ELEMENTist die Elementdeklaration der Kategorie LEER

  • elementname ist der Name des leeren Elements.

Example

Das folgende Beispiel zeigt die Deklaration leerer Elemente:

<?xml version = "1.0"?>

<!DOCTYPE hr[
   <!ELEMENT address EMPTY>    
]>
<address />

In diesem Beispiel wird die Adresse als leeres Element deklariert. Das Markup für Adresselement erscheint als <Adresse />.

Elementinhalt

In der Elementdeklaration mit Elementinhalt wäre der Inhalt zulässige Elemente in Klammern. Wir können auch mehr als ein Element einschließen.

Syntax

Es folgt eine Syntax der Elementdeklaration mit Elementinhalt -

<!ELEMENT elementname (child1, child2...)>
  • ELEMENT ist das Elementdeklarations-Tag

  • elementname ist der Name des Elements.

  • child1, child2 .. sind die Elemente und jedes Element muss eine eigene Definition innerhalb der DTD haben.

Example

Das folgende Beispiel zeigt ein einfaches Beispiel für die Elementdeklaration mit Elementinhalt -

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

<!DOCTYPE address [
   <!ELEMENT address (name,company,phone)>
   <!ELEMENT name (#PCDATA)>
   <!ELEMENT company (#PCDATA)>
   <!ELEMENT phone (#PCDATA)>
]>

<address>
   <name>Tanmay Patil</name>
   <company>TutorialsPoint</company>
   <phone>(011) 123-4567</phone>
</address>

Im obigen Beispiel ist address das übergeordnete Element und name , company und phone_no die untergeordneten Elemente.

Liste der Operatoren und Syntaxregeln

Die folgende Tabelle zeigt die Liste der Operatoren und Syntaxregeln, die beim Definieren untergeordneter Elemente angewendet werden können.

Operator Syntax Beschreibung Beispiel
+ <! ELEMENT Elementname (child1 +)> Es gibt an, dass das untergeordnete Element innerhalb des übergeordneten Elements ein- oder mehrmals vorkommen kann.

<! ELEMENT-Adresse (Name +)>

Untergeordnetes Element Name kann ein oder mehrere Male innerhalb des Elements Namen auftreten Adresse .

* * <! ELEMENT Elementname (child1 *)> Es gibt an, dass das untergeordnete Element innerhalb des übergeordneten Elements null oder mehrmals vorkommen kann.

<! ELEMENT-Adresse (Name *)>

Untergeordnetes Element Name kann auftreten , null oder mehrere Male innerhalb des Elements Name Adresse .

? <! ELEMENT Elementname (child1?)> Es gibt an, dass das untergeordnete Element innerhalb des übergeordneten Elements null oder einmal vorkommen kann.

<! ELEMENT-Adresse (Name?)>

Untergeordnetes Element Name kann null oder ein Mal innerhalb des Elements Namen auftreten Adresse .

, <! ELEMENT Elementname (child1, child2)> Es gibt eine durch Komma getrennte Folge von untergeordneten Elementen an, die im Elementnamen enthalten sein müssen.

<! ELEMENT-Adresse (Name, Firma)>

Reihenfolge der untergeordneten Elemente Name , Firma , die in der gleichen Reihenfolge innerhalb des Elements Namen auftreten müssen Adresse .

| <! ELEMENT Elementname (child1 | child2)> Es ermöglicht das Treffen von Entscheidungen im untergeordneten Element.

<! ELEMENT-Adresse (Name | Firma)>

Sie können zwischen untergeordneten Elementen wählen, z. B. Name oder Firma , die in der Adresse des Elementnamens enthalten sein müssen .

Regeln

Wir müssen bestimmte Regeln befolgen, wenn es mehr als einen Elementinhalt gibt -

  • Sequences - Oft müssen die Elemente in DTD-Dokumenten in einer bestimmten Reihenfolge angezeigt werden. In diesem Fall definieren Sie den Inhalt anhand einer Sequenz.

    Die Deklaration gibt an, dass das <address> -Element genau drei untergeordnete Elemente haben muss - <name>, <company> und <phone> - und dass sie in dieser Reihenfolge angezeigt werden müssen. Zum Beispiel -

<!ELEMENT address (name,company,phone)>
  • Choices- Angenommen, Sie müssen das eine oder andere Element zulassen, aber nicht beide. In solchen Fällen müssen Sie das Pipe-Zeichen (|) verwenden. Die Pipe fungiert als exklusives ODER. Zum Beispiel -

<!ELEMENT address (mobile | landline)>

Inhalt gemischter Elemente

Dies ist die Kombination von (#PCDATA) und untergeordneten Elementen. PCDATA steht für analysierte Zeichendaten, dh Text, der kein Markup ist. In Modellen mit gemischtem Inhalt kann Text von selbst angezeigt oder zwischen Elementen verteilt werden. Die Regeln für gemischte Inhaltsmodelle ähneln dem im vorherigen Abschnitt beschriebenen Elementinhalt.

Syntax

Es folgt eine generische Syntax für gemischte Elementinhalte -

<!ELEMENT elementname (#PCDATA|child1|child2)*>
  • ELEMENT ist das Elementdeklarations-Tag.

  • elementname ist der Name des Elements.

  • PCDATAist der Text, der kein Markup ist. #PCDATA muss in der Deklaration für gemischten Inhalt an erster Stelle stehen.

  • child1, child2 .. sind die Elemente und jedes Element muss eine eigene Definition innerhalb der DTD haben.

  • Der Operator (*) muss der Deklaration des gemischten Inhalts folgen, wenn untergeordnete Elemente enthalten sind

  • Die Deklarationen (#PCDATA) und untergeordnete Elemente müssen durch den Operator (|) getrennt werden.

Example

Das folgende Beispiel zeigt die Deklaration gemischter Inhaltselemente in einer DTD.

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

<!DOCTYPE address [
   <!ELEMENT address (#PCDATA|name)*>
   <!ELEMENT name (#PCDATA)>
]>

<address>
   Here's a bit of text mixed up with the child element.
   <name>
      Tanmay Patil
   </name>
</address>

JEDER Elementinhalt

Sie können ein Element mit dem Schlüsselwort ANY im Inhalt deklarieren. Es wird am häufigsten als gemischtes Kategorieelement bezeichnet. JEDES ist nützlich, wenn Sie den zulässigen Inhalt des Elements noch nicht festgelegt haben.

Syntax

Es folgt die Syntax zum Deklarieren von Elementen mit JEDEM Inhalt -

<!ELEMENT elementname ANY>

Hier gibt das Schlüsselwort ANY an, dass Text (PCDATA) und / oder alle in der DTD deklarierten Elemente im Inhalt des Elements <elementname> verwendet werden können. Sie können in beliebiger Reihenfolge beliebig oft verwendet werden. Mit dem Schlüsselwort ANY können Sie jedoch keine Elemente einschließen, die nicht in der DTD deklariert sind.

Example

Es folgt ein einfaches Beispiel, das die Elementdeklaration mit JEDEM Inhalt demonstriert.

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

<!DOCTYPE address [
   <!ELEMENT address ANY>
]>

<address>
   Here's a bit of sample text
</address>