DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Andreas Rauch Artikel Drucken
        
DTD vs. XML Schema - Wachablösung in der XML Validierung

XML, ehemals als Standard für strukturierte Dokumente (SGML) entwickelt, wurde rasch für den Datenaustausch entdeckt.

Um es den Entwicklern nicht allzuschwer zu machen, besann man sich darauf zwischen der "Wohlgeformtheit" und der Validität eines Dokuments zu unterscheiden. Ein XML Dokument muß in erster Linie snytaktischen Regeln folgen, um wohlgeformt zu sein. Möchte man darüber hinaus Festlegungen treffen, wie die Struktur eines XML Dokuments aussieht, welche Datentypen enthalten sein dürfen, muß man es gegen eine DTD (Document Type Definition) prüfen lassen. Lange Zeit war der Weg über eine DTD der einzige Weg einen standardisierten Mechanismus zur Beschreibung der Struktur der Daten zur Verfügung zu stellen. Allerdings hat ein DTD gravierende Mängel:
Zunächst fehlt es daran Elementen und Attributen Datentypen zuweisen zu können, sowie  der Eigenschaft nicht selbst aus XML Syntax zu bestehen und der fehlenden Kompabilität zu namespaces.

Mit dem neuen Standard XML Schema (seit 2.5.2001) sollten diese Mängel beseitigt werden. Oben genannte Mängel, soweit vorweg, sind tatsächlich auch behoben worden.

Sehen wir uns die Merkmale von DTD und XML Schema genauer an.

Document Type Definitions (DTDs):
DTDs beschreibt einen Strukturplan für ein XML Dokument.
DTDs hält XML Dokumente konsistent.
DTDs kann von mehreren XML Dokumenten gemeinsam benutzt werden.
DTDs unterstützt das komplette XML Vokabular.
DTDs sind auf ein DTD pro XML Dokument beschränkt.

XML Schema:
Wie ein DTD kann das Schema die Struktur eines XML Dokuments beschreiben.
Schemas nutzen XMl Syntax und können somit auch geparst werden.
Schemas unterstützen Datentypen wie integer, string oder boolean.Außerdem können in XML Schema auch andere Datentypen definiert werden.
Schemas erlauben globale Elemente oder Gruppen von Elementen, indem alle Elemente genau z. B.  einmal enthalten sein müssen (all), die Elemente mindestens einmal, aber auch öfter auftreten können (sequence) oder einer Auswahl aus mehreren Möglichkeiten (choice). Sowie auch lokale Elemente (Elemente, die eine spezielle Bedeutung im Kontext erhalten.

Übrigens XML Schema sowie der Interims Standard XDR wird vom IE 5.5 unterstützt.

Sehen wir uns zum Schluß noch mal die unterschiedliche Arten an Hand eines Beispiels an:


Zunächst das zurgunde liegende XML FIle:

<?xml version="1.0"?>
<BookCatalogue xmlns="http://www.ppedv.de/schema/BookCatalogue"
 xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
 xsi:schemaLocation=
  "http://http://www.ppedv.de/schema/BookCatalogue/BookCatalogue.xsd">
 <Book>
  <Title>Computernetzwerke</Title>
  <Author>Tanenbaum</Author>
  <Date>1999</Date>
  <ISBN>3-8272-9568-8</ISBN>
  <Publisher>Prentice Hall</Publisher>
 </Book>
 <Book>
  <Title>1984</Title>
  <Author>George Orwell</Author>
  <Date>1995</Date>
  <ISBN>3-548-22562-4</ISBN>
  <Publisher>Ullstein</Publisher>
 </Book>
</BookCatalogue>

Das zugehörige DTD könnte wie folgt aussehen:

<!?Ein BookCatalogue enthält ein oder mehrere Books -->
<!ELEMENT BookCatalogue (Book)*>
<!ELEMENT Book (Title, Author, Date, ISBN, Publisher)>
<!ELEMENT Title (#PCDATA)>
<!ELEMENT Author (#PCDATA)>
<!ELEMENT Date (#PCDATA)>
<!ELEMENT ISBN (#PCDATA)>
<!ELEMENT Publisher (#PCDATA)>

Das passende Schema könnte so aussehen:

<?xml version="1.0" encoding="UTF-8"?>
<!--W3C Schema generated by XML Spy v3.5 NT (http://www.xmlspy.com)-->
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" elementFormDefault="qualified">
 <xsd:element name="Author" type="xsd:string"/>
 <xsd:element name="Book">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Title"/>
    <xsd:element ref="Author"/>
    <xsd:element ref="Date"/>
    <xsd:element ref="ISBN"/>
    <xsd:element ref="Publisher"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>
 <xsd:element name="BookCatalogue">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element ref="Book" maxOccurs="unbounded"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>
 <xsd:element name="Date">
  <xsd:simpleType>
   <xsd:restriction base="xsd:int">
    <xsd:enumeration value="1995"/>
    <xsd:enumeration value="1999"/>
   </xsd:restriction>
  </xsd:simpleType>
 </xsd:element>
 <xsd:element name="ISBN">
  <xsd:simpleType>
   <xsd:restriction base="xsd:string">
    <xsd:enumeration value="3-548-22562-4"/>
    <xsd:enumeration value="3-8272-9568-8"/>
   </xsd:restriction>
  </xsd:simpleType>
 </xsd:element>
 <xsd:element name="Publisher" type="xsd:string"/>
 <xsd:element name="Title">
  <xsd:simpleType>
   <xsd:restriction base="xsd:string">
    <xsd:enumeration value="1984"/>
    <xsd:enumeration value="Computernetzwerke"/>
   </xsd:restriction>
  </xsd:simpleType>
 </xsd:element>
</xsd:schema>

 

 

 


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 10.05.2001
  Gültig bis: 10.06.2001
25 Ratings
Bewertung: 71,2%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG