Inhaltliche Strukturierung von Ressourcen

Eine Einführung in XML

3. Document Type Definition (DTD) und Schema Definition


von Margarete Payer und Alois Payer

mailto: payer@hdm-stuttgart.de


Zitierweise / cite as:

Payer, Margarete <1942 - > ; Payer, Alois <1944 - >: Inhaltliche Strukturierung von Ressourcen : eine Einführung in XML. -- 3. Document Type Definition (DTD) und Schema. -- Fassung vom 2002-11-19. -- URL: http://www.payer.de/xml/xml03.htm. -- [Stichwort].

Erstmals publiziert:

Überarbeitungen:

Anlass: Lehrveranstaltungen an der HdM Stuttgart, 2002/03

Unterrichtsmaterialien (gemäß § 46 (1) UrhG)

©opyright: Dieser Text steht der Allgemeinheit zur Verfügung. Eine Verwertung in Publikationen, die über übliche Zitate hinausgeht, bedarf der ausdrücklichen Genehmigung der Herausgeberin.

Dieser Teil ist ein Kapitel von: 

Payer, Margarete <1942 - > ; Payer, Alois <1944 - >: Inhaltliche Strukturierung von Ressourcen : eine Einführung in XML. -- 0. Übersicht. -- URL: http://www.payer.de/xml/xml00.htm

Dieser Text ist Teil der Abteilung Informationswesen, Bibliothekswesen, Dokumentationswesen  von Tüpfli's Global Village Library.


0. Übersicht



Zum Zeitpunkt der Abfassung dieses Kapitels gilt

Deutsche Übersetzung:


1. Dokumentenmodellierung


XML dient der Schaffung von Auszeichnungssprachen (markup languages) für bestimmte Typen von Ressourcen/Dokumenten (document types, schemas). Die Definition solcher markup languages bezeichnet man als Dokumentenmodellierung (document modeling).

Mittels von XML kann man das Markup definieren (markup declaration, schema definition):

XML ist eine Computer-Sprache: ein Computerprogramm -- ein validating XML parser -- liest die Definitionen, lernt die daraus folgenden Regeln und wendet sie auf das Dokument an.

Die markup declaration / schema definition kann erfolgen durch


2. DTD -- Document Type Definition (Dokumenttypdefinition)


Die document type definition (DTD) definiert die Elemente und anderen Konstrukte, die für ein spezifisches Dokument oder eine Gruppe von Dokumenten benötigt werden.

Die DTD enthält:

Die DTD und jeder ihrer Teile hat die allgemeine Syntax:

<! {Inhalt} >

 Eine DTD kann sein:


3. Struktur einer DTD


Eine DTD hat folgende Struktur:

Syntax Beispiel
<!DOCTYPE {Name der DTD}
[
<!ELEMENT {Elementname des obersten Elements}{Elementinhalt}>
<!ELEMENT {Elementname}{Elementinhalt}>
...
]>
<!DOCTYPE Dissertation
[
<!ELEMENT Dissertation (Titelblatt, Kapitel+, Zusammenfassung, Literaturverz, Lebenslauf)>
<!ELEMENT Titelblatt (Titel, Autor, Lebensdaten,  WissInst, Jahr, ...)>
<!ELEMENT (Titel | Autor | Lebensdaten | WissInst | Jahr | ...) (#PCDATA)>
<!ELEMENT Kapitel (....)>
...
]>

Jede DTD hat genau ein oberstes Element, dessen Elementinhalt bestimmt, was alles Inhalt des Dokuments sein kann: z.B. andere Elemente. Für die Elemente kann man Meta-data in der Form von Attributen festlegen.


4.  Allgemeine Syntax einer formal markup declaration


Eine formelle Definition des Markup (markup declaration) innerhalb einer DTD hat folgende allgemeine Syntax:

Syntax Beispiel

<!{keyword} {parameter} {associated_parameters}>

<!ELEMENT Kapitel (KapTitel, (Para | Zwischentit)+) >E

Es folgt die Erklärung von keyword, parameter und associated parameters.


4.1. keyword


Die wichtigsten keywords sind:

keyword Funktion Beispiel
DOCTYPE ordnet einer Gruppe von Declarations einen Namen zu, z.B. Namen des ganzen Dokuments <!DOCTYPE DISSERTATION
[
<!ELEMENT Titelblatt (Titel, Autor, Lebensdaten,  WissInst, Jahr, ...)>
<!ELEMENT (Titel | Autor| Lebensdaten | WissInst | Jahr| ...) (#PCDATA)>
<!ELEMENT Kapitel (....)>
...
]>
ELEMENT definiert ein Element innerhalb der logischen Struktur eines Dokumentes. associated_parameters gibt hier die möglichen Inhalte dieses Elementes an (content model) <!ELEMENT Kapitel (KapTitel, (Para | Zwischentit)+) >
<!ELEMENT (KapTitel | Para | Zwischentit) (#PCDATA)>
ATTLIST Zuordnung von Attributen zu einem Element <!ATTLIST para secrecy (topsec | public) "public">
ENTITY ermöglicht, eine Kurzform für etwas Längeres einzugeben, oder auf ein externes File zu verweisen <!ENTITY Tü "Tübingen, Univ., Diss.,">
NOTATION verbindet den ersten Parameter, der Non-XML-data bezeichnet mit dem zweiten Parameter, der dem System angibt, wie so Bezeichnetes zu behandeln ist: z.B: MIDI für MIDI-Files, CGM für Graphik u.ä.

<!NOTATION MathText SYSTEM "/usr/bin/tex" >

( = mathematischer Text ist zu bearbeiten mit einem Sub-Programm, das als usr/bin/tex gespeichert ist)


4.2. parameter


Parameter ist immer der Name, der für das betreffende Markup verwendet werden soll <!DOCTYPE DISSERTATION ... >
<!ELEMENT Kapitel ...>
<!ATTLIST para secrecy ...>

4.3. associated parameters


Innerhalb von parameters, die mit einem parameter verbunden sind (associated parameters) (und teilweise innerhalb der parameter) können folgende Indikatoren und Verknüpfungszeichen vorkommen

Indikator / Verknüpfungszeichen Bedeutung Erklärung Beispiel

kein Indikator

  das betreffende Element usw. muss genau einmal vorkommen <!ELEMENT BibliogrBeschreibung (Titelangabe, Verfasserangabe, Ausgabebezeichnung?, Erscheinungsvermerk, Kollationsvermerk, Gesamttitel?, URN?)>

( )

Gruppe zwischen der Parenthese steht eine Abfolge, eine Gruppe oder eine Reihe von Alternativen <!ELEMENT Titelblatt (Titel, Autor, Lebensdaten,  WissInst, Jahr, ...)>
<!ELEMENT (Titel | Autor | Lebensdaten | WissInst | Jahr | ...) (#PCDATA)>
<!ATTLIST para secrecy (topsec | public) "public">

 

?

 
optional das betreffende Element usw. kann
  • nicht oder 
  • einmal 

vorkommen

<!ELEMENT BibliogrBeschreibung (Titelangabe, Verfasserangabe, Ausgabebezeichnung?, Erscheinungsvermerk, Kollationsvermerk, Gesamttitel?, URN?)>

*

optional und wiederholbar das betreffende Element usw. kann 
  • nicht
  • einmal oder
  • mehrmals 

vorkommen

<!ELEMENT authgrp (author|corpauth|aff)*

+

notwendig und wiederholbar das betreffende Element usw. muss
  • mindestens einmal

vorkommen

<!ELEMENT Kapitel (KapTitel, (Para |  Zwischentit)+) >

aufeinanderfolgend
  • a,b = auf a muss b folgen
  • a,b? = auf a kann b folgen

|

oder (OR) mindestens eines der so verknüpften Elemente usw. muss vorkommen

4.4. Comment declarations


für Anmerkungen und Erklärungen des Produzenten des XML-Dokumentes, die vom System nicht beachtet werden sollen, haben folgende Syntax:

Syntax Beispiel
<!-- {Text der Anmerkung} --> <!-- Dies ist eine DTD für deutschsprachige Dissertationen -->

5. Beschränkungen der DTD


Da die Syntax der DTD von SGML übernommen wurde, entspricht sie in mehrfacher Hinsicht nicht mehr allen heutigen Anforderungen. Die wichtigsten Mängel der DTDs und der DTD-Syntax sind:

  1. Die DTD-Syntax ist verschieden von der XML-Markup-Syntax
  2. Pro gültigem Dokument darf es nur eine einzige DTD geben. Dies bedingt die folgenden zwei Mängel:
    1. Es gibt keine Vererbung von Objekteigenschaften wie in modernen objektorientierten Programmiersprqachen
    2. DTDs unterstützen Namespaces (Namensräume) nur sehr schlecht. Für ein gültiges XML-Dokument müssen alle Namensräume vollständig innerhalb der einzigen DTD definiert werden. Damit verlieren die Namensräume ihren primären Zweck, nämlich, aufgrund verschiedener externer DTDs ein Dokument zusammenzubauen
  3. DTDs unterstützen nur einen einzigen Datentyp, nämlich Text-String. Man kann Elemente nicht auf andere Datentypen (z.B. Datum, Währung, Dezimalziffern usw.) beschränken
  4. DTSs haben keinen Bezug zum DOM (Document Object Model), das für XML zunehmend Bedeutung gewinnt
  5. Da interne DTD-Erklärungen in einem XML-Dokument entsprechende Erklärungen der externen DTD außer Kraft setzen, ergeben sich Sicherheitslücken: im Prinzip kann  man alle vorgegeben Sicherheitseinstellungen überschreiben.

Aus diesen Gründen wurden Alternativen zur DTD vorgeschlagen. Der zur Zeit wichtigste solche Vorschlag ist XML-Schema (siehe Kapitel  ). Allerdings geht mit den Möglichkeiten, die XML-Schema bietet, auch die intuitive Einfachheit der DTD verloren. Deswegen ist es ratsam, in allen Fällen, wo man nicht die zusätzlichen Möglichkeiten von XML-Schema -- besonders bezüglich der Datentypen und Namespaces  -- benötigt, bei DTD zu bleiben. Das Problem der Namespaces wird für DTDs hoffentlich durch XML Version 2.0 befriedigend gelöst.


Zu Kapitel 4: XML ELEMENT