XML-Schema Tutorial PDF

Title XML-Schema Tutorial
Author Mehmet Varli
Course Daten- und Dokumentenmanagement im Internet (nur online)
Institution FernUniversität in Hagen
Pages 11
File Size 378.7 KB
File Type PDF
Total Downloads 25
Total Views 147

Summary

Ein kurzes XML-Schema Tutorial...


Description

1. XML-Schema  





 



XML-Schema bzw. XSD (XML Schema Definition) beschreibt die Struktur eines XML-Dokuments. Die erste W3C-Recommendation für XML-Schema wurde am 02. Mai 2001 veröffentlicht. Die aktuelle Recommendation besteht aus den folgenden drei Dokumenten: 1. XML Schema Part 0: Primer Second Edition (W3C Recommendation 28 October 2004) 2. XML Schema Part 1: Structures Second Edition (W3C Recommendation 28 October 2004) 3. XML Schema Part 2: Datatypes Second Edition (W3C Recommendation 28 October 2004) Mit der DTD wurde eine Möglichkeit zur schematischen Beschreibung von XML-Dokumenten geschaffen. Allerdings bestehen Nachteile bei der Verwendung einer DTD.

Nachteile DTD:  DTD-Syntax ist kein XML  DTD kann nicht wie beliebiges XML-Dokument behandelt werden  mangelhaftes Typkonzept (4 Datentypen)  Namensräume werden nicht unterstützt Mit XML-Schema hat das W3C eine neue Möglichkeit der schematischen Beschreibung von XML-Dokumenten spezifiziert. Im Gegensatz zur DTD bietet XML-Schema:  eine Vielzahl vordefinierter Datentypen  benutzerdefinierte Typen  strukturelle Vererbungsmechanismen zwischen Datentypen  Elemente können global oder auch nur lokal sein  Wiederverwendungsmechanismen auf Typ-, Element- und Attributebene ermöglichen modularen Entwurf  Namensräume vollständig unterstützt Der Vorteil von XML-Schema ist die Möglichkeit einer genaueren Beschreibung der Daten einer XML-Datei. Das macht allerdings auch die Strukturbeschreibung aufwendiger als bei einer DTD.

2. Beispieldatei  Beispiel 1:

...













...

3. Typkonzept  Es gibt einfache und komplexe Typen. Die in XML-Schema vordefinierten Typen sind, außer anyType, alle einfache Typen.  anyType ist der Basistyp bzw. Urtyp, von dem alle einfachen und komplexen Typen, entweder durch Einschränkungen ("restrictions") oder Erweiterungen ("extensions"), abgeleitet sind. (Die vordefinierten Typen in

XML-Schema werden alle durch Einschränkungen gebildet.) Außerdem ist anyType der Default-Typ, wenn kein Typ angegeben wird. AnyType schränkt den Inhalt einer Komponente in keiner Weise ein.

 



Basistypdefinition: Eine Typdefinition, die als Basis für eine Erweiterung oder Einschränkung dient Eine Komponente von einem Typ A, der durch Einschränkung von Typ B gebildet wurde (Typ B = Basistyp von Typ A), ist immer auch eine Komponente vom Typ B. Somit wäre eine Schemakomponente vom Typ xs:byte auch vom Typ xs:short (siehe Abbildung). Typhierarchie: Die Baumstruktur, die sich aus diesen Beziehungen (Erweiterungen, Restriktionen) ergibt.

3.1 Simple Type  Der einfache Typ ist ein Datentyp, der weder Unterelemente noch Attribute erlaubt, sondern nur textbasierten Inhalt.  Einfache Typen werden unterteilt in:  atomare Typen  Listentypen  Vereinigungstypen

Listentypen bestehen aus Sequenzen von einfachen Typen oder Vereinigungstypen. XML-Schema besitzt drei vordefinierte Listentypen: NMTOKENS, IDREFS und ENTITIES.  Vereinigungstypen erlauben es Elementen Inhalte verschiedenen Typs zu besitzen. Bei der Definition eines Vereinigungstyps wird durch das Attribut memberTypes eine Liste mit allen erlaubten Datentypen angegeben.  Die Definition neuer einfacher Typen erfolgt durch die Ableitung von bereits bestehenden einfachen Typen. Detaillierte Informationen dazu finden sich in.  Beispiel 1: "Simple Type Definiton"



 Erklärung: Beispiel 1 zeigt die Definition des einfachen Typs IQTyp. Dazu wird er von dem bereits existierenden einfachen Typ xsd:int durch Einschränkungen abgeleitet. xsd:int ist somit der Basistyp von IQTyp. Über seinen Namen kann der Typ dann einem Element oder Attribut zugeordnet werden.  Beispiel 2: "Element-Deklaration"

 Erklärung: Beispiel 2 zeigt eine Element-Deklaration. Das Element name aus der Datei "maverzeichnis.xml" besitzt weder Attribute, noch Unterelemente. Somit darf dem Element der einfache Datentyp xsd:string zugewiesen werden.  Beispiel 3: "Attribut-Deklaration"

 Erklärung: Beispiel 3 zeigt eine Attribut-Deklaration. Da Attribute selbst keine Attribute oder Unterelemente, sondern nur Attributwerte besitzen, können ihnen einfache Datentypen zugewiesen werden. 3.2 Complex Type  Der komplexe Typ erlaubt, außer textbasiertem Inhalt, auch Unterelemente und Attribute. Falls ein Element Unterelemente oder Attribute beinhaltet, muss es einen komplexen Typ besitzen.  Die Definition neuer komplexer Typen erfolgt durch die Ableitung von bereits bestehenden Typen mittels Restriktionen bzw. Erweiterungen.  Beispiel 4: "Element-Deklaration"





 Erklärung: Beispiel 4 zeigt eine Element-Deklaration mit Typdefinition innerhalb des Elements. Das Element pc aus der Datei "maverzeichnis.xml" besitzt die Unterlemente name und adresse  der Typ des Elements komplex 3.3 Restriktionen  Syntax: Angabe von Facetten  Eine Restriktion definiert Beschränkungen bei der Definition von einfachen und komplexen Typen. Außer Restriktionen können auch Listenbildung und Vereinigungen genutzt werden, um Einschränkungen zu definieren.  Für Restriktionen stehen sogenannte Facetten zur Verfügung. Durch sie können Bedingungen für die Werte des Typs formuliert werden. Es gibt zwei Arten von Facetten.  grundlegende Facetten (engl.: "fundamental facets")  einschränkende Facetten (engl.: "constraining facets")  Eine grundlegende Facette definiert den Datentyp. Sie ist eine abstrakte Eigenschaft, die dazu dient, die Werte eines Wertebereichs semantisch zu charakterisieren. Grundlegende Facetten:  equal  ordered --> gibt an, ob auf dem Wertebereich eine Ordnungsrelation definiert ist  bounded --> gibt an, ob der Wertebereich beschränkt ist 

cardinality --> gibt an, ob der Wertebereich endlich oder abzählbar unendlich ist numeric --> gibt an, ob der Wetebereich numerisch ist  Eine einschränkende Facette ist eine optionale Eigenschaft, die eingesetzt werden kann, um den Wertebereich eines Datentyps einzuschränken. Einschränkende Facetten:  length, maxLength, minLength  definiert die Länge eines Strings  enumeration  Auswahl  pattern  festlegen regulärer Ausdrücke  minExclusiv, maxExclusiv, minInclusiv, maxInclusiv  ermöglichen Wertebereichseinschränkungen  totalDigits, fractionDigits  ermöglicht Einschränkungen der Dezimalstellen (Gesamtzahl, Nachkommastelle)  whiteSpace  Behandlung von Tabs und Leerzeichen  Beispiel 5: "Simple Type Definition mit einschränkenden Facetten"



 Erklärung: Beispiel 5 zeigt die Definition eines einfachen Typs. Der Basistyp ist xsd:int. Für diesen werden zwei einschränkende Facetten (Minimal- und Maximalwert) angegeben.  

3.4 Erweiterungen  Syntax: Attribut- und Elementdeklarationen  Das Prinzip, dass hinter den Erweiterungen steckt, ist bereits aus der Programmierung als Vererbung bekannt.  Eine Erweiterung ermöglicht das Hinzufügen von weiteren Attributen und Elementen zusätzlich zu den im Basistyp erlaubten Komponenten.  Beispiel 6: "Definition eines komplexen Typs durch Erweiterung"













 Erklärung: Zuerst wird der komplexe Typ nameType definiert, der die Elemente vorname und nachname enthält. Danach folgt die Definition des komplexen Typs nameType2. Dieser wird durch eine Erweiterung von nameType definiert. Somit beinhaltet nameType2 ebenfalls die Elemente vorname und nachname. Zusätzlich wird das Attribut anrede definiert. 

Beispiel 7: "Definition eines komplexen Typs durch Erweiterung"











 Erklärung: Der komplexe Typ DEAdresse wird durch eine Erweiterung des Typs adresse gebildet. 4.   







 

Bestandteile eines XML-Schemas Ein XML-Schema besteht aus einer Menge von Schemakomponenten. Es gibt 13 Arten von Komponenten, die in drei Gruppen unterteilt werden können: Gruppe 1: Primäre Komponenten  SimpleType - Definitionen  ComplexType - Definitionen  Attribut-Deklarationen  Element-Deklarationen Es besteht ein entscheidender Unterschied zwischen Definitionen und Deklarationen. Definitionen erzeugen neue Typen. Durch Deklarationen wird für Attribute und Elemente mit bestimmten Namen und Typen festgelegt, ob und wo sie im XML-Dokument auftreten dürfen. Gruppe 2: Sekundäre Komponenten  Definitionen von Attributgruppen  Identity-constraint - Definitionen  Model group definitions  Notationsdeklarationen Gruppe 3: Hilfskomponenten  Annotationen  Model groups  Particles  Wildcards  Attribute Uses Hilfskomponenten sind Bestandteile anderer Komponenten. Die primären Komponenten und die sekundäre Komponente "Attributgruppen-Definitionen" werden in den nachfolgenden Kapiteln genauer erläutert.

5. SimpleType-Definition  Syntax: ...  In XML-Schema können neue Datentypen definiert werden. Die Definition eines einfachen Typs in einer XMLSchema-Datei erfolgt durch das Element xsd:simpleType. Optional kann durch das Attribut name ein Name für den neuen Datentyp angegeben werden.  Die Definition neuer einfacher Typen erfolgt durch die Ableitung von bereits bestehenden einfachen Typen. Dabei werden durch Restriktionen, Listenbildung oder Vereinigung Beschränkungen für den neuen Typ definiert. Der Typ von dem abgeleitet wird, ist der Basistyp des neu definierten Typs. Zur Angabe von Restriktionen stehen Facetten zur Verfügung (siehe 3.3 Restriktionen).  Facetten werden innerhalb des Elements xs:restriction angegeben. Das Attribut base legt den Basistyp fest.

 Beispiel 1: "Definition mittels Restriktionen"





 Erklärung: Beispiel 1 zeigt eine Element-Deklaration. In dieser Element-Deklaration befindet sich eine Typdefinition für einen einfachen Typ. Diese besitzt keinen Namen, da sie nur für das Element gültig ist, in dem sie deklariert wurde. Der Typ des Elements age ist von dem einfachen Typ xsd:int abgeleitet und wird durch die Facetten xsd:minInclusiv und xsd:maxInclusiv auf Zahlenwerte von 0 bis 140 eingeschränkt.  Beispiel 2: "Definition mittels Restriktionen"





 Erklärung: Beispiel 2 zeigt die Definition des einfachen Typs simplePasswordType. Dieser ist von dem einfachen Typ xsd:string abgeleitet und wird durch die Facetten xsd:minLength und xsd:maxLength auf 8 bis 12 Zeichen begrenzt. Nach der Definition folgt eine Element-Deklaration, bei der dem Element password der zuvor definierte Typ simplePasswordType zugewiesen wird. Wenn eine Typdefinition nicht innerhalb einer Element-Deklaration steht, muss ein Name für den Typ angegeben werden. Der Wert eines Typs, der durch Listenbildung abgeleitet wurde, ist eine Liste von Werten des Basistyps (siehe Beispiel 3). Die Definition eines Listentyps erfolgt über das Element xsd:list.  Beispiel 3: "Definition eines Listentyps"



 Erklärung: In der ersten Zeile von Beispiel 3 steht die Element-Deklaration für das Element intWerte, welches vom Typ intListe ist. Danach folgt die Definition des einfachen Typs intListe, der aus einer Liste von Integerwerten besteht.  Durch eine Vereinigung wird ein neuer Datentyp definiert, der die Werte der in der Vereinigung enthaltenen Typen annehmen darf ( Beispiel 4). Die Definition eines Vereinigungstyps erfolgt über das Element xsd:union.  Beispiel 4: "Definition eines Vereinigungstyps"











 Erklärung: In Beispiel 4 werden zuerst die zwei einfachen Typen number_size und string_size definiert. Der Typ number_size hat den Basistyp xsd:positiveInteger und kann nur Werte von 32 bis 44 annehmen. Der Typ string_size besitzt den Basistyp xsd:string und kann einen der Werte XS, S, M, L oder XL annehmen ("enumeration" = Auswahl). Zum Schluss wird ein dritter einfacher Typ namens shirt_size definiert, der aus der Vereinigung von number_size und string_size besteht. Somit kann zum Beispiel ein Element vom Typ shirt_size entweder einen Wert von 32 bis 42 oder einen der Werte XS, S, M, L oder XL annehmen. 6. ComplexType-Definition  Syntax: ...  Die Definition eines komplexen Typs in einer XML-Schema-Datei erfolgt durch das Element xsd:complexType. Ein komplexer Typ kann entweder durch die Restriktion eines bereits bestehenden komplexen Typs oder die Erweiterung eines bereits bestehenden einfachen bzw. komplexen Typs gebildet werden.  einige Beispiele für Definitionen komplexer - Beispiel 1:





 Erklärung: Beispiel 1 zeigt eine Element-Deklaration mit einer Typdefinition innerhalb des Elements. Das Element pc aus der Datei "maverzeichnis.xml" besitzt die Unterelemente name und adresse. Demzufolge ist der Typ des Elements komplex. Innerhalb der Typdefinition (...) wird beschrieben, wie das Element aussehen muss. xsd:sequence entspricht dem Sequenzoperator in der DTD und legt die Reihenfolge der Unterelemente fest. Die Attribute minOccursund maxOccurs legen die Kardinalität der Elemente fest. Innerhalb von ... befindet sich eine Elementreferenz auf das Element name. Wenn ein Element bereits deklariert wurde, kann es durch seinen Namen referenziert werden und muss somit nicht immer wieder neu deklariert werden.  Beispiel 2:





 Erklärung: Beispiel 2 erzielt dasselbe Ergebnis wie Beispiel 1. Der Typ für das Element pc wird hier allerdings nicht innerhalb, sondern außerhalb des Elements definiert. Dies ergibt Sinn, falls es mehrere Elemente vom selben Typ geben soll. Falls der Typ allerdings nur einmal vorkommt, kann er wie in Beispiel 1 innerhalb des Elements definiert werden. Dasselbe gilt für Attributtypen. Um den wie in Beispiel 2 definierten Typ einem Element bzw. Attribut zuzuweisen, wird in der Typdeklaration ein Name festgelegt (name="pcTyp"). Dieser wird dann in einer Element- bzw. Attribut-Deklaration im Attribut "type" angegeben (type="pcTyp").  Beispiel 3:







] 

Erklärung: In Beispiel 3 wird ein komplexer Typ durch die Erweiterung eines einfachen Typs definiert. Dem einfachen Basistyp xsd:integer wird durch Attribut-Deklaration das Attribut waehrung angefügt. Das Element xsd:simpleContent sagt aus, dass der Inhalt des neuen Elements nur Zeichendaten und keine Elemente enthält. Um Elemente für den Inhalt zu erlauben wird das Element xsd:complexContent angegeben.  Beispiel 4:



]  Erklärung: In Beispiel 4 wird der komplexe Typ person definiert. Das Element xsd:choice erlaubt die Wahl eines der deklarierten Elemente. Jedes Element vom Typ person kann entweder ein Kindelement namens student oder ein Kindelemet namens mitarbeiter besitzen, nicht aber beide. 7. Attribut-Deklarationen  Syntax: ...  Die Definition eines Attributs erfolgt durch das Element xsd:attribute.  Beispiel 1:

 Erklärung: In Beispiel 1 wird das Attribut manr deklariert. Der Typ des Attributs ist xsd:ID. Die Angabe use=“required“ legt fest, dass das Attribut angegeben werden muss. Der Defaultwert für use ist "optional".  Beispiel 2:







 Erklärung: In Beispiel 2 wird das Attribut sprache deklariert. Innerhalb der Attribut-Deklaration wird ein neuer einfacher Typ definiert, der von xsd:string abgeleitet ist. Als mögliche Attributwerte sind "DE", "EN", "IT", "FR" und "ES" angegeben. Das Attribut default legt einen Defaultwert fest, der dem Attribut automatisch zugewiesen wird, falls kein Wert angegeben wird.  Beispiel 3:

 Erklärung: Beispiel 3 deklariert ein Attribut sprache vom Typ xsd:string, dass den festen Wert "EN" besitzt. 8. Element-Deklarationen  Syntax: ...  Die Definition eines Elements erfolgt durch das Element xsd:element.  Beispiel 1:

 Erklärung: Beispiel 1 deklariert das Element name aus der Datei "maverzeichnis.xml".  Beispiel 2:









 Erklärung: Beispiel 2 deklariert das Element mitarbeiter aus der Datei "maverzeichnis.xml". Die Deklarationen der referenzierten Elemente name, lebenslauf und pc werden hier nicht aufgeführt, müssen aber natürlich angegeben werden. Ebenso wie die Definition des Typs tnr. 9. Definitionen von Attributgruppen  Syntax: Attribut-Deklarationen  Die Definition einer Attributgruppe erfolgt durch das Element xsd:attributeGroup.  Eine Attributgruppen-Definition ist die Assoziation eines Namens mit einer Menge von Attribut-Deklarationen. Somit können die Attribute als Gruppe in eine komplexe Typdefinition eingefügt werden.  Beispiel 1:











 Erklärung: Zu Beginn wird die Attributgruppe attrGroup1 definiert. Danach wird das Element mitarbeiter deklariert. Anstatt die Attribute direkt in die Element-Deklaration einzufügen, wird die Attributgruppe durch eine Referenz in die Element-Deklaration eingefügt. 10. Zusammenfassung Allgemeines zu XML-Schema  Schemasprache zur Beschreibung von XML-Dokumenten  XSD = XML Schema Definition  Nachteile bei der Verwendung einer DTD  mit XML-Schema neue Möglichkeit der schematischen Beschreibung von XML-Dokumenten  genauere Beschreibung der Daten einer XML-Datei möglich, allerdings auch aufwendiger Das Typkonzept  es gibt einfache und komplexe Typen  vordefinierte Typen sind, außer anyType, alle einfache Typen  anyType ist der Basistyp bzw. Urtyp und schränkt den Inhalt einer Komponente in keiner Weise ein  alle einfachen und komplexen Typen von anyType durch Einschränkungen oder Erweiterungen abgeleitet  Basistypdefinition = Typdefinition, die als Basis für eine Erweiterung oder Einschränkung dient  Baumstruktur, die sich aus diesen Beziehungen (Erweiterungen, Restriktionen) ergibt, wird als Typhierarchie bezeichnet Das Typkonzept - Simple Type  ist ein Datentyp, der weder Unterelemente noch Attribute erlaubt, sondern nur textbasierten Inhalt

 Definition neuer einfacher Typen erfolgt durch Ableitung von bereits bestehenden einfachen Typen Das Typkonzept - Complex Type  erlaubt, außer textbasiertem Inhalt, auch Unterelemente und Attribute  Definition neuer komplexer Typen erfolgt durch Ableitung von bereits bestehenden Typen mittels Restriktionen bzw. Erweiterungen Das Typkonzept - Restriktionen  Syntax: Angabe von Facetten  definieren Beschränkungen bei der Definition von einfachen und komplexen Typen  für Restriktionen stehen sogenannte Facetten zur Verfügung: - grundlegende Facetten dient dazu, die Werte eines Wertebereichs semantisch zu charakterisieren - einschränkende Facetten ist optional und schränkt Wertebereich eines Datentyps ein  es können auch Listenbildung und Vereinigungen genutzt werden, um Einschränkungen zu definieren Das Typkonzept - Erweiterungen  Syntax: Attribut- und Elementdeklarationen  Erweiterung ermöglicht das Hinzufügen von weiteren Attributen und Elementen zusätzlich zu den im Basistyp erlaubten Komponenten  entspricht dem Prinzip der Vererbung Bestandteile eines XML-Schemas  XML-Schema besteht aus einer Menge von Schemakomponenten  es existieren 13 Komponenten  können in drei Gruppen unterteilt werden:  primäre Komponenten  sekundäre Komponenten  Hilfskomponenten SimpleType-Definition  Syntax: ...  Definition eines einfachen Typs in einer XML-Schema-Datei erfolgt durch das Element xsd:simpleType  Namensangabe optional  Definition neuer einfacher Typen erfolgt durch die Ableitung von bereits bestehenden einfachen Typen  Basistyp = Typ von dem abgeleitet wird, wird durch das Attribut base festgelegt  mittels Restriktionen werden Beschränkungen für den neuen Typ definiert  zur Angabe von Restriktionen stehen Facetten zur Verfügung  Definition einfacher Typen auch durch Listenbildung und Vereinigung möglich ComplexType-Definition  Syntax: ...  Definition eines komplexen Typs in einer XML-Schema-Datei erfolgt durch ...


Similar Free PDFs