|
Spektakuläre Neuerung gab es dieses Jahr
bei den XML-Katalogformaten nicht, jedoch wurde im Hintergrund
kräftig gearbeitet. Bei BMEcat und openTRANS wurden beispielsweise so genannte XML Schemata eingeführt. Der folgende
Beitrag zeigt, welche Vorteile XML Schemata bieten und wie sie
funktionieren.
Die Struktur eines XML-Dokuments wird
üblicherweise in einer DTD, das heißt einer "Document
Type Defintion" festgelegt. Mit einer DTD kann
überprüft werden, ob ein vorhandenes XML-Dokument mit der in
einer DTD festgelegten Struktur übereinstimmt. Das ist
besonders dann wichtig, wenn standardisierte XML-Dokumente,
zum Beispiel Bestellungen oder Rechnungen, zwischen
verschiedenen Teilnehmern ausgetauscht werden sollen.
Damit ist aber das Einsatzgebiet von DTDs auch schon fast
vollständig eingegrenzt. Will man beispielsweise neben der
Struktur auch Datentypen in XML-Dokumenten überprüfen, so
kann dies mit DTD's nicht mehr realisiert werden.
DTDs <--> XML Schemata
Die wesentlichen Unterschiede zwischen DTDs und
XML-Schemata lassen sich wie folgt zusammenfassen:
-
XML-Schemata sind im Gegensatz zu DTDs
selbst wohlgeformte XML-Dokumente. Damit können
XML-Schemata auf die gleiche Art verarbeitet werden wie
XML-Dokumente.
-
XML Schemata unterstützen eine Vielzahl
von Datentypen. Auch ist es möglich eigene Datentypen
definieren zu können. Diese Eigenschaft macht sich gerade
beim Austausch von Daten bei elektronischen Katalogen
bezahlt. Es kann nicht nur die Katalogstruktur überprüft werden,
sondern auch Datumsformate, Preise, Beschreibungen oder
Längenangaben können auf ihr korrektes Format überprüft werden.
-
Für ein XML-Schema kann im Gegensatz zu
einer DTD ein Vererbungskonzept implementiert werden.
Damit können Applikationen effektiver auf XML-Schemata
zurückgreifen und mit ihnen arbeiten.
-
Für Elemente können in XML-Schemata
zusätzliche Strukturspezifiaktionen definiert werden.
Beispielsweise kann angegeben werden, wie häufig ein
Element vorkommen muss.
-
Mit XML-Schemata sind äquivalente
Felddefinitionen möglich. Beispielsweise kann man
definieren: Element Vorname = Element first_name.
Aufgrund der Flexibilität, die XML-Schemata
bieten, wurden XML-Schemata auch für BMEcat und openTRANS
zur Verfügung gestellt.
Aufbau eines XML-Schemas
Bevor mit der Definition eines XML-Schemas
begonnen werden kann, müssen zunächst einmal die Elemente,
die in einem XML-Dokument verwendet werden können,
klassifiziert werden. Dazu werden zunächst die erlaubten
Inhalts-Modelle betrachtet. In einem Inhalts-Modell werden die
erlaubten Inhalte der jeweiligen Elemente festgelegt.
-
Leeres Inhalts-Modell: Es werden
keine Kinderelemente oder Textknoten erwartet.
-
Einfaches Inhalts-Modell: Es sind
Textknoten zugelassen.
-
Komplexes Inhaltsmodell: Es sind
nur Subelemente zugelassen.
-
Gemischtes Inhaltsmodell: Ist eine
Kombination aus dem einfachen und dem komplexen
Inhalts-Modell.
Bei den Elementen unterscheidet man
zwischen:
-
Einfachen Typ: Bestehen nur
aus Inhalt, das heißt, es gibt keine Attribute. Attribute
selbst sind Elemente vom einfachen Typ.
-
Komplexen Typ: Elemente, die
wiederum in anderen Elementen enthalten sind, werden als
Elemente vom komplexen Typ bezeichnet.
Die Vielzahl an Kategorisierung wird am folgenden Beispiel
an einem Auszug aus dem XML-Schema von
BMEcat erläutert.
Der folgende Auszug aus dem BMEcat-Schema
zeigt die Definition einer Adresse:
<xsd:complexType name="typeADDRESS">
<xsd:sequence>
<xsd:element ref="NAME" minOccurs="0"/>
<xsd:element ref="NAME2" minOccurs="0"/>
<xsd:element ref="NAME3" minOccurs="0"/>
<xsd:element ref="CONTACT" minOccurs="0"/>
<xsd:element ref="STREET" minOccurs="0"/>
<xsd:element ref="ZIP" minOccurs="0"/>
<xsd:element ref="BOXNO" minOccurs="0"/>
<xsd:element ref="ZIPBOX" minOccurs="0"/>
<xsd:element ref="CITY" minOccurs="0"/>
<xsd:element ref="STATE" minOccurs="0"/>
<xsd:element ref="COUNTRY" minOccurs="0"/>
<xsd:element ref="PHONE" minOccurs="0"/>
<xsd:element ref="FAX" minOccurs="0"/>
<xsd:element ref="EMAIL" minOccurs="0"/>
<xsd:element ref="PUBLIC_KEY" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="URL" minOccurs="0"/>
<xsd:element ref="ADDRESS_REMARKS" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
Das Element typeADDRESS ist ein Element vom
komplexen Typ (<xsd:complexType....) mit einem komplexen
Inhaltsmodell. Die Definition kann wie folgt gelesen werden:
Das Element typeADDRESS vom komplexen Typ besteht aus einer
Sequenz (<xsd:sequence>) von 17 Elementen (NAME, NAME2,
NAME§, CONTACT usw.). minOccurs="0" zeigt an, dass
ein Element optional ist und nicht erscheinen braucht. Mit maxOccurs="unbounded"
wird definiert, dass ein Element mindestens einmal erscheinen
soll aber dann beliebig oft erscheinen kann. Mit </xsd:sequence>
und </xsd:complexType> wird die Definition des Elements typeADDRESS
abgeschlossen.
Die Definition der Attribute der Elemente erfolgt in einem XML
Schema immer hinter der Definition der Elemente und ist hier
nicht aufgeführt.
Datentypen
Die im Inhalts-Modell des Elements typeADDRESS
enthaltene Elemente werden ebenfalls im Anschluss definiert.
Das folgende Beispiel zeigt die Definition des Elements ADDRESS_REMARKS.
<xsd:element name="ADDRESS_REMARKS">
<xsd:simpleType>
<xsd:restriction base="dtSTRING">
<xsd:maxLength value="250"/>
<xsd:minLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
Da das Element ADDRESS_REMARKS keine Attribute
enthält, handelt es sich um ein Element von einem einfachen
Typ (<xsd:simpleType>). Im Element wird der Datentyp des
Elements definiert. Die Spezifikation der XML Schemata kennt
eine Reihe von vordefinierten Datentypen wie string, decimal,
float, boolean, datetime usw. Darüber hinaus ist es bei XML
Schemata möglich, auch eigene Datentypen definieren zu
können. Eine Möglichkeit einen eigenen Datentyp zu
definieren besteht darin, den neuen Datentyp von einem
bestehenden Datentyp durch Restriktion abzuleiten. Restriktion
bedeutet, das ein vorhandener Datentyp nach bestimmten
Kriterien eingeschränkt wird. <xsd:restriction base="dtSTRING">
bedeutet somit, dass der Datentyp "dtSRING" als
Basis für den eigenen Datentyp verwendet wird. Über
maxLength und minLength wird definiert, wie viel Zeichen der
neue Datentyp enthalten darf.
Das hier gezeigt Beispiel zeigt nur einen
kleinen Bereich über die Möglichkeiten für die Definition
von Datentypen. Gerade hier unterscheiden sich XML Schemata
deutlich von DTDs.
Zusammenfassung
Zusammenfassend lässt sich also feststellen,
das XML Schemata sowohl die Struktur als auch die Datentypen
von XML-Dokumenten überprüfen können. Da sich die Struktur
und die Datentypen von XML-Dokumenten durch XML Schemata
relativ unabhängig voneinander überprüfen lassen, erweisen
sich XML Schemata als ein sehr geeigneter Mechanismus für die
Validierung von XML-Dokumenten und deren Inhalte.
Unterstützen Katalogsysteme die Validierung von XML-basierten
Katalogen, wie zum Beispiel BMEcat, über XML Schemata,
können beim Einsatz von XML Schemata bereits sehr viele
Fehlerquellen beim Datenaustausch vermieden werden.
|