DTD - Kurzanleitung

Die XML-Dokumenttypdeklaration, allgemein als DTD bekannt, ist eine Möglichkeit, die XML-Sprache genau zu beschreiben. DTDs überprüfen die Gültigkeit der Struktur und des Vokabulars eines XML-Dokuments anhand der grammatikalischen Regeln der entsprechenden XML-Sprache.

Ein XML-Dokument kann definiert werden als -

  • Well-formed- Wenn das XML-Dokument allen allgemeinen XML-Regeln entspricht, z. B. Tags müssen ordnungsgemäß verschachtelt sein, öffnende und schließende Tags müssen ausgeglichen sein und leere Tags müssen mit '/>' enden, wird es als wohlgeformt bezeichnet .

    ODER

  • Valid- Ein XML-Dokument gilt als gültig, wenn es nicht nur wohlgeformt ist , sondern auch der verfügbaren DTD entspricht, die unter anderem angibt, welche Tags verwendet werden, welche Attribute diese Tags enthalten können und welche Tags in anderen Tags vorkommen können .

Das folgende Diagramm zeigt, dass eine DTD zum Strukturieren des XML-Dokuments verwendet wird.

Typen

DTD kann anhand seiner Deklaration im XML-Dokument klassifiziert werden, z.

  • Interne DTD

  • Externe DTD

Wenn eine DTD in der Datei deklariert ist, wird sie aufgerufen Internal DTD und wenn es in einer separaten Datei deklariert ist, wird es aufgerufen External DTD.

Weitere Informationen hierzu finden Sie im Kapitel DTD-Syntax

Eigenschaften

Im Folgenden sind einige wichtige Punkte aufgeführt, die eine DTD beschreibt:

  • die Elemente, die in einem XML-Dokument angezeigt werden können.

  • die Reihenfolge, in der sie erscheinen können.

  • optionale und obligatorische Elemente.

  • Elementattribute und ob sie optional oder obligatorisch sind.

  • ob Attribute Standardwerte haben können.

Vorteile der Verwendung von DTD

  • Documentation- Sie können Ihr eigenes Format für die XML-Dateien definieren. Wenn ein Benutzer / Entwickler dieses Dokument betrachtet, kann er die Struktur der Daten verstehen.

  • Validation - Sie können die Gültigkeit von XML-Dateien überprüfen, indem Sie überprüfen, ob die Elemente in der richtigen Reihenfolge angezeigt werden, ob obligatorische Elemente und Attribute vorhanden sind, die Elemente und Attribute nicht falsch eingefügt wurden usw.

Nachteile der Verwendung von DTD

  • Die Namespaces werden nicht unterstützt. Der Namespace ist ein Mechanismus, mit dem Element- und Attributnamen Gruppen zugewiesen werden können. In einer DTD müssen jedoch Namespaces innerhalb der DTD definiert werden, was den Zweck der Verwendung von Namespaces verletzt.

  • Es wird nur der Datentyp der Textzeichenfolge unterstützt .

  • Es ist nicht objektorientiert. Daher kann das Konzept der Vererbung nicht auf die DTDs angewendet werden.

  • Begrenzte Möglichkeiten, die Kardinalität für Elemente auszudrücken.

Eine XML-DTD kann entweder im Dokument angegeben oder in einem separaten Dokument gespeichert werden. Anschließend kann das Dokument mit dem DTD-Dokument verknüpft werden, um es zu verwenden.

Syntax

Die grundlegende Syntax einer DTD lautet wie folgt:

<!DOCTYPE element DTD identifier
[
   declaration1
   declaration2
   ........
]>

In der obigen Syntax -

  • DTD beginnt mit dem Trennzeichen <! DOCTYPE.

  • Ein element Weist den Parser an, das Dokument aus dem angegebenen Stammelement zu analysieren.

  • DTD identifierist eine Kennung für die Dokumenttypdefinition, die der Pfad zu einer Datei im System oder die URL zu einer Datei im Internet sein kann. Wenn die DTD auf einen externen Pfad zeigt, wird sie aufgerufenexternal subset.

  • Das square brackets [ ] Fügen Sie eine optionale Liste der aufgerufenen Entitätsdeklarationen bei internal subset.

Interne DTD

Eine DTD wird als interne DTD bezeichnet, wenn Elemente in den XML-Dateien deklariert sind. Um es als interne DTD zu referenzieren, muss das eigenständige Attribut in der XML-Deklaration auf gesetzt seinyes. Dies bedeutet, dass die Deklaration unabhängig von der externen Quelle funktioniert.

Syntax

Die Syntax der internen DTD ist wie folgt:

<!DOCTYPE root-element [element-declarations]>

Dabei ist root-element der Name des root-Elements und bei Elementdeklarationen deklarieren Sie die Elemente.

Beispiel

Es folgt ein einfaches Beispiel für eine interne DTD -

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

Lassen Sie uns den obigen Code durchgehen -

Start Declaration - Beginnen Sie die XML-Deklaration mit der folgenden Anweisung.

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

DTD- Unmittelbar nach dem XML-Header folgt die Dokumenttypdeklaration , die üblicherweise als DOCTYPE bezeichnet wird. -

<!DOCTYPE address [

Die DOCTYPE-Deklaration hat ein Ausrufezeichen (!) Am Anfang des Elementnamens. Der DOCTYPE informiert den Parser darüber, dass diesem XML-Dokument eine DTD zugeordnet ist.

DTD Body - Auf die DOCTYPE-Deklaration folgt der Hauptteil der DTD, in dem Sie Elemente, Attribute, Entitäten und Notationen deklarieren. -

<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone_no (#PCDATA)>

Hier werden mehrere Elemente deklariert, die das Vokabular des <Name> -Dokuments bilden. <! ELEMENT name (#PCDATA)> definiert den Elementnamen von Typ "#PCDATA". Hier bedeutet #PCDATA analysierbare Textdaten.

End Declaration- Schließlich wird der Deklarationsabschnitt der DTD mit einer schließenden Klammer und einer schließenden Klammer (]>) geschlossen. Dies beendet effektiv die Definition und danach folgt das XML-Dokument sofort.

Regeln

  • Die Dokumenttypdeklaration muss am Anfang des Dokuments erscheinen (vorangestellt nur der XML-Header) - sie ist an keiner anderen Stelle im Dokument zulässig.

  • Ähnlich wie bei der DOCTYPE-Deklaration müssen die Elementdeklarationen mit einem Ausrufezeichen beginnen.

  • Der Name in der Dokumenttypdeklaration muss mit dem Elementtyp des Stammelements übereinstimmen.

Externe DTD

In externen DTD werden Elemente außerhalb der XML-Datei deklariert. Auf sie wird zugegriffen, indem die Systemattribute angegeben werden, die entweder die legale .dtd- Datei oder eine gültige URL sein können. Um es als externe DTD zu referenzieren, muss das eigenständige Attribut in der XML-Deklaration als festgelegt werdenno. Dies bedeutet, dass die Deklaration Informationen aus der externen Quelle enthält.

Syntax

Es folgt die Syntax für die externe DTD -

<!DOCTYPE root-element SYSTEM "file-name">

Dabei ist Dateiname die Datei mit der Erweiterung .dtd .

Beispiel

Das folgende Beispiel zeigt die externe DTD-Verwendung -

<?xml version = "1.0" encoding = "UTF-8" standalone = "no" ?>
<!DOCTYPE address SYSTEM "address.dtd">

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

Der Inhalt der DTD-Datei address.dtd sind wie gezeigt -

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

Typen

Sie können auf eine externe DTD verweisen, indem Sie entweder verwenden system identifiers oder public identifiers.

System Identifiers

Mit einer Systemkennung können Sie den Speicherort einer externen Datei angeben, die DTD-Deklarationen enthält. Die Syntax lautet wie folgt:

<!DOCTYPE name SYSTEM "address.dtd" [...]>

Wie Sie sehen, enthält es das Schlüsselwort SYSTEM und eine URI-Referenz, die auf den Speicherort des Dokuments verweist.

Public Identifiers

Öffentliche Kennungen bieten einen Mechanismus zum Auffinden von DTD-Ressourcen und werden wie folgt geschrieben:

<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">

Wie Sie sehen können, beginnt es mit dem Schlüsselwort PUBLIC, gefolgt von einer speziellen Kennung. Öffentliche Bezeichner werden verwendet, um einen Eintrag in einem Katalog zu identifizieren. Öffentliche Kennungen können jedem Format folgen. Ein häufig verwendetes Format wird jedoch als formale öffentliche Kennungen oder FPIs bezeichnet.

In diesem Kapitel werden XML-Komponenten aus DTD-Sicht erläutert. Eine DTD enthält grundsätzlich Deklarationen der folgenden XML-Komponenten:

  • Element

  • Attributes

  • Entities

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.

Jedes XML-Dokument enthält ein oder mehrere Elemente, deren Grenzen entweder durch Start- und End-Tags oder durch leere Elemente begrenzt sind.

Beispiel

Unten finden Sie ein einfaches Beispiel für XML-Elemente

<name>
   Tutorials Point
</name>

Wie Sie sehen können, haben wir ein <name> -Tag definiert. Zwischen dem Start- und dem End-Tag von <Name> befindet sich ein Text. Bei Verwendung in einer XML-DTD müssen Elemente deklariert werden, die im Kapitel DTD-Elemente ausführlich erläutert werden .

Attribute

Attribute sind Teil der XML-Elemente. Ein Element kann eine beliebige Anzahl eindeutiger Attribute haben. Attribute geben mehr Informationen über das XML-Element oder definieren genauer eine Eigenschaft des Elements. Ein XML-Attribut ist immer ein Name-Wert- Paar.

Beispiel

Unten finden Sie ein einfaches Beispiel für XML-Attribute.

<img src = "flower.jpg"/>

Hier ist img der Elementname, während src ein Attributname und flor.jpg ein Wert ist, der für das Attribut src angegeben wird .

Wenn Attribute in einer XML-DTD verwendet werden, müssen diese deklariert werden, was im Kapitel DTD-Attribute ausführlich erläutert wird

Entitäten

Entitäten sind Platzhalter in XML. Diese können im Dokumentprolog oder in einer DTD deklariert werden. Entitäten können primär als - kategorisiert werden

  • Eingebaute Einheiten

  • Zeichenentitäten

  • Allgemeine Einheiten

  • Parameterentitäten

Es gibt fünf integrierte Entitäten, die in wohlgeformtem XML spielen.

  • kaufmännisches Und: & amp;

  • Einfaches Anführungszeichen: & apos;

  • Größer als: & gt;

  • Weniger als: & lt;

  • Doppelte Anführungszeichen: & quot;

Weitere Informationen zu Entitätsdeklarationen in der XML-DTD finden Sie im Kapitel DTD-Entitäten

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>

In diesem Kapitel werden wir uns mit DTD-Attributen befassen. Das Attribut enthält mehr Informationen zu einem Element oder genauer gesagt eine Eigenschaft eines Elements. Ein XML-Attribut hat immer die Form eines Name-Wert-Paares. Ein Element kann eine beliebige Anzahl eindeutiger Attribute haben.

Die Attributdeklaration ist Elementdeklarationen in vielerlei Hinsicht sehr ähnlich, mit einer Ausnahme. Anstatt zulässigen Inhalt für Elemente zu deklarieren, deklarieren Sie eine Liste zulässiger Attribute für jedes Element. Diese Listen werden als ATTLIST-Deklaration bezeichnet.

Syntax

Die grundlegende Syntax der DTD-Attributdeklaration lautet wie folgt:

<!ATTLIST element-name attribute-name attribute-type attribute-value>

In der obigen Syntax -

  • Die DTD-Attribute beginnen mit dem Schlüsselwort <! ATTLIST, wenn das Element das Attribut enthält.

  • element-name Gibt den Namen des Elements an, für das das Attribut gilt.

  • attribute-name Gibt den Namen des Attributs an, das im Elementnamen enthalten ist.

  • attribute-typedefiniert die Art der Attribute. Wir werden in den folgenden Abschnitten mehr darüber diskutieren.

  • attribute-valuenimmt einen festen Wert an, den die Attribute definieren müssen. Wir werden in den folgenden Abschnitten mehr darüber diskutieren.

Beispiel

Unten finden Sie ein einfaches Beispiel für die Attributdeklaration in der DTD -

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA #REQUIRED>
]>

<address>
   <name id = "123">Tanmay Patil</name>
</address>

Lassen Sie uns den obigen Code durchgehen -

  • Beginnen Sie mit der XML-Deklaration mit der folgenden Anweisung:

<?xml version = "1.0"?>
  • Unmittelbar nach dem XML-Header befindet sich die Dokumenttypdeklaration, die im Allgemeinen als DOCTYPE bezeichnet wird (siehe unten).

    Der DOCTYPE informiert den Parser darüber, dass diesem XML-Dokument eine DTD zugeordnet ist. Die DOCTYPE-Deklaration hat ein Ausrufezeichen (!) Am Anfang des Elementnamens.

<!DOCTYPE address [
  • Es folgt der Hauptteil der DTD. Hier haben wir Element und Attribut deklariert -

<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
  • Attribut - ID für das Element Name wird als gegeben wie unten definiert -

    Hier ist der Attributtyp CDATA und sein Wert ist #REQUIRED .

<!ATTLIST name id CDATA #REQUIRED>

Regeln der Attributdeklaration

  • Alle in einem XML-Dokument verwendeten Attribute müssen in der Dokumenttypdefinition (DTD) mithilfe einer Attributlistendeklaration deklariert werden

  • Attribute werden möglicherweise nur in Start- oder leeren Tags angezeigt.

  • Das Schlüsselwort ATTLIST muss in Großbuchstaben angegeben werden

  • In der Attributliste für ein bestimmtes Element sind keine doppelten Attributnamen zulässig.

Attributtypen

Beim Deklarieren von Attributen können Sie angeben, wie der Prozessor mit den im Wert angezeigten Daten umgehen soll. Wir können Attributtypen in drei Hauptkategorien einteilen:

  • Zeichenfolgentyp

  • Tokenisierte Typen

  • Aufzählungsarten

Die folgende Tabelle enthält eine Zusammenfassung der verschiedenen Attributtypen:

Sr.Nr. Typ & Beschreibung
1

CDATA

CDATA sind Zeichendaten (Text und kein Markup). Es ist ein String-Attributtyp .

2

ID

Es ist eine eindeutige Kennung des Attributs. Es sollte nicht mehr als einmal erscheinen. Es ist ein Tokenized-Attributtyp .

3

IDREF

Es wird verwendet, um auf eine ID eines anderen Elements zu verweisen. Es wird verwendet, um Verbindungen zwischen Elementen herzustellen. Es ist ein Tokenized-Attributtyp .

4

IDREFS

Es wird verwendet, um auf mehrere IDs zu verweisen. Es ist ein Tokenized-Attributtyp .

5

ENTITY

Es repräsentiert eine externe Entität im Dokument. Es ist ein Tokenized-Attributtyp .

6

ENTITIES

Es repräsentiert eine Liste externer Entitäten im Dokument. Es ist ein Tokenized-Attributtyp .

7

NMTOKEN

Es ähnelt CDATA und der Attributwert besteht aus einem gültigen XML-Namen. Es ist ein Tokenized-Attributtyp .

8

NMTOKENS

Es ähnelt CDATA und der Attributwert besteht aus einer Liste gültiger XML-Namen. Es ist ein Tokenized-Attributtyp .

9

NOTATION

Ein Element wird auf eine im DTD-Dokument deklarierte Notation verwiesen. Es ist ein aufgezählter Attributtyp .

10

Enumeration

Es ermöglicht das Definieren einer bestimmten Liste von Werten, bei denen einer der Werte übereinstimmen muss. Es ist ein aufgezählter Attributtyp .

Attributwertdeklaration

In jeder Attributdeklaration müssen Sie angeben, wie der Wert im Dokument angezeigt wird. Sie können angeben, ob ein Attribut -

  • kann einen Standardwert haben

  • kann einen festen Wert haben

  • ist nötig

  • ist impliziert

Standardwerte

Es enthält den Standardwert. Die Werte können in einfache Anführungszeichen (') oder doppelte Anführungszeichen (") eingeschlossen werden.

Syntax

Es folgt die Syntax des Wertes -

<!ATTLIST element-name attribute-name attribute-type "default-value">

Dabei ist der Standardwert der definierte Attributwert.

Example

Es folgt ein einfaches Beispiel für die Attributdeklaration mit dem Standardwert:

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA "0">
]>

<address>
   <name id = "123">
      Tanmay Patil
   </name>
</address>

In diesem Beispiel haben wir Namen Element mit Attribut - ID , dessen Standardwert ist 0 . Der Standardwert wird in doppelte Anführungszeichen gesetzt.

FESTE Werte

Das Schlüsselwort #FIXED gefolgt vom festen Wert wird verwendet, wenn Sie angeben möchten, dass der Attributwert konstant ist und nicht geändert werden kann. Eine häufige Verwendung fester Attribute ist die Angabe von Versionsnummern.

Syntax

Es folgt die Syntax fester Werte -

<!ATTLIST element-name attribute-name attribute-type #FIXED "value" >

Dabei ist #FIXED ein definierter Attributwert.

Example

Das folgende Beispiel zeigt eine einfache Attributdeklaration mit dem Wert FIXED.

<?xml version = "1.0"?>

<!DOCTYPE address [
  <!ELEMENT address (company)*>
  <!ELEMENT company (#PCDATA)>
  <!ATTLIST company name NMTOKEN #FIXED "tutorialspoint">
]>

<address>
  <company name = "tutorialspoint">we are a free online teaching faculty</company>
</address>

In diesem Beispiel haben wir das Stichwort #FIXED verwendet , wo es zeigt an, dass der Wert „tutorialspoint“ ist der einzige Wert für das Attribut Name des Elements <company>. Wenn wir versuchen, den Attributwert zu ändern, wird ein Fehler ausgegeben.

Es folgt eine ungültige DTD -

<?xml version = "1.0"?>

<!DOCTYPE address [
  <!ELEMENT address (company)*>
  <!ELEMENT company (#PCDATA)>
  <!ATTLIST company name NMTOKEN #FIXED "tutorialspoint">
]>

<address>
  <company name = "abc">we are a free online teaching faculty</company>
</address>

ERFORDERLICHE Werte

Wenn Sie angeben möchten, dass ein Attribut erforderlich ist, verwenden Sie das Schlüsselwort #REQUIRED.

Syntax

Es folgt die Syntax von #REQUIRED -

<!ATTLIST element-name attribute-name attribute-type #REQUIRED>

Dabei ist #REQUIRED ein definierter Attributtyp.

Example

Es folgt ein einfaches Beispiel für die DTD-Attributdeklaration mit dem Schlüsselwort #REQUIRED -

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA #REQUIRED>
]>

<address>
   <name id = "123">
      Tanmay Patil
   </name>
</address>

In diesem Beispiel haben wir #REQUIRED Schlüsselwort angeben , dass das Attribut verwenden ID für den Element-Namen zur Verfügung gestellt werden muß Namen

STILLSCHWEIGENDE Werte

Wenn Sie Attribute deklarieren, müssen Sie immer eine Wertdeklaration angeben. Wenn das von Ihnen deklarierte Attribut keinen Standardwert hat, keinen festen Wert hat und nicht erforderlich ist, müssen Sie das Attribut als impliziert deklarieren . Das Schlüsselwort #IMPLIED wird verwendet, um ein Attribut wie impliziert anzugeben .

Syntax

Es folgt die Syntax von #IMPLIED -

<!ATTLIST element-name attribute-name attribute-type #IMPLIED>

Dabei ist #IMPLIED ein definierter Attributtyp.

Example

Das Folgende ist ein einfaches Beispiel für #IMPLIED

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA #IMPLIED>
]>

<address>
   <name />
</address>

In diesem Beispiel haben wir das Stichwort #IMPLIED wie wir alle Attribute nicht angeben möchten , verwenden in Elemente enthalten seinen Namen . Es ist optional.

Entitäten werden verwendet, um Verknüpfungen zu Sonderzeichen in den XML-Dokumenten zu definieren. Entitäten können hauptsächlich von vier Arten sein -

  • Eingebaute Einheiten

  • Zeichenentitäten

  • Allgemeine Einheiten

  • Parameterentitäten

Syntax der Entitätsdeklaration

Im Allgemeinen können Entitäten deklariert werden internally oder externally. Lassen Sie uns diese und ihre Syntax wie folgt verstehen:

Interne Einheit

Wenn eine Entität innerhalb einer DTD deklariert ist, wird sie als interne Entität bezeichnet.

Syntax

Es folgt die Syntax für die interne Entitätsdeklaration:

<!ENTITY entity_name "entity_value">

In der obigen Syntax -

  • entity_name ist der Name der Entität, gefolgt von ihrem Wert in doppelten oder einfachen Anführungszeichen.

  • entity_value enthält den Wert für den Entitätsnamen.

  • Der Entitätswert der internen Entität wird durch Hinzufügen eines Präfixes de-referenziert & auf den Entitätsnamen dh & Entitätsname.

Example

Das Folgende ist ein einfaches Beispiel für die interne Entitätsdeklaration -

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

<!DOCTYPE address [
   <!ELEMENT address (#PCDATA)>
   <!ENTITY name "Tanmay patil">
   <!ENTITY company "TutorialsPoint">
   <!ENTITY phone_no "(011) 123-4567">
]>

<address>
   &name;
   &company;
   &phone_no;
</address>

Im obigen Beispiel werden die jeweiligen Entitätsnamen name , company und phone_no durch ihre Werte im XML-Dokument ersetzt. Die Entitätswerte werden durch Hinzufügen eines Präfixes de-referenziert & zum Entitätsnamen.

Speichern Sie diese Datei als sample.xmlWenn Sie es in einem beliebigen Browser öffnen, werden Sie feststellen, dass die Entitätswerte für Name , Firma und Telefonnummer jeweils ersetzt werden.

Externe Einheit

Wenn eine Entität außerhalb einer DTD deklariert wird, wird sie als externe Entität bezeichnet. Sie können auf eine externe Entität verweisen, indem Sie entweder Systemkennungen oder öffentliche Kennungen verwenden.

Syntax

Es folgt die Syntax für die Deklaration externer Entitäten -

<!ENTITY name SYSTEM "URI/URL">

In der obigen Syntax -

  • name ist der Name der Entität.

  • SYSTEM ist das Schlüsselwort.

  • URI/URL ist die Adresse der externen Quelle, die in doppelten oder einfachen Anführungszeichen eingeschlossen ist.

Types

Sie können auf eine externe DTD verweisen, indem Sie entweder - verwenden

  • System Identifiers - Mit einer Systemkennung können Sie den Speicherort einer externen Datei angeben, die DTD-Deklarationen enthält.

    Wie Sie sehen, enthält es das Schlüsselwort SYSTEM und eine URI-Referenz, die auf den Speicherort des Dokuments verweist. Die Syntax lautet wie folgt:

<!DOCTYPE name SYSTEM "address.dtd" [...]>
  • Public Identifiers - Öffentliche Kennungen bieten einen Mechanismus zum Auffinden von DTD-Ressourcen und werden wie folgt geschrieben: -

    Wie Sie sehen können, beginnt es mit dem Schlüsselwort PUBLIC, gefolgt von einer speziellen Kennung. Öffentliche Bezeichner werden verwendet, um einen Eintrag in einem Katalog zu identifizieren. Öffentliche Kennungen können jedem Format folgen. Ein häufig verwendetes Format wird jedoch als formale öffentliche Kennungen (FPIs) bezeichnet.

<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">

Example

Lassen Sie uns die externe Entität anhand des folgenden Beispiels verstehen:

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE address SYSTEM "address.dtd">

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

Unten ist der Inhalt der DTD-Datei address.dtd -

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

Eingebaute Einheiten

Alle XML-Parser müssen integrierte Entitäten unterstützen. Im Allgemeinen können Sie diese Entitätsreferenzen überall verwenden. Sie können auch normalen Text innerhalb des XML-Dokuments verwenden, z. B. in Elementinhalten und Attributwerten.

Es gibt fünf integrierte Entitäten, die ihre Rolle in wohlgeformtem XML spielen.

  • kaufmännisches Und: & amp;

  • Einfaches Anführungszeichen: & apos;

  • Größer als: & gt;

  • Weniger als: & lt;

  • Doppelte Anführungszeichen: & quot;

Beispiel

Das folgende Beispiel zeigt die integrierte Entitätsdeklaration -

<?xml version = "1.0"?>

<note>
   <description>I'm a technical writer & programmer</description>
<note>

Wie Sie hier sehen können, ist die & amp; Das Zeichen wird durch & ersetzt, wenn der Prozessor darauf stößt.

Zeichenentitäten

Zeichenentitäten werden verwendet, um einige der Entitäten zu benennen, die eine symbolische Darstellung von Informationen darstellen, dh Zeichen, die schwer oder unmöglich einzugeben sind, können durch Zeichenentitäten ersetzt werden.

Beispiel

Das folgende Beispiel zeigt die Deklaration der Zeichenentität -

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE author[
   <!ELEMENT author (#PCDATA)>
   <!ENTITY writer "Tanmay patil">
   <!ENTITY copyright "&#169;">
]>
<author>&writer;&copyright;</author>

Sie werden feststellen, dass wir hier verwendet haben &#169;als Wert für Copyright-Charakter. Speichern Sie diese Datei als sample.xml und öffnen Sie sie in Ihrem Browser. Sie werden sehen, dass das Urheberrecht durch das Zeichen © ersetzt wird.

Allgemeine Einheiten

Allgemeine Entitäten müssen in der DTD deklariert werden, bevor sie in einem XML-Dokument verwendet werden können. Anstatt nur ein einziges Zeichen darzustellen, können allgemeine Entitäten Zeichen, Absätze und sogar ganze Dokumente darstellen.

Syntax

Verwenden Sie zum Deklarieren einer allgemeinen Entität eine Deklaration dieser allgemeinen Form in Ihrer DTD -

<!ENTITY ename "text">

Beispiel

Das folgende Beispiel zeigt die allgemeine Entitätsdeklaration -

<?xml version = "1.0"?>

<!DOCTYPE note [
   <!ENTITY source-text "tutorialspoint">
]>

<note>
   &source-text;
</note>

Immer wenn ein XML-Parser auf einen Verweis auf eine Quelltextentität stößt , liefert er den Ersatztext an der Referenzstelle an die Anwendung.

Parameterentitäten

Mit einer Parameterentität können Sie wiederverwendbare Abschnitte des Ersatztextes erstellen.

Syntax

Es folgt die Syntax für die Parameterentitätsdeklaration -

<!ENTITY % ename "entity_value">
  • entity_value ist ein beliebiges Zeichen, das kein '&', '%' oder '"' ist.

Beispiel

Das folgende Beispiel zeigt die Parameterentitätsdeklaration. Angenommen, Sie haben Elementdeklarationen wie folgt -

<!ELEMENT residence (name, street, pincode, city, phone)>
<!ELEMENT apartment (name, street, pincode, city, phone)>
<!ELEMENT office (name, street, pincode, city, phone)>
<!ELEMENT shop (name, street, pincode, city, phone)>

Nehmen wir nun an Sie zusätzliche eleement hinzufügen wollen Land , dann müssen Sie es auf allen vier Erklärungen hinzuzufügen. Daher können wir eine Parameterentitätsreferenz verwenden. Unter Verwendung der Parameterentitätsreferenz lautet das obige Beispiel -

<!ENTITY % area "name, street, pincode, city">
<!ENTITY % contact "phone">

Parameterentitäten werden auf die gleiche Weise wie eine allgemeine Entitätsreferenz dereferenziert, nur mit einem Prozentzeichen anstelle eines kaufmännischen Und -

<!ELEMENT residence (%area;, %contact;)>
<!ELEMENT apartment (%area;, %contact;)>
<!ELEMENT office (%area;, %contact;)>
<!ELEMENT shop (%area;, %contact;)>

Wenn der Parser diese Deklarationen liest, ersetzt er die Entitätsreferenz durch den Ersetzungstext der Entität.

Wir verwenden DTD, um das XML-Dokument genau zu beschreiben. DTDs überprüfen die Gültigkeit der Struktur und des Vokabulars eines XML-Dokuments anhand der grammatikalischen Regeln der entsprechenden XML-Sprache. Um nun die Gültigkeit der DTD zu überprüfen, können folgende Verfahren angewendet werden:

  • Using XML DTD validation tools - Sie können einige IDEs wie XML Spy (nicht kostenlos) und XMLStarlet (OpenSource) verwenden, um XML-Dateien anhand von DTD-Dokumenten zu validieren.

  • Using XML DTD on-line validators- Der W3C Markup Validation Service dient zur Validierung von Webdokumenten. Nutzen Sie die Online - Validator die validaty Ihrer XML - DTD überprüfen hier .

  • Write your own XML validators with XML DTD validation API - Neuere Versionen von JDK (über 1.4) unterstützen die XML-DTD-Validierungs-API. Sie können Ihren eigenen Validierungscode schreiben, um die Gültigkeit der XML-DTD-Validierung zu überprüfen.