Kontrolle ist besser

(Montero Pineda, Manuel: Kontrolle ist besser, in: technische kommunikation, Heft 1, 2019).

Ohne valide XML-Daten lässt sich eine Informationskette nicht rationalisieren. Dafür eignen sich XML Schema und DTD. Wo liegen die Unterschiede? Welche Sprache ist besser geeignet?

XML Schema ist die Nachfolgetechnologie von DTDs, die wir im Artikel Kontrollierende Sprache vorgestellt haben. Beide Technologien dienen dazu, XML-Dokumente zu beschreiben und zu strukturieren. XML Schema kann genutzt werden, um Abläufe zu automatisieren sowie zur Dokumentation und Validierung. Das W3C hat die Recommendations für XML Schema bereits im Mai 2002 herausgegeben.

XML Schema und DTDs gehören ebenso wie RELAX NG zu den sogenannten grammatikbasierten Schemasprachen. Zum Beispiel regeln sie, wie Elemente auftreten und angeordnet werden können, die Häufigkeit jedes Elements und die Datentypen von Elementen und Attributen.

Die Schemasprachen im Vergleich

Jede DTD lässt sich ohne den Verlust von Informationen in ein Schema umwandeln. Im Vergleich zu DTDs sind Schemata mächtiger und bieten mehr Möglichkeiten zur Datenkontrolle. Bei der Entwicklung von XML Schema wurde viel Wert auf Datentypen gelegt. Datentypen dienen in der Informatik dazu, verschiedene Arten von Informationen abzubilden. Beispielsweise haben Zahlen oder Datumsangaben eigene Datentypen. Da XML ein textbasiertes Datenformat ist, gilt es, die Text-Repräsentationen solcher Typen zu validieren.

XML Schema und Reguläre Ausdrücke

In XML Schema gibt es dutzende vorgefertigte Datentypen, wie zum Beispiel xs:integer und xs:date. In der folgenden Tabelle sind einige Beispiele für Datentypen und dazugehörige Werte aufgeführt. Es lassen sich jedoch auch Typen selbst definieren.

TypBeispiel erlaubter WerteBeispiel verbotener Werte
xs:integer1, 2, 3, -4abc, 1.5, 1.0
xs:double1.0, -2.234abc, 3.4.1
xs:date2018-09-1717.09.2018

Tabelle: Beispiele für Datentypen.

Mit XML Schema ist die Kontrolle über sogenannte Regex und Wertebereiche möglich. Regex sind Kombinationen aus Zeichen oder spezifischen Zeichenklassen, zum Beispiel nur Ziffern oder nur Whitespace, mit denen genaue Muster für die Zusammensetzung von Zeichenketten definiert werden können. Ein Regulärer Ausdruck dient dazu, Zeichenketten zu validieren oder innerhalb von Zeichenketten zu suchen. Mit Wertebereichen können Datentypen eingeschränkt werden. Numerische und datumsbasierte Typen können etwa mit Minimal- und Maximalwerten auf einen Bereich begrenzt werden. Im folgenden Code-Beispiel ist ein Ausschnitt einer XML-Datei mit unerwünschtem Inhalt zu sehen.

<?xml version="1.0" encoding="UTF-8"?>
<Personendaten xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Beispiel1_Personendaten.xsd">
  <Vorname>Manuel</Vorname>
  <Nachname>Montero</Nachname>
  <PLZ>PLZ-69118</PLZ>
  <Ort>Heidelberg</Ort>
  <Geburtsdatum>31.02.1980</Geburtsdatum>
</Personendaten>

Code-Beispiel: XML-Dokument mit unerwünschtem Inhalt.

Die Postleitzahl sollte nur Ziffern erhalten und das Geburtsdatum einem standardisierten Typ entsprechen. Beides ist nicht der Fall.

Im nächsten Code-Beispiel sind die Inhalte mit XML Schema genauer definiert: Durch die Zeile <xs:element name="PLZ" type="xs:integer"/> wird definiert, dass eine Postleitzahl jetzt nur noch Ziffern enthalten darf. Mit <xs:element name="Geburtsdatum" type="xs:date"/> wird geregelt, dass das Geburtsdatum das Format xs:date haben muss.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Personendaten">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Vorname" type="xs:string"/>
        <xs:element name="Nachname" type="xs:string"/>
        <xs:element name="PLZ" type="xs:integer"/>
        <xs:element name="Ort" type="xs:string"/>
        <xs:element name="Geburtsdatum" type="xs:date"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Code-Beispiel: Definierte Inhalte in einem XML Schema-Dokument.

Die korrekte XML-Datei sieht dann aus wie im folgenden Code-Beispiel.

<?xml version="1.0" encoding="UTF-8"?>
<Personendaten xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Beispiel1_Personendaten.xsd">
  <Vorname>Manuel</Vorname>
  <Nachname>Montero</Nachname>
  <PLZ>69118</PLZ>
  <Ort>Heidelberg</Ort>
  <Geburtsdatum>1980-02-28</Geburtsdatum>
</Personendaten>

Code-Beispiel: Korrektes XML-Dokument.

Weitere Vorteile von XML Schema

Die Schemasprache greift einige Schwächen von DTDs auf und kompensiert diese, so lassen sich:

  • Elementinhalte und der Dokumentaufbau einfacher beschreiben und
  • Dateninhalte besser überprüfen.

Außerdem ist das Zusammenspiel mit Datenbanken unkomplizierter, da dort ähnliche Datentypen definiert werden können. Des Weiteren ist eine sehr genaue Definition von erlaubten Zeichenfolgen möglich sowie das automatische Verknüpfen von Datentypen mit XML-Knoten. Skripte, die XML Schema unterstützen, können diese Knoten direkt (zum Beispiel als Integer) weiterverarbeiten und müssen nicht wie sonst den Textinhalt in einen Integer konvertieren (casten).

Da Schemata Namensräume unterstützen, ist eine Wiederverwendung in anderen Projekten deutlich einfacher. Ein weiterer großer Vorteil von XML Schema ist, dass die Schemata selbst in der XML-Syntax geschrieben sind. Dadurch können sie von XML-Parsern auf Validität überprüft werden. Auch Schemata mit XSLT zu verändern oder auszuwerten ist prinzipiell möglich. Weitere Vorteile gegenüber DTDs bestehen darin, dass Schemata mit jedem XML-Editor erstellt werden können, ein integriertes Dokumentationsmodell haben und über sehr gute Modularisierungsmöglichkeiten verfügen.

Nachteile von XML Schema

Gegenüber DTDs hat XML Schema den Nachteil, dass sich große Schemata ohne Entwicklungsumgebungen oder spezielle Editoren kaum pflegen bzw. entwickeln lassen. Im Vergleich zu DTDs ist die Syntax von DTDs zwar nicht XML-basiert, sie kann aber relativ einfach erlernt werden.

Schemata sind also deutlich komplexer als DTDs und beim Erzeugen müssen viele Details berücksichtigt werden, dafür bieten sie aber auch ein hohes Maß an Vielseitigkeit, das für die exakte Beschreibung von XML-Dokumenten oft notwendig ist.

Validieren an der Schnittstelle

XML Schema gehört heute zum Mindeststandard bei den Validierungstechnologien und sollte bei neuen Projekten den veralteten DTDs unbedingt vorgezogen werden. Ein guter Editor, wie zum Beispiel Oxygen XML Editor oder Altova XMLSpy, kann beim Erstellen der Schemata mit einer graphischen Oberfläche helfen. Wichtiger noch als sich für eine Validierungssprache zu entscheiden, ist jedoch, Dateien überhaupt zu validieren.

XML-Daten, die eine Schnittstelle zwischen zwei Technologien bilden oder von einer Technischen Redakteurin oder einem Redakteur erstellt werden, sollten grundsätzlich validiert werden. Wenn Anwender die Möglichkeiten von XML Schema nutzen, robuste Validierungsregeln erstellen und dafür sorgen, dass diese eingehalten werden, werden sie davon bei ihrer Arbeit auf lange Sicht stark profitieren. Oder wie es Andreas Tenzer ausgedrückt hat, ein deutscher Philosoph und Pädagoge: "Qualität ist das Produkt der Liebe zum Detail."

   

<< zurück vor >>
Tipp der data2type-Redaktion:
Zum Thema XML bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

  


Copyright © 2019 tcworld GmbH
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieser Artikel aus der Fachzeitschrift "technische kommunikation" (Heft 1, 2019) denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

tcworld GmbH, Rotebühlstraße 64, 70178 Stuttgart, info@tekom.de, www.tekom.de