DTD - Attribute

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.