Studium, Ausbildung und Beruf

web uni-protokolle.de
 powered by
NachrichtenLexikonProtokolleBücherForenMittwoch, 17. September 2014 

Dokumenttypdefinition


Dieser Artikel von Wikipedia ist u.U. veraltet. Die neue Version gibt es hier.

Die Dokumenttypdefinition (englisch Document Type Definition DTD ) ist eine Deklaration in SGML - und XML -Dokumenten die die Struktur eines solchen Dokuments

Eine DTD beschreibt z.B. HTML oder XHTML ; verbreitet sind auch DTDs für spezielle wie XSL DocBook oder TEI ( Text Encoding Initiative ).

In einer DTD werden Elemente (engl. elements z.B. XML-Elemente ) Attribute von Elementen (engl. attributes z.B. XML-Attribute) Entitäten (engl. entities z.B. XML-Entitäten) und dies ist nur bestimmten SGML-Deklarationen (engl. SGML declaration ) möglich Besonderheiten der Syntax-Verwendung (z.B. Abkürzungen lokale Umdefinitionen von Zeichen). Konkret heißt das in einer DTD beispielsweise die Reihenfolge der oder die Art des Inhalts von Attributen wird bzw. werden kann.

Inhaltsverzeichnis

DTD in XML

Die Syntax und Semantik einer DTD ist Bestandteil des XML -Standards. Diese Entscheidung wurde später kritisiert da DTD-Syntax selber kein XML ist. Mit XML-Schema existiert ein eigener Standard zur Definition Dokumenttypen für XML-Dokumente. XML-Schemata werden in einer formuliert bieten mehr Möglichkeiten und sind allerdings komplexer als DTDs.

Dokumenttyp-Deklaration

Die DTD wird zu Beginn eines vor dem Wurzelelement in der Dokumenttyp-Deklaration angegeben. Die Grammatikregeln der DTD können sowohl innerhalb des XML-Dokumentes (interne DTD) als in einer externen Datei angeben werden (drei und die eckigen Klammern können weggelassen werden sie leer sind):

 <!DOCTYPE Wurzelelement SYSTEM "datei.dtd" [ ... <!DOCTYPE Wurzelelement PUBLIC "Public Identifier" "datei.dtd" [ ]> <!DOCTYPE Wurzelelement [ ... ]>  

Als Verweis auf eine Datei kann beliebiger URI angegeben werden. Für standardisierte DTDs gibt bekannte Public Identifier (z.B. "-//W3C//DTD XHTML 1.0 Strict//EN" für XHTML ) so dass Programme nicht jedesmal die neu laden müssen falls ihnen der Public bekannt ist

Innerhalb einer DTD-Datei bzw. der eckigen können verschiedene Markup-Deklarationen stehen die den Dokumenttyp

Markup-Deklarationen

Innerhalb einer DTD kann die Dokumentstruktur Deklarationen von Elementtypen Attributlisten Entities und Notationen definiert werden. Dabei können spezielle Parameter-Entities benutzt werden die DTD-Teile enthalten und innerhalb der DTD erlaubt sind.

Elementtyp-Deklarationen

Mit einer Elementtyp-Deklaration wird ein Element sein möglicher Inhalt definiert. In einem validen dürfen nur Elemente vorkommen die in der definiert sind.

Der Inhalt eines Elementes kann durch Angabe anderer Elementnamen und durch einige Schlüsselwörter Zeichen angegeben werden.

  • EMPTY für keinen Inhalt
  • ANY für beliebigen Inhalt
  • für Reihenfolgen
  • | für Alternativen (im Sinne "entweder...oder")
  • Runde Klammern zum Gruppieren
  • Der Stern für keinmal oder beliebig oft
  • Das Pluszeichen für einmal oder beliebig oft
  • Das Fragezeichen für keinmal oder genau einmal
  • Wird kein Stern Pluszeichen oder Fragezeichen angegeben muss das Element genau einmal vorkommen

 <!ELEMENT html (head body)> <!ELEMENT hr <!ELEMENT p (#PCDATA | p | ul ol | dl | table | pre hr | h1|h2|h3|h4|h5|h6 | blockquote | address fieldset)*> <!ELEMENT dl (dt|dd)+>  

Attributlisten-Deklarationen

Die Liste der möglichen Attribute eines wird in einer DTD mit <!ATTLIST Elementname Attributliste> angegeben. Die Attributliste enthält durch Leerzeichen Zeilenumbrüche getrennt jeweils den Namen den Typ und Vorgaben eines Attributes.

Es gibt folgende Attributtypen

  • CDATA
  • ID
  • IDREF und IDREFS
  • NMTOKEN
  • ENTITY und ENTITIES
  • NOTATION und NOTATIONS
  • Aufzählungen und NOTATION-Aufzählungen

Mit den Attribut-Vorgaben kann angegeben werden ob ein Attribut muss ( #REQUIRED ) oder nicht ( #IMPLIED ) oder einen festen Wert enthält ( #FIXED ) und welcher Wert als Standardwert benutzt falls das Attribut bei einem XML-Tag nicht wird.

Vorgabewerte für Attribute
#REQUIRED Das Attribut muss angegeben werden
#IMPLIED Das Attribut ist optional
"..." Standardwert falls das Attribut weggelassen wird
#FIXED "..." Das Attribut hat immer einen festen Standardwert

Beispiel
 <!ATTLIST img id ID #IMPLIED src #REQUIRED alt CDATA #IMPLIED ismap (ismap) #IMPLIED  

Entity-Deklarationen

Eine Entity ist eine benannte Abkürzung eine Zeichenkette oder ein externes Dokument die der DTD oder des XML-Dokumentes das diese benutzt verwendet werden kann. Eine Entity-Referenz der Form &Name; wird dabei durch den Inhalt der ersetzt.

Interne Entities bestehen aus Zeichenketten. Diese können selber Entity-Referenzen und wohlgeformtes XML-Markup enthalten:

 <!ENTITY name "Johannes Paul"> <!ENTITY papst der II."> <!ENTITY wplink "<a href=' http://de.wikipedia.org '>Wikipedia</a>">  
  
Externe Entities bestehen aus dem Inhalt einer Datei die verwiesen wird. Dabei kann wieder ein Public Identifier benutzt werden.
 <!ENTITY kapitel1 SYSTEM "kapitel1.xml"> <!ENTITY wichtig "-//privat//WICHTIG//" "wichtig.xml">  

Bei externen Entities kann zusätzlich angegeben dass es sich um eine nicht analysierte Entity handelt deren Inhalt aus beliebigen Daten die durch eine Entity-Referenz nicht ersetzt werden In diesem Fall muss eine Notation angegeben werden (hier "gif").

 <!ENTITY bild SYSTEM "../grafiken/bild.gif" NDATA gif> 

Notation-Deklarationen

Notationen sind Hinweise zur Interpretation von Daten die nicht direkt vom XML-Parser verarbeitet Notationen können sich beispielsweise auf ein Dateiformat Bilder beziehen.

 <!NOTATION Datentyp SYSTEM "URL"> <!NOTATION Datentyp "Identifikator">  

Parameter-Entities

Parameter-Entitäten enthalten eine benannte Zeichenkette die %Name; an fast allen Stellen innerhalb einer eingesetzt werden kann. Auf diese Weise lassen beispielsweise externe Dateien in eine DTD einbinden mehrfach vorkommende Bestandteile abkürzen. Parameter-Entitäten werden wie Entities deklariert wobei vor dem Elementnamen ein Prozentzeichen steht. Beispiel:

 <!ENTITY % datei SYSTEM "andere-datei.ent"> %andere-datei; 

 <!ENTITY % foo.inhalt "(bar|doz)*"> <!ELEMENT foo  

Sonstiges

Bedingte Abschnitte externe Entitäten und nicht-validierende Parser

Beispiel

Kurzes XML-Dokument mit Verweis auf ein
 <?xml version="1.0"?> <!DOCTYPE hallo SYSTEM "hallo.dtd"> Welt!</hallo>  

Der Inhalt des dazupassenden DTDs

 <?xml version="1.0"?> <!DOCTYPE hallo [ <ELEMENT (#PCDATA)> ]> <hallo>Hallo Welt!</hallo>  

Weblinks



Bücher zum Thema Dokumenttypdefinition

Dieser Artikel von Wikipedia unterliegt der GNU FDL.

ImpressumLesezeichen setzenSeite versendenSeite drucken

HTML-Code zum Verweis auf diese Seite:
<a href="http://www.uni-protokolle.de/Lexikon/Document_Type_Definition.html">Dokumenttypdefinition </a>