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.

Bookmark setzen... These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Bloglines
  • MisterWong
  • MySpace
  • Reddit
  • SEOigg
  • Technorati
  • TwitThis
  • Y!GG
  • Google Bookmarks

Weiterführende Links: