|
|
 |
XML Schema
XML Schema Part 0: Primer
Status: W3C Recommendation vom 02.05.2001
Homepage: http://www.w3.org/TR/xmlschema-0/
Verfasser: W3C
XML Schema Part 1: Structures
Status: W3C Recommendation vom 02.05.2001
Homepage: http://www.w3.org/TR/xmlschema-1/
Verfasser: W3C
XML Schema Part 2: Datatypes
Status: W3C Recommendation vom 02.05.2001
Homepage: http://www.w3.org/TR/xmlschema-2/
Verfasser: W3C
XML Schema ist eine Sprache zur Beschreibung der Dokumentstruktur und des Dateninhalts von XML-Dokumenten. Mit den Dokumenttypdefinitionen (DTDs) existiert zwar bereits eine Sprache zur Beschreibung der Struktur von XML-Dokumenten, aber um die Daten der Dokumente zu beschreiben, bieten DTDs kaum Unterstützung.
Die größten Nachteile von DTDs sind:
- DTDs bieten kaum Unterstützung von Datentypen (es gibt nur Strings und Aufzählungen) sowie keinerlei Möglichkeiten, Wertebereiche einzuschränken. Desweiteren können die Häufigkeiten des Auftretens von Elementen in XML-Dokumenten nur sehr begrenzt festgelegt werden.
- Das in DTDs existierende Fremdschlüsselkonzept mittels ID- und IDREF-Attributen ist unzureichend.
- DTDs werden nicht in XML-Syntax notiert und können somit nicht wie andere XML-Dokumente verarbeitet werden. Außerdem muss man neben XML eine zusätzliche Sprache/Syntax lernen, wenn man DTDs benutzen möchte.
- DTDs bieten keine Unterstützung von Namensräumen.
Dies sind die Gründe, warum DTDs für viele Anwendungsbereiche (besonders den der datenorientierten XML-Modellierung) nicht sonderlich gut geeignet sind. Bei der Entwicklung von XML Schema hat man versucht, diese Probleme zu beseitigen.
Nachfolgend sind die wichtigsten Vorteile von XML Schema aufgeführt:
- XML Schema besitzt 19 einfache Built-In-Datentypen, sowie diverse Ableitungen dieser. Die Datentypen lassen sich einschränken, erweitern und vererben. Zu den einfachen Datentypen gehören beispielsweise String, Boolean, verschiedene Ganzzahl- und Gleitkommazahltypen, URI und verschiedene Datums- und Zeittypen. Alle Datentypen werden im 2. Teil der XML Schema - Spezifikation beschrieben.
- XML Schemata werden in XML-Syntax notiert und können deshalb mit den gleichen Werkzeugen wie andere XML-Dokumente bearbeitet werden.
- In XML Schema werden
Namensräume
unterstützt. Damit lassen sich XML Dokumente beschreiben, die Elemente in verschiedenen XML Schemata benutzen.
-
Kardinalitäten (die Häufigkeit des Auftretens) von Elementen in XML-Dokumenten lassen sich genau angeben. Dies geschieht mittels der Attribute "minOccurs" und "maxOccurs", bei denen natürliche Zahlen sowie "unbounded" für unendlich angegeben werden können (siehe Beispiel).
- XML Schema bietet ein besser ausgeprägtes Schlüsselkonzept
. Es lassen sich sowohl Elemente und Attribute als auch Kombinationen dieser als Schlüssel (=eindeutig, referenzierbar) mittels des key-Elementes kennzeichnen. Die Kennzeichnung der Referenzierung erfolgt durch Benutzung des keyref-Elements .
- Inhaltsmodelle von Elementen lassen sich mit XML Schema auch lokal definieren, typisieren und wiederverwenden. So kann man zum Beispiel mehrfach verwendete Elemente einmal definieren und anschliessend mittels des ref-Attributes referenzieren.
Die Fülle von Möglichkeiten, die Struktur und Datentypen von XML-Dokumenten zu definieren, hat jedoch den Nachteil, daß XML Schemata im Vergleich zu DTDs sehr viel größer, unübersichtlicher und weniger intuitiv verständlich sind.
Interessanterweise ist XML Schema selbst durch eine DTD definiert, das heißt, daß die Korrektheit von XML-Schemata mit Hilfe einer DTD geprüft werden kann. Daneben existiert aber auch ein XML-Schema-Dokument, welches XML Schema beschreibt.
Quellenangabe:
- die deutsche Übersetzung der XML Schema - Spezifikation von Mario Jeckle
-
Kapitel 7 des Vorlesungsskriptes zu Vorlesung "XML und Datenmodellierung" von Rainer und Silke Eckstein.
-
Kapitel 11 des Vorlesungsskriptes zur Vorlesung "XML-basierte Markup-Sprachen" von Oliver Becker
| Beispiel eines XML Schemas |
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="angebote">
<xs:complexType>
<xs:sequence>
<xs:element ref="produkt" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="produkt">
<xs:complexType>
<xs:sequence>
<xs:element ref="name" minOccurs="1" maxOccurs="1"/>
<xs:element ref="preis" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="name">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="herkunft" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="preis">
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:minExclusive value="0"/>
<xs:fractionDigits value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
|
| Beipiel eines XML-Dokuments welches an das obige XML Schema gebunden ist |
<?xml version="1.0" encoding="ISO-8859-1"?>
<angebote xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema_beispiel.xsd">
<produkt>
<name herkunft="Südafrika">Äpfel</name>
<preis>1.99</preis>
</produkt>
<produkt>
<name herkunft="Spanien">Orangen</name>
<preis>2.49</preis>
</produkt>
</angebote>
|
| |