DTD - Entitäten
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 "©">
]>
<author>&writer;©right;</author>
Sie werden feststellen, dass wir hier verwendet haben ©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.