Homepage-Webhilfe Event-Banner

Entitäten

Mit Hilfe einer Entität (engl. entity) ist es möglich, bestimmte Texte oder Ausdrücke (auch als Bausteine bezeichnet) zu speichern, um diese später wieder weiter verwenden zu können. Dadurch sollen zum einen bestimmte Inhalte vordefiniert werden können, um diese dann später in der XML-Datei nutzen zu können, und zum anderen um die DTDs kürzer und übersichtlicher zu gestallten. Bei Entitäten unterscheidet man zwischen „normalen“ Entitäten und Parameter-Entitäten.

Die „normalen“ Entitäten werden dazu verwendet, Textbausteine zu definieren oder Zeichen zu benennen. Die Zeichen-Entität (also die Benennung von Zeichen) kennen Sie vielleicht bereits von HTML (z. B. wird &larr; in &#8592; übersetzt, wodurch bei der Anzeige angezeigt wird). Im Allgemeinen kann man also sagen, Entitäten werden dazu verwendet, „lesbare“ Kurzformen zu erzeugen. Das Schema einer Entität lautet <!ENTITY Name "Wert">. Um die Entität in einem XML-Dokument oder in einer anderen Entität zu nutzen, wird dann &Name; notiert. Hierzu ein kurzes Beispiel:

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

<!DOCTYPE text [
    <!ELEMENT text (#PCDATA)>
    <!ENTITY autor "Homepage-Webhilfe">
    <!ENTITY jahr "2017">
    <!ENTITY copyright "Copyright &jahr; by &autor;">
]>

<text>
    Die DTD für dieses Dokument wurde von &autor; im Jahr &jahr; erstellt!
</text>

Eine weitere Form von Entitäten sind Parameter-Entitäten, welche dazu gedacht sind, DTD-Bausteine zu definieren. Sicherlich haben Sie schon gemerkt, dass Sie beim Entwurf einer DTD, öfters mal die gleichen Ausdrücke notieren. Dies kann z. B. bei Attributen auftreten, da die Attributlisten für jedes Element neu definiert werden müssen. Parameter-Entitäten unterscheiden sich nur geringfügig von „normalen“ Entitäten: Bei der Deklaration muss zwischen dem Schlüsselwort ENTITY und dem Namen ein Prozentzeichen % angegeben werden. Des Weiteren wird zum „Aufruf“ bzw. zur Einbindung nicht &Name; notiert, sondern %Name;.

DTD-Datei:

<!ENTITY % festplatte "speicher CDATA #REQUIRED">
<!ELEMENT computer        (prozessor,arbeitsspeicher,hdd*,ssd*)>
<!ELEMENT prozessor       (#PCDATA)>
<!ELEMENT arbeitsspeicher (#PCDATA)>
<!ELEMENT hdd             (#PCDATA)>
<!ATTLIST hdd
    %festplatte;
>
<!ELEMENT ssd             (#PCDATA)>
<!ATTLIST ssd
    %festplatte;
>

XML-Datei:

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

<!DOCTYPE computer SYSTEM "computer.dtd">

<computer>
    <prozessor>Intel Core i7-4790K</prozessor>
    <arbeitsspeicher>Kingston DDR3 8GB 1600MHz</arbeitsspeicher>
    <hdd speicher="1000">Western Digital Blue WD10EZEX</hdd>
    <hdd speicher="500">Toshiba DT01ACA050</hdd>
    <ssd speicher="250">Samsung 840 EVO</ssd>
</computer>

Bei komplexen DTDs kann es sinnvoll sein, Ausdrücke in andere Dateien auszulagern. Hierzu werden ebenfalls Entitäten benutzt. Als Wert wird die URI angegeben. Zudem wird zwischen Name und Wert der SYSTEM- oder PUBLIC-Identifikator angegeben (wie bei der Einbindung einer DTD in eine XML-Datei). Wird der PUBLIC-Identifikator verwendet, so muss auch noch ein öffentlicher Name angegeben werden.

<!-- Deklaration -->
<!ENTITY % erweiterung SYSTEM "erweiterung.dtd">

<!-- Aufruf / Einbindung -->
%erweiterung;
Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen OK