Home
Über mich
Blog
Veröffentlichungen
IT-Trainings
Impressum


DTD

Zusammenfassung:

Eine DTD (document type definition) legt die zulässigen Namespaces, Elemente und Attribute eines XML Dokuments fest und definiert so die Struktur aller XML Dokumente, die gegen diese DTD gültig sein sollen.

DTD

Eine DTD kann im XML Dokument selber definiert werden, ebenso aber auch als externe Datei. Das Konzept ist ziemlich alt. Eine DTD ist selbst kein XML Dokument, und es kann auch keine Datentypen für die Textinhalte (string, integer, double, dateTime, boolean, ...) definieren.

Ein Element kann als EMPTY, ANY oder mit einer Anzahl Kindknoten (#PCDATA), (child1,child2,...), (childy+), (childy*), (childy?), (child1|child2) deklariert werden. Parsed character data (PCDATA) werden geparst, im Gegensatz zu CDATA. PCDATA können Textinhalte, aber eine Kindelemente haben. Die Zeichen +, *, ?, | bedeuten:

? Das Element ist optional
+ Das Element kann mehrfach (mindestens einmal) auftreten (mandantory)
* Das Element ist optional, kann aber auch mehrfach auftreten
| Choice: entweder dieses oder das andere Element kann auftreten
Keine Angabe Das Element muß genau einmal auftreten

Beispiele:

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT Persons (Person*)>
<!ELEMENT Person (Name, Firstname+, Age?)>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Firstname (#PCDATA)>
<!ELEMENT Age (#PCDATA)>

"Persons.dtd" definiert die Dokumentstruktur für das folgende Beispiels- XML Dokument:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Persons SYSTEM "Persons.dtd">
<Persons>
  <Person>
    <Name>Ratlos</Name>
    <Firstname>Rosi</Firstname>
    <Firstname>Renate</Firstname>
    <Alter>55</Alter>
  </Person>
</Persons>

DTD im Attribute-style

Auch Attribute können auf diese Weise definiert werden: <!ATTLIST element-name attribute-name attribute-type default-value>, z.B.:

<!ATTLIST BOOK genre (Science|Fiction) #REQUIRED> 
<!ATTLIST BOOK format (Paperback|Hardcover) "Paperback"> 

wobei

#IMPLIED Das Attribut ist optional.
#REQUIRED Das Attribut ist erforderlich (mandantory).
#FIXED Der Vorgabewert ist konstant.

Beispiel:

<?xml encoding="UTF-8"?>
<!ELEMENT Persons (Person+)>
<!ELEMENT Person EMPTY>
<!ATTLIST Person
  Lastname CDATA #REQUIRED
  Firstname CDATA #IMPLIED>

DTD für Attributsstyle mit Namespaces

<?xml encoding="UTF-8"?>
<!ELEMENT ns1:Persons (wg:Person)>
<!ATTLIST ns1:Persons
  xmlns:ns1 CDATA #FIXED 'www.example.de'>
<!ELEMENT wg:Person EMPTY>
<!ATTLIST wg:Person
  xmlns:wg CDATA #FIXED 'www.wilfried-grupe.de'
  Lastname CDATA #REQUIRED
  Firstname CDATA #REQUIRED>

NOTATION

Daneben können in einer DTD ungeparste Entitäten definiert werden. Das folgende Beispiel verweist auf eine separate Binärdatei wetter.jpg, und NDATA bestimmt daß das Format JPEG ist.

<!ENTITY weather-map SYSTEM "wetter.jpg" 
     PUBLIC "-//MEGACORP//WEATHER/" NDATA JPEG>

Da NDATA als "Nicht-XML" betrachtet werden kann, ist es erforderlich, auch JPEG in der DTD festzulegen. Diese URI's sind jedoch nicht standardidiert.

<!NOTATION JPEG SYSTEM "image/jpeg" > 
<!NOTATION GIF SYSTEM "image/gif" >

qrpic/DTD.jpg

wg / 22. September 2017




Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf (info10@wilfried-grupe.de).



Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

Mobil: 0151. 750 360 61 * eMail: info10@wilfried-grupe.de