Entities, oder einfach Abkürzungen

Entities, oder einfach Abkürzungen XML bzw. DTDs bieten über Enities die Möglichkeit, Abkürzungen
zu definieren. Diese Abkürungen werden dann im XML Code durch
den definierten Wert für das Entity ersetzt…

Innerhalb einer DTD kann sogenannte Entities definieren.
Entity steht für "Eintrag". Ein Entity ist eine Art
Abkürzung für z.B. ein häufig vorkommendes Zeichen,
oder eine Zeichenkette. Wird diese Abkürzung dann in einem
XML Dokument ersetzt, dann wird der Entity bei der Ausgabe durch
den wirklichen Wert aus der DTD ersetzt.

Enities erstellen

Ein Entity ist schnell in einer DTD definiert.

<!ENTITY name "Thiemo Fetzer">

Hinter dem einleitenden <!ENTITY steht der Name
des Entities, über welchen er später angesprochen wird.
In den folgenden Anführungsstrichen steht dann der Wert, für
den das Entity stehen soll.

Auf diese Entities muss in dem XML Dokument eindeutig verwiesen
werden. So ist es durchaus möglich, das innerhalb des XML Dokumentes
die Zeichenkette "name" vorkommt. Man muss eindeutig bezeichnen,
das es sich bei "name" um einen Entity handelt.
Das geht in XML wie folgt:

&entity;

Oder fürs Beispiel
&name;

Der XML Parser kann so genau erkennen, das auf einen Enity verwiesen
wird.
Die Namen der Enities müssen gewissen Regeln folgen. Sie müssen
mit einem Buchstaben beginnen, sie dürfen nur aus Buchstaben
(keine Sonderzeichen, oder deutsche Umlaute), und aus Unterstrichen
bestehen.

Ein Beispiel


data.xml

<?xml version="1.0" encoding="ISO-8859-1"
?>
<!DOCTYPE data SYSTEM "data.dtd">

<user>
<name>Mein Name</name>
<nic>Nic</nic>
<signatur>&signatur;</signatur>
</user>


data.dtd

<!ELEMENT user (name, nic, signatur)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT nic (#PCDATA)>
<!ELEMENT signatur (#PCDATA)>
<!ENITY signatur "Keine Signatur">


Das Ergebnis im Browser

Ein Entity im Browser
Ein Entity im Browser

Entities in DTDs

Auch das ist möglich, so können Sie Entities auch in einer
DTD selbst verwenden.
Somit können Sie lange Attributlisten einmal definieren, und
dann über Entities einfügen, und wiederverwenden.
Die Verwendung der Entities innerhalb der DTD sieht jedoch ein wenig
anders aus.

Die Definition des Entities:

<!ENTITY % name "">

Verwendet wird das Entity jetzt innerhalb der DTD so:

%name;

Besonders einleuchtend ist die Verwendung von Entities innerhalb
einer DTD, bei der Definition von Attributen.
Bei diesen müssen Sie viele mögliche Werte definieren.
Mit Entities definieren Sie die Attribute einmal in einem Entity,
und können diese dann beliebig oft wieder verwenden.

data.dtd

<!ELEMENT user (name, nic, signatur)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT telefon (#PCDATA)>
<!ENTITY % typen "art (privat|buero|mobil) #REQUIRED">
<!ATTLIST telefon
%typen;>
<!ELEMENT nic (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ATTLIST email %typen;>

<!ELEMENT signatur (#PCDATA)>
<!ENTITY signatur "Keine Signatur">

data.xml

<?xml version="1.0" encoding="ISO-8859-1"
?>
<!DOCTYPE data SYSTEM "data.dtd">

<user>
<name>Mein Name</name>
<telefon art="privat">123456</telefon>

<nic>Nic</nic>
<email art="buero">buero@irgendwo.de</email>
<signatur>&signatur;</signatur>
</user>


Die Attributliste wird als Entity %typen; definiert, mit dieser
Zeile.
<!ENTITY % typen "art (privat|buero|mobil) #REQUIRED">

Wichtig ist, das Sie das Leerzeichen nach dem % nicht vergessen,
sonst wird das ganze selbst als Entity betrachtet.

Das Entity selbst wird in der DTD darauf zwei mal verwendet. In
der Definition der Attribute des Elementes telefon, und in
der Attributsdefinition des Elementes email.

Sie können Entities auf diese weise noch viel komplexer verschachtelt,
und auch weiter strukturiert verwenden. Entities sind eine Erleichterung
für die Arbeit mit XML und DTDs.

This entry was posted in XML. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *