<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Dokumenttypdefinition</id>
	<title>Dokumenttypdefinition - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Dokumenttypdefinition"/>
	<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Dokumenttypdefinition&amp;action=history"/>
	<updated>2026-04-19T17:53:57Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Demo Wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://demowiki.knowlus.com/index.php?title=Dokumenttypdefinition&amp;diff=7168&amp;oldid=prev</id>
		<title>imported&gt;Rkercher: /* growthexperiments-addlink-summary-summary:1|2|0 */</title>
		<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Dokumenttypdefinition&amp;diff=7168&amp;oldid=prev"/>
		<updated>2024-12-22T20:03:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;growthexperiments-addlink-summary-summary:1|2|0&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Eine &amp;#039;&amp;#039;&amp;#039;Dokumenttypdefinition&amp;#039;&amp;#039;&amp;#039; ({{enS|Document Type Definition}}), abgekürzt &amp;#039;&amp;#039;&amp;#039;DTD&amp;#039;&amp;#039;&amp;#039;, ist ein Satz an Regeln, der benutzt wird, um Dokumente eines bestimmten Typs zu deklarieren. Ein Dokumenttyp ist dabei eine Klasse ähnlicher Dokumente, wie beispielsweise Telefonbücher oder Inventurdatensätze. Die Dokumenttypdefinition besteht dabei aus Elementtypen, Attributen von Elementen, Entitäten und Notationen. Konkret heißt das, dass in einer DTD die Reihenfolge, die Verschachtelung der Elemente und die Art des Inhalts von Attributen festgelegt wird, also die Struktur des Dokuments.&lt;br /&gt;
&lt;br /&gt;
Eine DTD spezifiziert die [[Syntax]] einer Anwendung von [[SGML]] oder [[XML]], wie beispielsweise die von ihnen abgeleiteten Sprachen [[Hypertext Markup Language|HTML]] oder [[Extensible Hypertext Markup Language|XHTML]]. Diese Syntax ist normalerweise in einer weniger generellen Form gehalten als die SGML- oder XML-Syntax.&lt;br /&gt;
&lt;br /&gt;
== Funktion ==&lt;br /&gt;
Die [[Syntax]] und [[Semantik]] einer DTD ist Bestandteil der [[SGML]]- und [[Extensible Markup Language|XML]]-Spezifikation. Die DTD wird bereits beim Lesen des Dokumentes geprüft. In SGML muss jedem Dokument zwingend eine DTD zugeordnet sein. In XML ist diese Zuordnung optional. Ein Dokument auf Basis von DTD (&amp;lt;code&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&amp;lt;!DOCTYPE ...&amp;gt;&amp;lt;/code&amp;gt;) gewährleistet die Richtigkeit der angewendeten DTD, also der vorgesehenen Syntax und Semantik. Die Korrektheit der Daten steht hier im Vordergrund. Ein Dokument ohne extern referenzierte DTD oder eingeschlossene DTD wird beim Lesen nur nach der Wohlgeformtheit geprüft. Die schnelle Lesbarkeit steht hier im Vordergrund. Der Inhalt kann von der gewünschten Syntax und Semantik abweichen. Für beide Fälle kann mit zusätzlichen Prozessen die Qualität der Daten nachträglich geprüft werden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hinweis&amp;#039;&amp;#039;&amp;#039;: Im Folgenden werden die Beispiele jeweils in XML-Syntax angegeben.&lt;br /&gt;
&lt;br /&gt;
== Dokumenttypdeklaration (DOCTYPE) ==&lt;br /&gt;
Eine Dokumenttypdeklaration stellt die Verbindung zwischen einem Dokument und der DTD her. Die Dokumenttypdeklaration wird am Beginn eines Dokumentes vor dem Wurzelelement angegeben. Die DTD kann als externe Datei referenziert werden (externe DTD) oder aber auch direkt im Dokument eingebunden werden (interne DTD).&lt;br /&gt;
&lt;br /&gt;
Die Syntax für eine Dokumenttypdeklaration lautet in SGML und XML:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Wurzelelement SYSTEM &amp;quot;datei.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Wurzelelement SYSTEM &amp;quot;datei.dtd&amp;quot; [ … ]&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Wurzelelement PUBLIC &amp;quot;Public Identifier&amp;quot; &amp;quot;datei.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Wurzelelement PUBLIC &amp;quot;Public Identifier&amp;quot; &amp;quot;datei.dtd&amp;quot; [ … ]&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Wurzelelement [ … ]&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In SGML sind zusätzlich auch folgende Varianten ohne System-Identifikator zulässig:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Wurzelelement PUBLIC &amp;quot;Public Identifier&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Wurzelelement PUBLIC &amp;quot;Public Identifier&amp;quot; [ … ]&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In [[HTML5]] gibt es zwar keine DTD mehr, die Dokumenttypdeklaration existiert aber in einer verkürzten Form weiter:&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Der System-Identifikator (SYSTEM), im Beispiel der Eintrag &amp;lt;code&amp;gt;datei.dtd&amp;lt;/code&amp;gt;, enthält den Dateinamen der externen DTD. Der Dateiname kann als beliebiger [[Uniform Resource Identifier|URI]] angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Der Public-Identifikator (PUBLIC) enthält einen öffentlich bekannten Identifikator für die DTD. Zum Beispiel wird mit dem Identifikator &amp;lt;code style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot;-//W3C//DTD XHTML 1.0 Strict//EN&amp;quot;&amp;lt;/code&amp;gt; die DTD für [[Extensible Hypertext Markup Language|XHTML]] eindeutig deklariert. Wenn der Identifikator dem System bekannt ist, verwendet das System die damit assoziierte DTD und lädt nicht die direkt angegebene DTD aus dem System-Identifikator. In [[Webbrowser|Web-Browsern]] wird so das wiederholte Laden der DTD vermieden.&lt;br /&gt;
&lt;br /&gt;
Der Eintrag &amp;lt;code&amp;gt;[ ... ]&amp;lt;/code&amp;gt; kennzeichnet eine interne DTD oder Ergänzungen zu einer DTD.&lt;br /&gt;
&lt;br /&gt;
== Markup-Deklarationen ==&lt;br /&gt;
Innerhalb einer DTD kann die Dokumentstruktur mit Deklarationen von &amp;#039;&amp;#039;Elementtypen&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Attributlisten&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Entities&amp;#039;&amp;#039; und &amp;#039;&amp;#039;Notationen&amp;#039;&amp;#039; und Textblöcken definiert werden. Dabei können spezielle &amp;#039;&amp;#039;Parameter-Entities&amp;#039;&amp;#039; benutzt werden, die DTD-Teile enthalten und nur innerhalb der DTD erlaubt sind.&lt;br /&gt;
&lt;br /&gt;
Textblöcke sind entweder [[CDATA]] oder [[PCDATA]].&lt;br /&gt;
&lt;br /&gt;
Die Strukturelemente &amp;#039;&amp;#039;(Building Blocks)&amp;#039;&amp;#039; werden über Attribut-Zuordnungen definiert:&lt;br /&gt;
* Element&lt;br /&gt;
* Attribut&lt;br /&gt;
* Entity&lt;br /&gt;
* [[CDATA]]&lt;br /&gt;
* [[PCDATA]]&lt;br /&gt;
&lt;br /&gt;
=== CDATA ===&lt;br /&gt;
{{Hauptartikel|CDATA}}&lt;br /&gt;
CDATA ([[Englische Sprache|englisch]] &amp;#039;&amp;#039;Character Data&amp;#039;&amp;#039;) kennzeichnet einen ungeparsten Textblock. Die Syntax für einen CDATA-Bereich lautet:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[Zeichendaten]]&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Im Bereich Zeichendaten sind alle Zeichen erlaubt, ausgenommen das Erkennungsmuster für das Ende &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;]]&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; des CDATA-Bereiches. Beispiel:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;![CDATA[&amp;lt;Diese&amp;gt;&amp;lt;Daten&amp;gt;werden&amp;lt;nicht&amp;gt;&amp;lt;geparst&amp;gt;.]]&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Innerhalb einer Entitätendefinition in XML lautet die Syntax:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY amp &amp;quot;Zeichendaten&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In SGML muss das Schlüsselwort CDATA explizit angegeben werden:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY amp CDATA &amp;quot;Zeichendaten&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Im Bereich Zeichendaten sind alle Zeichen erlaubt, ausgenommen der Endekennung der Zeichenkette &amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; bei &amp;lt;code&amp;gt;&amp;quot;...&amp;quot;&amp;lt;/code&amp;gt;-Zeichenketten oder &amp;lt;code&amp;gt;&amp;#039;&amp;lt;/code&amp;gt; bei &amp;lt;code&amp;gt;&amp;#039;...&amp;#039;&amp;lt;/code&amp;gt;-Zeichenketten. Beispiel:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY amp CDATA &amp;quot;&amp;amp;#38;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Die Zeichendaten &amp;lt;code&amp;gt;&amp;amp;amp;#38;&amp;lt;/code&amp;gt; werden vom [[Parser]] nicht analysiert.&lt;br /&gt;
&lt;br /&gt;
=== PCDATA ===&lt;br /&gt;
{{Hauptartikel|PCDATA}}&lt;br /&gt;
&lt;br /&gt;
Für PCDATA ([[Englische Sprache|englisch]] &amp;#039;&amp;#039;Parsed Character Data&amp;#039;&amp;#039;) wird das Schlüsselwort &amp;#039;&amp;#039;&amp;#039;#PCDATA&amp;#039;&amp;#039;&amp;#039; verwendet. Damit wird ein Textblock, der auch weitere Anweisungen an den Parser enthalten kann, gekennzeichnet. Der Inhalt dieses Textblocks wird syntaktisch vom Parser analysiert. Im Gegensatz zu CDATA dürfen nur Zeichen enthalten sein, die keine Tags, Deklarationen oder Verarbeitungsanweisungen einleitet. Verboten sind hier beispielsweise &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt; (z.&amp;amp;nbsp;B. Startzeichen eines Tags, z.&amp;amp;nbsp;B. &amp;lt;code&amp;gt;&amp;amp;lt;Beispiel&amp;amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Element-Deklarationen (ELEMENT) ===&lt;br /&gt;
Mit einer Elementtyp-Deklaration wird ein Element und sein möglicher Inhalt definiert. In einem validen Dokument dürfen nur Elemente vorkommen, die in der DTD definiert sind.&lt;br /&gt;
&lt;br /&gt;
Der Inhalt eines Elementes kann durch die Angabe anderer Elementnamen und durch einige Schlüsselwörter und Zeichen angegeben werden.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;#PCDATA&amp;lt;/code&amp;gt; für Zeicheninhalte (siehe [[PCDATA]])&lt;br /&gt;
* &amp;lt;code&amp;gt;EMPTY&amp;lt;/code&amp;gt; für keinen Inhalt&lt;br /&gt;
* &amp;lt;code&amp;gt;ANY&amp;lt;/code&amp;gt; für beliebigen Inhalt&lt;br /&gt;
* &amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt; für Reihenfolgen&lt;br /&gt;
* &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt; für Alternativen (im Sinne „entweder…oder“)&lt;br /&gt;
* &amp;lt;code&amp;gt;()&amp;lt;/code&amp;gt; zum Gruppieren&lt;br /&gt;
* &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; für beliebig oft (aufeinander folgen)&lt;br /&gt;
* &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; für mindestens einmal&lt;br /&gt;
* &amp;lt;code&amp;gt;?&amp;lt;/code&amp;gt; für keinmal oder genau einmal&lt;br /&gt;
* Wird kein Stern, Pluszeichen oder Fragezeichen angegeben, so muss das Element genau einmal vorkommen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT html (head, body)&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT hr EMPTY&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT div (#PCDATA | p | ul | ol | dl | table | pre | hr |&lt;br /&gt;
          h1|h2|h3|h4|h5|h6 | blockquote | address | fieldset)*&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT dl (dt|dd)+&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribut-Deklarationen (ATTLIST) ===&lt;br /&gt;
Attribute werden innerhalb einer Attributliste &amp;lt;code&amp;gt;&amp;amp;lt;!ATTLIST Elementname Attributliste&amp;amp;gt;&amp;lt;/code&amp;gt; definiert. Die Attributliste enthält durch Leerzeichen oder Zeilenumbrüche getrennt jeweils den &amp;#039;&amp;#039;Attributnamen&amp;#039;&amp;#039;, den &amp;#039;&amp;#039;Typ&amp;#039;&amp;#039; und &amp;#039;&amp;#039;Vorgaben&amp;#039;&amp;#039; der einzelnen Attribute.&lt;br /&gt;
&lt;br /&gt;
Beispiele für Elemente:&lt;br /&gt;
* ID&lt;br /&gt;
* IDREF und IDREFS&lt;br /&gt;
* NMTOKEN und NMTOKENS&lt;br /&gt;
* NOTATION und NOTATIONS&lt;br /&gt;
* Aufzählungen und NOTATION-Aufzählungen&lt;br /&gt;
&lt;br /&gt;
Mit den &amp;#039;&amp;#039;Attribut-Vorgaben&amp;#039;&amp;#039; kann angegeben werden, ob ein Attribut vorkommen muss (&amp;lt;code&amp;gt;#REQUIRED&amp;lt;/code&amp;gt;) oder nicht (&amp;lt;code&amp;gt;#IMPLIED&amp;lt;/code&amp;gt;) oder einen festen Wert enthält (&amp;lt;code&amp;gt;#FIXED&amp;lt;/code&amp;gt;) und welcher Wert als Standardwert benutzt wird, falls das Attribut bei einem Tag nicht angegeben wird.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;| Vorgabewerte für Attribute&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;#REQUIRED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Das Attribut muss angegeben werden&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;#IMPLIED&amp;lt;/code&amp;gt;&lt;br /&gt;
|Das Attribut ist optional&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;...&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Standardwert, falls das Attribut weggelassen wird&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;#FIXED &amp;quot;...&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Das Attribut hat immer einen festen Wert&lt;br /&gt;
|}&lt;br /&gt;
Beispiel einer Attribut-Deklaration:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST img&lt;br /&gt;
   id     ID       #IMPLIED&lt;br /&gt;
   src    CDATA    #REQUIRED&lt;br /&gt;
   alt    CDATA    #REQUIRED&lt;br /&gt;
   ismap  IDREF    #IMPLIED&lt;br /&gt;
&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Entitäten-Deklarationen (ENTITY) ===&lt;br /&gt;
Eine &amp;#039;&amp;#039;Entität&amp;#039;&amp;#039; ist eine benannte Abkürzung für eine Zeichenkette oder ein externes Dokument, die innerhalb der DTD oder des Dokumentes, verwendet werden kann. Eine &amp;#039;&amp;#039;Entität&amp;#039;&amp;#039; der Form &amp;lt;code&amp;gt;&amp;amp;Name;&amp;lt;/code&amp;gt; wird dabei durch den deklarierten Inhalt der &amp;#039;&amp;#039;Entity&amp;#039;&amp;#039; ersetzt. &amp;#039;&amp;#039;(Zur allgemeinen Verwendung siehe [[Entität (Auszeichnungssprache)]].)&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Entitäten&amp;#039;&amp;#039; bestehen aus Zeichenketten. Diese können selber wieder &amp;#039;&amp;#039;Entitäten&amp;#039;&amp;#039; und wohlgeformtes Markup enthalten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY name &amp;quot;Benedikt&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY papst &amp;quot;&amp;amp;name;, der XVI.&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY wplink &amp;quot;&amp;lt;a href=&amp;#039;http://de.wikipedia.org&amp;#039;&amp;gt;Wikipedia&amp;lt;/a&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Entitäten&amp;#039;&amp;#039; können auch für Inhalt einer Datei definiert werden. Dabei wird ein &amp;#039;&amp;#039;Public&amp;#039;&amp;#039;- oder &amp;#039;&amp;#039;System-Identifier&amp;#039;&amp;#039; benutzt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY kapitel1 SYSTEM &amp;quot;kapitel1.xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY wichtig PUBLIC &amp;quot;-//privat//WICHTIG//&amp;quot; &amp;quot;wichtig.xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei externen &amp;#039;&amp;#039;Entities&amp;#039;&amp;#039; kann zusätzlich angegeben werden, dass es sich um eine &amp;#039;&amp;#039;nicht analysierte Entität&amp;#039;&amp;#039; (NDATA, Nicht-XML/SGML-Daten) handelt. In diesem Fall muss eine &amp;#039;&amp;#039;Notation&amp;#039;&amp;#039; angegeben werden (hier &amp;quot;gif&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY bild SYSTEM &amp;quot;../grafiken/bild.gif&amp;quot; NDATA gif&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notationsdeklarationen (NOTATION) ===&lt;br /&gt;
Notationen sind Hinweise zur Interpretation von externen Daten, die nicht direkt vom Parser verarbeitet werden. Notationen können sich beispielsweise auf ein Dateiformat für Bilder beziehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!NOTATION Datentyp SYSTEM &amp;quot;URL&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!NOTATION Datentyp PUBLIC &amp;quot;Identifikator&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NMTOKEN ===&lt;br /&gt;
NMTOKEN (&amp;#039;&amp;#039;name token&amp;#039;&amp;#039;) ist mit einem Bezeichner verwandt, geht jedoch freizügiger mit den Regeln zur Namensgebung um. So sind bei einem NMTOKEN Bezeichner mit führender Ziffer oder führendem Punkt erlaubt, wohingegen bei einem Bezeichner nur Buchstaben, [[Ideogramm]]e und &amp;#039;&amp;#039;underlines&amp;#039;&amp;#039; an erster Stelle erlaubt sind. Somit ist jeder Bezeichner auch ein NMTOKEN, jedoch nicht umgekehrt.&amp;lt;br /&amp;gt;&lt;br /&gt;
Beispiele für NMTOKEN:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
12alpha&lt;br /&gt;
.crc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Deklarations-Beispiel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST birthdate&lt;br /&gt;
    year NMTOKEN #REQUIRED&lt;br /&gt;
&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parameter-Entität ===&lt;br /&gt;
Parameter-Entitäten enthalten eine benannte Zeichenkette, die mittels &amp;lt;code&amp;gt;%Name;&amp;lt;/code&amp;gt; an fast allen Stellen innerhalb einer DTD eingesetzt werden kann. Auf diese Weise lassen sich beispielsweise externe Dateien in eine DTD einbinden und mehrfach vorkommende Bestandteile abkürzen. Parameter-Entitäten werden wie [[Entität (Auszeichnungssprache)|normale Entities]] deklariert, wobei vor dem Elementnamen ein einzelnes [[Prozentzeichen]] steht. Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY % datei SYSTEM &amp;quot;andere-datei.ent&amp;quot;&amp;gt;&lt;br /&gt;
%datei;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!ENTITY % foo.inhalt &amp;quot;(bar|doz)*&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT foo %foo.inhalt;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bedingte Abschnitte ===&lt;br /&gt;
Ein bedingter Abschnitt ist ein Konstrukt, um Deklarationen ein- oder auszuschalten. Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;![INCLUDE[&lt;br /&gt;
  &amp;lt;!ENTITY hallo &amp;quot;welt&amp;quot;&amp;gt;&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schaltet die Deklaration von &amp;lt;code&amp;gt;hallo&amp;lt;/code&amp;gt; ein. Entsprechend gilt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;![IGNORE[&lt;br /&gt;
  &amp;lt;!ENTITY hallo &amp;quot;welt&amp;quot;&amp;gt;&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
um &amp;lt;code&amp;gt;hallo&amp;lt;/code&amp;gt; auszuschalten.&lt;br /&gt;
&lt;br /&gt;
Man verwendet bedingte Abschnitte wie oben jedoch nicht allein, sondern meist im Zusammenspiel mit Parameter-Entities:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ENTITY % weiche &amp;quot;INCLUDE&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;![%weiche;[&lt;br /&gt;
  &amp;lt;!ENTITY hallo &amp;quot;welt&amp;quot;&amp;gt;&lt;br /&gt;
]]&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Parameter-Entity &amp;lt;code&amp;gt;%weiche;&amp;lt;/code&amp;gt; ist durch eine der möglichen Schlüsselwörter &amp;lt;code&amp;gt;INCLUDE&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;IGNORE&amp;lt;/code&amp;gt; belegt. Je nach Belegung wird das Entity &amp;lt;code&amp;gt;hallo&amp;lt;/code&amp;gt; deklariert oder nicht.&lt;br /&gt;
&lt;br /&gt;
Durch diese Art der Schreibweise kann ein bedingter Abschnitt durch Überschreibung von Parameter-Entities angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel eines kurzen Dokumentes mit Verweis auf eine externe DTD:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE hallo SYSTEM &amp;quot;hallo.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hallo&amp;gt;Hallo Welt!&amp;lt;/hallo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der XML-Deklaration kann im Beispiel auch das Pseudoattribut &amp;lt;code&amp;gt;standalone=&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt; angegeben werden (d.&amp;amp;nbsp;h., es wird eine externe DTD benötigt):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE hallo SYSTEM &amp;quot;hallo.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;hallo&amp;gt;Hallo Welt!&amp;lt;/hallo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Inhalt von &amp;lt;code&amp;gt;hallo.dtd&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT hallo (#PCDATA)&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurzes Dokument mit interner DTD:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE hallo [&amp;lt;!ELEMENT hallo (#PCDATA)&amp;gt;]&amp;gt;&lt;br /&gt;
&amp;lt;hallo&amp;gt;Hallo Welt!&amp;lt;/hallo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;In der XML-Deklaration kann im Beispiel auch das Pseudoattribut &amp;lt;code&amp;gt;standalone=&amp;quot;yes&amp;quot;&amp;lt;/code&amp;gt; angegeben werden (d.&amp;amp;nbsp;h., es wird keine externe DTD benötigt):&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE hallo [&amp;lt;!ELEMENT hallo (#PCDATA)&amp;gt;]&amp;gt;&lt;br /&gt;
&amp;lt;hallo&amp;gt;Hallo Welt!&amp;lt;/hallo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Document Schema Definition Languages]] (Spezifikation zur Definition von Dokumentstrukturen, Datentypen und Datenbeziehungen in [[XML]])&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.data2type.de/xml-xslt-xslfo/xml/xml-in-a-nutshell/dokumenttyp-definitionen/ Ausführliche Einführung in DTDs] (deutsch)&lt;br /&gt;
* [http://wiki.selfhtml.org/wiki/HTML/Dokumentstruktur_und_Aufbau#Dokumenttyp-Deklaration &amp;#039;&amp;#039;Dokumenttyp-Deklaration&amp;#039;&amp;#039;] im [[SELFHTML]]-Wiki (deutsch)&lt;br /&gt;
* [http://www.w3.org/QA/2002/04/valid-dtd-list.html Web-Dokumenttypen] [[World Wide Web Consortium|W3C]] (englisch)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Beschreibungssprache]]&lt;br /&gt;
[[Kategorie:SGML]]&lt;br /&gt;
[[Kategorie:XML]]&lt;br /&gt;
[[Kategorie:Klassifizierung]]&lt;br /&gt;
[[Kategorie:Dokumentationssprache]]&lt;br /&gt;
[[Kategorie:Definition]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Rkercher</name></author>
	</entry>
</feed>