Entwicklung und Nutzen von XML


[Informatik- u. Master-Seminar SS04]   [Inhaltsverzeichnis]   [zurück]   [weiter] Nach unten

Definition eigener Auszeichnungssprachen




Formfreies XML

Trotz des Namens ist XML selber keine Auszeichnungssprache, sondern eine Meta-Sprache zur Festlegung der Syntax von Auszeichnungssprachen.

Wie kann man sich nun eine Syntax für seine eigene Auszeichnungssprache definieren?

Die erste Form der Festlegung (implizite Festlegung) wird als formfreies XML (Freeform-XML) bezeichnet. Es existieren in der XML-Spezifikation zwar einige Minimalregeln, sogenannte Auszeichnungsregeln, zum Bilden und Verwenden von Tags, doch es können in diesem Modus beliebige Tags unter Beachtung dieser Regeln verwendet werden. Zu den allgemeinen Auszeichnungsregeln von XML gehört zum Beispiel, dass es für jedes Element immer ein öffnendes und ein schließendes Tag gibt (ausser leere Tags), dass die Groß- und Kleinschreibung dabei beachtet werden muss, dass leere Tags extra gekennzeichnet werden müssen und die Beachtung allgemeiner Syntaxregeln. Wurden diese Regeln beachtet, gilt das Dokument als wohlgeformt. Diese Art der Syntaxfestlegung hat den grossen Nachteil, dass es keine Beschränkungen hinsichtlich der verwendeten Tags gibt, und somit auch keine Spezifikation, welche als Anweisung für die Benutzung dieser definierten Sprache dienen könnte. Gibt man ein solches Dokument weiter an andere Personen, so können diese nicht viel damit anfangen, ausser das Dokument zu lesen. Eine maschinelle Verarbeitung ist hier aber nicht möglich, das es keine Spezifikation der verwendeten Sprache gibt und der Computer somit nicht weiß, wie die Sprache zu interpretieren ist und ob sie korrekt ist.

Ein Beispiel für ein XML-Dokument ohne Spezifikation einer Syntax, also Freeform-XML:
<?xml version="1.0" ?>
<Adressbuch>
  <Person>
    <Vorname>Uwe</Vorname>
    <Nachname>Schmidt</Nachname>
    <Ort plz="101010">Knusiland</Ort>
    <Alter>42</Alter>
  </Person>
</Adressbuch>

Man sieht sofort, dass es sich um Daten für ein Adressbuch handelt, da die Daten selbsterklärend sind und durch die Tags die logische Bedeutung der Daten genau beschrieben wird. Zusätzlich zu den Tags, welche die Daten benennen, besteht bei XML die Möglichkeit noch genauere Informationen über die Daten, sogenannte Meta-Daten, zu beschreiben durch die Verwendung von Attributen für Tags. In diesem Beispiel gibt das Attribut plz genauere Informationen zum Ort an, nämlich die Postleitzahl. Dieses Dokument gilt als wohlgeformt, da es den Auszeichnungsregeln von XML entspricht. Dieses kleine Beispiel macht die Mächtigkeit von XML deutlich, die Daten sind gut lesbar, selbsterklärend und nicht übersäht mit Formatinformationen.


Dokumentenmodellierung

Der zweite und wesentlich bessere Ansatz ist die Dokumentenmodellierung. Sie beeinhaltet das Erstellen einer Spezifikation, in der festgelegt wird, welche Tags in einem Dokument in welcher Weise verwendet werden können, sie beschreibt also wie ein Dokument aussehen kann. Nach der Erstellung eines XML-Dokumentes kann mit einer Gültigkeitsprüfung (Validierung) getestet werden, ob das Dokument hinsichtlich der Spezifikation korrekt erstellt wurde. Bei der Validierung wird beispielsweise nach fehlerhaften Bezeichnungen für Tags, falschen Reihenfolgen von Tags, fehlenden Daten oder falschen Datentypen und nicht deklarierten Tags gesucht. Enthält das Dokument keine solchen Fehler entspricht es der Spezifikation und ist damit valide, also gültig bezüglich der Spezifikation.


DTD's

Die am häufigsten genutze Methode zur Dokumentenmodellierung ist die Definition einer Document Type Definition (DTD), also einer Dokumenttyp-Definition, die spezifiziert, welche Elemente ein Dokument enthalten darf, in welcher Anordnung sie stehen und welche Datentypen verwendet werden dürfen. Eine DTD beschreibt den strukturellen Aufbau eines Dokuments, sie gibt ein Inhaltsmodell für das Dokument an. Jede Elementdefinition in einer DTD entspricht einem Inhaltsmodell, in dem festgelegt wird, welche Elemente/Daten in welcher Reihenfolge/Anzahl innerhalb eines Dokumentes vorkommen dürfen und ob diese Pflicht/optional sind. Weiterhin werden in einer DTD für jedes Element die erlaubten Attribute mit Namen, Datentyp (sehr begrenzt) und etwaigen Standardwerten festgelegt. Zusätzlich besteht in einer DTD die Möglichkeit zur Deklaration von Entitäten. Diese entsprechen dem Konstanten-Konzept aus Programmiersprachen, sie werden mit einem festen Wert definiert und können an (fast) beliebiger Stelle im Dokument eingesetzt werden. Eine DTD ist letztendlich nichts weiteres als eine kontextfreie Grammatik in erweiterter Backus-Naur-Form, die die Syntax eines XML-Dokuments bestimmt, sie ist das Vokabular der definierten Sprache

Die Verwendung einer solchen DTD kann in einem Dokument auf zwei Arten erfolgen. Die DTD kann im Dokument als interne Teilmenge im Prolog des XML-Dokuments enthalten sein oder in einer seperaten Datei gespeichert sein. In diesem Beispiel ist die Datei adressbuch.dtd als zu verwendende Spezifikation für die Datei adressbuch.xml angegeben, die DTD ist also in einer separaten Datei spezifiziert. Die Einbindung der DTD erfolgt in der zweiten Zeile des Dokuments über das Schlüsselwort DOCTYPE gefolgt vom Namen des Wurzelelements, dem Schlüsselwort SYSTEM (oder PUBLIC) und einer URI, die den Pfad zur DTD enthält. In diesem Fall liegt die DTD in gleichen Verzeichnis wie die XML-Datei.

Die Datei adressbuch.xml mit externer DTD:
<?xml version="1.0" ?>
<!DOCTYPE adressbuch SYSTEM "adressbuch.dtd">
<Adressbuch>
  <Person>
    <Vorname>Uwe</Vorname>
    <Nachname>Schmidt</Nachname>
    <Ort plz="101010">Knusiland</Ort>
    <Alter>42</Alter>
  </Person>
</Adressbuch>

Die dazugehörige Datei adressbuch.dtd könnte so aussehen:
<!ELEMENT adressbuch (person)*>
<!ELEMENT person (vorname, nachname, ort, alter)>
<!ELEMENT vorname ANY>
<!ELEMENT nachname ANY>
<!ELEMENT alter ANY>
<!ELEMENT ort ANY>
<!ATTLIST ort plz CDATA #REQUIRED>


Die Datei adressbuch.xml mit interner DTD:
<?xml version="1.0" ?>
<!DOCTYPE adressbuch [
	<!ELEMENT adressbuch (person)*>
	<!ELEMENT person (vorname, nachname, ort, alter)>
	<!ELEMENT vorname ANY>
	<!ELEMENT nachname ANY>
	<!ELEMENT alter ANY>
	<!ELEMENT ort ANY>
	<!ATTLIST ort plz CDATA #REQUIRED>
]>
<Adressbuch>
  <Person>
    <Vorname>Uwe</Vorname>
    <Nachname>Schmidt</Nachname>
    <Ort plz="101010">Knusiland</Ort>
    <Alter>42</Alter>
  </Person>
</Adressbuch>

Stärken von DTD'S Schwächen von DTD'S
XML-Schema

Der zweite, etwas neuere, Standard zur Dokumentenmodellierung wird als XML-Schema bezeichnet. Ein XML-Schema (Schema: Vorbild, Muster) beschreibt das Format eines XML-Dokuments. Hierbei werden XML-Fragmente, sogenannte Vorlagen (Templates), benutzt, um die Struktur eines Dokumentes festzulegen. Der Vorteil von XML-Schemata gegenüber DTD's liegt darin, dass es sich bei den Schemata selbst um wohlgeformtes XML handelt und diese somit mit den gleichen Tools bearbeitet werden können, wie die XML-Dokumente. Weitere Vorteile von XML-Schema liegen in einer mächtgeren Datentyp-Überprüfung, einem mächtigeren Typkonzept und der Möglichkeit Namensräume zu verwenden.

Beispiel buch.xml:
<?xml version="1.0" ?>
<Buch>
  Ein XML-Buch
</Buch>

Die dazugehörige XML-Schema-Datei buch.xsd:
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3c.org/2001/XMLSchema">
  <xsd:element name="Buch" type="xsd:string">
  </xsd:element>
</xsd:schema>

Vorteile von XML-Schema Nachteile von XML-Schema
XML-Schemata bieten eine interessante und flexiblere Alternative zu DTD's, da es Autoren von XML-Dokumenten dadurch möglich ist, wesentlich genauer strukturierte Felder zu definieren. Da beide Methoden ihre Vorzüge haben werden mittelfristig beide Varianten der Dokumentenmodellierung nebeneinander existieren. Mit Relax NG wurde im Dezember 2003 eine weitere in manchen Teilen flexiblere Umsetzung für eine XML-Schemasprache durch die ISO zum Standard erklärt. Relax NG wird sogar vom W3C verwendet, obwohl es zu W3C-Schema konkuriert
[Informatik- u. Master-Seminar SS04]   [Inhaltsverzeichnis]   [zurück]   [weiter] Inhaltsverzeichnis Nach oben