Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Was sind XML Schemas?

Geschrieben von: Christian Holm
Kategorie: XML

This printed page brought to you by AlphaSierraPapa

Dieser Artikel soll Ihnen Antworten auf die wichtigsten Fragen zum Thema XML Schemas (XSD) geben - wozu dienen eigentlich XML Schemas, welche Vorteile haben sie und warum sind diese den DTDs vorzuziehen. Die in diesem Artikel enthaltenen Informationen stützen sich auf die W3C Recommendation vom 2. Mai 2001.

Bevor man sich in eine Technologie vertieft, fragt man sich wohl zuerst wofür sie gut ist - also worin besteht der Zweck in der Verwendung von XML Schemas? XML Schema Dateien (.xsd) enthalten die Elementnamen und die verfügbaren Attribute eines XML Dokuments, d.h. eine Schemadatei enthält die hierfür nötigen Deklarationen dieser.

Diese Dekalarationen dienen schließlich und endlich dazu, wie ein XML Dokument dargestellt werden soll. Dies ist aber nichts Neues, da ja ursprünglich die Document Type Definitions (DTD) diesen Zweck erfüllt haben. Die DTD Spezifikationen wurden vom W3C Konsortium vorgeschlagen, während die XML Schemas auf einen Vorschlag von Microsoft basieren aber jetzt vom W3C Konsortium vereinheitlicht und standardisiert wurden.

Ihre XML Datenstruktur mit Hilfe vom Schemas zu beschreiben hilft Ihnen nicht nur bei einer leicherten Organisation und Strukturierung, sondern vielmehr eine Vereinfachung beim Datenaustausch. Diese Informationen benötigen andere Applikationen (z.B. Web Services), damit diese erkennen, in welcher Form bzw. Datenstruktur sie die Daten erhalten, wie sie die erhaltenen Daten bearbeiten müssen und in welcher Form sie sie zurück zu Ihnen senden müssen, damit Sie wiederum mit den bearbeiteten Ergebnissen etwas anfangen können.

Eine berechtigte Frage ist nun, warum man statt den DTDs XML Schemas verwenden soll. Im Gegensatz zu DTDs verwenden XML Schemas den gebräuchlichen XML Syntax, was eine schnellere Einarbeitung garantiert. Weiters können Sie Elementen einen Datentyp zuweisen - z.B Integer, Datumswert, Fließkommazahlen, Zeichenketten sowie die anderen (simplen) Datentypen oder auch URLs. Bei der Verwendung von DTD's sind Sie bei der Datentypzuweisung auf den Datentyp String limitiert.

Bei Datentypen unterscheidet die W3C Empfehlung drei unterschiedliche Hauptgruppen: Atomic, List und Union Datentypen. Diese Hauptgruppen können Primitive oder Derived Datentypen enthalten. Weiters können die Datentypen mit diversen Eigenschaften versehen werden oder sogar zu Attributgruppen zusammengefaßt werden.

Ein weiterer Vorteil von XML Schemas ist die einfache Erweiterbarkeit dieser, da sie XML basiert sind und daher nicht an einen vorgegebenen Syntax gebunden sind. D.h. wenn Sie ein neues Child Element hinzufügen und es Gültigkeit im enthaltenden Namespace hat, so wird dies ohne weiters vom Parser akzeptiert.

Um der trockenen Theorie ein wenig Abwechslung zu bieten, habe ich ein (sehr) einfaches Beispiel vorbereitet. Dieses besteht zum einen aus einem XML Dokument (YourCompanyStaff.xml) welches zwei Datensätze aus einer fiktiven Personaldatenbank enthält und zum anderen aus einer einfachen Schema Datei CompanyStaff.xsd. Der Inhalt der YourCompanyStaff.xml Datei ist wie folgt:

<?xml version="1.0"?>
<YourCompany xmlns="http://www.yourcompany.com/Staff/XSD"
 xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
 xsi:schemaLocation="http://www.yourcompany.com/Staff/XSD/CompanyStaff.xsd">

    <Staff>
        <Name>Doe</Name>
        <FirstName>John</FirstName>
        <Function>Program Manager</Function>
        <MemberOf>Development Team</MemberOf>
        <SSNo>788313443</SSNo>
    </Staff>
    
    <Staff>
        <Name>Castor</Name>
        <FirstName>Rob</FirstName>
        <Function>CEO</Function>
        <MemberOf>Executives</MemberOf>
        <SSNo>661541234</SSNo>
    </Staff>

</YourCompany>

Das Attribut xmlns enthält den Namespace, in dem der YourCompany Tag enthalten sein soll. Das Attribut xsi:schemaLocation verweist auf den URL, wo sich die XML Schema Datei CompanyStaff.xsd auf Ihrem Web Server befindet. Die zum XML Dokument dazugehörige CompanyStaff.xsd Schema Datei sieht im einfachsten Fall so aus:

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" elementFormDefault="qualified">
    <xsd:element name="Staff" />
      <xsd:complexType>
        <xsd:sequence>
          <xsd:element ref="Name" /> 
          <xsd:element ref="FirstName" /> 
          <xsd:element ref="Function" /> 
          <xsd:element ref="MemberOf" /> 
          <xsd:element ref="SSNo" /> 
        </xsd:sequence>
      </xsd:complexType>
    
    <xsd:element name="YourCompany">
      <xsd:complexType>
        <xsd:sequence>
          <xsd:element ref="Staff" maxOccurs="unbounded" /> 
        </xsd:sequence>
      </xsd:complexType>
    </xsd:element>
    <xsd:element name="Name" type="xsd:string"/>
    <xsd:element name="FirstName" type="xsd:string"/>
    <xsd:element name="Function" type="xsd:string"/>
    <xsd:element name="MemberOf" type="xsd:string"/>
    <xsd:element name="SSNo" type="xsd:integer"/>
</xsd:schema>

Eine sequence beschreibt eine Folge (Gruppe) von Elementen, während complexType eine genauere Definition des referenzierten Elementes angibt. Auf alle Details des XSD kann ich in diesem Einführungsartikel nicht eingehen - spätere Artikel werden sich damit beschäftigen. Soviel aber vorweg: referenziert eine XML Datei dieses Schema, und die XML Datei entspricht dem Schema nicht, dann wird der Parser die XML Datei als nicht korrekt monieren.

Schlußbemerkung

Dieser Artikel sollte Ihnen einen kurzen Einblick in die wichtigsten Neuerungen von XML Schemas geben, welches vom W3C Konsortium seit Anfang Mai vereinheitlicht und standardisiert wurde. Damit soll die Definition der Datenstruktur basierend auf XML für jede beliebige Web Applikation lesbar werden.

This printed page brought to you by AlphaSierraPapa

Download des Codes

Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20010514.zip

Verwandte Artikel

Arbeiten mit dem SQL Server XML View Mapper
http:/www.aspheute.com/artikel/20020416.htm
Crystal Reports mit DataSets befüllen - Teil 2
http:/www.aspheute.com/artikel/20030403.htm
Verwendung von XML-Schemas (XSD)
http:/www.aspheute.com/artikel/20010925.htm
Web Services mit dem SOAP Toolkit erstellen
http:/www.aspheute.com/artikel/20010629.htm
XML-Daten verarbeiten mit XSLT
http:/www.aspheute.com/artikel/20020116.htm

Links zu anderen Sites

MSDN Online XML Developer Center
http://msdn.microsoft.com/xml/default.asp
XML Schema Part 0: Primer
http://www.w3.org/TR/2001/REC-xmlschema-0-20010502/
XML Schema Part 1: Structures
http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/
XML Schema Part 2: Data Types
http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/
XML Schema Working Group
http://www.w3.org/XML/Schema

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.